PHP程序用于Rabin-Karp算法进行模式搜索

王林
Lepaskan: 2023-09-13 09:02:01
ke hadapan
1141 orang telah melayarinya

PHP程序用于Rabin-Karp算法进行模式搜索

什么是 Rabin-Karp 算法?

Rabin-Karp 算法是一种字符串模式匹配算法,可以有效地搜索较大文本中模式的出现情况。它由 Michael O. Rabin 和 Richard M. Karp 于 1987 年开发。

该算法利用散列技术来比较模式和文本子字符串的散列值。其工作原理如下:

  • 计算模式和文本的第一个窗口的哈希值。

  • 将模式滑过文本,每次一个位置并比较哈希值。

  • 如果哈希值匹配,则比较模式的字符和文本的当前窗口以确认匹配。

  • 如果有匹配,记录匹配的位置/索引。

  • 使用滚动哈希函数计算文本的下一个窗口的哈希值。

  • 重复步骤 3 至 5,直到检查完文本的所有位置。

滚动哈希函数通过减去前一个窗口中第一个字符的贡献并添加新窗口中下一个字符的贡献来有效地更新每个新窗口的哈希值。这有助于避免为每个窗口从头开始重新计算哈希值,从而使算法更加高效。

用于模式搜索的 Rabin-Karp 算法的 PHP 程序

"; } // Calculate the hash value for the next window of text if ($i < $N - $M) { $t = ($d * ($t - ord($text[$i]) * $h) + ord($text[$i + $M])) % $q; // If the calculated hash value is negative, make it positive if ($t < 0) $t = $t + $q; } } } // Example usage $text = "ABCABCABCABCABC"; $pattern = "BC"; rabinKarp($pattern, $text); ?>

Salin selepas log masuk

输出

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
Salin selepas log masuk

代码说明

PHP 代码实现了用于模式搜索的 Rabin-Karp 算法。它将模式和文本作为输入,并搜索文本中模式的出现。该算法计算模式和文本的第一个窗口的哈希值。然后,它将模式滑过文本,比较当前窗口和模式的哈希值。如果哈希值匹配,则进一步一一验证字符。如果找到匹配项,它将打印找到该模式的索引。该算法使用滚动哈希函数来有效地更新每个窗口的哈希值。该代码通过在文本“ABCABCABCABCABC”中搜索模式“BC”来演示该算法的用法。

结论

总之,PHP 程序有效地实现了用于模式搜索的 Rabin-Karp 算法。通过利用滚动哈希函数并比较哈希值,该算法可以有效地搜索较大文本中模式的出现。该程序正确识别文本中找到模式的索引并输出结果。该程序具有清晰的结构和适当的哈希计算,演示了 Rabin-Karp 算法在 PHP 中进行模式搜索的功能和实用性。

Atas ialah kandungan terperinci PHP程序用于Rabin-Karp算法进行模式搜索. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!