Rabin-Karp文字列検索アルゴリズムの効果的な使用方法


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文字列検索アルゴリズムの使用方法とコード例の説明です。