如何採取模在拉賓算法在降低複雜性上相對本地horners有助於排除串match.Anybody請解釋拉賓卡普字符串匹配算法複雜度
回答
我想通過Horners治你的意思是處理字符串作爲數一些基數(「abcd」='a'* p^3 +'b'* p^2 +'c'* p^1 +'d'* p^0)並將字符串作爲數字進行比較,並通過Rabin算法意味着基本上相同的東西,但以某種其他數字爲模。
這個事情是使用Horners規則,你只能比較短的字符串 - 否則你會溢出(你可以使用大整數來避免它,但這就是你在複雜性中失去的地方。將具有O(n)位,所以算術運算不會在O(1)中完成)。
而在Rabin-Karp算法中,與我們的字符串相對應的數字將保持較小,因爲我們將它們取模爲其他數字。它可能會導致碰撞,但如果我們幸運的話,碰撞是非常罕見的。
在任何一種情況下,我們都在計算數字Ist,我們直接比較它IInd我們比較它的mod,所以它如何降低複雜度?? – Vishal
隨着數字變大,您不能再進行比較,在O(1)時間內進行相加和相乘。比較和加法需要O(m)操作,其中m是數字的位數,乘法的複雜度可能更大,並且m將與子串長度成比例。 –
假設您試圖在一個長度爲100000的字符串中查找長度爲50000的子字符串。您將使用什麼數字來表示子字符串? –
- 1. Cormen字符串匹配拉賓,卡普
- 2. 找到適合拉賓,卡普字符串搜索算法
- 3. 卡普拉賓模式匹配算法的樸素實施
- 4. 串拉賓,卡普初等數符號
- 5. 通配符匹配算法的時間複雜度是多少?
- 6. 字符串匹配算法
- 7. 字符串匹配算法
- 8. 複雜的字符串匹配在JavaScript
- 9. 如何匹配複雜的字符串?
- 10. python字符串匹配時間複雜度
- 11. 蟒蛇:複雜的字符串算法
- 12. 嘈雜文本的字符串匹配算法
- 13. 拉賓,卡普串通過滾動散列
- 14. 2D字符串匹配:Baker-Bird算法
- 15. 部分字符串匹配算法
- 16. 算法來檢查字符串匹配
- 17. 高速字符串匹配算法
- 18. 字符串完成和匹配算法
- 19. 複合字符串匹配
- 20. 匹配兩個字符串中的單詞時的字符串匹配算法?
- 21. 斯卡拉:匹配特殊字符
- 22. 我的字符串匹配算法速度快嗎?
- 23. 算法複雜度和大O符號
- 24. 斯卡拉 - 複雜的條件模式匹配
- 25. 最小複雜度的字謎算法
- 26. 斯卡拉+模式匹配+字符串自動裝箱
- 27. 斯卡拉模式匹配字符串和國際
- 28. 斯卡拉/星火有效部分字符串匹配
- 29. 使用斯卡拉匹配字符串內的hrefs
- 30. 模式匹配的字符串在斯卡拉
定義「本地horners規則字符串匹配」 –
horner的規則是,如果你有一個基數x的數字,所以最大限度地減少乘法的數量,它可以被寫爲-X(X(X(..)+。)+。 )+。例如:1234可以寫成10(10(10(1)+2)+3)+4 – Vishal