すべての自己修正アルゴリズムを非自己修正アルゴリズムでモデル化できますか?


12

命令を変更できる任意のコンピュータープログラムがある場合、命令を変更できないプログラムでそのプログラムをシミュレートすることは可能ですか?


編集:

私はstackexchangeに新しいので、ここで新しい質問をすることができるかどうかはわかりませんが、ここに行きます:わかりました。今、私は疑問に思っています:最も効率的な(そしてどの程度)問題を解決するために最も効率的な自己修正アルゴリズムを使用するのが、入出力同等の最も効率的な非自己修正アルゴリズムに対してですか?

回答:


29

はい、可能です。作成された言語のインタープリターを使用してプログラムをシミュレートできます。これで、プログラム(インタープリター)が修正され、自己変更プログラムであったものがインタープリターのデータになりました。

特に、シミュレートしているTMが独自の記述を変更できるユニバーサルチューリングマシンを完全に使用できます。(シミュレートされたマシンの説明、つまりUTMではありません。)


11
仮想の通訳さえ必要ありません。あなたの自己修正アルゴリズムを実行するCPUは、自身(それは命令を実行する方法をおもむくまま)固定アルゴリズムを実行マシンである
アレクサンダー-復活モニカ

1
@AlexanderMomchliov 命令セットの一部をオンザフライで変更できるCPUが存在します(しかし、はい、アイデアは同じです-プログラム可能な部分はデータであり、それを実行するマイクロコントローラーはインタープリターです-FPGAセル内のマイクロコントローラーを指す難しいかもしれません)
ジョンドヴォルザーク

「TMが独自の記述を変更することを可能にするユニバーサルチューリングマシンを完全に使用できる」私は考えている:これは質問を請うのではないでしょうか?シミュレーション中のTMが自己修正アルゴリズムを実際にモデル化できることを証明する必要があるからです。チューリングの完全性はTMのシミュレーションと自己修正に関連するため、それ自体はチューリングマシンではない自己修正プログラムが存在する可能性があるため、チューリングの完全性を使用してシミュレーションできることを示すことはできません。 algoはTMではありません。
-user56834

@ Programmer2134まったく質問をしない。自己修正プログラムを実行していると思われるCPUが何であれ、そのCPUをチューリングマシンでシミュレートできます。別の方法で説明すると、初期プログラムは命令の有限シーケンスであり、その中にはプログラム自体を変更するものもあります。各命令はUTMでシミュレートでき、各修正をシミュレートでき、修正した各命令をシミュレートできます。このプロセスのどの段階でも、チューリングマシンの能力を超えるものはありません。
デビッドリチャービー

10

変更コード(または「コード」)を持たないチューリング完全計算モデルは、そのステートメントの証明として機能します。私は標準モデル(TM、RAM、...)のいずれかがあることを知らない我々はあまりにも遠くに見てする必要はありませんので、コードを修正しました。

考えている言語でプログラムを取得するには、そのようなモデルからコンパイルします(コンパイラがコード変更を導入しないようにします)。


これは、当然のことながら、実存の引数である:そこにある同等のプログラムが。しかし、2つのチューリング完全言語の間に再帰的(つまり、計算可能な)コンパイラがあることもわかっているため、希望する形式(言語で読む)のプログラムを取得できます。


4

David Richerbyの答えに追加するには:

自己修正アルゴリズムが非自己修正アルゴリズムによってモデル化できないことが事実である場合、それらのアルゴリズムは自己修正するものでも実行される必要があります。それはずっとカメである必要があります。

私のコメントで述べたように、自己変更アルゴリズムは、マシン命令の実行方法を「伝える」静的アルゴリズムのルール(設計でエンコード)を順守するプロセッサで実行できます。


1
それは興味深い分割線かもしれません。「生命」は、自己修正アルゴリズムではモデル化できない自己修正アルゴリズムであると主張できるかもしれませんが、それでも、「生命」は通常、アルゴリズムとは考えられません。
コートアンモン

2
@CortAmmon:「生命」をアルゴリズムとして見ると、その入力と出力はどうなりますか?同等のアルゴリズム(つまり、同じ入力が与えられたときに同じ出力を生成するアルゴリズム)が自己修正でなければならないことをどのように証明できますか?
-ruakh

@ruakh人生は自己修正アルゴリズムであると主張するなら、入力はそれ自身であり、その出力はそれ自体です。非自己修正アルゴリズムに還元できないことを証明するのは難しいですが、一般的な仮説だと思います。結局のところ、コンピューター上で実行できるアルゴリズムに減らすことができると信じたい人は何人いますか?
コートアンモン

1
@CortAmmon:コンピューター上で実行されるアルゴリズムは、もはや「私」ではないので、私はそれを減らすことはできません。私はインプットとアウトプット以上のものです。しかし、私単なるアルゴリズムであるという前提から始めると、「コンピューター上で実行できる」というタックは実際には何も変わりません。Re:「生命が自己修正アルゴリズムであると主張するなら、入力はそれ自身であり、その出力はそれ自身になるだろう」:その場合、あなたはCSの外でひどく割れ陶器に近づいていると思います。
-ruakh

1
@CortAmmonそれ自体を入力として出力するプログラムは、ちょうどcatです。(猫が生き物である場合でも、しゃれは意図されていません)
-user253751
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.