首頁 >後端開發 >php教程 >用於模式搜尋的 Rabin-Karp 演算法的 PHP 程序

用於模式搜尋的 Rabin-Karp 演算法的 PHP 程序

WBOY
WBOY原創
2024-08-28 12:35:10452瀏覽

PHP Program for Rabin-Karp Algorithm for Pattern Searching

什麼是 Rabin-Karp 演算法?

Rabin-Karp 演算法是一種字串模式匹配演算法,可以有效搜尋較大文字中模式的出現。它由 Michael O. Rabin 和 Richard M. Karp 於 1987 年開發。

此演算法利用雜湊技術來比較模式和文字子字串的雜湊值。其工作原理如下:

  • 計算模式和文字的第一個視窗的雜湊值。

  • 將圖案滑過文本,每次一個位置並比較哈希值。

  • 如果雜湊值匹配,則比較模式的字元和文字的目前視窗以確認匹配。

  • 如果有匹配,記錄匹配的位置/索引。

  • 使用滾動雜湊函數計算文字的下一個視窗的雜湊值。

  • 重複步驟3到5,直到檢查完文字的所有位置。

滾動雜湊函數透過減去前一個視窗中第一個字元的貢獻並添加新視窗中下一個字元的貢獻來有效地更新每個新視窗的雜湊值。這有助於避免為每個視窗從頭開始重新計算雜湊值,從而使演算法更有效率。

用於模式搜尋的 Rabin-Karp 演算法的 PHP 程式

雷雷

輸出

雷雷

代碼說明

PHP 程式碼實作了用於模式搜尋的 Rabin-Karp 演算法。它將模式和文字作為輸入,並蒐索文本中模式的出現。該演算法計算模式和文字的第一個視窗的雜湊值。然後,它將模式滑過文本,比較當前視窗和模式的雜湊值。如果雜湊值匹配,則進一步一一驗證字元。如果找到匹配項,它將列印找到該模式的索引。該演算法使用滾動雜湊函數來有效地更新每個視窗的雜湊值。該程式碼透過在文字“ABCABCABCABCABCABC”中搜尋模式“BC”來演示該演算法的用法。

結論

總之,PHP 程式有效地實現了用於模式搜尋的 Rabin-Karp 演算法。透過利用滾動雜湊函數並比較雜湊值,該演算法可以有效地搜尋較大文字中模式的出現。該程式正確識別文本中找到模式的索引並輸出結果。該程式具有清晰的結構和適當的雜湊計算,演示了 Rabin-Karp 演算法在 PHP 中進行模式搜尋的功能和實用性。

以上是用於模式搜尋的 Rabin-Karp 演算法的 PHP 程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn