この質問はWayne Goddardによる計算理論の紹介(質問1.17)の第1章演習から直接得られます。偶数が0で1の数が3の倍数であるすべてのバイナリ文字列を受け入れるFA
最初は、入力内の0の数が偶数であることを保証するための2つの別個のDFAを作成することを考えました。入力内の1の数が3で割り切れることを保証するためにもう1つのDFAを1つの言語私が思っていたよりも難しい仕事になるのです。誰かが私を正しい方向に向けることができれば大変感謝しています。
私は新しいシンボルを観察した後、以前に取得した0と1に関するデータを確実に保持するために、論理的なステップを構築するのが難しいです。
計算理論についてはわかりませんが、dfaでアサーションを使用できない場合は、 '?(1:01?01?)+'と '(?:0?10?10あなたがアサーションを使うことができれば、それはかなり簡単です^(?=(?:1?01?01?)?) + $)(?:0?10?10?10?)+ $ '再び、私はおそらくオフです。 – sln
しかし、それは' 11100'と一致しません@sln – revo
@revo - あなたが正しいです。これは恐らく '^(?=(?:1 * 01 * 01 *)+ $)(?:0 * 10 * 10 * 10 *)+ $' – sln