3

たまたま、0の文字列を読み取り、バイナリにいくつあるかをテープに書き込むチューリングマシンのアルゴリズムが必要です。

実際には、マシンは実際には0をカウントしないことを認識していますが、その方法についてはかなり困惑しています。

まず、2進数がXか何かで始まる場所をマークする必要があると思います。次に、最初の0に1を書き込み、次の0のそれぞれについて、最下位ビットが0の場合は0になります。 1ですが、1の場合はどうなりますか?たぶんそれを0に変えて、0または空白を見つけて1に変えるまで、すべての1を0に変えて左に進み続けますか?繰り返しになりますが、その場合、LSBに関係なく同じことです。これは、同じことを行うため、0のみが最初の位置になるためです...

うーん...ラバーダック...

4

3 に答える 3

9

入力テープが#00000000000#であると仮定します。ここで、最初の読み取り位置は最初の0です。

  1. #遭遇した数のパリティを維持しながら、最後に到達するまで右に移動します0(最初は0、次に1、次に0、...)。0各ペアの最初のペアを。に置き換え-ます。読み取りは無視され、-パリティは変更されません。

  2. パリティを出力テープに書き込み、左に移動します(ビットを順番に書き込むため)

  3. 入力ヘッドを左#に戻し、1に進みます。

最初のパスの終わりに、入力テープはになり#-0-0-0-0-0-#、出力はになります1

2番目のパスの終わりに:#---0---0---#および11

3番目のパスの終わりに:#-------0---#および011

4番目のパスの終わりに:#-----------#および1011

于 2011-01-12T13:48:45.330 に答える
0

このチューリングマシンシミュレータとそのバイナリカウントサンプルプログラムをチェックしてください。

Uberチューリングマシンを使用すると、チューリングマシンをプログラムできます。これは、任意のコンピューターアルゴリズムのロジックをシミュレートするように適合できるユニバーサル理論デバイスです。このソフトウェアの助けを借りて、新しいアルゴリズムを作成したり、便利なビジュアルIDEを介してそれらを開いたり変更したりすることで、誰かがすでに準備した編集を行うことができます。

Uberチューリングマシンのスクリーンショット

于 2011-01-12T16:33:39.403 に答える
0

編集:私はベインビルに認めます。

昨夜やりたいことを見つけたのですが、それには 2 台の個別のチューリング マシンが必要でした。これはおそらく不正行為です。

1 台目のマシンのヘッドは入力テープ上を走り、0 をスキャンした場合は 2 台目のマシンを起動するだけでした。

2 番目のマシンは単に加算マシンであり、現在の数値に 1 を加算します。これは非常に簡単に実行できます。これは長い加算であり、残りがあることを示す状態を作成し、ゼロに到達するまで左に移動し続けることができます。 (そしてそれを 1 に置き換えます) または空白の場所を見つけます (そして 1 を作成します)。

ベインビルが私の票を獲得しました。

于 2011-01-11T20:15:39.817 に答える