回答:
アイデアは、単語が循環する量を最初に非決定的に決定し、すべてのケースにオートマトンのコピーを用意することです。オートマトンに関しては、これは、単語のプレフィックス(入力のサフィックス)を消費した後にがどの状態になったかを推測し、その状態で開始することを意味します。
今建設。すべての状態、を2つの部分と分離します。そこから状態が含ま到達可能とされから到達可能な状態:
[ ソース ]
任意のノードがと両方に含まれている可能性があることに注意してください。したがって、このステップを明示的にすると、状態数が2倍になる可能性があります。
次に、このオートマトンを再配線して、が「サイクルポイント」をマークするすべての単語を受け入れます。
[ ソース ]
我々が得るこの形式のオートマトン。すべての開始状態への -transitionsを持つ新しい初期状態を作成します。結果のオートマトンは受け入れます。まとめると、最大で状態、のみが得られます 参照クレームより多くの状態が可能です。
コンポーネントのオートマトンを少し変更することで、状態を実現できます。着信する -transitionsを発信する遷移のコピーで置き換えることにより、すべての排除します。つまり、遷移のすべてのペアに対して、遷移導入します。
厳密な構造と正当性の証明は、演習として残ります。