タグ付けされた質問 「turing-completeness」

6
プログラミング言語がチューリング完全であるための最低限の基準はありますか?
プログラミング言語をチューリング完全と見なすために、プログラミング言語にプログラミング言語構成体のセットが存在しますか? wikipediaから言えることから、言語は再帰をサポートする必要があります。または、一見、停止せずに実行できる必要があります。これですべてですか?

9
一部のプログラミング言語は完全なチューリングですが、他の言語のいくつかの機能が欠けているのはなぜですか?
外部プログラム/関数にフックする(すべき)インタープリターを作成するときに奇妙な問題に遭遇しました: 'C'および 'C ++'の関数は可変引数関数をフックできません。たとえば、 'printf'を呼び出す関数を作成できません取得した引数とまったく同じ引数を使用し、代わりに可変個のオブジェクトを取る代替バージョンを呼び出す必要があります。匿名フックを保持するオブジェクトを作成できるようにしたいので、これは非常に問題です。 だから、Forth、JavaScript、そしておそらく他の多くの言語がアセンブリ言語/マシンコードに頼ることなくこれを非常に簡単に行うことができるので、これは奇妙だと思った。他の言語はこれを非常に簡単に行うことができるので、各プログラミング言語が解決できる問題のクラスは、これらの言語がすべてチューリング完全であっても、実際には言語によって異なりますか?

9
Cは実際にチューリング完全ですか?
私は誰かにCがチューリング完全であることを説明しようとしていましたが、実際には技術的にチューリング完全であるかどうかはわかりません。(Cは、実際の実装ではなく、抽象的なセマンティクスのように。) 「明白な」答え(おおよそ:任意の量のメモリをアドレス指定できるため、RAMマシンをエミュレートできるので、チューリング完全です)は、C標準で許可されている限り、実際には正しくありません。 size_tを任意に大きくするには、一定の長さに固定する必要があり、固定する長さに関係なく、有限です。(つまり、任意の停止しているチューリングマシンが与えられた場合、「適切に」実行されるようにsize_tの長さを選択できますが、すべての停止しているチューリングマシンが適切に実行されるようにsize_tの長さを選択する方法はありません) だから:C99チューリング完全ですか?

5
チューリング完了とはどういう意味ですか?
チューリング完全であるということの定義のほとんどは、ある程度トートロジー的であることがわかります。たとえば、「チューリング完全であることとはどういう意味ですか」をGoogleで検索すると、次のようになります。 チューリングマシンができる問題を解決できるなら、コンピューターはチューリング完全です... 異なるシステムがチューリング完全であるかどうかは非常に明確に定義されていますが、チューリング完全であることの意味/結果が何であるかの説明は見ていません。 同じタスクを実行できる非チューリングマシンが存在しない場合、チューリングマシンで何ができますか?たとえば、コンピューターはのような簡単な計算を実行できます(1+5)/3=?が、通常の計算機でも実行できます。 「別のチューリングマシンをシミュレートできる」と言うだけでチューリングマシンの機能を定義する方法はありますか?

5
通常の言語はチューリング完全にできますか?
私はイオタとジョットについて読んでいたが、このセクションは混乱を招くことがわかった。 Iotaは、文字列の構文ツリーが左または右に分岐できるのとは異なり、Jot構文は一様に左分岐です。その結果、Iotaは厳密にコンテキストに依存しませんが、Jotは通常の言語です。 私の理解では、イオタとジョットはチューリング完全です。しかし、明らかに、1つはコンテキストに依存せず、もう1つは規則的です!確かに通常の言語はチューリングを完全にすることはできませんか?

7
すべてのチューリング完全言語は交換可能ですか
プログラミングの方法は知っていますが、CS理論の初心者です。 この答えによると チューリング完全性は、計算可能性の抽象的な概念です。言語がチューリング完全である場合、他のチューリング完全言語が実行できる計算を実行できます。 そして、チューリング完全言語で書かれたプログラムは、別のプログラムで書き直すことができます。 OK。意味あり。Cをアセンブリに翻訳(コンパイル)できます(そして、私は毎日それを行います!)。また、アセンブリをCに翻訳できます(Cで仮想マシンを書くことができます)。同じことが他の言語にも当てはまります。任意の言語をアセンブリにコンパイルし、別の言語で記述されたVMで実行できます。 しかし、チューリング完全言語で書かれたプログラムを別のプログラムで書き直すことはできますか? アセンブリにLIGHTBUTTONオペコードがある場合はどうなりますか?私は物理的に電球のないシステム(言語)でその言語をエミュレートすることはできません。 OK。つまり、コンピューター理論を扱っているので、物理的なデバイスの制限については話していません。 しかし、乗算を持たないデバイスはどうでしょうか?分割?私の知る限り(これはmath.SEの問題ですが)、加算と減算を使用して乗算をエミュレートすることはできません(もちろん、除算はエミュレートできません)[1]。 では、「完全な言語のチューリング」(加算、減算、およびジャンプが可能)は、加算、減算、乗算、およびジャンプが可能な別の言語をどのようにエミュレートしますか? 編集 [1]。任意の実数上。

1
チューリング完全性にはdo-whileループで十分ですか?
命令型プログラミング言語では、言語をチューリング完全にするための制御フロー構造としてwhile-doループで十分であることを知っています(制御フローに関する限り-もちろん、無制限のメモリと特定の演算子も必要です...) 。私の質問の要点は、do-whileループはwhile-doループと同じ計算能力を持っていますか?言い換えれば、命令を完全にスキップすることが不可能な場合、言語をチューリング完全にすることができます。 ここでのセマンティクスの一部は少し曖昧かもしれないことを理解しているので、具体的な例で実際の質問を言いましょう。 Brainfuck(BF)は、Turingターピットであり、唯一の制御フローはwhile-doループです[...](Brainfuckに慣れていない場合に備えて、質問の下部に完全な言語仕様があります)。さんはどこ、*新しい言語BFを定義してみましょう,.+-<>BFと同じ意味を持っていますが、代わりに[]私たちが持ってい{}たdo-whileループを示しています。つまり、BFとの唯一の違いは、すべてのループが少なくとも1回実行されてから、さらに反復がスキップされることです。 BF *チューリング完全ですか?もしそうなら、BFをBF *に変換する方法に興味があります。そうでない場合、どうすればそれを証明できますか? 私自身のいくつかの観察: すべてのBFプログラムをBF *に翻訳できるわけではありません。たとえば、BF *で値を読み取ったり印刷したりするプログラムを書くことは不可能です。プログラムが1つ以上の値を印刷する可能性がある場合、常に少なくとも1つを印刷します。ただし、BF *に変換できるBFのチューリング完全サブセットがある場合があります。 [f](最初の反復の効果をキャンセルしようとして)に(最初の反復の効果をキャンセルするために)単純に変換することはできません(a fのみで構成されるBrainfuckプログラム)。すべての計算可能な関数に計算可能な逆関数とb)がある場合でも、ループが必ずしも少ないとは限らないため、このステップを再帰的に適用しても、最初に終了することは保証されません。+-[]<>f-1{f}f-1f Brainfuck言語の簡単な概要を次に示します。Brainfuckは、各セルに最初はゼロのバイト値が含まれる無限テープで動作します。オーバーフローはラップアラウンドするため、255をインクリメントすると0になり、逆も同様です。言語は8つの命令で構成されています。 + Increment the current cell. - Decrement the current cell. > Move tape head to the right. < Move tape head to the left. , Input a character from STDIN into the current cell. . …

5
関数型言語のチューリングが完全なのはなぜですか?
主題に関する私の限られた理解はおそらく間違っていますが、これは私がこれまでのところ理解していることです: 関数型プログラミングは、Alonzo Churchが策定したLambda Calculusに基づいています。 命令型プログラミングは、教会の学生であるアランチューリングによって作成されたチューリングマシンモデルに基づいています。 ラムダ計算は、チューリングマシンと同じくらい強力で 能力があります。つまり、計算能力は同等です。 関数型プログラミングがチューリングマシンではなくLambda Calculusに基づいている場合、なぜそれらの一部(またはすべて)がチューリング完全であると記述され、ラムダ完全などではないのですか?「チューリング完全性」という用語は、チューリングマシンにとって特別な意味がありますか、それとも単なる言葉ですか。 最後に、命令型言語がチューリングマシンに基づいており、コンピューターが基本的に無限メモリのないチューリングマシンである場合、現代のPCで機能するプログラミング言語よりもパフォーマンスが高いことを意味しますか? その場合、ラムダ計算機と同等のものは何でしょうか? これは3つの別個の質問のように見えますが、それらはすべて密接に関連しており、それぞれが最初の有効な質問である前の質問に依存しています。


2
ルール110チューリングはどのように完了しますか?
セルオートマトンのルール110のウィキペディアのページを読みましたが、それらがどのように機能するかは多かれ少なかれ知っています(ルールのセットが次の1または0を描画する場所を決定します)。 私はちょうどチューリングが完了していると読みましたが、「ルール110」で「プログラム」する方法を推測することさえできませんか?


2
PROLOGチューリングを完全にするものは何ですか?
次のようなチューリングマシンをシミュレートするプログラムを作成することで、PROLOGがチューリング完全であることを証明できることを知っています。 turing(Tape0, Tape) :- perform(q0, [], Ls, Tape0, Rs), reverse(Ls, Ls1), append(Ls1, Rs, Tape). perform(qf, Ls, Ls, Rs, Rs) :- !. perform(Q0, Ls0, Ls, Rs0, Rs) :- symbol(Rs0, Sym, RsRest), once(rule(Q0, Sym, Q1, NewSym, Action)), action(Action, Ls0, Ls1, [NewSym|RsRest], Rs1), perform(Q1, Ls1, Ls, Rs1, Rs). symbol([], b, []). symbol([Sym|Rs], Sym, …

2
NANDゲートとチューリング完全性との接続
NANDゲートを使用して、すべての真理値表を実装する回路を作成できること、そして最新のコンピューターはNANDゲートで構築されていることを知っています。NANDゲートとチューリング完全性の間の理論的なリンクは何ですか?NANDゲート回路は、チューリングマシンよりも有限オートマトンに近いように思えます。私の直感では、フリップフロップを構築できるため、NANDゲートからレジスタとメモリを構築でき、無限メモリはチューリング完全システムの重要な特性です。もっと理論的または数学的な説明、または何を読むべきかの指針を探しています。

1
チューリング決定可能問題のクラスに完全な問題はありますか?
などの言語は、多対一の削減ではです。も完全な問題があることは簡単です。S. Schmitz [1]は、といくつかのクラスを考慮し。これらは、特別に細工された削減の下で、これらのクラスに完全な問題を提示します。 RE-complete co-REHALTTMHALTTM\text{HALT}_{TM}RE-completeRE-complete\textsf{RE-complete}co-REco-RE\text{co-RE}RECELEMELEM\text{ELEM}RECREC\text{REC} (別名)には、より弱いリダクションに関連する完全な問題がありますか?チューリングの削減は、すべての作業を実行できるため不適切です。そのような削減は人為的であるかそうでないと期待すべきでしょうか(例えば、原始再帰に制限される多対一の削減)。RECR=RE∩co-RER=RE∩co-RE\textsf{R} = \textsf{RE} \cap \textsf{co-RE}RECREC\textsf{REC} [1] Sylvain Schmitz Complexity Hierarchies Beyond Elementary 2013 http://arxiv.org/abs/1312.5686

2
高階関数は、関数型プログラミングにより強力な機能を提供しますか?
cstheory.SEについても同様の質問をしました。 Stackoverflowのこの回答によれば、非遅延純粋関数型プログラミング言語では複雑さを持つアルゴリズムがありますが、命令型プログラミングの同じアルゴリズムはです。FP言語に遅延を追加すると、アルゴリズムはます。Ω (n logn )Ω(nログ⁡n)\Omega(n \log n)Ω (n )Ω(n)\Omega(n)Ω (n )Ω(n)\Omega(n) 高階関数がある場合とない場合のFP言語を比較する同等の関係はありますか?まだチューリング完了ですか?もしそうなら、FPの高次の欠如は、言語の「強力」または効率を低下させますか?

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