分治法时间复杂度求解秘籍
分割统治法的道理非常简单,如果将大的复杂问题分为a(a1 )个相同形式的子问题,这些子问题的规模为n/b,分解或合并的复杂度为f ) n,则总时间复杂度可以表示为:
那么,如何解开时间的复杂性呢?
递归求解方法我们上面的求解方法都是递归求解,写出其递归公式,最后求出结果。
例如,合并排序算法的时间复杂性是递归确定的。
递归树求解法递归树求解方式与递归树求解方式相同,但递归树显示得更清晰直观,能够更形象地表现出按层次分解的节点和按层次发生的成本有多少。 例如,如图1所示。
图1分治递归树
主控解法
用递归树说明主控解法。 如图2所示。
图2主解法递归树
时间复杂度=叶子数*T(1)+成本和
时间复杂度=成本和。
现在,只要观察各层发生的成本趋势,是在减少、增加,还是在各层都一样? 每层成本的公比。
绘制例如:递归树,观察每层发生的成本。 成本公比小于1,时间复杂度按3358 www.Sina.com/3358 www.Sina.com/http://www.Sina.com /计算
的公比大于1,时间复杂度按http://www.Sina.com/http://www.Sina.com/3358 www.Sina.com /计算;
成本公比为1,时间复杂度按http://www.Sina.com/http://www.Sina.com/3358 www.Sina.com /计算;
主控解法:
递归树如图3所示。
图3主解法递归树
首先观察递归树各层成本的发展趋势,各层成本可能不那么规律,需要仔细验证。 例如,必须验证第三层是(5/16 )2n2,第四层是(5/16 )3n2。 验证结果表明,各层成本为等比数列,公比为5/161,呈减少趋势,计算第一项即可。 时间复杂度: t(n )=o (N2 )。