如何证明弗洛伊德循环检测算法的第一部分?

Max*_*ngt 4 algorithm

在弗洛伊德算法的第一部分中,兔子每走一步就移动两步。如果乌龟和兔子相遇,则存在一个循环,并且相遇点是循环的一部分,但不一定是循环中的第一个节点。

如果圆圈存在,我无法理解为什么两个指针必须在某个时候相遇?用“三步”代替“两步”怎么样?

希望有人能证明给我看...

MBo*_*MBo 9

注意,当乌龟和兔子都在循环中时,它们的相对速度变为1,实际上兔子以这个速度追逐站立的乌龟,因此兔子会N <= Cycle_Len逐步遇到乌龟。

您可以将“两步”替换为“三步”,但您必须检查它们是否在每个野兔子步中相遇