ムーアオートマトンを最小化するためのアルゴリズム


10

Brzozowskiのアルゴリズムはムーアオートマトンに拡張できますが、その時間の複雑さは一般的に指数関数的です。ムーアオートマトンを最小化する他のアルゴリズムはありますか?これらのアルゴリズムの実行時間は何ですか?


どのBrzozowskiのアルゴリズムを参照していますか?正規表現の導関数を使用するもの?
J.-E.

2
SE Computer Scienceへようこそ。サイトのプレゼンテーションをまだ読んでいないようですので、質問するユーザーと回答またはコメントを提供するユーザーとの間の技術的な交流に基づく、これは協力的な作業であることを知っておく必要があります。したがって、コメントで詳細を尋ねるユーザーに回答し、良い回答または良いコメント(または他の興味深い質問またはあなたが読んだ回答)に賛成票を投じ、最終的には、「選択した答えの左側にある「Vのようなチェック記号」。
バブー2015年

答えはあなたにとって役に立ちましたか?
2015

回答:


6

元のDFA最小化アルゴリズムは実際にはMoore Machines用に設計されており、明らかにより観察可能な動作に基づいています。しかし、ここで紹介するアルゴリズムは、DFA最小化からの再構成です。なぜなら、私は事後に歴史的証拠を発見したからです。

ウィキペディアの後(表記上の変更あり):

A ムーア・マシンは、 6タプルとして定義することができる以下からなります:(Q,q0,Σ,Π,δ,γ)

  • 状態の有限集合Q
  • 要素である開始状態(初期状態とも呼ばれる) Qq0Q
  • 入力アルファベットと呼ばれる有限集合Σ
  • 出力アルファベットと呼ばれる有限集合Λ
  • 遷移関数状態と入力アルファベットを次の状態にマッピングする δ:Q×ΣQ
  • 出力関数各状態を出力アルファベットにマッピング γ:QΠ

この定義から、ムーアマシンは確定的有限状態トランスデューサーです。

ムーアオートマトンの最小化については言及していません。ただし、確定的有限状態オートマトンに使用されるアルゴリズムから派生したアルゴリズムを想像することはそれほど難しくないと思われます。

DFA最小化のアイデアは、通常の言語のMyhill-Nerode特性に基づいています

言語と、文字列とペアが与えられた場合、2つの文字列とうちの1つが属するように、文字列になるように識別拡張子を定義します。と区別する拡張がない場合はという規則によって、文字列にリレーションを定義 します。が文字列の同値関係であることを簡単に示すことができるため 、すべての文字列のセットを同値クラスに分割します。x y z x z y z L R L x R L y x y R LLxyzxzyzLRLxRLyxyRL

Myhill-Nerodeの定理は、が有限数の同値類を持つ場合に限り、は正則 であり、さらに、認識する最小決定性有限オートマトン(DFA)の状態数は、。R L L R LLRLLRL

実際、最小のDFAの各状態は、上記で定義されたが関係等価クラスの1つであるようなものです。W q R LqWqRL

通常言語最小ではないDFAの場合、各セットにに関して同じ同等のクラスにすべて属する文字列が含まれ ていることを示すのは簡単です。W q R LLWqRL

したがって、2つの異なる状態に同等の文字列が含まれていることが示されている場合は常に、DFAの最小化は実際には(同等の文字列のセットと見なされる)マージ状態で構成されています。

その目的のために、2つのかなり高速なアルゴリズムが存在します。ムーアアルゴリズム(1956)は時間あり、ホップクロフトのアルゴリズム(1971)は時間です。O n log n O(n2)O(nlogn)

ムーアオートマトンへの拡張は、変換器等価関係をとして再定義することで最もよく理解されます。関係 は、将来の入力が同等に受け入れ状態になるかどうかに関係していました。ムーアオートマトンの等価関係は、将来の入力が同じ出力を生成するかどうかに関係しています。 T R L R TRTTRLRT

したがって、トランスデューサーと2つの文字列と与えられた場合、 とがような文字列として識別拡張を定義します、つまりトランスデューサの出力動作が、または追随するかどうかに応じて、異なり ます。x y z T x z = T x u T y z = T y v u v z x yTxyzT(xz)=T(x)uT(yz)=T(y)vuvzxy

ここでも、は同値関係であり、すべての文字列を同値クラスに分割します 。ムーアマシンの場合、これらのクラスも最小トランスデューサーの状態に対応します。Σ *RTΣ

次のアルゴリズムは、DFA最小化のMooreアルゴリズムを模倣しています。

次のように、初期パーティション を状態のクラスします。 Q S ePQSe

eΠ:Se={qQγ(q)=e}

次に、クラスをで次のように分割します。P

状態のクラスごとに連続して繰り返し、変化がなくなるまで repeat場合、その後何もしない他の分割はサブセットにように各サブセットのために、異なるクラスがある、このようなその(サブセットはを置き換えるS
   aΣ,
     SP,qS,δ(q,a)S
     SSi
      SiSPqSi,δ(q,a)S
      SiSP

分割する必要のあるクラスが残っていない場合、残りの状態のクラスが最小のMooreマシンの状態を形成します。

構造上、クラスのすべての状態は、クラスの出力である同じ出力を持っています。

同様に、入力場合、クラス内のすべての状態は同じ最小クラス内のいくつかの状態に移動します。これにより、最小ムーアマシンの遷移関数が定義されます。aΣ

複雑性分析: レッツ状態の数であり、入力アルファベットのサイズ。 各ループは少なくとも1つの状態クラスを分割する必要があり、各クラスには少なくとも1つの状態が含まれるため、メインループは最大で回実行されます。ループの各反復では、各状態を有限回数、入力シンボルの数に比例して調べます。したがって、アルゴリズムの複雑さはであり、これは、このアルゴリズムのガイドラインとして機能したDFA最小化アルゴリズムのそれと同じです。s = | Σ | n O s n 2n=|Q|s=|Σ|
nO(sn2)

ムーアマシンのこの最小化についての言及はありません。おそらくそれは彼の論文に含まれています:

ムーア、エドワードF(1956)。「シーデンシャルマシンでのげんだんけん実験」。Automata Studies、Annals of Mathematical Studies(Princeton、NJ:Princeton University Press)(34):129-153。

このペーパーは、ムーアマシンを紹介する主要なリファレンスです。また、ムーアのDFA最小化アルゴリズムのリファレンスでもあります。したがって、ムーアマシンの最小化へのアルゴリズムの適応が少なくともその論文で示唆されていなかったとしたら、それは驚くべきことです。私は論文を確認しましたが、提示された最小化アルゴリズムのバージョンは、実際にはムーア機用であり、DFA用ではありません。論文はよく書かれていますが、時代のスタイルにより、少し読みにくくなっています。興味深いのは、有限状態機械のMyhill-Nerode理論のアイデアの多くがこの論文ですでにスケッチされていることです。

John Hopcroft(1971)による最近のアルゴリズムは、Mooreマシンにも同様に適応できるはずです。この適応をどこにでも公開する理由があったことは明らかではなく、Hopcroftの論文にはムーアのマシンについての言及がないようです。O(snlogn)


@Raphael参照...ええと、ラッキーです。ライブラリにアクセスできないため、アルゴリズムを再設計しました。しかし、あなたが参照を求めたので、私はあなたにそれをもらいました。あなたはそれを好きなはずです。しかし、それを教えるために使うかどうかはわかりません。
バブー2015年

@Raphaelこの論文は、代数よりも非常に直感的で操作性を高めようとするプレゼンテーションで興味深いものです。MyhillとNerode(2年後の1958年)の貢献の詳細をすべて覚えているわけではありません。また、この論文を十分に注意深く読みませんでした(私はそれをすくい取りました)が、理論がムーアに帰せられるのではないかと思います。上手。
babou 2015年

2

正規表現の導関数を使用するBrzozowskiのアルゴリズムのバージョンは、[2]、第12章、セクション4に記載されており、[4]とされています。後続トランスデューサのより一般的なケースについては、[1]と[3]を参照してください(この用語は少し時代遅れであり、今日では、順次トランスデューサという用語がおそらくより適切です)。

[1] C. Choffrut、後続トランスデューサの最小化:調査、Theoret。コンプ サイエンス。 292(2003)、131–143。

[2] S.アイレンバーグ、オートマタ、言語と機械、vol。A、アカデミックプレス、1974年。

[3] J.-E. ピン、シーケンシャル関数のチュートリアル。(スライド)

[4] GNラネイ、シーケンシャル関数、JACM 5(1958)、177–180。


@DW編集ありがとうございます。完璧。
J.-E.

1

Brzozowskiのアルゴリズムは悪い出発点です(漸近的な最悪の場合のランタイムに関心がある場合)。ウィキペディアでさえも多くのことを教えてくれます:

Brzozowski(1963)が観察したように、DFAのエッジを反転すると、元の言語を反転するための非決定的有限オートマトン(NFA)が生成され、標準のパワーセット構成を使用してこのNFAがDFAに変換されます(到達可能な状態のみを構成します)変換されたDFA)は、同じ逆言語の最小限のDFAにつながります。この反転操作をもう一度繰り返すと、元の言語のDFAは最小限になります。反転の最小DFAが言語の最小DFAよりも指数関数的に大きい通常の言語があるため、Brzozowskiのアルゴリズムの最悪の場合の複雑さは指数関数的です[6]が、この最悪の場合が示唆するよりも頻繁にパフォーマンスが向上します。

このアルゴリズムは、逆のオートマトンを計算するため、DFA上でも指数ワーストケースのランタイムを持ちます。したがって、問題はトランスデューサの拡張に起因するものではありません。

別のDFA最小化アルゴリズムを適応させてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.