Aho-Corasick アルゴリズムのコードがあります。しかし、特定の文字列リスト内のテキストを検索するときに、検索手順中に状態情報を使用する方法をまだ理解していません。
たとえば、私は文字列のリストを持っていますが、リストにある[MOSCOW][COLA]
かどうかを判断する必要がありCA
ます。リストにある場合、その位置は何ですか?
Aho-Corasick アルゴリズムのコードがあります。しかし、特定の文字列リスト内のテキストを検索するときに、検索手順中に状態情報を使用する方法をまだ理解していません。
たとえば、私は文字列のリストを持っていますが、リストにある[MOSCOW][COLA]
かどうかを判断する必要がありCA
ます。リストにある場合、その位置は何ですか?
あなたが研究しているアルゴリズムは、まったく逆の方法で機能します。辞書が[MOSCOW][COLA]
で入力文字列がCA
の場合、アルゴリズムは in のすべての場所と in のすべての場所を教えてくれMOSCOW
ます。CA
COLA
CA
ここで、特定の状態 (または、リンクされたコードがそれを呼び出す場合) にはNode
、次のような意味がありますC
COLA
MOSCOW
。(これは、 の最初の文字の後にアクセスされたノードである可能性がありますCA
。)
アルゴリズムの能力は、別の入力、たとえば を検索するときに簡単に確認できますMOSCOLONI
。が表示される直前にL
、現在の状態は「可能性のある 5 文字MOSCOW
、または可能性のある 2 文字になる可能COLA
性がある」ことを意味します。実際、文字の繰り返しも考慮すると、すべての単語のすべての位置にさえ含まれます。