Rabin-Karpアルゴリズムの原理は、テキストとパターンのハッシュ値を比較することで検索を行うことです。まず、パターンのハッシュ値を計算し、テキスト内の連続した部分文字列のハッシュ値と比較します。ハッシュ値が一致する場合、実際の文字列の比較を行って一致するか確認します。ハッシュ値が一致しない場合は、次の連続した部分文字列のハッシュ値を計算して比較を続けます。
以下に、Rabin-Karpアルゴリズムの使用例を示します。
def rabin_karp_search(text, pattern):
n = len(text)
m = len(pattern)
pattern_hash = hash(pattern)
for i in range(n - m + 1):
text_hash = hash(text[i:i+m])
if text_hash == pattern_hash:
if text[i:i+m] == pattern:
return i
return -1
text = "This is a sample text for testing the Rabin-Karp algorithm."
pattern = "Rabin-Karp"
index = rabin_karp_search(text, pattern)
if index != -1:
print("Pattern found at index:", index)
else:
print("Pattern not found.")
上記のコードは、与えられたテキスト内で指定されたパターンを検索します。もしパターンが見つかれば、そのインデックスを表示します。見つからなかった場合は、「Pattern not found.」と表示されます。
以上が、Rabin-Karp文字列検索アルゴリズムの使用方法とコード例の説明です。