右と左の連想積が同じ単語


9

HopcroftとUllmanの本を使用して、非決定論的オートマトンの研究を始めました。私は非常に興味深いと思う問題に行き詰まっています。

次の表に従って乗算することにより、左から右に評価したときに右から左に評価したときに同じ値を持つすべての文字列を受け入れる非決定的有限オートマトンを提供します。

×abcaaacbcabcbca

私たちは、文字列の持っているのであれば、 左から右への製品です(\回B)\回C = A \倍のC = Cと 右から左に製品がある= A \回(B \倍のC) \回b = aa × b × c = a × c = c a × b × c = a × b = aabc
(a×b)×c=a×c=c
a×(b×c)=a×b=a

したがって、abcはオートマトンには受け入れられないはずです。文字列aaまたはbbまたはccが受け入れ可能な文字列であることは明らかです(これらの右と左の評価は同じ部分文字列で機能します)。左から右への評価を説明するNFAを与えるのは簡単ですが、問題は、マシンが右から左への評価を計算しようとする場合、文字列の長さを知る必要があると思うことです(無限メモリが必要です)。

では、左から右への評価と比較するために、非決定的オートマトンはどのように右から左へ評価するのでしょうか?

回答:


6

ここでの最初のトリックは、乗算表をオートマトン遷移表と考えることです。各状態は、乗算表の文字を表しますが、まだ受け入れについては心配していません。したがって、表の左側と本文の文字は実際には状態ですと書く方がより正確、実際にはそうしません。上の文字は入力です。q aq bq cAqa,qb,qc

次に、を転置して、逆乗算用のオートマトン(転置の場合は" ")を作成します T AATTA

ATabcaacbbaacccba

したがって、は状態に移動し、同様には状態に移動します。cA(abc)ca A TAT(cba)aAT

ただし、は、右から左に進むことを前提としているため、左から右に進みたいと考えています。したがって、2番目のトリックは、すべての矢印を逆にすることで、オートマトン逆転することです(乗算ではなく、最初に戻るだけです)。これにより、下の遷移表で与えられる非決定的なオートマトンられます。チキンを傷つけないようにサブセットを連結文字で示しているため、は実際にはです。(私はそれが大丈夫だと思います-うまくいくようです)。AT a c { a c }ATRac{a,c}

ATRabcaabbcbcaccabababbcacbccacabcacabcabbcabcabcabcabc

これは、境界より上の3行のみの非決定的オートマトン、または8行すべての決定済みバージョンとして解釈できます。

最後に、問題を解決するマシンは、元のと外積オートマトンです。つまり、2つのオートマトンの交差動作を実行するです(は必要ありん)もっと)。 には、ようなペアの状態があります。遷移関数は、と独立して実行します。単一の開始状態入る入力下に、入力下、等 A T R A × A T R A TAATRA×ATRATC A A T R1 1 A×ATRa,acAATR1,1B B Ba,aab,bb

非決定的バージョンでの受け入れ状態はなどです。決定論的バージョンでは、受け入れ状態は、最初のコンポーネントが2番目のコンポーネントセットのであるペアです(または。a,aA B BとC a,ab,bc

25 = 3 8 + 1 10 = 3 3 + 1A×ATR示されているように拡張および決定されは状態があるので、詳細に記述しない場合はご容赦ください。しかし、非決定的バージョンには状態しかありません。25=38+110=33+1


おかげで、非決定論の背後にあるアイデアとオートマトンの「逆」を理解するための回答に本当に役立ちました。私はホップクロフトの本を使用してこの概念を理解するのに問題がありました、今私はシプサーの本「計算理論入門」を本当に使っています。
Mr. Ariel

入力考えます。、入力後にに移動し、次に入力下のに移動する、は受け入れられませんが、そうする必要がありますか?1 1 B B B C BのAba1,1b,bbc,aba
2015

8

L L R L()場合、その後正規言語であり、、から成る言語内のすべての単語の、また規則的です。これを演習として使用してください。LLRL

これはどのように問題を解決するのに役立ちますか?ましょうと評価されるすべての文字列からなる言語も左から右に評価するとき。興味のある言語は これは、証明する方法を知っている場合、問題の言語のNFAを構築できることを示しています。La,Lb,Lca,b,c

(LaLaR)(LbLbR)(LcLcR).
()

実際、証明のアイデアを使用する場合、おそらく先に進んでオートマトンを構築できます。これを考えてみましょう。特に、、つまり右から左に評価されときにに評価されるすべての文字列の言語のNFAを構築してみましょう。()LaRa

アイデアはこれです。表示される最初の文字がます。次に、残りの文字列は評価される必要があります(意味するため)。最初の文字が場合も同様の理由が当てはまりbbbx=ax=b。ただし、最初の文字が aの場合、残りは aまたは bのいずれかに評価されるか nullになります。NFAを使用すると、推測できます(後で推測を確認できます)。caab

このヒントは、問題について考え、うまくいけば問題を解決するのに十分なはずです。


公式でそれを証明する良い方法-その賛成票。代替の「非決定的な推測と検証」の考え方については、通常は証明には問題ありませんが、問題が要求するため、実際に実行するのはかなり難しいです。ここには、バックエンドからストリングを追跡する方法など、多くの欠落している詳細があると思います。
デビッドルイス

@David、故意に詳細が欠けている。
Yuval Filmus

@ユヴァル-彼はそれが宿題だとは言わなかった-私たちはここの人々を信頼している、正しい?また、この存在証明はかなり大きなマシンになると思います。おそらく必要以上に大きくなります。
デビッド・ルイス

@DavidLewis:Gillesは、NFAが実際には大きすぎないことを示すより完全な答えを出しました。非決定論はあなたのためにそれを行います。ただし、対応するDFAは巨大になる可能性があります。
ラファエル

@MohamedAbbasおそらく、私はチェックする予定はありません。
Yuval Filmus

6

可愛い。

最初に、製品を左から右に計算するオートマトンを作成します。かんたん!遷移を置くたびXY=Z。3つの可能な製品を表す3つの状態{abc }があります。4番目の状態から開始11xyzxy=z{a,b,c}1のすべてのためのx。最終状態であるX場合にのみ、左から右への入力ワードの積である場合、X1xxxxx

次に、製品を右から左に計算するオートマトンを作成しましょう。これは非決定的です。どうすればよいですか?シンプル…他の方向に進むには、すべてを逆にします:矢印と製品の方向。

以前あった場所xyxy、我々は今取る:私たちは左から右に単語を消費したときに、私たちはその右側の要因に製品から行きます。または、言い換えると、xxyxyxyyx

空の単語のために、切断されたノードを追加します。すべてのノードが初期です。1

次に、両方のパスを一緒に計算する必要があるため、2つのオートマトンの積を計算します:iffx 1(x1,x2)y(z1,z2)及びX 2x1yz1。4つの状態1xを初期、4つの状態xxを最終とします。単語は、左から右への積と右から左への積が同じxである場合に、この非決定的オートマトンによって認識されます。x2yz2(1,x)(x,x)x


I'm having a bit of trouble grokking this. Don't you have to verify that xyyx leads to a finite state set? IAC, it's not just as simple as "reverse everything", since you still have to consume from left to right, but multiply from right to left, and I'm not sure you've done that.
David Lewis

{overleftarrowa,b,b,1}

5

あなたの主な問題は非決定性を利用しているようですので、詳しく説明させてください。

他の人が利用する基本的な考え方は、非決定性マシンが最終結果を推測できるということです

abc

  • aabcab
    • abb
      • bc
    • bbc
      • cc
  • ba
  • cabcc
    • cba
      • ac

ご覧のとおり、NFAは可能な計算をすべてボトムアップで推測およびチェックできます。受け入れられる言語は、少なくとも1回のrunで受け入れられる文字列のセットとして定義されているため、入力に対するすべての受け入れられないrunは無視されます。NFAは「常に正しいと推測します」。

これで、このNFAは最初の選択を最後まで覚えやすくなります。受け入れた場合、記憶された記号を並行して得られたlr-product(決定論的に)と比較できます(言語の交差がNFAにどのように関連するかは、Ullman / Hopcroftおよびその他の基本的な教科書で確実に説明されています)。


文字列を推測するという考えは私には奇妙でしたが、私はSipserの本を読んでおり、それは計算理論において私のような初心者にとってより良いアプローチだと思います。
アリエル氏2012

推測は、想定された入力で分岐すると考えてください。ただし、推測戦略には注意する必要があります-推測に必要なストレージがすべての分岐したスレッドに対して均一に制限されていることを確認してください。そうしないと、有限状態オートマトンがなくなります。また、アクティブなフォークされたスレッドの数に一定の制限が必要です。ここでのラファエルの説明はうまくいくと思いますが、少なくとも言及する必要があります。
デビッドルイス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.