algorithm - 布伦特周期检测算法

标签 algorithm primes

谁能帮我解决布伦特周期检测算法。我不明白为什么“搜索大于 λ 和 μ 的两个 2^i 的最小幂”? 2 的幂如何在循环检测中发挥作用。它与弗洛伊德的循环检测算法有某种关系吗?我无法从基础知识中得到它。请帮忙 !

最佳答案

此方法使用递增步骤(1、2、4、8 ...)尽快进入循环。当 P = 2^k 变得大于 λ 和 μ 时,乌龟 (T) 就在循环中,而兔子 (H) 只走 P 步就可以再次遇到(站立的)乌龟。似乎一些模拟会很有用。让我们有列表 0-1-2-3-4-5-6-7-3

P=1 T=0 H=0; H makes 1 step and doesn't meet T
P=2 T=1 H=1; H makes 2 steps and doesn't meet T
P=4 T=3 H=3; H makes 4 steps and doesn't meet T 
P=8 T=7 H=7; H makes 5 steps and meets T !!!!!

注意:当 P=4 时,T 在循环内,但 hare 不会完成整个循环(P >= μ 但 P < λ )

因此我们发现 μ<8 且 λ=5。然后我们要找到μ(循环入口点)

T=0 H=0; H makes 5 steps; H=5 
while T <> H 
   move both
T=1 H=6
T=2 H=7
T=3 H=3 !!!!!!!

我们刚找到 μ=3

关于algorithm - 布伦特周期检测算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10798012/

相关文章:

functional-programming - 函数式语言中的质因数分解

algorithm - 查找拓扑排序的数字顺序

prolog - CLPFD 约束 : is a prime number

algorithm - 不使用循环对字符串列表进行排序的伪代码

python - NetworkX 多向图可能吗?

java - 使用 BigInteger 进行素数检查(参数不匹配)

algorithm - 降低埃拉托色尼筛法的空间复杂度以生成一定范围内的素数

javascript - 如何生成随机素数?

algorithm - 访问网格上每个 "special"点所需的最少步数

arrays - 两个未排序的小数组的交集算法