web-dev-qa-db-ja.com

チューリングマシンvsフォンノイマンマシン

バックグラウンド

Von-Neumannアーキテクチャは、命令とデータがメモリに格納され、マシンがその内部状態を変更することによって動作するストアドプログラムコンピュータを記述します。したがって、本質的に、システムには状態が維持されます。

チューリングマシンアーキテクチャは、テープ上のシンボルを操作することで機能します。つまり、スロットの数が無制限のテープが存在し、チューリングマシンは特定のスロットにいつでも存在します。そのスロットで読み取られたシンボルに基づいて、マシンはシンボルを変更し、別のスロットに移動できます。これらはすべて確定的です。


ご質問

  1. これら2つのモデルの間に何か関係がありますか?フォンノイマンモデルは、チューリングモデルに基づいていますか、それともインスピレーションを得ましたか?

  2. チューリングモデルはフォンニューマンモデルのスーパーセットであると言えますか?

  3. 関数型プログラミングはチューリングモデルに適合しますか?もしそうなら、どうですか?関数型プログラミングは、フォンノイマンモデルにうまく適合しないと思います。

62
Santhosh

チューリングマシンは、計算可能な問題の領域を数学的に探索し、これらの計算を記述する方法を取得するために発明された理論的概念です。

Von-Neumannアーキテクチャは、実際のコンピュータ((implementを構築するためのアーキテクチャです。 )チューリングマシンが理論的に説明するもの)。

関数型プログラミングは lambda-calculus に基づいています。これは、計算、またはより正確には計算可能な関数を記述する別の方法です。それは完全に異なるアプローチを使用しますが、チューリングマシンと同じくらい強力です(turing completeと言われています)。

すべてのラムダ計算プログラム(用語)Tは、

  • xのような変数
  • λx. Tなどの匿名関数
  • 関数アプリケーションT T

ステートレスであるにもかかわらず、これは 十分 であり、コンピュータが実行できるすべての計算で使用できます。チューリングマシンとラムダ項は互いにエミュレートでき、フォンノイマンコンピューターは両方実行できます(無限ストレージを提供するなどの技術的な制限は別として、チューリングマシンが必要とする場合があります)。

しかし、それらのステートレスでより抽象的な性質のため、関数型プログラムは、以下の命令型プログラムと比較して、フォンノイマンコンピューターでは効率が悪く、「直感的」ではない場合があります。バイナリ、メモリ、アップデートのスタイルです。

47
Dario

Harvard アーキテクチャとは対照的に、一般的に1つは Von Neumann アーキテクチャを指します。前者は同じ方法で格納されたコードとデータを持っていますが、後者はコードとデータ用に別々のメモリとバス経路を持っています。最新のデスクトップPCはすべてフォンノイマンで、ほとんどのマイクロコントローラーはハーバードです。どちらも、理論上のチューリングマシンをエミュレートしようとする実際の設計の例です(真のチューリングマシンは無限のメモリを必要とするため不可能です)。

10
rmeador

チューリングマシンとフォンノイマンアーキテクチャの間に歴史的な関係があるかどうかはわかりません。ただし、フォンノイマンがフォンノイマンアーキテクチャを開発したとき、チューリングマシンを知っていたと思います。

ただし、計算能力に関しては、チューリングマシンとフォンノイマンマシンは同等です。どちらか一方をエミュレートできます(IIRC、チューリングマシンでのフォンノイマンプログラムのエミュレーションはO(n ^ 6)操作です)。ラムダ計算の形式の関数型プログラミングも同等です。実際、少なくともチューリングマシンと同等の強力な既知の計算フレームワークはすべて同等です。

  • チューリングマシン
  • ラムダ計算(関数型プログラミング)
  • フォンノイマンマシン
  • 部分的な再帰関数

これらのモデルのいずれかで計算できる関数のセットに違いはありません。

関数型プログラミングはラムダ計算から派生しているため、チューリングマシンまたはフォンネムアンマシンに直接マッピングされません。どちらも、エミュレーションを介して機能プログラム(hoewver)を実行できます。チューリングマシンのマッピングは、フォンノイマンマシンのマッピングよりも退屈である可能性が高いと思います。そのため、3番目の質問に対する私の答えは、「いいえ、実際はもっと悪い」でしょう。

4

チューリングモデルは、実装に深く踏み込むことなく計算機能を定義します。文字通りチューリングマシンのように見えるコンピューターを作成することはできません。 (愛好家を除く http://www.youtube.com/watch?v=E3keLeMwfHY )。

チューリングモデルはarchitectureではありません。

フォンノイマンは、コンピューターを構築する方法のガイダンスです。それは計算能力については何も言っていません。命令セットに応じて、作成されたコンピューターはチューリング完了である場合と完了していない場合があります(手段はチューリングマシンと同じタスクを解決できます)。

関数型プログラミング(ラムダ計算)は、チューリング完全な別の計算モデルですが、フォンノイマンアーキテクチャにネイティブに適合させることはできません。

4
Andrey

チューリングの「モデル」は、建築モデルではありません。チューリングが 決定問題 の証明の手段として機能すると仮定したのは、存在しないマシンだけでした。

0
Dinah