Floyd判环算法(龟兔赛跑算法),一定会相遇吗?

仅考虑,两指针都进入了环那一刻: 设在环中: 指针1位置:$0$,步长:$l_1$ 指针2位置:$d$ ,步长:$l_2$ 圈长:$C$ 第n步时: 指针1: $n\c_dot l_1 = aC+p_1$ 指针2: $n\c_dot l_2 +d= bC+p_2$ 若指针1,指针2不能相遇,即证明:不存在 $a,b \in N \Rightarrow p_1=p_2 $, 其中$p_1,p_2$为指针1和指针2在环中位置。 两式相减: 证明: $n(l_1-l_2)=(a-b)C+d s.t. a,b \in N$ 无解 画图,容易看出,会存在整数解,使得两直线相交 所以无解不成立,所以会相遇

仅考虑,两指针都进入了环那一刻:
设在环中:
指针1位置:$0$,步长:$l_1$
指针2位置:$d$ ,步长:$l_2$
圈长:$C$
第n步时:
指针1位置: $nl_1 = aC+p_1$
指针2位置:$nl_2 +d= bC+p_2$

若指针1,指针2不能相遇,即证明:不存在$a,b \in N \Rightarrow p_1=p_2 $, 其中$p_1,p_2$为指针1和指针2在环中位置。
两式相减:
证明:$n(l_1-l_2)=(a-b)C+d \quad s.t. \quad a,b \in N$ 无解


画图,上面就是两条直线y=(l_1-l_2)x 和y=kx+d,第二条直线过点(C,d)。

容易看出,会存在整数解,使得两直线相交
所以无解不成立,所以会相遇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值