Collatz 问题是隐式图的一个很好的例子。如果 n 为偶数,则 Collatz 函数 c(n) 定义为 n/2,如果 n 为奇数,则定义为 3n + 1。例如 c(32) = 32/2 = 16 因为 32 是偶数,而 c(5) = 3*5 + 1 = 16 因为 5 是奇数。
问题是,如果你选择一个数字 n 开始,并继续应用 c,它最终会达到 1 吗?例如,从 5 开始,c(5) = 16,然后 c(16) = 8,然后 c(8) = 4,然后 c(4) = 2,然后 c(2) = 1。
通过绘制图形来可视化函数 c 的作用可能会有所帮助,其中从每个数字 n 到 c(n) 都有一条边:
将其视为一个图,Collatz 猜想指出每个节点都有到节点 1 的路径。但是要研究这个问题,不需要将图存储在内存中;我们可以只使用函数 c(n) 来计算从 n 开始的边到哪里。相反,如果我们想知道另一个方向的边,那么 n 总是有一条来自 2n 的边,当 n - 1 可以被 3 整除时,它有一条来自 (n - 1)/3 的边。