質問

を読んで "う"チューリング-完成" のwikipediaページが、私は興味をお持ちに正式な証明の実践的な意味のチューリング完了です。

僕が実際に決めようですが、玩具の言語ばかりな設計として使用できる汎用的な言語です。思いを証明できるものであればあまり書けリング機械です。かい運動まで、私はかなり一定の成果を上げています。

ですが最低限の能なコンピュータの完全性-正はできないのでしょうか?あの特徴をほぼ完全性を保証?

(私の推測では並列計算アルゴリズムの研究を行および読み/書き込み可能メモリの店も多くの方法があり)


編集:

とあると思ったフードビジネスに接により、"チューリング完了".ようにしているような自信を新たに発明された言語である機能を設定(または交互に、VMのある命令セット)が計算できることが何に価値をコンピューティングかを証明することで作ることができる、コンピュータでとコミュニケーションを重ねなものだけではない。

私が期待したがセットになったガイドラインのように:"できる場合にはX、Y、Zで しょう 何でも".

役に立ちましたか?

解決

何らかの形式の動的割り当て構造(mallocまたはnewまたはconsで十分)と、再帰関数または無限ループを記述する他の方法が必要です。それらがあり、何か面白いことができるなら、ほぼ確実にチューリング完全です。

ラムダ計算はチューリングマシンと同等のパワーを備えており、ラムダ計算を実装すると、ラムダ計算プログラムを作成するのは実際には非常に楽しいものです。チューリングマシン用のプログラムを書くよりも 楽しいです!

私が知っているチューリング完全性の唯一の実際的な意味は、終了しないプログラムを書くことができるということです。終了を保証するため、チューリング完全ではない 特別な目的の言語をいくつか使用しました。保証された終了と引き換えに、余分な表現力を放棄すると便利な場合があります。

他のヒント

「チューリング完全性」は任意のアルゴリズム計算そもそもTuring_machine "rel=" noreferrer ">チューリングマシン。言語または論理システムは、このプロパティがある場合、「チューリング完全」と表現できます。実用的な観点から、すべての汎用プログラミング言語(および驚くほど多数の特殊目的言語)は、適切に緩い定義でこれを行うことができます(以下を参照)。

ただし、チューリング完全性の厳密な定義は、無限のストレージ容量を意味します。これはもちろん物理的に不可能です。これを考えると、物理マシンがチューリング完全になることはあり得ませんが、チューリング完全性をプログラミング言語に帰するとき、この制約は通常(少なくとも非公式に)緩和されます。言語のチューリング完全性の簡単なテストの1つは、その言語を使用してチューリングマシンシミュレーターを実装できるかどうかです。

Turing Completeではない広範なシステムの例は、関係代数です。これは、Coddの論文大規模な共有データバンクのリレーショナルモデル。関係代数には Godel Completeness 。つまり、一階述語論理(つまり、通常の論理式)。ただし、任意のアルゴリズム計算を表現できないため、チューリング完全ではありません。

すべてではないにしてもほとんどの実用的なSQL方言は、プログラミング言語に通常適用される定義によるチューリング完全である範囲で、手続き型構造を使用して純粋なリレーショナルモデルを拡張することに注意してください。ただし、全体として個々のSQLクエリはそうではありません。

チューリング完全ドメイン固有言語のさらに悪質な例は、 TeX sendmail.cf、。後者の場合、実際には、sendmail.cfをユニバーサルチューリングマシンシミュレータを実装します。

Brainf $&#インタプリタを自分の言語で書くことができれば、それはチューリングです-コンプリート。 LOLCODE は、まさにこの方法でチューリング完全であることが証明されました。

チューリング完全ではない言語の例には、次のような制限されたループが頻繁にあります。 ジェネラコディセタグプレ

ただし、次のような、より一般的な条件をチェックする無制限ループがありません。 ジェネラコディセタグプレ

考えられるすべてのループ構造が制限されている場合、プログラムは確実に終了します。また、無条件の終了保証は潜在的に有用ですが、言語がチューリング完全ではないことを示すものでもあります。

すべての可能なループ構造を特定するのは難しい場合があることにも注意してください。たとえば、C ++テンプレートはチューリング完全であることを意図していないと確信しています...

「最小限の機能セット」があるかどうかはわかりませんが、言語がチューリング完全であることを証明するには、別のチューリング完全システム(必ずしもチューリングマシンである必要はありません)をエミュレートできることを証明するだけです。他のシステムがチューリング完全であることがわかっている限り。 http://en.wikipedia.org/wiki/Turing_complete#Examples に全リストがありますチューリング完全システムの。それらのいくつかはチューリングマシンよりも単純です。

ノーマン・ラムゼーが言ったことに1つ注意点を付け加えたいと思います。チューリングマシンには無限のメモリがあるため、チューリング完全と見なされるプログラミング言語は、メモリも無限であるという前提の下でのみそうなります。

Brainfuckはチューリング完全であり、ループ構造とメモリのインクリメント/デクリメントしかないため、これで十分です。

一方、ラムダ計算の値を変更する方法はありませんが、チューリング完全であるため、可変メモリなしで変更することは明らかに可能です。

プログラムはラムダ計算とは関係がない可能性が高いので、実用的な答えを得るには、最小値が必要です

  1. 変数に書き込む方法
  2. 変数を読み取る方法
  3. 条件付きgotoの形式(ifステートメント、whileループなど)

チューリング完全性の最小機能のようなものを見たのを覚えていません。ただし、言語がループと条件分岐をサポートしている場合は、チューリング完全である可能性が高くなります。ただし、それを証明する唯一の方法は、チューリングマシンまたは別のチューリング完全言語を同化することです。

チューリングマシンを実装できる場合(実装できる限り、メモリが無制限の数学的構造であるため[テープサイズは無限大])、チューリング完全であると確信できます。

いくつかの兆候:

  • メモリをチェックして、現在の値に基づいて操作したり、プログラムフローを制御したりできます。
  • そのメモリには、メモリ、追加できる文字列、再帰によってメモリを割り当てることができるスタックなどを割り当てることができます。
  • プログラムフローは、反復または選択ベースの再帰を介して行うことができます。

他の言語のできる非終了なのですが、ここではチューリング完了です。できる言語は非終端できるような無限ループを構築物のようなループまたは五島に達することができる改めて申し上げるまでもあり、より一般的繰返し(う関数呼び出そのものにしました。)

一度 チューリング完了できないもののように解釈するその他のコンピュータの完全な言語が含ます。

現実の問題"どのような良いですか?" の場合の言語が使用される特定のドメインに特定の課題を解決するための問題に対するものとするフレーズのソリューションの言語はチューリングを完了し、このように保証答え切れない。

きのいずれであっても、常に付加コンピュータの完全性を書く"ことなどを実;るをえないのではないでしょうかは結果によるX"その他のコンピュータの完全な言語では、Xが提供されている非コンピュータの完全な言語です。

もちろん、したい場合にのみ使用言語であっただろうによるチューリングを完---

OISC (1つの命令セットコンピューター)をエミュレートしてみてください。そこで命令の1つをエミュレートできれば、それらの単一の命令を使用してチューリング完全マシンを構成できるため、言語もチューリング完全でなければならないことが証明されています。

チューリング完全性がなければ不可能な機能の最小セットはありますか? 完全性を事実上保証する一連の機能はありますか?

はい、データを条件とする制御フローが必要です。これは、ifとして表現されることがよくあります。たとえば、+-*/ポケット計算機は、条件を表現する方法がないため、チューリング完全ではありません。

また、プログラムの前のポイントに戻るジャンプを表現できる必要があり、その上にループを実装できます。たとえば、プログラムが終了することを保証するために後方ジャンプを禁止するBPFも、チューリング完全ではありません。

読み取りと書き込みの両方が可能で、任意の大きさのストレージが必要です。たとえば、32ビット変数が2つしかない言語では、計算できるものが制限されます。ストレージの構造には、ポインタ、配列、スタック、consセル、純粋なデータ構造などによってアドレス指定されるメモリなど、多くのオプションがあります。

これらに加えて、他のすべてのプログラミング言語を構築できます。簡単でも高速でもないかもしれませんが、それで十分です。

...チューリング完全であることの実際的な意味よりも。

チューリング完全であることの実際的な影響があるとは思えません。

チューリング完全マシンの例をいくつか見てみると、たとえば、元のチューリングマシン、実際の計算に役立つにはほど遠いため、概念は理論的にのみ関心がある必要があることがわかります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top