次の問題があるとします。
意味 :
S をアルファベット Σ 上の文字列とします。
S'の最小周期は、次のSようS'な最小の文字列です。
S = (S')^k (S'')、の
S''接頭辞ですS。そのようなものS'が存在しない場合Sは、定期的ではありません。例:
S = abcabcabcabca. Thenabcabcは からのS = abcabc abcabc a期間ですが、最小の期間はabcからS = abc abc abc abc aです。入力文字列の最小周期を見つけるアルゴリズムを与える
Sか、周期的でないと宣言しSます。ヒント:あなたはそれを行うことができます
O(n)...
私の解決策: O(n) で実行される KMP を使用します。
問題の定義 S = (S')^k (S'') により、最短期間 のオートマトンを作成し、その最短期間 を見つける方法を見つければ、完了だと思います。 .
問題はオートマタのFAILの矢をどこに置くか…
どんなアイデアでも大歓迎です、
よろしく