首页 > 编程知识 正文

时间复杂度的计算方法,汉诺塔问题编程算法

时间:2023-05-03 14:52:18 阅读:32164 作者:4939

分治法时间复杂度求解秘籍

分割统治法的道理非常简单,如果将大的复杂问题分为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 )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。