ビデオ: 朝の3分モデリング講座 - ER図編(1) 論理名/物理名の設定やSQL出力 2024
1936年に、 チューリングマシン と呼ばれる簡単なタイプの計算機です。チューリングは実際にはチューリングマシンを作りませんでした。その代わりに、計算可能性の研究、すなわち複雑な問題が計算ステップによって解決できるかどうか、計算可能な問題を解くことができる機械を考案できるかどうかを調べるための架空の装置でした。 (チューリングマシンの歴史やアプリケーションについて知りたい場合は、インターネット上で多くの記事を見つけることができます。検索プロバイダを使用して「チューリングマシン」を検索してください)。
<! - 1 - >チューリングマシンの操作は簡単です。これは、基本的な概念をいくつか体現しています。
-
チューリングマシンの心臓部は、情報が書き込めるセルに分割された無限に長いテープです。もちろん、物理的な装置は無限のセル数を有することはできない。しかし、チューリングマシンの理論では、テープは無限です。各セルに書き込むことができる情報は、0または1などの単一の記号に限定される。しかし、情報は、連続したセルの結合された値によって表すことができる。
<!たとえば、シンボル1の連続した出現とそれに続く0によって数値を表現することができます。したがって、1110は値1を表します。 111111011110は値6と4を表します(6つの1の後に0が続き、4つの1に続けて別の0が続きます)。
-
チューリングマシンには、テープのセルの1つ(および1つだけ)に常に位置する
読み書きヘッドが含まれています。
-
<! - 3 - > この読み書きヘッドは、セルに含まれているシンボルを読み取ることができます。シンボルを消去し、必要に応じて新しいシンボルをその場所に書き込むこともできます。読み書きヘッドが位置するセルは、 カレントセル
またはヘッドセル と呼ばれる。テープは、一度に1つのセルだけ読み書きヘッドの下に左右に移動できるように電動化されている。 マシンの状態は で、アルファベットの文字などの記号で表されます。 他のコンピュータと同様に、チューリングマシンもプログラミングできます。しかし、チューリングマシン用のプログラムは、リモートからJavaプログラムに似ていません。
-
代わりに、Turing Machineプログラムは、マシンがどのようなアクションを取るべきかを決定するために評価される単なるルールのセットです。各ルールは、現在のセルが所与のシンボルを含み、マシンが所与の状態にあるときにとるアクションを識別する。たとえば、現在のセルに1が含まれ、マシンの状態が「a」である場合、ルールは何をするかを指示することがあります。
-
各ルールでは、次の3つのアクションを指定できます。 現在のセルを消去するか、セルに新しい値を書き込む。 テープを1つ左または左に移動します。
マシンの状態を新しい状態に変更します。
たとえば、現在のセルに1が含まれ、マシンの状態が「a」の場合、Turing Machineは現在のセルに0を書き込んで、1つのセルを右に進め、マシンの状態は「b。 "
プログラムに加えて、チューリングマシンのテープは初期値を持つことができます。
-
それはそうです。チューリングマシンの定義全体です。その単純さにもかかわらず、Turing Machineは2 + 2から火星までのロケットの軌道まで何でも計算できます。
-
この課題に対して、非常に単純なチューリングマシンを作成する必要があります。問題を簡略化するために、このバージョンのチューリングマシンで以下の制限を受け入れてください。
-
テープは無限である必要はありません。
Javaの機能(配列、文字列、またはコレクション)を使用して、テープを表すことができます。
(テープは無限である必要はありませんが、現在のセルから左右に簡単に移動できなければならないことに注意してください)配列を使用する場合は、要素の現在のセルで開始しないでください0はそこから左に移動できないためです)。
セルは空でも、任意の文字または数字を含むこともできます。
空のセルは、アンダースコア文字で表されます。
-
状態には任意の英数字を使用できます。 チューリングマシンのプログラムは、テキストファイルから読み込まれます。
このテキストファイルには、1行に1つのルールが含まれています。各ルールには、次のように5つの文字がスペースで区切られ、各ルールの詳細が示されます。
-
現在のセル: 現在のセルに一致する値。
-
現在の状態:
-
現在のマシン状態に一致する値。 新しいセル:
-
新しいセルに書き込む値。セルを消去する場合は_、セルを変更しない場合は*を使用します。 移動:
-
テープを左右に動かすにはLまたはRを押します。プログラムを停止するにはHを押します。テープを動かさない他の文字。 新しい状態:
-
マシン状態の新しい値。例えば、現在のセルが1であり、状態が「a」である場合、現在のセルは0に設定され、テープは1つのセルを左に移動し、状態は「0」に設定されるべきであり、 b: " 1 a 0 L b
-
テキストファイルの最初の行には、テープの初期値を表す文字列を含める必要があります。 テキストファイルの2行目には、初期状態が含まれている必要があります。
-
次の図は、サンプルソリューションのユーザーインターフェイスを示していますが、このプロジェクトで使用するユーザーインターフェイスのデザインは自由に使用できます。 潜在的なチューリングマシンインターフェース。
-
-
インタフェースを作成する際の考慮事項は次のとおりです。
値と現在のセル:
-
テープの値を表示し、現在のセルを強調表示する必要があります。
-
ツールと表示:
-
プログラムの実行を開始、停止、または再開する機能も提供し、プログラムの各ステップの結果を表示する必要があります。
プログラムの実行:ロードされたプログラムを最初から最後まで実行する方法と、各ステップを実行するためにボタンをクリックしてプログラムをシングルステップ実行する方法を提供することができますプログラムの
-
プログラムのロード :ユーザーがテキストファイルからTuring Machineプログラムをロードし、プログラムを再実行するためにマシンをリセットできるようにするボタンを用意する必要があります。
-
無限のテープを実装するためのヒントを次に示します。テープの値を保持するには、現在のセルに格納されている1文字の文字列、現在のセルの左にある文字の2文字目、現在のセルの右にある文字。次に、連結および部分文字列操作の適切な組み合わせを使用して、現在のセルを左または右に簡単に移動することができます。 この挑戦の解決策は、
-
ダミー用Javaオールインワン、 4th Edition製品ページの[ダウンロード]タブで見つけることができます。
-
幸運!