Algorithm 弗洛伊德';s循环查找算法证明(检测链表中的循环)

Algorithm 弗洛伊德';s循环查找算法证明(检测链表中的循环),algorithm,pointers,linked-list,floyd-cycle-finding,Algorithm,Pointers,Linked List,Floyd Cycle Finding,该算法使用快速和慢速指针来检测链表中的循环。我的问题是,我如何证明两个指针在循环中碰撞的点与循环起点之间的距离等于链表头与循环起点之间的距离?考虑慢速指针的速度为“x”,快速指针的速度为“2x”。使用简单的相对运动,你可以证明,如果有一个循环,这两个最终会相遇。 现在,考虑时间相同,所以快速指针所走的距离是慢指针的两倍。 如果慢速行驶a+b距离,则快速行驶a+2b+c距离。该链接将为您提供更好的理解。 2*(a+b)=a+2b+c 解这个方程得到a=c. 此问题已得到回答,您可以参考以下链接:

该算法使用快速和慢速指针来检测链表中的循环。我的问题是,我如何证明两个指针在循环中碰撞的点与循环起点之间的距离等于链表头与循环起点之间的距离?

考虑慢速指针的速度为“x”,快速指针的速度为“2x”。使用简单的相对运动,你可以证明,如果有一个循环,这两个最终会相遇。
现在,考虑时间相同,所以快速指针所走的距离是慢指针的两倍。 如果慢速行驶a+b距离,则快速行驶a+2b+c距离。该链接将为您提供更好的理解。
2*(a+b)=a+2b+c
解这个方程得到a=c.
此问题已得到回答,您可以参考以下链接:

这个问题更适合于这两个距离通常不是相同的距离same@MattTimmermans如果它们不相等,那么如何检测循环的开始?如果两个指针不断递增1,且距离不相等,则意味着重置到链表头部的指针将再次进入循环。你会怎么做呢?这里已经解释过了:一个链接到一个解决方案是受欢迎的,但是请确保你的答案在没有它的情况下是有用的:这样你的其他用户就会知道它是什么以及它为什么在那里,然后引用你链接到的页面中最相关的部分,以防目标页面不可用。我是新来的,所以不知道。谢谢你的评论。