这是我教科书中的一个问题。 Collatz conjecture(或“3n + 1”问题)的工作原理如下(给出一些自然数 n ):
while n > 1 do
if n is even then
n = n / 2
else
n = 3n + 1
end if
end while
我已经浏览了一些关于这个猜想的论文,但他们都超过了我的脑海。我试图对算法的复杂性有一个基本的了解。是否可以对执行的操作数量的上限或下限进行评论(在最坏的情况下)?
我唯一能够推断的是,最佳情况输入必须是n = 2 ^ k的形式(这将导致最少的操作)。从这一点可以说,最坏情况的输入是两个非幂?
我一直在努力尝试概念化粗略的上限或下限。对于任何 n ,似乎从奇数到偶数的转换太多(导致增加3倍或减少2倍)来评论最少/最多金额进行的计算。
感谢任何帮助。
答案 0 :(得分:2)
建立@Kevin的评论:现在,我们甚至不确定这个过程终止所有输入。序列总是很有可能终止,并且很可能存在序列永远不会终止的输入。
在序列永远不会终止某些输入的情况下,最坏情况输入将是序列永不停止的任何数字。这不一定与“任何非二次幂”相同,因为我们知道序列收敛的许多非幂二(例如,15)。
在序列总是针对所有输入终止的情况下,为了确定“最坏情况”输入是什么,我们必须更仔细地研究为什么会这样。所有非二次幂都不太可能是最坏情况的输入。有可能会有一个无限的自然数族,它们形成围绕它们大小的数字的最坏情况输入,类似于斐波那契数字给出欧几里德算法的最坏情况输入。
当然,现在还不知道这一点 - 这就是解决开放性问题的美妙之处!
希望这有帮助!