実際のコンピューターのメモリは限られており、状態の数は限られています。したがって、それらは本質的に有限オートマトンです。理論的なコンピューター科学者がコンピューターの研究にチューリングマシン(および他の同等のモデル)を使用するのはなぜですか?実際のコンピューターに関して、これらの非常に強力なモデルを研究するポイントは何ですか?有限オートマトンモデルでは不十分なのはなぜですか?
実際のコンピューターのメモリは限られており、状態の数は限られています。したがって、それらは本質的に有限オートマトンです。理論的なコンピューター科学者がコンピューターの研究にチューリングマシン(および他の同等のモデル)を使用するのはなぜですか?実際のコンピューターに関して、これらの非常に強力なモデルを研究するポイントは何ですか?有限オートマトンモデルでは不十分なのはなぜですか?
回答:
この質問を検討する際には、2つのアプローチがあります。概念がどのように発見されたかに関する歴史的アプローチと、特定の概念が採用され、他の概念が放棄または忘れられた理由を説明する技術的アプローチです。
歴史的には、チューリングマシンはおそらくEntscheidungsproblemに答えようとするいくつかの開発されたモデルの中で最も直感的なモデルです。これは、数学を完全に公理化する20世紀の最初の数十年間の多大な努力に密接に関係しています。希望は、公理の小さなセットが正しいことを証明したら(かなりの努力が必要)、体系的な方法を使用して、関心のある論理ステートメントの証明を導き出すことができることでした。このコンテキストでは、単純な関数でさえ計算に失敗するため、すぐに削除されます。
技術的には、すべてのコンピューターが有限オートマトンであるという記述は誤りです。有限オートマトンには、入力のサイズに応じて変更できない一定のメモリがあります。数学または実際のいずれにおいても、マシンのメモリが使用されると、追加のテープ、ハードディスク、RAM、またはその他の形式のメモリを提供することを妨げる制限はありません。これは、単純な計算でもメモリがいっぱいになる初期のコンピューティングでよく使用されていたと思いますが、現在ではほとんどの問題と、はるかに効率的なメモリ管理を可能にする現代のインフラストラクチャでは、これはほとんどの場合問題ではありません。
編集:コメントで指摘された両方の点を考慮しましたが、簡潔さと答えを書き留める時間の両方をそれらに含めないことを選択しました。これが、特に有限オートマトンと比較した場合、これらの点が現代のコンピューターをシミュレートするチューリングマシンの有効性を低下させないと信じる理由に関する私の推論です。
まず、宇宙によるメモリ制限の物理的な問題に取り組みましょう。まず、宇宙が有限かどうかはわかりません。さらに、定義により有限である観測可能な宇宙の概念は、定義により、メモリを使用するために観測可能な宇宙の任意のポイントに移動できるユーザーにとっても無関係です。その理由は、観測可能な宇宙とは特定のポイント、つまり地球から観測できるものを指し、観測者が宇宙の別の場所に移動できる場合は異なることです。したがって、観測可能な宇宙に関する議論は、宇宙の有限性の問題に発展します。しかし、いくつかのブレークスルーを通じて、宇宙が実際に有限であるという知識を獲得したとしましょう。これは科学的な問題に大きな影響を与えますが、コンピューターの使用に影響があるとは思わない。簡単に言えば、原則としてコンピューターは実際にはチューリング機械ではなく有限オートマトンであるかもしれません。しかし、計算の大部分と、すべての計算人間が関心を持っている可能性が高い場合、チューリングマシンと関連する理論により、より良い理解が得られます。おおまかな例では、ニュートン物理学は本質的に間違っていることがわかっていますが、機械エンジニアは主に量子物理学を使用して自動車や工場の機械を設計しているとは思いません。これが必要な場合は、個々のレベルで対処できます。しかし、計算の大部分と、すべての計算人間が関心を持っている可能性が高い場合、チューリングマシンと関連する理論により、より良い理解が得られます。おおまかな例では、ニュートン物理学は本質的に間違っていることがわかっていますが、機械エンジニアは主に量子物理学を使用して自動車や工場の機械を設計しているとは思いません。これが必要な場合は、個々のレベルで対処できます。しかし、計算の大部分と、すべての計算人間が関心を持っている可能性が高い場合、チューリングマシンと関連する理論により、より良い理解が得られます。おおまかな例では、ニュートン物理学は本質的に間違っていることがわかっていますが、機械エンジニアは主に量子物理学を使用して自動車や工場の機械を設計しているとは思いません。これが必要な場合は、個々のレベルで対処できます。
バスやアドレス指定などの技術的な制限は、単に既存のハードウェアの技術的な制限であり、物理的に克服できます。これが現在のコンピューターに当てはまらない理由は、64ビットのアドレス指定により、アプリケーションが達成できる場合でも、アドレス空間の上限をわずかな高さに移動できるためです。さらに、「拡張可能な」アドレス指定システムの実装は、それを必要としない計算の大部分に影響を与える可能性があるため、持つのは非効率的です。階層型アドレス指定システムの編成を妨げるものはありません。たとえば、2レベルの場合、最初のアドレスはメモリバンクを参照でき、各バンクには 2 64異なるアドレス。基本的にネットワークはこれを行うための優れた方法です。すべてのマシンはローカルメモリのみを管理しますが、一緒に計算できます。
他の答えを完成させるために:チューリングマシンは、有限オートマトンよりもコンピュータが行うことのより良い抽象化だと思います。実際、2つのモデルの主な違いは、有限オートマトンでは、状態空間よりも大きいデータを処理することを期待していることです。無限の空間。この無限大は、「データのサイズの前で非常に大きい」という抽象化として認識できます。コンピュータープログラムを作成するときは、効率のためにスペースを節約しようとしますが、通常はコンピューターのスペースの総量に制限されないと想定します。これが、チューリングマシンが有限オートマトンよりも優れたコンピューターの抽象化である理由の一部です。
Andrej Bauerは、コメントの中で1つの重要な理由を述べました。
なぜならはよりも方が良い近似値になる場合があるためです。10000000000000000000000000000000 10000000000000000000000000000000
他の回答をいくつかのポイントで完了させてください。
形式主義は、人々がその形式主義をモデル化して理解するために使用したいものに基づいて、有用であるかどうかに関係ありません。
チューリングマシンは、プログラムを理解するのに役立つ形式主義です。プログラムは理解する価値があります。実際の計算のほとんどは、専用のマシンではなくプログラムによって実行されます。チューリングマシンの形式により、時間や空間の複雑さなど、現実の重要な懸念事項をモデル化できます。有限状態オートマトンを使用してこれらの概念を研究しようとするのははるかに自然ではありません。
チューリングマシンは、有限関数(ドメインが最大1,000万の長さの入力で構成される関数など)の計算の複雑さを研究しようとする場合、あまり役に立ちません。回路の複雑さは、有限関数の複雑さを記述するのにはるかに優れています...しかし、チューリングマシンは、回路の複雑さを理解する上で非常に有用です。
有限オートマトンは、回路の複雑さを理解するのにも役立ちました。これらのモデルはすべて、数学的兵器庫に位置しています。
私は、実世界のコンピューターの内部状態の数が有限であるため、有限状態オートマトンが純粋に現実のより良いモデルであるという主張を拒否します。有限状態オートマトンの研究は、文字列の無限セットからの入力を決定的に処理しますが、現実世界のコンピューターは、固定された最大長の入力のみを処理します(空間の観点から、無限宇宙に住んでいると思わない限り)または時間)。
モデルは、私たちが気にしている現実の側面を理解する上で、その有用性の観点から判断されるべきです。または(あるいは)その数学的な宇宙に明らかな物理的症状がなくても、人々が十分に説得力があると感じる数学的な宇宙の理解におけるその有用性の観点から。
チューリングマシン、有限状態マシン、および回路(およびその他のモデル)はすべて、その有用性を証明しています。
実際のコンピューターはFSAではありません。実際のコンピューターは、コンピューターがエミュレートするコンピューターを記述することができ、コンピューターがそれをエミュレートするという意味で、ユニバーサルコンピューターです。多くの例については、「仮想マシン」を検索してください。
ユニバーサルチューリングマシン-別のTMの説明を受け取り、指定された入力でそのTMの動作をエミュレートするTMを構築することができます。
文献の出発点として、ユニバーサルオートマトンの非存在を研究する「ユニバーサル有限オートマトンの存在について」をお勧めします。また、その参照(など)を調べることもできます。
チューリングマシンを特別なものにしているのは、非常にシンプルでありながら、考えられるすべての(クラスの)アルゴリズムを実行できることです。より強力な既知のマシンはありません(Turingマシンでは不可能なアルゴリズムを実行できるという点で)。
機械的に単純であるため、他のマシンがチューリングマシンに相当するかどうか、またはどの程度かを簡単に示すことができます。これにより、特定のコンピューター(またはコンピューター言語)が本当に普遍的かどうかを比較的簡単に示すことができます(c / f "Turing-complete")。
なぜ有限オートマトンモデルでは不十分なのですか?
他の回答ではすでに多くの関連する側面に言及していますが、チューリングマシンの有限オートマトンに対する強みの利点は、データとプログラムの分離だと思います。これにより、入力のサイズを制限することなく、非常に有限なプログラムを分析し、そのプログラムが異なる入力をどのように処理するかについてステートメントを作成できます。
理論的には、実際のコンピューターと、有限テープを備えたチューリングマシンのようなものの両方をステートマシンとして記述することは可能ですが、それは実際には実行できません。状態オートマトンの形式では、これらの状態間の遷移を明示的にリストする必要があります。したがって、そのサイズの一般的な有限状態オートマトンでは、すべての状態遷移の完全な列挙に基づいて演ductionを行うことは非常に実行不可能です。
もちろん、実際のコンピューターでは、状態遷移は勝手に起こることはありません。計算の単一ステップでメモリの3分の1ビットを交換するコマンドはありません。そのため、状態遷移のよりコンパクトな仕様を考え出すことができます。アーキテクチャの命令セット仕様のようなもの。もちろん、実際のコンピューターアーキテクチャはパフォーマンスのために複雑であるため、非常に単純な命令セットにこれをさらに簡略化することができます。最終的には、アーキテクチャがチューリングマシンインタープリターに似ていることがわかります。プログラムコードの一部と入力の一部を使用して、出力を生成し、プログラムコード内を移動します。
1つの選択肢は、プログラムによって処理されているデータを表すためだけに有限状態オートマトンの状態を使用し、プログラム自体を状態遷移にエンコードすることです。それは、すべての状態を列挙する方法の同じ問題を伴うでしょう、そして、コンパクトな表現は再びチューリング機械がするものに近いかもしれません。
実際のコンピューターに関して、これらのはるかに強力なモデルを研究するポイントは何ですか?
概して、有限テープチューリングマシンは、おそらく実際のコンピューターのより良いモデルになると思います。しかし、多くの科学的な質問では、有限であるが大きなテープと無限のテープの区別は無関係であるため、無限のテープを主張するだけで物事が容易になります。他の質問については、使用されるテープの量が問題の中心にありますが、モデルでは、計算がテープを使い果たした場合に何が起こるかを指定する手間をかけずに、テープの使用量について簡単に話すことができます。
有限オートマトンが共有しないチューリングマシンの重要な機能の1つは、問題を解決するために必要なメモリ量を問題のサイズに合わせてスケーリングできることです。
ポイント:多くの問題には、問題が大きくなるほどより多くのメモリを使用する自然な解決策があります。したがって、これらのソリューションを無限のメモリを使用できる表現で説明するのは自然です。1つのインスタンスが無限のメモリを使用するためではなく、各メモリを使用するインスタンスがあるためです。チューリングマシンでも、有限オートマトンのシーケンスでも可能です。
実際のコンピューターのメモリは限られており、状態の数は限られています。したがって、それらは本質的に有限オートマトンです。
チューリングマシンは、有限オートマトンの派生物です。チューリングマシンは、事実上フォンヌマンアーキテクチャです。