Pollard Rho因式分解法使用函數發生器f(x)= x^2-a(mod n)或f(x)= x^2 + a(mod n)函數(拋物線)具有任何意義,或者我們可以使用任何函數(立方,多項式甚至線性),因爲我們必須識別或找到屬於同一類模n的數以找到非平凡除數?Pollard Rho因子分解法
3
A
回答
2
在Knuth的第II卷(在本領域計算機編程 - 半數值算法)部分4.5.4 Knuth的說
此外如果f(y)的模p表現爲從集合{0, 隨機映射1,... p-1}自身,練習3.1-12表明,平均值 最小的m將是sqrt(p)。從第3章 的理論可知,對於我們的目的,線性多項式f(x)= ax + c不會是足夠隨機的 。下一個最簡單的例子是 二次方程,比如f(x)= x^2 +1。我們不知道知道這個函數是 足夠隨機的,但我們缺乏知識傾向於支持隨機性假設,並且經驗性測試表明,此F確實 工作基本上如預測
概率理論說使f(x)具有長度的約SQRT(p)週期在特定假定可以有兩個值y和z使得f(y)= f(z) - 因爲f是隨機選擇的。 Pollard Rho中的rho包含這樣一個交匯點,其中包含多條線的循環通向它。對於線性函數f(x)= ax + b,那麼對於gcd(a,p)= 1 mod p(這可能是因爲p是質數)f(y)= f(z)意味着y = z mod p,所以沒有這樣的路口。
如果你看看http://www.agner.org/random/theory/chaosran.pdf,你會看到隨機函數的預期週期長度約爲狀態長度的sqrt,但隨機雙向預期週期長度約爲狀態長度。如果您只是在評估時產生隨機函數,則可以看到如果函數完全是隨機的,那麼到目前爲止所看到的每個值都可以隨機再次選擇以找到一個週期,所以關閉週期的機率增加與循環長度一致,但是如果函數必須是可逆的,則關閉循環的唯一方法是生成起始點,該起始點的可能性要小得多。
相關問題
- 1. Pollard rho整數因子
- 2. Pollard Rho找不到因子
- 3. Pollard Rho因子分解方法在C中的實現
- 4. Pollard Rho因子分解方法的實施
- 5. Pollard-Rho分解並行化
- 6. Python 2.7使用記憶改進遞歸pollard rho因式分解
- 7. Pollard Rho算法的計劃代碼
- 8. Pollard Rho算法卡在循環中
- 9. 在Pollard rho整數因子分解中計算GCD背後的原因是什麼?
- 10. Pollard的rho算法logarithms_C與指針錯誤
- 11. Android中的素數因子分解
- 12. 從Pollard的rho算法實現中得不到合適的輸出
- 13. 如何改進Pollard的rho算法來處理半大素數的產品?
- 14. 素因子分解算法的效率
- 15. Pollard的p-1算法理解berkley紙
- 16. SPOJ - 小的因子分解
- 17. 因子分解在sympy
- 18. 蠻力BigInteger因子分解
- 19. 按因子分解數據
- 20. LAPACK QR因子分解
- 21. 將因子分解爲R
- 22. 閱讀rho分隔文件
- 23. 快速因式分解模塊
- 24. 將因子分解爲數組
- 25. css壓縮器和因子分解
- 26. Haskell中的素因子分解
- 27. 質因子分解方案的Java
- 28. 紅寶石質因子分解錯誤
- 29. Java中的素因子分解
- 30. C素因子分解(循環失敗?)
看起來並不重要。 http://en.wikipedia.org/wiki/Pollard's_rho_algorithm#Core_ideas指出生成器函數只需要僞隨機。 – bdares
那麼爲什麼我們不只是使用線性函數.....我的意思是立方,多項式可能增加計算並可能導致溢出,但爲什麼我們不只是使用線性函數? – SlashGeek
它應該是僞隨機的,並且大數的平方的模數似乎會快速跳躍,但是線性函數可能看起來不那麼隨機。如果您使用'線性僞隨機生成器'檢查間隔爲1的數字,那麼在檢查了一堆數字之後,您將高度置信地說這些數字是相互矛盾的,即使它們有很大的公因子。簡而言之,當算法需要隨機數時,不要使用線性級數,否則可能會出現正確性問題。 – bdares