Rabin-Karp 演算法是一種字串模式匹配演算法,可以有效搜尋較大文字中模式的出現。它由 Michael O. Rabin 和 Richard M. Karp 於 1987 年開發。
此演算法利用雜湊技術來比較模式和文字子字串的雜湊值。其工作原理如下:
計算模式和文字的第一個視窗的雜湊值。
將模式滑過文本,每次一個位置並比較雜湊值。
如果雜湊值匹配,則比較模式的字元和文字的當前視窗以確認匹配。
如果有匹配,記錄匹配的位置/索引。
使用滾動雜湊函數計算文字的下一個視窗的雜湊值。
重複步驟3到5,直到檢查完文字的所有位置。
滾動雜湊函數透過減去前一個視窗中第一個字元的貢獻並添加新視窗中下一個字元的貢獻來有效地更新每個新視窗的雜湊值。這有助於避免為每個視窗從頭開始重新計算雜湊值,從而使演算法更有效率。
"; } // Calculate the hash value for the next window of text if ($i
Pattern found at index 1 Pattern found at index 4 Pattern found at index 7 Pattern found at index 10 Pattern found at index 13
PHP 程式碼實作了用於模式搜尋的 Rabin-Karp 演算法。它將模式和文字作為輸入,並蒐索文本中模式的出現。該演算法計算模式和文字的第一個視窗的雜湊值。然後,它將模式滑過文本,比較當前視窗和模式的雜湊值。如果雜湊值匹配,則進一步一一驗證字元。如果找到匹配項,它將列印找到該模式的索引。該演算法使用滾動雜湊函數來有效地更新每個視窗的雜湊值。該程式碼透過在文字“ABCABCABCABCABCABC”中搜尋模式“BC”來演示該演算法的用法。
總之,PHP 程式有效地實現了用於模式搜尋的 Rabin-Karp 演算法。透過利用滾動雜湊函數並比較雜湊值,該演算法可以有效地搜尋較大文字中模式的出現。該程式正確識別文本中找到模式的索引並輸出結果。該程式具有清晰的結構和適當的雜湊計算,演示了 Rabin-Karp 演算法在 PHP 中進行模式搜尋的功能和實用性。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3