0

Ukkonenのアルゴリズムを使用して、最長共通部分文字列、最長パラドーム部分文字列、最長繰り返し部分文字列、すべてのパターンと部分文字列検索をKMPとサフィックスツリーで検索できますか?もしそうなら、両方のアルゴリズムは線形時間の複雑さを持つので、どちらを使うべきですか?時間の複雑さに対するUkkonenのアルゴリズムを用いたKnuth-Morris-Pratt(KMP)と接尾辞木の違い。

+4

宿題に関する質問ですか?これまでに何を研究していますか? – AgataB

+0

いいえ、宿題に関する質問ではありません。私はそれについて少し研究をしました。 –

答えて

0

最も長い共通部分文字列を見つけるために、線形の複雑さを持つKadaneのアルゴリズムを使用します。最も長いPalindromicサブストリングでは、線形の複雑さも持つManacherのアルゴリズムが選択されます。繰り返される文字列とすべてのパターンを検索する場合、選択肢はKMPとBoyer-Mooreの間で沸騰します。 Boyer-Mooreは、最初のパターンではなく、最後の文字とマッチします。最後に一致しない場合、最初は一致しないようにする必要があります。 KMPは、不一致が発生したときに前に一致した文字の再検査を迂回するという観察を利用して、本文文字列S内の単語Wの出現を検索する。 これは、ACTGTのような小さなセットに対してKMPを若干うまく最適化します。

関連する問題