実際のコンピューターの状態の数は限られているので、チューリングマシンの実際のコンピューターとの関連性はどうですか?


42

実際のコンピューターのメモリは限られており、状態の数は限られています。したがって、それらは本質的に有限オートマトンです。理論的なコンピューター科学者がコンピューターの研究にチューリングマシン(および他の同等のモデル)を使用するのはなぜですか?実際のコンピューターに関して、これらの非常に強力なモデルを研究するポイントは何ですか?有限オートマトンモデルでは不十分なのはなぜですか?


7
@Kaveh人々は通常、はい、実際に使用されるコンピューターはFSMですが、FSMは大きすぎて、興味深い構造特性がFSMビューで失われます。ハンドウェイブ以外の説明を見たことはありません。そのため、質問はここにあります。
マーティンバーガー

15
本当の問題は、アルゴリズムを分析するときにRAMモデルを使用するときに、チューリングマシンを研究する理由です。
ユヴァルフィルマス

39
なぜならはよりも方が良い近似値になる場合があるためです。10000000000000000000000000000000 100000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000
アンドレイバウアー

30
覚えておいてください、今日の理論計算機科学で最も有名な未解決の問題は、ある種の物理的に不可能な架空のコンピューターが、さらに物理的に不可能な架空のコンピューターと同じくらい速く問題を解決できるかということです。理論的なコンピューターサイエンスを実際のコンピューターエンジニアリングと間違えないでください。物理的な世界の詳細は特に関係ありません。
エリックリッパー

23
実際の材料は原子でできており、本質的に離散しているのに、なぜ積分を研究するのですか?
ピーター

回答:


32

この質問を検討する際には、2つのアプローチがあります。概念がどのように発見されたかに関する歴史的アプローチと、特定の概念が採用され、他の概念が放棄または忘れられた理由を説明する技術的アプローチです。

歴史的には、チューリングマシンはおそらくEntscheidungsproblemに答えようとするいくつかの開発されたモデルの中で最も直感的なモデルです。これは、数学を完全に公理化する20世紀の最初の数十年間の多大な努力に密接に関係しています。希望は、公理の小さなセットが正しいことを証明したら(かなりの努力が必要)、体系的な方法を使用して、関心のある論理ステートメントの証明を導き出すことができることでした。このコンテキストでは、単純な関数でさえ計算に失敗するため、すぐに削除されます。

技術的には、すべてのコンピューターが有限オートマトンであるという記述は誤りです。有限オートマトンには、入力のサイズに応じて変更できない一定のメモリがあります。数学または実際のいずれにおいても、マシンのメモリが使用されると、追加のテープ、ハードディスク、RAM、またはその他の形式のメモリを提供することを妨げる制限はありません。これは、単純な計算でもメモリがいっぱいになる初期のコンピューティングでよく使用されていたと思いますが、現在ではほとんどの問題と、はるかに効率的なメモリ管理を可能にする現代のインフラストラクチャでは、これはほとんどの場合問題ではありません。


編集:コメントで指摘された両方の点を考慮しましたが、簡潔さと答えを書き留める時間の両方をそれらに含めないことを選択しました。これが、特に有限オートマトンと比較した場合、これらの点が現代のコンピューターをシミュレートするチューリングマシンの有効性を低下させないと信じる理由に関する私の推論です。

  • まず、宇宙によるメモリ制限の物理的な問題に取り組みましょう。まず、宇宙が有限かどうかはわかりません。さらに、定義により有限である観測可能な宇宙の概念は、定義により、メモリを使用するために観測可能な宇宙の任意のポイントに移動できるユーザーにとっても無関係です。その理由は、観測可能な宇宙とは特定のポイント、つまり地球から観測できるものを指し、観測者が宇宙の別の場所に移動できる場合は異なることです。したがって、観測可能な宇宙に関する議論は、宇宙の有限性の問題に発展します。しかし、いくつかのブレークスルーを通じて、宇宙が実際に有限であるという知識を獲得したとしましょう。これは科学的な問題に大きな影響を与えますが、コンピューターの使用に影響があるとは思わない。簡単に言えば、原則としてコンピューターは実際にはチューリング機械ではなく有限オートマトンであるかもしれません。しかし、計算の大部分と、すべての計算人間が関心を持っている可能性が高い場合、チューリングマシンと関連する理論により、より良い理解が得られます。おおまかな例では、ニュートン物理学は本質的に間違っていることがわかっていますが、機械エンジニアは主に量子物理学を使用して自動車や工場の機械を設計しているとは思いません。これが必要な場合は、個々のレベルで対処できます。しかし、計算の大部分と、すべての計算人間が関心を持っている可能性が高い場合、チューリングマシンと関連する理論により、より良い理解が得られます。おおまかな例では、ニュートン物理学は本質的に間違っていることがわかっていますが、機械エンジニアは主に量子物理学を使用して自動車や工場の機械を設計しているとは思いません。これが必要な場合は、個々のレベルで対処できます。しかし、計算の大部分と、すべての計算人間が関心を持っている可能性が高い場合、チューリングマシンと関連する理論により、より良い理解が得られます。おおまかな例では、ニュートン物理学は本質的に間違っていることがわかっていますが、機械エンジニアは主に量子物理学を使用して自動車や工場の機械を設計しているとは思いません。これが必要な場合は、個々のレベルで対処できます。

  • バスやアドレス指定などの技術的な制限は、単に既存のハードウェアの技術的な制限であり、物理的に克服できます。これが現在のコンピューターに当てはまらない理由は、64ビットのアドレス指定により、アプリケーションが達成できる場合でも、アドレス空間の上限をわずかな高さに移動できるためです。さらに、「拡張可能な」アドレス指定システムの実装は、それを必要としない計算の大部分に影響を与える可能性があるため、持つのは非効率的です。階層型アドレス指定システムの編成を妨げるものはありません。たとえば、2レベルの場合、最初のアドレスはメモリバンクを参照でき、各バンクには 2 64264264異なるアドレス。基本的にネットワークはこれを行うための優れた方法です。すべてのマシンはローカルメモリのみを管理しますが、一緒に計算できます。


4
この答えの2番目の部分は間違っています。すべてのRAMと他のハードウェアを購入したとしても、コンピューター有限状態オートマトンです。コンピュータに接続できるRAMの量は、アドレスバスの幅によって制限され、ディスクやその他の周辺機器にも同じことが言えます。
エミールJeřábekはモニカ・サポート

12
@EmilJeřábekは真実ではありません。シリアルインターフェイスにはアドレスバスがありません。また、インターネットでアクセスできるデータの量は、コンピューターのプロパティによって制限されません。
ハーミングモニカを停止

5
@OrangeDogしかし、宇宙はまだ、観測可能な宇宙に格納できるデータの量に制限を課します
ラチェットフリーク

9
チューリングマシンが示すように、@ ratchetfreakでは、ローカルアクセスのみが必要です。テープの現在の「終了」は、観測可能な宇宙内にある必要はありません;)
停止Harming Monica

6
歴史に言及する際、チューリングの論文に対する教会のレビューを引用する価値があります。チューリング機械には「有効性を備えた識別をすぐに明らかにする利点」があります。つまり、計算できるすべてのものを実際にキャプチャしたことを確信させようとする人々にとって、チューリングの定義は説得力がありました。
ジムヘフェロン

44

他の答えを完成させるために:チューリングマシンは、有限オートマトンよりもコンピュータが行うことのより良い抽象化だと思います。実際、2つのモデルの主な違いは、有限オートマトンでは、状態空間よりも大きいデータを処理することを期待していることです。無限の空間。この無限大は、「データのサイズの前で非常に大きい」という抽象化として認識できます。コンピュータープログラムを作成するときは、効率のためにスペースを節約しようとしますが、通常はコンピューターのスペースの総量に制限されないと想定します。これが、チューリングマシンが有限オートマトンよりも優れたコンピューターの抽象化である理由の一部です。


14
これは私見正しい答えです。その理由は純粋に実用的であり、チューリングマシンは、関連するスケールでコンピューターが行うことを説明する際に、有限オートマトンよりも優れています。
エミルイェジャベクはモニカをサポートします

3
「あなたは一般的にあなたがコンピュータの総容量によって制限されないと仮定する」という文を除いてこれに同意します。それどころか、ほとんどすべての非自明なプログラムは利用可能なスペースによって制限されており、プログラマーはそれに対処するために多大な時間を費やします(たとえば、自動メモリ再利用のためのガベージコレクション)。 (2)十分な入力のみに制限します。TMが問題サイズの自然なハンドルを提供し、アルゴリズムがこの問題サイズの自然な概念に対して下向きに閉じられる傾向があることは注目に値します。
マーティンバーガー

2
@MartinBerger再「ほぼすべての非自明なプログラムが利用可能なスペースによって制限され、プログラマはそれで(自動メモリ再利用のための例えばガベージコレクション)を扱うために偉大な長さに行くさ」:私は、ガベージコレクションを持つシステムのために書かれたプログラムを検討することを主張したいですプログラム対象のマシンとしてのgcを含むそのシステム。ガベージコレクターはプログラムの一部ではありません。これは、デニスが言ったことを正確に提供するための努力の一部です。実質的に無制限のメモリリソースを持つプログラム対象のマシン。
ピーター-モニカの復活

2
@ PeterA.Schneider同意しない。言語ランタイムが提供するGCを使用する理由は、ソフトウェア開発の経済的理由の1つです。プログラム固有のメモリ管理メカニズムはGCよりもパフォーマンスが高く、ほとんどのプログラマーは、安全かつ安価に実行できる場合、それを好みます。しかし、それはできないので、むしろ安全にプレイし、多数のプログラムで費用が償却されるアンビエントGCを使用します。その意味で、GCの使用は、有限性メモリを扱うために非常に長い時間を費やしています。
マーティンバーガー

2
チューリングマシンは、コンピューターが行うことの抽象化ではなく、コンピューティングが行うことの抽象化であり、コンピューターはその後構築されました。コンピューターはたまたま、一定量の内部作業メモリーを使用して計算の大部分を実行しますが、チューリングマシンは、制限された量の作業メモリーを使用した計算について推論するために発明されませんでした。
reinierpost

10

Andrej Bauerは、コメントの中で1つの重要な理由を述べました。

なぜならはよりも方が良い近似値になる場合があるためです。10000000000000000000000000000000 100000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000

他の回答をいくつかのポイントで完了させてください。

  • 目標が実際のコンピューターを研究することである場合、有限オートマトンとチューリングマシンの両方が、関連する質問に対して単純すぎるモデルになることがよくあります。実際のコンピューターには、キャッシュ階層(またはその他のスマート管理スキーム)を備えた複数の処理コア、適切な量の高速メモリーへのアクセス、膨大な量の低速外部メモリー(ハードディスク)へのアクセスがあり、他の同様のコンピューターと通信できます低速の外部メモリへのアクセス速度にほぼ匹敵する速度。
  • なぜこれらすべての詳細が必要なのかを自問すると、実際の目標は問題の事例とその効率的な解決方法の研究であることがわかります。実際のコンピューターについて話している場合、これは、異なるタイプの(実際の)コンピューター・アーキテクチャーで実際の問題インスタンスを使用して実験を実行することも意味します。
  • 上記の実コンピューターのモデルは、実コンピューターのさまざまな障害モードを無視するため、依然として理想化されています。電源オフ障害はハードディスク障害よりも頻繁に発生する可能性があるため(また、ハードディスクにバックアップがある場合もあります)、信頼性の高いデータベース操作などの特定の問題ドメインでは、それを考慮する必要があります。
  • 問題のクラスと問題のインスタンスが本当に私たちの興味を引くものであると受け入れると、チューリングマシン(および有限オートマトン)は、問題のクラスと問題のインスタンスに関する興味深い命題を述べる(そして証明する)ための数学(および言語)ツールになります。たとえば、具体的な問題のインスタンスはリーマン予想であり、それに関する命題は文と同等でΠ10あるということです

8

形式主義は、人々がその形式主義をモデル化して理解するために使用したいものに基づいて、有用であるかどうかに関係ありません。

チューリングマシンは、プログラムを理解するのに役立つ形式主義です。プログラムは理解する価値があります。実際の計算のほとんどは、専用のマシンではなくプログラムによって実行されます。チューリングマシンの形式により、時間や空間の複雑さなど、現実の重要な懸念事項をモデル化できます。有限状態オートマトンを使用してこれらの概念を研究しようとするのははるかに自然ではありません。

チューリングマシンは、有限関数(ドメインが最大1,000万の長さの入力で構成される関数など)の計算の複雑さを研究しようとする場合、あまり役に立ちません。回路の複雑さは、有限関数の複雑さを記述するのにはるかに優れています...しかし、チューリングマシンは、回路の複雑さを理解する上で非常に有用です。

有限オートマトンは、回路の複雑さを理解するのにも役立ちました。これらのモデルはすべて、数学的兵器庫に位置しています。

私は、実世界のコンピューターの内部状態の数が有限であるため、有限状態オートマトンが純粋に現実のより良いモデルであるという主張を拒否します。有限状態オートマトンの研究は、文字列の無限セットからの入力を決定的に処理しますが、現実世界のコンピューターは、固定された最大長の入力のみを処理します(空間の観点から、無限宇宙に住んでいると思わない限り)または時間)。

モデルは、私たちが気にしている現実の側面を理解する上で、その有用性の観点から判断されるべきです。または(あるいは)その数学的な宇宙に明らかな物理的症状がなくても、人々が十分に説得力があると感じる数学的な宇宙の理解におけるその有用性の観点から。

チューリングマシン、有限状態マシン、および回路(およびその他のモデル)はすべて、その有用性を証明しています。


6

実際のコンピューターはFSAではありません。実際のコンピューターは、コンピューターがエミュレートするコンピューターを記述することができ、コンピューターがそれをエミュレートするという意味で、ユニバーサルコンピューターです。多くの例については、「仮想マシン」を検索してください。

ユニバーサルチューリングマシン-別のTMの説明を受け取り、指定された入力でそのTMの動作をエミュレートするTMを構築することができます。

n22n

文献の出発点として、ユニバーサルオートマトンの非存在を研究する「ユニバーサル有限オートマトンの存在について」をお勧めします。また、その参照(など)を調べることもできます。


3
これは、さまざまなレベルの「計算力」を直感的に把握するための便利なアプローチです。しかし、OPは、たとえば有限のRAMのように、状態の数が制限されているため、実際のコンピューターはFSMであると考えているようです。あなたの議論では、これは実際のコンピューターがチューリングマシンよりもFSMに似ていることを意味します。シミュレーションマシンの状態数を自由に2倍にすることはできないからです。ストレージとして無限のテープを持っていません。
アモン

1
チューリングマシンには無限のテープも必要ありません。コンピューターは、計算に任意の大量の外部ストレージを使用できます(そして、今日のクラウドプロバイダーで特に簡単になります)。したがって、基本的にFSMではなくチューリングマシンに似ています。
reinierpost

1
コンピューターに一定量のメモリーがあると仮定すると、より多くのメモリーを持つコンピューターをシミュレートするときにメモリーが不足するため、その仮定では実際には普遍的ではありません。
カベ

3

チューリングマシンを特別なものにしているのは、非常にシンプルでありながら、考えられるすべての(クラスの)アルゴリズムを実行できることです。より強力な既知のマシンはありません(Turingマシンでは不可能なアルゴリズムを実行できるという点で)。

機械的に単純であるため、他のマシンがチューリングマシンに相当するかどうか、またはどの程度かを簡単に示すことができます。これにより、特定のコンピューター(またはコンピューター言語)が本当に普遍的かどうかを比較的簡単に示すことができます(c / f "Turing-complete")。


問題は、チューリングマシンモデルと実際のコンピューターの関係についてです。コンピュータのメモリ量が固定されていると仮定すると、実際には普遍的ではありません。
カベ

1

なぜ有限オートマトンモデルでは不十分なのですか?

他の回答ではすでに多くの関連する側面に言及していますが、チューリングマシンの有限オートマトンに対する強みの利点は、データプログラムの分離だと​​思います。これにより、入力のサイズを制限することなく、非常に有限なプログラムを分析し、そのプログラムが異なる入力をどのように処理するかについてステートメントを作成できます。

理論的には、実際のコンピューターと、有限テープを備えたチューリングマシンのようなものの両方をステートマシンとして記述することは可能ですが、それは実際には実行できません。状態オートマトンの形式では、これらの状態間の遷移を明示的にリストする必要があります。したがって、そのサイズの一般的な有限状態オートマトンでは、すべての状態遷移の完全な列挙に基づいて演ductionを行うことは非常に実行不可能です。

もちろん、実際のコンピューターでは、状態遷移は勝手に起こることはありません。計算の単一ステップでメモリの3分の1ビットを交換するコマンドはありません。そのため、状態遷移のよりコンパクトな仕様を考え出すことができます。アーキテクチャの命令セット仕様のようなもの。もちろん、実際のコンピューターアーキテクチャはパフォーマンスのために複雑であるため、非常に単純な命令セットにこれをさらに簡略化することができます。最終的には、アーキテクチャがチューリングマシンインタープリターに似ていることがわかります。プログラムコードの一部と入力の一部を使用して、出力を生成し、プログラムコード内を移動します。

1つの選択肢は、プログラムによって処理されているデータを表すためだけに有限状態オートマトンの状態を使用し、プログラム自体を状態遷移にエンコードすることです。それは、すべての状態を列挙する方法の同じ問題を伴うでしょう、そして、コンパクトな表現は再びチューリング機械がするものに近いかもしれません。

実際のコンピューターに関して、これらのはるかに強力なモデルを研究するポイントは何ですか?

概して、有限テープチューリングマシンは、おそらく実際のコンピューターのより良いモデルになると思います。しかし、多くの科学的な質問では、有限であるが大きなテープと無限のテープの区別は無関係であるため、無限のテープを主張するだけで物事が容易になります。他の質問については、使用されるテープの量が問題の中心にありますが、モデルでは、計算がテープを使い果たした場合に何が起こるかを指定する手間をかけずに、テープの使用量について簡単に話すことができます。


1

ほとんどの問題には、有限サイズのチューリングマシンが必要です

制限のないテープは便利な簡素化であると仮定しますが、実際にはほとんどの問題/アルゴリズムには有限量のテープが必要であり、必要なメモリの境界(おそらく入力のサイズに依存)を分析し、しばしば証明できます。

また、これは他のタイプのコンピューター(バインドされた分析または証明がチューリングマシンよりもはるかに厄介な場合があります)に一般化され、特定の問題に必要な一時ストレージの量を見積もることができます-固定量で実行できますかスペースの?入力に比例?入力が増加するにつれて、指数関数的なスペースが必要ですか?


1

有限オートマトンが共有しないチューリングマシンの重要な機能の1つは、問題を解決するために必要なメモリ量を問題のサイズに合わせてスケーリングできることです。

nn2

ポイント:多くの問題には、問題が大きくなるほどより多くのメモリを使用する自然な解決策があります。したがって、これらのソリューションを無限のメモリを使用できる表現で説明するのは自然です。1つのインスタンスが無限のメモリを使用するためではなく、各メモリを使用するインスタンスがあるためです。チューリングマシンでも、有限オートマトンのシーケンスでも可能です。


関連する注意事項として、N個の状態のチューリングマシンが、初期位置の前後に有限数のC個の非ブランク文字を持つテープで開始される場合、任意のマシンのような数T(N、C)テープがT(N、C)文字に制限されているマシンの1台のマシンによって、終了する可能性があります。
supercat

-2

実際のコンピューターのメモリは限られており、状態の数は限られています。したがって、それらは本質的に有限オートマトンです。

チューリングマシンは、有限オートマトンの派生物です。チューリングマシンは、事実上フォンヌマンアーキテクチャです。

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