計算の2つのモデルが同等であることを証明する方法について説明を求めています。同等性の証明が省略されていることを除いて、私は主題に関する本を読んでいます。計算の2つのモデルが同等であることの意味についての基本的な考えがあります(オートマトンビュー:同じ言語を受け入れる場合)。同等性について他に考える方法はありますか?チューリングマシンモデルがラムダ計算と同等であることを証明する方法を理解できれば、それで十分です。
計算の2つのモデルが同等であることを証明する方法について説明を求めています。同等性の証明が省略されていることを除いて、私は主題に関する本を読んでいます。計算の2つのモデルが同等であることの意味についての基本的な考えがあります(オートマトンビュー:同じ言語を受け入れる場合)。同等性について他に考える方法はありますか?チューリングマシンモデルがラムダ計算と同等であることを証明する方法を理解できれば、それで十分です。
回答:
どちらかのモデルが他方をシミュレートできること、つまりモデルAにマシンが与えられていること、モデルBに同じ関数を計算するマシンがあることを示しています。このシミュレーションは計算可能である必要はありません(通常は計算可能です)。
たとえば、2つのスタック(2-PDA)を持つプッシュダウンオートマトンを考えます。別の質問では、両方向のシミュレーションの概要を説明します。これを正式に行った場合は、一般的なチューリングマシン(タプル)を使用して、対応する2-PDAが何であるかを明示的に構築し、その逆も同様です。
正式には、このようなシミュレーションは次のようになります。させて
チューリングマシン(テープ1本付き)である。次に、
とによって与えられます
すべてについて ∈ Σ Iおよび H R、HのL ∈ Σ O、
すべてに対する、
すべてに対すると、
のためのすべての、
すべてについてと、
すべてについて、
すべてについて、
すべてについておよび、及び
すべてについて
同等の2-PDAです。ここでは、チューリングマシンが使用することを前提としていブランクのシンボルとして、両方のスタックは、マーカーで始まる(削除されることはありません)とことを意味し入力消費、から状態を切り替えますからようにスタックを更新します:
[ ソース ]
これは、ことを示すために残っている上で最終状態に入る場合と場合にのみ、そうします。これは、構築によって非常に明確です。正式には、受け入れ実行を受け入れ実行に変換する必要があり、その逆も同様です。
開始時に、通信とモバイルシステム:パイ微積分:ロビン・ミルナーによって、オートマトンとどのように彼らは区別できないことをお互いにそうシミュレートすることができます上の紹介があり双模倣は。(ウィキペディアのBisimulationを参照)
私はよく覚えていないので、この章を読み直す必要がありますが、シミュレーションとバイシミュレーションに問題があり、計算の等価性に十分ではありませんでした。
したがって、Robin Milnerは彼のPi-Calculusを紹介し、本の残りの部分で公開します。
最終的に、彼の最後の本『コミュニケーションエージェントの空間と動き』で、ロビン・ミルナーの伝記を見ることができます。オートマトン、ペトリネット、パイ計算、その他の計算方法論をモデル化できます。
私の知る限り、これを行う唯一の(または少なくとも最も一般的な)方法は、マシン/モデルが受け入れる言語を比較することです。それがオートマタ理論の要点です。それは問題やアルゴリズムの曖昧な概念を取り、それを具体的な数学的集合(つまり言語)に変えて推論することができます。
これを行う最も簡単な方法は、1つのモデルから任意のマシン/関数を指定して、同じ言語を計算する2番目のモデルからマシンを構築することです。おそらく、式の長さ、機械の状態、文法の規則などに帰納法を使用するでしょう。
LambdaとTMでこれを実行したことはありません(可能性は99%確信しています)が、NFAと正規表現の同等性を証明するこの種のことは間違いなく見ています。最初に、任意の原子を受け入れることができるNFAを示し、次に誘導を使用して、小さいNFAのユニオン/連結/ Kleene-starを受け入れるNFAを作成します。
次に、反対の操作を行い、NFAのREを見つけます。