2012-12-22 2 views
7

Brainfuckセルがビットで、+と - 演算がちょっと反転するとチューリング完了? Brainfuckのような言語がセルサイズに関係なくTuring-completeであるという簡単な証拠はありますか、またはTuringマシンをシミュレートするプログラムを考える必要がありますか?それがないかどうか私はどのように知るだろうか?Brainfuckの修正版のTuring-completeness

EDIT:私の質問に答えました:ビットセルのBrainfuckはBoolfuckと呼ばれています。通常のBrainfuckはそれに減らすことができるので、BoolfuckはTuring-completeです。

+8

あなた自身の質問に答えを書くことができます。あなたはそれを行い、あなたの答えを受け入れなければならないので、質問が解決されたように質問リストに現れます。 – sepp2k

答えて

1

チューリング完全言語は、「シングルテープチューリングマシンをシミュレートする」ことができます。 BrainfuckとBoolfuckは両方とも仕様に従っているので、Turingは完全です。

チューリングが完了している場合、もう1つはほぼ同じであるため、もう1つは存在する必要があります。 brainfuckではバイト単位で移動しますが、boolfuckではバイトを構成するビットを使用しています。

2

This answerはあなたに適しています。それはどの機能が言語を完成させるかという非常に明確な定義を持っています。命令型言語はチューリング完全であることが必要である、一般的に、

は、ここでの要点だ

  1. 条件付きの繰り返しや条件ジャンプの形(例えば、 whileif + goto

  2. ストレージのいくつかのフォームを読み書きする方法(例えば、変数、テープ)

+0

はい、実際には、 'bool memory = false; (メモリ){メモリ=真;} 'が完全にチューリングされているが、物事を公正に保つために、チューリングはこれらのすべてが無限であるというルールを追加した。したがって、 'while'にする必要があります(無限に繰り返すことができます)。' memory'は 'int'または' byte'でなければなりません(できるだけ大きいですが、技術的にはboolもOKです。 )また、メモリは配列でなければなりません。 'int memory [30000]; while(memory [0]){memory [0] + = 1;}親しみやすい? – YoYoYonnY