L = {aⁱbʲcᵏ | i > j > k、k ≥ 1} を認識するチューリングマシンの構築方法
この記事では、言語 L = {aibjck | i > j > k、k ≥ 1} を認識するチューリングマシンの構築方法を解説します。この言語は、記号 a、b、c のみから構成される文字列のうち、「a の個数が b の個数より多く、さらに b の個数が c の個数より多い」という条件を満たすものの集合を表します。
言語の定義と具体例
例えば、w = aaaaaabbbbccc(a が 6 個、b が 4 個、c が 3 個)という入力文字列は、6 > 4 > 3 ≥ 1 という条件を満たしているため、このチューリングマシンによって受理されます。
一方で、a と b の個数が等しい文字列や、b の個数が c の個数以下である文字列などは条件を満たさないため、拒否されます。
構築のアプローチ
この問題を解くためには、テープ上の記号をマークしながら段階的に個数を比較していく手法を用います。具体的な手順は以下の通りです。
- まず、a と b を 1 対ずつ対応付けてマークし(例:a を X に、b を Y に書き換え)、両者の個数を比較します。
- 次に、残った b と c を同様にマークしながら比較します。
- c の個数が b の個数以上である場合(|C| ≥ |B|)、その文字列は受理されません。
- b の個数が a の個数以上である場合(|B| ≥ |A|)、その文字列も受理されません。
- 上記のいずれにも該当しない場合、すなわち i > j > k ≥ 1 という条件が成立していれば、その文字列は受理されます。
状態遷移図
以下の状態遷移図は、上述のロジックを実装したチューリングマシンの動作を表しています。各状態間の遷移を追うことで、マーキングによる比較処理と最終的な受理判定の流れを確認できます。

-
Mac用スタートアップマネージャーで起動時間を劇的に短縮!今すぐマシンを最適化しよう
パソコンを使っていて最もストレスを感じる瞬間のひとつが、永遠に続くかのように思える長い起動時間ではないでしょうか。起動時間とは、Macの電源を切った状態から完全に動作可能な状態になるまでにかかる時間のことです。電源を入れるということは、当然Macを使いたいからこそ。だからこそ、起動は速ければ速いほど良いに決まっています。 購入したばかりの頃は起動が遅くなる症状はなかったはずなのに、いつの間にか遅くなった——そんな経験はありませんか?これは時間とともに何らかの変化が起きていることを意味します。「Startup Manager for Mac」は、こうした起動の遅さの原因を特定し、解消するのに役立
-
Windows PC 向けベスト 10 仮想マシン ソフトウェア (2022)
コンピューターで一度に 1 つのソフトウェアしか実行できないとしたらどうなるか想像してみてください。メールをチェックしたい場合は、現在のプログラムをオフにする必要があります。インターネットにアクセスしたい場合は、Word 文書または現在作業中の他のアプリを閉じる必要があります。かなり難しそうですよね? 一度に多数のアプリケーションを実行できることは「当然」と考えていますが、一度に複数のオペレーティング システムを実行することはほとんど考えていません。ありがたいことに、ベスト仮想化ソフトウェア (2021) 単一のマシンで複数の OS を並行して使用する作業が容易になります。 1 台の物理マ