次のアルゴリズムの問題があります。
Watson-Crickの回文であるDNA文字列を認識する複雑な空間チューリングを決定します。
Watson-Crickパリンドロームは、元のストリングが逆補数のストリングです。補体は、 DNAに触発、文字ごとに定義される:AはTの補数であり、Cは、ACGT WC-ドロームためG. Aの単純な例の補数です。
これを解決するには2つの方法があります。
1つはスペースを必要とします。
- 機械が完了したら、入力を読み取ります。入力テープは、逆の順序でワークテープにコピーする必要があります。
- 次に、マシンは入力とワークテープを左から読み取り、各エントリを比較して、ワークテープのセルが入力のセルの補数であることを確認します。これにはスペースが必要です。
もう1つにはスペースが必要です。
- 入力の読み取り中。入力テープのエントリ数をカウントします。
- 入力テープが読み終わったら
- 文字の補数を作業テープにコピーします
- 文字Lを作業テープの最後にコピーします
- (ループポイント)カウンター= 0の場合、ワークテープをクリアして「yes」と書き込み、停止します
- 入力テープがLを読み取る場合
- カウンターで示された回数だけ入力ヘッドを左に移動します(2番目のカウンターが必要)。
- 入力テープがRを読み取る場合
- カウンターで示された回数だけ入力ヘッドを右に移動します(2番目のカウンターが必要)。
- ワークテープの値を保持するセルが入力テープの現在のセルと一致する場合
- カウンターを2減分する
- RまたはLがそれぞれワークテープにあるかどうかに応じて、1つを左または右に移動します。
- LまたはRの補数を現在のLまたはRの代わりにワークテープにコピーする
- ループを続ける
- 値が一致しない場合は、ワークテープをクリアして「いいえ」と書き込み、停止します
私の問題
最初のものは線形時間と空間の両方を必要とします。2番目にはが必要です
私が混乱している理由
2番目の方法は時間の点で優れているので、2番目の方法が最良の選択肢であると思う傾向がありますが、その答えは私が幸運になってアルゴリズムを考え出すことによってのみ得られます。スペースに複雑さを与えたいのであれば、正しいアルゴリズムを思いつくのに運は必要ないようです。何か不足していますか?スペースの複雑さを解決するための問題の解決策を考え出す必要さえありますか?