首页 > 编程知识 正文

汉诺塔演示python,算法的时间复杂度分析实验报告

时间:2023-05-06 18:24:32 阅读:140318 作者:2057

问题:汉诺威递归算法的时间复杂性

算法如下。

解释: size表示汉诺威的规模,startStack表示汉诺威的开始,endStack表示完成,midStack表示辅助

defTowers(size,startStack,endStack,midStack ) :

if size==1:

打印' move disk from ',firstStack,' to ',endStack

else:

Towers(size-1,firstStack,midStack,endStack ) )。

Towers(1,firstStack,endStack,midStack ) )。

Towers(size-1,midStack,endStack,firstStack ) )。

分析:设问题的规模为n,t(n )为问题规模的必要步骤,

t(n )=1t )1) 2t(n-1 ) /在规模为n-1情况下通过两次,因此成为2t ) n-1 )

=122t(n-1 )//因为规模为1时需要2个步骤,所以t )1)=2

=32[32t(n-2 ) ] //规模为n-2时,重复上述操作

=94t(n-2 ) )。

=94[32t(n-3 ) ]

=218t(n-3 ) )。

.

=C2^kt(n-k ) ) )

在n-k=1情况下,得到k=n-1,

t(n )=c2^ ) n-1 ) t )1) /其中t )1)=2

t(n )=C 2^n

总的来说,汉诺威的时间复杂度为o(2^n )

注:算法是用Python语言编写的

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