コンウェイのライフゲームは チューリング完全であり、自身 (図参照)を含むあらゆるシステムをシミュレートすることができる。計算可能性理論 では、データ操作ルールのシステム(計算モデル 、コンピュータの命令セット 、プログラミング言語 、セルオートマトンなど)は、任意の チューリングマシン [ 1 ] [ 2 ] (イギリスの数学者でコンピュータ科学者のアラン・チューリング によって考案されたもの)をシミュレートできる場合、チューリング完全 または計算的に普遍的 であると言われます。これは、このシステムが他のデータ操作ルールセットを認識または解読できることを意味します。チューリング完全性は、このようなデータ操作ルールセットの能力を表現する方法として使用されます。今日では、事実上すべてのプログラミング言語がチューリング完全です。[ a ]
関連する概念としてチューリング等価性がある 。2 台のコンピュータPとQは、PがQをシミュレートでき、QがPをシミュレートできる場合に等価であると呼ばれる。[ 4 ] チャーチ=チューリングのテーゼは、 アルゴリズム によって値を計算できる関数はチューリングマシンによって計算でき、したがって、現実世界のコンピュータがチューリングマシンをシミュレートできる場合、それはチューリングマシンとチューリング等価であると推測している。ユニバーサルチューリングマシンは 、任意のチューリングマシンをシミュレートするために使用でき、ひいては、あらゆる現実世界のコンピュータの純粋に計算的な側面をシミュレートすることができる。[ 5 ] [ 6 ]
何かがチューリング完全であることを示すには、それが何らかのチューリング完全システムをシミュレートするために使用できることを示すだけで十分です。物理システムには無限のメモリはありませんが、有限メモリの制限を無視すれば、ほとんどのプログラミング言語はそれ以外はチューリング完全です。[ 7 ] [ 8 ]
数学以外の用途 日常 会話では、「チューリング完全」および「チューリング等価」という用語は、あらゆる実世界の汎用コンピュータまたはコンピュータ言語が、他の実世界の汎用コンピュータまたはコンピュータ言語の計算処理を近似的にシミュレートできることを意味します。現実世界では、これはコンピュータ仮想化 とエミュレーション という実用的な概念につながります。
これまでに構築された実際のコンピュータは、単一テープ式チューリングマシン(メモリとして「テープ」を使用する)のように機能的に解析できます。そのため、その動作を十分に抽象化することで、関連する数学的手法を適用できます。しかし、実際のコンピュータは物理的なリソースが限られているため、線形限定オートマトン としてしか完全ではありません。これに対し、汎用コンピュータ の抽象化は、チューリング完全な命令セット、無限のメモリ、および無限の利用可能な時間を持つデバイスとして定義されます。
計算可能性理論 では、計算システム(抽象機械 やプログラミング言語 など)の計算能力を説明するために、密接に関連するいくつかの用語が使用されます。
チューリング完全性 チューリング計算可能なすべての関数 を計算できる計算システムは、チューリング完全(またはチューリング強力)と呼ばれる。言い換えれば、そのようなシステムは、万能チューリングマシンを シミュレートできるシステムである。チューリング等価性 チューリング完全なシステムは、計算可能なすべての関数がチューリング計算可能である場合、チューリング等価であると呼ばれます。つまり、チューリングマシン と全く同じクラスの関数を計算するシステムです。あるいは、チューリング等価システムとは、汎用チューリングマシンをシミュレートでき、かつ汎用チューリングマシンによってシミュレートされるシステムのことです。(既知の物理的に実装可能なチューリング完全なシステムはすべてチューリング等価であり、これはチャーチ=チューリングのテーゼ を裏付けるものです。) (計算上の)普遍性 あるシステムが、そのシステム群に関して普遍的であるとは、そのシステムがそのシステム群に含まれるシステムによって計算可能なすべての関数を計算できる場合(または、それらのシステムそれぞれをシミュレートできる場合)を指します。一般的に、「普遍性」という用語は、暗黙のうちにチューリング完全なシステム群に関して用いられます。「弱普遍性」という用語は、入力ストリームに無限個の1が含まれるようにチューリングマシン の標準定義を変更することによってのみ普遍性が達成されるシステム(例えば、セルオートマトン )を区別するために用いられることがあります。
歴史 チューリング完全性とは、あらゆる現実世界の計算装置の設計を万能チューリングマシン でシミュレートできるという点で重要な概念である。チャーチ=チューリングのテーゼは、 これが数学の法則であると述べている。 すなわち、万能チューリングマシンは、原理的には、他のあらゆるプログラム可能なコンピュータが実行できる計算を実行できるということである。これは、 プログラムを 作成するのに必要な労力や、マシンが計算を実行するのにかかる時間、あるいは計算とは無関係なマシンの能力については何も語っていない。
チャールズ・バベッジ の解析機関 (1830年代)は、設計当時に製造されていれば、最初のチューリング完全な機械になっていただろう。バベッジは、この機械が原始的な論理推論を含む高度な計算能力を備えていることを認識していたが、他のどの機械もこれより優れた計算はできないことを理解していなかった。1830年代から1940年代にかけて、加算器や乗算器などの機械式計算機が製造され、改良が加えられたが、条件分岐を実行できなかったため、チューリング完全ではなかった。
19世紀後半、レオポルド・クロネッカーは 計算可能性の概念を定式化し、原始再帰関数 を定義した。これらの関数は定型計算で計算できるが、計算命令が無限ループを許容しないため、万能コンピュータを作るには不十分である。20世紀初頭、ダヴィッド・ヒルベルトは 、機械で実行可能な正確な公理と正確な論理的推論規則を用いて、数学全体を公理化するプログラムを主導した。やがて、少数の推論規則で任意の公理の帰結を導き出せることが明らかになった。これらの規則は、 1930年にクルト・ゲーデル によって、あらゆる定理を導き出すのに十分であることが証明された。
計算という概念そのものは、ゲーデルの不完全性定理を 皮切りに、すぐに分離された。この定理は、公理系が定理を導出する計算について推論する際に限界があることを示した。チャーチとチューリングは、ヒルベルトの決定 問題が解けないことをそれぞれ独立に証明し[ 9 ] 、不完全性定理の計算の中核を特定した。この研究は、ゲーデルの一般再帰関数 に関する研究と相まって、単純な命令の集合が存在し、それらを組み合わせることであらゆる計算を生成できることを確立した。ゲーデルの研究は、計算という概念が本質的に唯一無二であることを示した。
1941年、コンラート・ツーゼは Z3 コンピュータを完成させた。ツーゼは当時、チューリングの計算可能性に関する研究を知らなかった。特に、Z3には条件付きジャンプ専用の機能がなかったため、チューリング完全ではなかった。しかし、1998年にロハスによって、Z3は条件付きジャンプをシミュレートできるため、理論的にはチューリング完全であることが示された。これを行うには、テーププログラムは、すべての分岐の両側を通るすべての可能なパスを実行できるほど長くなければならない。[ 10 ]
実際に条件分岐が可能で、したがって実際にチューリング完全である最初のコンピュータは、 1946年のENIAC でした。ZuseのZ4 コンピュータは1945年に稼働していましたが、1950年まで条件分岐をサポートしていませんでした。[ 11 ]
計算可能性理論 計算可能性理論は、 計算モデル を用いて問題を分析し、計算可能 かどうか、またどのような状況下で計算可能かを判断する。計算可能性理論の最初の成果は、チューリング完全なシステムが任意の長い時間にわたって何をするかを予測することが不可能な問題が存在するということである。
典型的な例は停止問題 です。これは、チューリング完全な言語で書かれたプログラムと、その プログラムに入力するデータを受け取り、入力に対してプログラムが最終的に停止するか、それとも永遠に実行され続けるかを判定するアルゴリズムを作成する問題です。特定の 入力に対しては、このようなアルゴリズムを作成するのは容易ですが、一般的には不可能です。プログラムの最終的な出力のいかなる特性についても、その特性が成り立つかどうかを判断することは不可能です。
この不可能性は、実際のコンピュータプログラムを分析する際に問題となる。例えば、プログラマーが無限ループを記述するのを完全に防いだり、ユーザーが無限ループを引き起こすような入力を与えるのを完全に防いだりするツールを作成することは不可能である。
代わりに、プログラムの実行時間を一定期間に制限する(タイムアウト )か、フロー制御命令の機能を制限(例えば、既存の配列の要素を反復するループのみを提供する)することができます。しかし、別の定理によれば、チューリング完全な言語で解決できる問題の中には、有限ループ機能しか持たない言語(つまり、すべてのプログラムが最終的に停止することを保証する言語)では解決できない問題があります。したがって、そのような言語はチューリング完全ではありません。例えば、プログラムが必ず完了して停止することが保証されている言語では、その言語のすべての計算可能な関数に対してカントールの対角線論法 によって生成される計算可能な関数を計算することはできません。
チューリングオラクル 無限のデータテープにアクセスできるコンピュータは、チューリングマシンよりも強力になる可能性がある。例えば、そのテープには停止問題 やその他のチューリング不可問題の解が含まれているかもしれない。このような無限のデータテープはチューリングオラクル と呼ばれる。ランダムなデータを持つチューリングオラクルでさえ、計算は可算個しかないのに対し、オラクルは非可算個しかないため、計算不可能である(確率1 )。したがって、ランダムなチューリングオラクルを持つコンピュータは、チューリングマシンでは計算できないことを計算できる。
デジタル物理学 既知の物理法則はすべて、デジタルコンピュータ上での一連の近似によって計算可能な結果をもたらす。デジタル物理学と呼ばれる仮説は、 宇宙 自体が万能チューリングマシンで計算可能であるため、これは偶然ではないと述べている。これは、万能チューリングマシンよりも強力なコンピュータは物理的に構築できないことを意味する。[ 12 ]
例 チューリング完全システムとして議論される計算システム(代数、計算体系)は、理論計算機科学 の研究を目的としたものです。これらは、計算の限界を理解しやすくするために、できるだけ単純になるように設計されています。以下にいくつか例を挙げます。
ほとんどのプログラミング言語 (抽象モデル、場合によっては有限メモリを前提とする特定の構成要素は省略されているかもしれない)は、従来型であれ非従来型であれ、チューリング完全である。これには以下が含まれる。
汎用言語はすべて広く使われている。 あまり一般的でないパラダイムを使用する言語のほとんど: 一部の書き換えシステム はチューリング完全である。
チューリング完全性とは、その能力を実装するために使用される特定の言語機能の規定ではなく、能力の抽象的な記述です。チューリング完全性を達成するために使用される機能はかなり異なる場合があります。Fortran システムでは、繰り返しを実現するためにループ構造または場合によってはgoto文を使用します。Haskell と Prolog は、ループをほとんど完全に欠いているため、 再帰を 使用します。ほとんどのプログラミング言語は、メモリ (RAM とレジスタ) と制御ユニットを備えたフォン ノイマン アーキテクチャ 上の計算を記述しています。これら 2 つの要素により、このアーキテクチャはチューリング完全になります。純粋関数型言語 でさえチューリング完全です。[ 15 ] [ 16 ]
宣言型SQLにおけるチューリング完全性は、再帰的な共通テーブル式 によって実現されます。当然のことながら、SQLの手続き型拡張(PL/SQL など)もチューリング完全です。これは、比較的強力な非チューリング完全言語が稀である理由の一つを示しています。つまり、言語が当初強力であればあるほど、適用されるタスクは複雑になり、完全性の欠如が欠点として認識されるのが早くなり、チューリング完全になるまで拡張が促されるのです。
型なしラムダ計算は チューリング完全ですが、System F を含む多くの型付きラムダ計算はそうではありません。型付きシステムの価値は、ほとんどの典型的なコンピュータプログラムを表現できると同時に、より多くのエラーを検出できる点にあります。
ルール110 とコンウェイのライフゲームは 、どちらもセルオートマトン であり、チューリング完全である。
意図せざるチューリング完全性 一部のソフトウェア やビデオゲームは 、意図せずしてチューリング完全性を持つようになっている。
ソフトウェア:
ゲーム:
ソーシャルメディア:
計算言語:
生物学:
物理システム:
↑ おそらく、チューリング完全計算は、コンピュータサイエンスを支える理論の唯一のパラダイムであると言えるでしょう。現在、支配的なコンピュータサイエンスのパラダイムは、理論的にはTC計算、包括的なプログラミング言語、そして実際的には計算的思考、包括的なプログラミング手法として特徴づけられると主張されています。 [ 3 ]
参考文献 ↑ スチュアート、トム (2013)。「7. 普遍性は至る所に存在する §ラムダ計算」。 『計算の理解:単純 な機械から不可能なプログラムまで 』。オライリー・メディア。p. 209。ISBN 978-1-4493-3011-8 つまり、RUNはあらゆるチューリングマシンをシミュレートできるラムダ計算プログラムである 。 ↑ Calude, Cristian S. (2024). "§1.14 停止問題が決定可能なプログラミング言語" . To Halt Or Not To Halt? That Is The Question . World Scientific. p. 30. ISBN 978-981-12-3229-9 擬似コードプログラムには、チューリング完全性または普遍性という強力な特性があります。プログラミング言語は、 あらゆるチューリングマシンをシミュレートできる場合、 チューリング完全 または 計算的に普遍的であると呼ばれます。 ↑ Michaelson, Greg (2020年2月14日). "プログラミングパラダイム、チューリング完全性、計算論的思考". The Art, Science, and Engineering of Programming . 4 (3) 4. arXiv : 2002.06178 . doi : 10.22152/programming-journal.org/2020/4/4 . ↑ Üçoluk, Göktürk; Kalkan, Sinan (2012). "§1.3.1 実装のためのプログラミング言語の選択方法" . Python のケーススタディによるプログラミング概念入門 . Springer. p. 13. ISBN 978-3-7091-1343-1 すべてのパラダイム、すべてのプログラミング言語、そしてすべてのCPUは等価である。これをチューリング等価性と呼ぶ 。↑ ベン・ゴーツェル (2013). 「§1.1 確率的および量子的計算」 『 知能の構造:心の新しい数学モデル』 Springer. p. 13. ISBN 978-1-4612-4336-6 我々は、汎用チューリングマシンが、少なくとも他のあらゆるコンピュータをシミュレートできるという意味では、あらゆる正確な命令セットに従うことができることを確認した 。↑ ガーナム、アラン(2017)。 「8. 概念的問題 §1. コンピュータを心のモデルとして捉える ― チューリングのテーゼ」 。 『人工知能入門 』。ラウトレッジ。164 ページ 。ISBN 978-1-351-33786-1 ユニバーサルチューリングマシンは、他のあらゆるチューリングマシンの動作を模倣することができる 。↑ モーゲンセン、トルベン・エギディウス (2022)。 「序文 § 新しい プログラミング言語は必要か?」 。 プログラミング言語の設計と実装 。シュプリンガー・ネイチャー。p. 6。ISBN 978-3-031-11806-7 。↑ Woodward, John R. (2003). "遺伝的プログラミングにおけるモジュール性" . Ryan, Conor (編). Genetic Programming: 6th European Conference, EuroGP 2003, Essex, UK, April 14–16, 2003. Springer. p. 258. doi : 10.1007/3-540-36599-0_23 . ISBN 978-3-540-00971-9 。↑ ホッジス、アンドリュー (1992) [1983]、 『アラン・チューリング:エニグマ』 、ロンドン:バーネットブックス、111ページ 、 ISBN 0-04-510060-8 ↑ Rojas, Raul (1998). "How to make Zuse's Z3 a universal computer" . Annals of the History of Computing . 20 (3): 51–54 . Bibcode : 1998IAHC...20c..51R . doi : 10.1109/85.707574 . ↑ ラウール、ロハス(2014 年 2 月 1 日)。 "Konrad Zuse und der bedingte Sprung" [ Konrad Zuse と条件付きジャンプ ] 。 Informatik-Spektrum (ドイツ語)。 37 (1): 50–53 . 土井 : 10.1007/s00287-013-0717-9 。 ISSN 0170-6012 。 S2CID 1086397 。 ↑ Schmidhuber, Jürgen (1997), "A computer scientist's view of life, the universe, and everything", in Freksa, Christian; Jantzen, Matthias; Valk, Rüdiger (eds.), Foundations of Computer Science: Potential — Theory — Cognition , Lecture Notes in Computer Science, vol. 1337, Springer, pp. 201–8 , arXiv : quant-ph/9904050 , doi : 10.1007/bfb0052088 , ISBN 978-3-540-69640-7 S2CID 17830241 ↑ Dfetter; Breinbaas (2011年8月8日)。 「循環タグシステム」 。PostgreSQL wiki 。 2014年 9月10日 取得 。 ↑ Lyons, Bob (2001年3月30日). 「XSLTにおける汎用チューリングマシン」 . UnidexのB2B統合ソリューション . 2011年7月17日のオリジナルから アーカイブ済み. 2010年 7月5日 取得 . ↑ Boyer, Robert S.; Moore, J. Strother (1983 年 5 月). A Mechanical Proof of the Turing Completeness of Pure Lisp (PDF) (技術報告書). Institute for Computing Science, University of Texas at Austin. 37. 2017 年 9 月 22 日にオリジナルから アーカイブ (PDF) 。 ↑ Rauber, Thomas; Rünger, Gudula (2013). 並列プログラミング:マルチコアおよびクラスタシステム向け (第2 版). Springer. ISBN 978-3-642-37801-0 。↑ 「LAMBDAの発表:Excelの数式をカスタム関数に変換」 . TECHCOMMUNITY.MICROSOFT.COM . 2020年12月3日. 2020年 12月8日 取得 . ↑ 「Jiraはチューリング完全である」 . seriot.ch . 2026年 5月23日 取得 。 ↑ J. Su、Caleb。 「Baba is Youにおけるチューリング完全性への新しいアプローチ」 (PDF) 。 ↑ Cedotal, Andrew (2010年4月16日). 「世界で最も難しいコンピュータゲームを使って…動作するチューリングマシンを作成する男」 . The Mary Sue . 2015年6月27日のオリジナルから アーカイブ済み。 2015年 6月2日 に取得 。 ↑ Plunkett, Luke (2019年7月16日). 「Cities: Skylinesのマップがうんち動力のコンピューターになる」 . Kotaku . 2019年 7月16日 閲覧 。 ↑ コールドウェル、ブレンダン(2017年11月20日)。 「Opus Magnumのプレイヤーが錬金術的なコンピューターを作る」 。Rock Paper Shotgun 。 2019年 9月23日 閲覧 。 ↑ チャーチル、アレックス、ビダーマン、ステラ、ヘリック、オースティン (2020)。 マジック:ザ・ギャザリングはチューリング完全である (PDF) 。第10回アルゴリズムで楽しむ国際会議。2025年9月23日に オリジナル (PDF) からアーカイブされました 。 ↑ ウエレット、ジェニファー(2019年6月23日)。 「マジック:ザ・ギャザリング内でチューリングマシンを構築することは可能」 。Ars Technica 。 2023年 3月12日 閲覧 。 ↑ 「チューリング完全性」 。www.cs.odu.edu 。 2026年 5月11日 取得 。 ↑ ケイ、リチャード (2007 年 5 月 31 日)。 「マインスイーパーの無限バージョンはチューリング完全である」 (PDF) 。2016 年 8 月 3 日の オリジナル (PDF)からアーカイブ済み。2016 年 7 月 8 日 取得 。 ↑ De Wynter, Adrian (2023). "チューリング完全性とシド・マイヤーのシヴィライゼーション" . IEEE Transactions on Games . 15 (2). IEEE: 292– 9. Bibcode : 2023ITGam..15..292D . doi : 10.1109/TG.2022.3166874 . ↑ 「Habboのゲーム内におけるチューリングマシンの実装に関するTwitterスレッド」 。2020年11月9日。 2020年 11月11日 閲覧 。 ↑ スコット・マイヤーズ(スコット・ダグラス)(2005)。 『効果的なC++:プログラムと設計を改善するための55の具体的な方法』 (第3版)。アッパー・サドル・リバー、ニュージャージー 州 :アディソン・ウェスリー。ISBN 0-321-33487-6 OCLC 60425273 ↑ 第27回IOCCC受賞者Carlini, Nicolas; Barresi, Antonio; Payer, Mathias; Wagner, David; Gross, Thomas R. (2015年8月) 「制御フローの曲げ:制御フローの完全性の有効性について」 第 24回USENIXセキュリティシンポジウム議事録 pp. 161–176 . ISBN 978-1-931971-23-2 。 ↑ Dabler, Ryan (2021年9月23日). "TypeScriptとチューリング完全性" . ITNEXT . LINKIT . 2022年 11月12日 取得 . ↑ ドーラン、スティーブン。 「mov はチューリング完全である」 ( PDF) 。stedolan.net。2021 年 2 月 14 日に オリジナル (PDF) からアーカイブ済み。2019 年 5 月 9 日 に取得 。 ↑ Williams, Al (2021年3月21日). 「すべてを支配する1つの命令:CコンパイラはMOVのみを出力する」 . Hackaday . 2023年 10月23日 取得 。 ↑ Break Me00 The MoVfuscator movを魂を打ち砕くバイオハザードの悪夢に変える Christopher Domas 、2015年9月25日、 2022年 11月5日 取得 ↑ Litherum (2019年3月7日)。 「Litherum: Addition Font」 。Litherum 。 2026年 5月23日 取得 。 ↑ 「Unicodeの音訳規則はチューリング完全である」 . seriot.ch . 2026年 7月8日 取得 。 ↑ Shah, Shalin; Wee, Jasmine; Song, Tianqi; Ceze, Luis; Strauss, Karin ; Chen, Yuan-Jyue; Reif, John (2020年5月4日). "鎖置換ポリメラーゼを用いた化学反応ネットワークのプログラミング". Journal of the American Chemical Society . 142 (21): 9587– 93. doi : 10.1021/jacs.0c02240 . ISSN 0002-7863 . PMID 32364723 . S2CID 218504535 . ↑ Chen, Yuan-Jyue; Dalchau, Neil; Srinivas, Niranjan; Phillips, Andrew; Cardelli, Luca; Soloveichik, David; Seelig, Georg (2013年10月). "DNAから作られたプログラム可能な化学コントローラー" . Nature Nanotechnology . 8 (10): 755– 762. Bibcode : 2013NatNa...8..755C . doi : 10.1038/nnano.2013.189 . PMC 4150546 . PMID 24077029 . ↑ Srinivas, Niranjan; Parkin, James; Seelig, Georg; Winfree, Erik; Soloveichik, David (2017年12月15日). "酵素フリー核酸動的システム" . Science . 358 (6369) eaal2052. doi : 10.1126/science.aal2052 . ISSN 0036-8075 . PMID 29242317 . ↑ Soloveichik, David; Seelig, Georg; Winfree, Erik (2010年3月23日). 「化学反応速度 論 の普遍的な基質としてのDNA」 . 米国科学アカデミー紀要 . 107 (12): 5393–8 . Bibcode : 2010PNAS..107.5393S . doi : 10.1073/pnas.0909380107 . PMC 2851759. PMID 20203007 . ↑ Shapiro, Ehud (1999年12月7日). "機械式チューリングマシン:生体分子コンピュータの設計図" . Interface Focus . 2 (4). Weizmann Institute of Science : 497– 503. doi : 10.1098/rsfs.2011.0118 . PMC 3363030 . PMID 22649583 . ↑ ミランダ、エヴァ; ラモス、アイザック (2025年12月27日)。「古典的なビリヤードは計算できる」。arXiv : 2512.19156 [ math.DS ] 。
さらに読む Brainerd, WS; Landweber, LH (1974).計算理論 . Wiley. ISBN 0-471-09585-0 OCLC 694056 ジャイルズ、ジム(2007年10月24日)「最もシンプルな『汎用コンピュータ』で学生が2万5000ドルを獲得」ニュー・サイエンティスト 。 ヘルケン、ロルフ編(1995)。ユニバーサルチューリングマシン:半世紀の概観 (PDF) 。シュプリンガー。ISBN 3-211-82637-8 OCLC 32013506 Turing, AM (1936). 「計算可能な数について、決定問題への応用」 .ロンドン数学会紀要 . 2. 42 : 230– 265. doi : 10.1112/plms/s2-42.1.230 . S2CID 73712 . Turing, AM (1938). 「計算可能な数について、決定問題への応用:訂正」.ロンドン数学会紀要 . 2. 43 : 544–6 . doi : 10.1112/plms/s2-43.6.544 .