Algorithm 弗洛伊德';s循环检测算法:为什么乌龟最多只能跑一圈?
为什么弗洛伊德的周期检测算法假设乌龟在遇到兔子之前最多只绕一圈?为什么它不能跑多圈?Algorithm 弗洛伊德';s循环检测算法:为什么乌龟最多只能跑一圈?,algorithm,linked-list,Algorithm,Linked List,为什么弗洛伊德的周期检测算法假设乌龟在遇到兔子之前最多只绕一圈?为什么它不能跑多圈? 无论是直观的还是正式的解释都将不胜感激。我想我可以提供直观的解释 我们可以有两种情况:要么有循环,要么没有循环 如果没有循环: 兔子将在乌龟之前到达列表的末尾,因此我们完成了 如果有一个循环: 它的长度必须是n,我们记得兔子的“速度”是乌龟的两倍。 一旦乌龟进入循环,兔子就在循环中的某个地方(可能已经绕了几圈)。在任何情况下,它都是x节点,位于乌龟后面(请记住x如果你用笔和纸尝试,你会立即看到它。
无论是直观的还是正式的解释都将不胜感激。我想我可以提供直观的解释 我们可以有两种情况:要么有循环,要么没有循环 如果没有循环:
兔子将在乌龟之前到达列表的末尾,因此我们完成了 如果有一个循环:
它的长度必须是
n
,我们记得兔子的“速度”是乌龟的两倍。
一旦乌龟
进入循环,兔子
就在循环中的某个地方(可能已经绕了几圈)。在任何情况下,它都是x
节点,位于乌龟
后面(请记住x如果你用笔和纸尝试,你会立即看到它。