次の問題が気になります。私は明らかに実用的な解決策を期待していませんが、これに関する開発者の考えをいただければ幸いです。
理論的には、他のプログラムを開き (引数のために、.exe ファイルを開くとしましょう)、特定の実行可能ファイルが実行されたときに (入力とマシンの状態が固定されている場合)、チェスのゲーム (それが実行する可能性のある他のタスクの中で)。
「チェスをする」とは、チェスの盤と駒を表現し、組み込みのチェス AI エンジンに由来する黒と白の後続の動きを適用することを意味します。
このような理論上の「チェス検出プログラム」には、必要に応じてスキャンされた実行可能ファイルを実際にシミュレートする仮想マシンまたは PC エミュレーターなどを含めることができます。同上RAMを備えた任意の速度のコンピューターで実行されると想定できます。
(編集)停止の問題に関しては、次のように解決できます。
プログラムを仮想マシンにロードします。仮想マシンには N ビット (ハード ディスクとメモリ空間と CPU レジスタを合わせたもの) があります。この仮想マシンは、最大で 2^N の異なる状態を想定できます。
VM でプログラムを段階的に実行します。各ステップの後、停止したかどうかを確認します。はいの場合: 問題は解決しました (結果: はい、停止します)。いいえの場合: 仮想マシンの現在の状態を取得し、この状態が以前に遭遇した状態のリストに存在するかどうかを確認します。はいの場合: 問題は解決しました (結果: いいえ、永久に実行されます)。いいえの場合: この州をリストに追加して続行します。
発生する可能性のある異なる状態は最大で 2^N であるため、このアルゴリズムは、プログラムが有限時間内に確実に停止するかどうかを判断します。
(編集 2) スキャンされた実行可能ファイルまたはそれが実行される (仮想) マシンの (無限) 無限性について、あいまいさがあるようです。スキャンする実行可能ファイルが最大で 1 GB (ほとんどのチェス プログラムはかなり小さいため、これで十分なはずです) であり、10 GB の RAM を搭載した PC (または VM) で実行されるとします。
私たちの理論的なチェス検出器プログラムは、任意の量の RAM を使用できます。