转:master公式(主方法)

  master公式(也称主方法)是利用分治策略来解决问题经常使用的时间复杂度的分析方法,(补充:分治策略的递归解法还有两个常用的方法叫做代入法和递归树法),众所众知,分治策略中使用递归来求解问题分为三步走,分别为分解、解决和合并,所以主方法的表现形式:

  T [ n ]=a T[ n / b ] + T ( N ^ d)

  其中a>=1 and b>1 是常量,其表示的意义是n表示问题的规模,a表示递归的次数也就是生成的子问题数,b表示每次递归是原来的1/b之一个规模,f[n]表示分解和合并所要花费的时间之和。

解法:

1)当d<logb a时,时间复杂度为O(n^(logb a))

2)当d=logb a时,时间复杂度为O(nlog2 n)

3)当d>logb a时,时间复杂度为O(n^d)

原文地址:https://www.cnblogs.com/yichengming/p/11392715.html

时间: 2024-10-15 12:55:09

转:master公式(主方法)的相关文章

时间复杂度计算的主方法

主方法要比那什么代入法好很多啊,代入法就是先凭经验猜一个较好的界,然后再代入证明,运气好猜对了,证明却不对,运气不好都猜不对. 先介绍下主定理,主定理有条件限制,先看看主定理给出递归式: T(n) = aT(n/b) + f(n);(a ≥ 1,b > 1) 其中 a 是子问题个数,n/b是每个子问题的规模(n/b不是总是整数,所以应将其看作[n/b](上取整或下取整)),f(n)是一个函数(分和治的总代价). 好了,主方法的介绍就暂时到此为止了,为了做为复习和加固记忆所以把书上的手打了一遍,过

Word 自带公式使用方法技巧(11)

1. 快捷命令 在Word中输入「Alt+=」,可以打开Word中自带公式编辑器.这个编辑器似乎没有什么特别,但其实 Word 2010 以后是支持 LaTeX 语法的.常用规则如下: 分号: a/b +「空格」 极限:\limit +「空格」 积分:\int +「空格」 求和:\sum +「空格」 上下标:下标为 _, 上标为 ^ 希腊字母:\希腊字母英文拼写 +「空格」 效果如下: 2. 更改公式默认字体 1. 设置默认打开为斜体 1) 用强大的宏来实现.在 Word 界面中选择「视图 >

方法与主方法

1 方法 如果方法没有返回值,则必须写void,不能省略 如果有返回值,则定义的方法的类型必须和方法体内返回值的类型相同 public String returnString(){ return"返回值是字符串类型" } 2 主方法 它是程序的入口. public static void main(String[] args){ }

交换基本数据类型的方法swap,并影响到主方法

不知道朋友在哪里看到的问题,qq来问我,题目是:在不修改主方法的前提下使用一个方法交换两个int的值,方法如下: public static void main(String[] args) { Integer a = 1; Integer b = 2; System.out.println("交换前:a="+a+",b="+b); swap(a,b); System.out.println("交换后:a="+a+",b="+

JAVA 主函数(主方法)

主函数(主方法) 1.public     (访问修饰符,公共的)代表该类或者该方法访问权限是最大的 2.static    代表主函数随着类的加载而加载 3.void    代表主函数没有具体的返回值 4.main    main不是java中的关键字,它是一个特殊的单词,它能够被JVM(java虚拟机)所识别 5.String[] args    函数的参数类型是一个字符串数组,该数组的元素是字符串,这个数组传入值的方法是在运行的时候传入,例如:javac Index.java 编译java

面向对象:封装(一):构造函数;类的主方法;权限修饰符;对象的创建

对象:一切皆为对象. 对象包括两部分内容:属性(名词形容词),行为(动词). 对象和对象之间是有关系的. 派生(子类与父类的关系),关联,依赖. 类:对同一类别的众多对象的一种抽象. 类,还是用来生成对象的一种模板,对象是类的一种具体化的表现. 面向对象的三大特性:封装,继承,多态. 一:类的定义: class 类名{ 访问修饰符 成员变量的定义; 访问修饰符 成员函数(方法)的定义; } 例1: public class Student{ public String name; public

参数可以在子方法中赋值,主方法中得到

今天看一同事的代码 list可以从另一个方法中获得值,看上去有点奇怪..list在主方法中创建并传到方法中,没有赋值的,没想到的是,在子方法中赋值,这个值居然可以带到父方法中来.. 1 import java.util.*; 2 3 public class Test { 4 public static void main(String[] args) { 5 6 Person person = new Person(); 7 int a = 100; 8 int b = person.doPe

主方法main的定义说明

主方法必须有几下几点,缺一不可: 1.访问控制符为public 2.必须为静态方法,须有static修饰 3.返回类型为void 4.方法参数为string类型的数组,数组名任意但必须满足标示符规范. ==========一下定义的main()方法,都是正确的========== //1.默认 public static void main(String[] args) { System.out.println("main method....."); } //2.static修饰符提

计算算法时间复杂度的主方法的一种较为简洁的记忆方法

这阵子在认真地看着算法导论,之前看到第四章计算分治法的时间复杂度的计算方法被称为“主方法”,运用这个主方法可以快速地口算出分治算法的递归式的时间复杂度,以下给出算法导论里关于主方法的描述吧,我就直接截图 不得不说,算法导论是一本非常偏向于数学的算法书,里面的对于各种算法结论的正确性大都有着严格的数学上的推导.之前对于主方法的描述只是大略地看了一下,看是看懂了,但是当时没有刻意将这个结论记下来,当我往后看遇到递归式求解部分的时候发觉还是忘记了主方法的求解过程,只能模糊记得部分而已,昨天晚上再复习的