タグ付けされた質問 「computability」

計算可能性理論、別名再帰理論に関する質問

12
なぜ、本当に、停止問題がそれほど重要なのでしょうか?
プログラムが停止するかどうかを判断する可能性を却下するために停止問題が頻繁に使用される理由がわかりません。ウィキペディア[記事] [1]は、有限のメモリを備えた決定論的なマシンが以前の状態を停止または繰り返すことを正しく説明しています。リンクされたリストがループしてO(1)のスペースの複雑さでホールティング関数を実装するかどうかを検出するアルゴリズムを使用できます。 Halting Problemの証明は、いわゆる「パラドックス」、つまり、嘘つきのパラドックスと同じように(少なくとも周期的な)自己参照の矛盾にすぎないように思えます。唯一の結論は、停止機能がそのような不正な質問の影響を受けやすいということです。 したがって、逆説的なプログラムを除き、停止機能は決定可能です。それでは、なぜそれを反対の証拠として保持するのでしょうか? 4年後:これを書いたとき、私はちょうどこのビデオを見ました。プログラマーはいくつかのプログラムを取得し、どのプログラムが終了するかを判断する必要があり、ビデオではそれが不可能な理由を説明しています。欲求不満だったのは、arbitrary意的なプログラムがあれば、主人公がそれらが終了したかどうかを証明できる可能性があることを知っていたからです。一般性の概念はどういうわけか失われました。「一部のプログラムは終了することが証明できない」と言うことと、「プログラムが終了することが証明できない」と言うことの違いです。そのための多くのアルゴリズムが正式に実証されています。私がオンラインで見つけたすべての参考文献によってこの区別をすることができなかったのは、この質問のタイトルにどのように来たかでした。このため、私はその答えに本当に感謝しています これにより、停止関数がブール値ではなく3項として再定義されます。

3
に一連の数字があるかどうかをどのように決定できますか?
次の演習を行いました。 させて f(n )= { 100nπ の10進表現で発生します 他にf(n)={10n occurs in the decimal representation of π0else\qquad \displaystyle f(n) = \begin{cases} 1 & 0^n \text{ occurs in the decimal representation of } \pi \\ 0 & \text{else}\end{cases} が計算可能であることを証明します。fff これはどのように可能ですか?天気を私の知る限りでは、我々は知らない数字(またはその)のすべての配列を含み、アルゴリズムは、確かにいくつかの手順がされていることを決めることができないではないに発生します。したがって、根本的な問題は半決定的であるため、fは計算可能ではないと思います。ππ\pifff

5
ゲーデルの不完全性定理、停止問題、普遍的なチューリングマシンの間に具体的な関係はありますか?
私は常に、上記の質問に対する答えは以下の線に沿って肯定的であると漠然と考えてきました。ゲーデルの不完全性定理と停止問題の決定不能性は、決定可能性についての否定的な結果であり、対角線の議論によって確立されました(そして1930年代)。したがって、それらは何らかの形で同じ問題を見る2つの方法でなければなりません。そして、私はチューリングが普遍的なチューリング機械を使用して、停止の問題が解決できないことを示すと思った。(このmath.SEの質問も参照してください。) しかし、今(計算可能性のコースを教える)私はこれらの問題をより詳しく見て、私が見つけたものにかなり困惑しています。だから私は私の考えをまっすぐにするのに助けが欲しい 一方で、ゲーデルの対角論は非常に微妙であることに気付きます。それは、それ自体の導出可能性について何かを言うと解釈できる算術ステートメントを作成するために多くの作業が必要です。一方、私がここで見つけた停止問題の決定不能性の証明は非常に単純であり、普遍的なチューリングマシンの存在は言うまでもなく、チューリングマシンについても明示的に言及していません。 ユニバーサルチューリングマシンに関する実際的な質問は、ユニバーサルチューリングマシンのアルファベットが、シミュレートするチューリングマシンのアルファベットと同じであることが重要であるかどうかです。適切な対角引数を作成するためにそれが必要だと思っていました(マシンにそれ自体をシミュレートさせる)が、ネット上で見つけたユニバーサルマシンの説明の戸惑うコレクションでこの質問に注意を見つけていません。停止の問題ではない場合、普遍的なチューリングマシンは対角線の引数で有用ですか? 最後に、私はこのさらなるセクションに混乱しています同じWP記事の中で、ゲーデルの不完全性のより弱い形式は、停止する問題から生じていると述べています。矛盾を導き出せなければ理論は一貫していることを知っています。自然数に関する完全な理論は、自然数に関するすべての真の記述がそこから導き出せることを意味するように思えます。私はゲーデルがそのような理論は存在しないと言っていることを知っていますが、そのような仮説の獣がどのように健全である可能性があるのか​​を見ることができません。 、したがって完全性によっても導出可能であり、一貫性と矛盾します。 これらの点のいずれかについて明確化をお願いします。

10
人間の計算能力:人間はチューリングマシンの停止問題を決定できますか?
チューリングマシンでは(チューリングマシンでの)停止の問題は決定できないことがわかっています。人間の心がこの問題にどれだけうまく対処できるか、チューリングマシンや汎用コンピューターの助けを借りて、何らかの研究がありますか? 注:明らかに、最も厳密な意味では、ノーと言うことができます。チューリングマシンは非常に大きく、1人の人間の寿命には読めないためです。しかし、これは無意味な制限であり、実際の質問には寄与しません。したがって、物事を均一にするためには、任意の寿命を持つ人間を想定する必要があります。 チューリングマシンTが適切な方法で表され、任意の長寿命の人間Hと任意の量のバッファー(紙+ペン)が与えられた場合、HはTが空の単語で停止するかどうかを判断できますか? 結果:答えが「はい」の場合、チューリングテストに合格する可能性のあるコンピューターがあれば解決しませんか?

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

3
なぜ特定の「決定できない」問題を人間が解決できるのですか?
高次のパターンマッチングは、決定できない問題です。手段式所与、というアルゴリズムが存在しないことa => b、aおよびb単に型付きラムダ計算上のオープンな用語であるが、置換認めるSようにaS => bS、ここで=>「同じBnの正規形を有している」を意味します。しかし、人間はその問題を効率的に解決できます。たとえば、次の問題があるとします。 a = (λt . t (F (λ f x . (f (f (f x))))) (F (λ f x . (f (f x))))) b = (λ t . t (λ f x . (f (f (f (f (f (f x))))))) (λ f x . (f (f …


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

5
反復は再帰を置き換えることができますか?
私は、例えば、すべてのスタックオーバーフローの上で見てきたここでは、ここでは、ここでは、ここでは、ここで私は言及する気にしないいくつかの他、「用途再帰が唯一の反復を使用してプログラムに変換することができ、任意のプログラム」という。 はい、それは可能だと言った、非常に支持された答えを持つ、非常に支持されたスレッドさえありました。 今、私は彼らが間違っていると言っているのではありません。その答えは、コンピューティングについての私のわずかな知識と理解に反するだけです。 すべての反復関数は再帰として表現でき、ウィキペディアにはその旨の記述があると思います。しかし、その逆は真実ではないでしょう。1つには、非原始再帰関数を繰り返し表現できるかどうか疑問です。 また、ハイパーオペレーションを繰り返し表現できるかどうかも疑問です。 @YuvalFIlmusの質問に対する彼の答え(ちなみに私は理解できません)で、数学的操作のシーケンスを加算のシーケンスに変換することは不可能であると述べました。 YFの答えが確かに正しい場合(そうだと思いますが、彼の推論は私の頭の上にありました)、これはすべての再帰が反復に変換できるわけではないという意味ではありませんか?なぜなら、すべての再帰を反復に変換できれば、すべての操作を一連の加算として表現できるからです。 私の質問はこれです: すべての再帰を反復に変換できますか? 明るい高校生または最初の1年生が理解できる答えを与えてください。ありがとうございました。 PS原始再帰とは何かわかりません(アッカーマン関数については知っていますし、原始再帰ではありませんが、まだ計算可能です。それに関する私の知識は、アッカーマン関数のウィキペディアのページから得られます)。 PPS:答えが「はい」の場合、たとえば、非原始再帰関数の反復バージョンを記述できますか。たとえば、答えはアッカーマンです。理解するのに役立ちます。

1
2つのスタックを持つプッシュダウンオートマトンは、チューリングマシンと同等ですか?
で、この答えは言及されています 通常の言語は、有限オートマトンによって認識できます。文脈自由言語にはスタックが必要であり、文脈依存言語には2つのスタックが必要です(これは、完全なチューリングマシンが必要であると言うことに相当します)。 上記の大胆な部分の真実に関して知りたいと思いました。実際、それは本当ですか?これに対する答えに到達する良い方法は何ですか?

4
互いに問題を減らすための一般的なテクニックは何ですか?
計算可能性と複雑さの理論(およびおそらく他の分野)では、縮約は遍在しています。そこに多くの種類がありますが、原理は同じまま:1の問題というのショー他のいくつかの問題として、ハードとして少なくともあるからのマッピングのインスタンスによる内の溶液と同等のものに。基本的に、プリプロセッサとしてリダクション関数を使用できるようにすると、ソルバーはすべてを解決できることを示します。L 2 L 2 L 1 L 1 L 2L1L1L_1L2L2L_2L2L2L_2L1L1L_1L1L1L_1L2L2L_2 私は長年にわたって削減のシェアを実行してきましたが、何かが私を悩ませ続けています。すべての新しい削減には(多かれ少なかれ)創造的な構築が必要ですが、タスクは繰り返し感じることができます。正規のメソッドのプールはありますか? 削減関数を構築するために定期的に使用できるテクニック、パターン、およびトリックは何ですか? これは参照質問になると思われます。したがって、少なくとも1つの例で説明されているが、多くの状況をカバーする、一般的で教訓的に提示された答えを与えるように注意してください。ありがとう!

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


2
ライスの定理が当惑
要約:ライスの定理によれば、すべては不可能です。それでも、私はこの不可能と思われることを常にやっています! もちろん、ライスの定理は単に「すべては不可能」とは言いません。「コンピュータープログラムのすべての特性は計算不可能です。」 (ヘアを分割したい場合は、すべての「重要な」プロパティ。つまり、すべてのプログラムが所有する、またはプログラムが所有しないプロパティは、簡単に計算できます。しかし、他のプロパティは計算できません。) それは定理が言うこと、または言うように見えます。そして、おそらく非常に多くの非常に賢い人々がこの定理の正しさを慎重に検証したでしょう。しかし、ロジックを完全に無視しているようです!計算するのは簡単なプログラムの多くのプロパティがあります!! 例えば: 停止する前にプログラムは何ステップ実行しますか?この数が有限であるか無限であるかを決定することは、計算できないホールティング問題です。この数が有限のより大きいか小さいかを判断するのは簡単です!プログラムを最大ステップ実行し、停止するかどうかを確認します。簡単!nnnnnnn 同様に、プログラムは最初の回実行ステップでユニットより多いまたは少ないメモリを使用しますか?簡単に計算できます。mnnnmmm プログラムのテキストはという名前の変数に言及していますか?些細なテキスト分析で答えが明らかになります。kkk プログラムはコマンド呼び出しますか?再度、そのコマンド名を探してプログラムテキストをスキャンします。σσ\sigma 計算できないように見えるプロパティもたくさんあります。たとえば、プログラムの完全な実行は何回追加されますか?まあ、それはプログラムが実行するステップ数を尋ねることとほぼ同じです。これは実質的に停止の問題です。しかし、非常に簡単に計算できるプログラムプロパティが大量にあるようです。それでも、ライスの定理は、それらのいずれも計算可能ではないと主張します。 ここに何が欠けていますか?

2
イドリスはチューリングの完全性をあきらめることで何ができないのでしょうか?
Idrisには依存型があることは知っていますが、完全にはチューリングしていません。チューリングの完全性をあきらめることで何ができませんか?これは依存型を持つことに関連していますか? これは非常に具体的な質問だと思いますが、依存型と関連する型システムについてはあまり知りません。

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