RAMとチューリングマシンの複雑さの間の大きなギャップ


9

Pの問題のみを検討する場合、特定の問題について、既知の最速のワードRAMアルゴリズムと既知の最速のチューリングマシンアルゴリズムの間に大きなギャップはありますか?一般的に関心のある自然問題に大きなギャップがある場合、私は特に興味があります。


6
RAMマシンは、実行時にオーバーヘッドが Turingマシンによってシミュレートできます。したがって、実際には大きなギャップはありません。O(nlogn)
Shaull

@Shaullそのサイズのギャップは、自然/人気の問題に存在しますか?
レンビック2015年

3
回文はシングルテープTMで時間かかります RAMでです)。 eecs.yorku.ca/course_archive/2008-09/W/6115/palindrome.pdfO n Ω(n2)O(n)
SamM

6
Shaullのコメントは、私が知る限り、非決定性マシンと2テープTM設定にのみ当てはまります。引用、ショール?
ライアンウィリアムズ、

1
@ qbt937-うわー、なんと過去からの爆風:)引用がなかったため(または今持っていません)、私は引用を指定しなかったと思います。ライアンウィリアムズが正しいのかもしれません。
Shaull

回答:


6

時間でRAMマシン上で計算できる問題は、チューリングマシンで最大で計算できることが知られています。あなたは、使用されるメモリの合計サイズを超えることはできませんことに注意することが必要それはあなたがより多くの書き込み操作をしたことを意味することから、使用すると、RAMメモリ、チューリングから何かを取り出すたびので、 machineは、最悪の場合、時間をかけて、テープから目的の要素を順番に見つけます。メモリアクセスに加えて、残りの操作にはほぼ同じ時間がかかります。そして、あなたは限界を得る。T n 2 T n T n T n T(n)T(n)2T(n)T(n)T(n)


2
RAMは、入力の長さ(およびその長さのパーティ)を対数時間で計算できますが、基本的なチューリングマシンは、そのパリティを計算するために線形時間を必要とします。

1

以下の例では、アルゴリズムのことを証明している取り言葉-RAM上の問題を解決するためには、必要な場合がありますに1テープチューリング機械(TM )示されるすべての計算を正確に実行します。質問が1テープTMに関連していることを理解しています。これは私の回答でのみ使用します。これは、エミール・イェジャベクの発言に対処するための編集です。O n log n O n 2 log n 3AAO(nlog(n))O(n2log(n)3)A

我々は見つけるでしょう、次のより一般的な結論を。TMはで解決できることを証明するためにの問題は解決にアルゴリズムにより RAMに、それはしない十分ラン TMに。巧妙なアルゴリズムが必要になる可能性があります。オーバーヘッドを証明したい場合も同様です。控えめに言っても、必要なときにいつでも賢いアルゴリズムの存在を証明することは、すぐにはほど遠いようです。これは、基本的にTMのすべてのRAM計算(アルゴリズム)をシミュレート/実行してTMの複雑さを通知することだけを提案する他の応答と一致していませんO(T(n)2)O(T(n))AAO(nlog(n))AO(T(n)2)または。O(T(n)nlog(n))

問題:我々は、アレイ/テーブル与えられる用いて整数に格納された各ビット。我々は二番目の配列与えられると位置を、多数の記録各ビット。いずれかのため、我々は定義であれば MOD MOD。それ以外の場合、。出力。入力がテープとして与えられていると思い N = 2 k個のログN dはログN ログN Tを[ 0 .. ログN - 1 ] X T = 1つのタブ [ I ]tabn=2klog(n)dlog(n)log(n)t[0..log(n)1]Xt=1tab[i]d[t]=tab[n/2+i]d[t] i[0..n/21]Xt=0t=0log(n)1Xtnlog(n)+log(n)log(n) 2桁の数字で、Emil Jeaddressábekのコメントに対応します。

RAM上のアルゴリズムAワードサイズのRAMは、バイナリ文字列入力を読み取るために =を必要としますデータ。しかし、データを読み取った後は、サイズのワードでのみ機能します。アルゴリズム、すべてのを通過して条件をテストすることにより、を計算します。のメインループはFOR計算します。全体の複雑さは(データの読み取り)+w=log(n)O(nlog(n)+log(n)2)O(nlog(n))log(n)AXtO(n)i[0..n/21]At=0,1,2,log(n)1XtO(nlog(n))O(nlog(n))(計算を行う)、はすべてRAM上のでそれを行うことができます。AO(nlog(n))

1テープTMのアルゴリズム:A 1テープTMは、固定に対して時間を必要とすると私は主張し。TMの観点から、決定するは、長さの2つのバイナリ文字列の等価性をテストすることと同じです。たとえば、MOD操作 MODは、ビットを削除することと同じです。このような場合、決定するは、長さビット文字列の等価テストと同等です。長さ 2つの文字列の等価性をテストすることはよく知られていますO(n2log(n)2)tAtO(nlog(n))tab[i]d[t]0tab[i]Atn(log(n)1)/2m1テープTM ではが必要ですが、現在、参照を実際に見つけることができません。しかし、私はpsで証明を提供します。TM がのメインループを実行する場合、ごとに少なくともを費やす必要があり、最終的に。O(m2)AO((nlogn)2)t=0,1,2,log(n)1O(n2log(n)3)


ps。私は平等、テストをビット列に表示ビットができない高速と列にpalyndromeテストよりもビット(palyndromeは、少なくとも取ることが知られている時間)。パリンドロームを解決するために、等価性テスト用の任意のTMアルゴリズムを変更できます。等価性テストTMが2つの整数で始まると仮定します。1つは頭の左側にあり、もう1つは右側にあります(これはTMの最も単純な入力フォームです)。左の位置を超える各移動は、右の位置をミラーリング(反映)できます。ミラーリングされたTMを構築します。最初のTMが(左側)の位置にあるときは常に、ミラーリングされたTMが位置(右側)にあります。TMが未満で等式テストを解いた場合mmO(m2)x<0xO(m2)、この変更されたミラー化TMは未満で回文を解決します。O(m2)

また、いくつかの同等性テストTMアルゴリズムがそこにあり、それらはすべてジグザグになっている必要があるため、すべてが二次時間を必要とします。たとえば、Tourings Machineの例2を参照してください。 lec3.pdf


パリンドロームの下限は、不自然なシングルテープモデルにのみ当てはまります。線形時間でTM上の2つの文字列の等価性をテストすることは簡単です。長いエントリの2つのシーケンスが等しい場合も同様です。また、質問がまったく意味をなさないようにするには、両方のマシンモデルの入力が同一である、つまり有限アルファベット上の文字列として記述されている必要があります。したがって、RAMは各エントリを読み取って単語に変換するために時間O(log n)を必要とし、この操作を無意味にします。
EmilJeřábek2017

@EmilJeřábek、私は返信を編集して、1テープのTMについてのみ考えていることを示します。TMが線形時間で等価性をテストできると言うとき、私はあなたが2テープTMを考えると思います。しかし、質問全体が1テープのTMであることを理解しました。入力フォームに関しては、少なくとも一部のワードRAMについては、あなたが正しいかもしれないと告白しなければなりません。しかし、私の知る限りでは、C ++のint配列は、整数のビットを一緒に格納するかのように、整数をセパレータなしで次々に格納します。16ビットの10整数は正確に160ビットを占めますか?そうでない場合でも、このように機能するマシンを構築することができます。
Daniel Porumbel 2017

3
複雑性理論における標準のチューリング機械モデルはマルチテープです。ここでC ++がどのように関連しているかを確認できません。C++ではなくRAMモデルについて説明します。このモデルでは、個々のメモリロケーションは長さ数を保持できますが、それでも一度に1つの(または)メモリロケーションのみを操作できます。特に、一度に1つの場所にしかアクセスできません。「入力場所を読み取り、それらを1つの単語につなぎ合わせる」ことを一定の時間で実行できる操作はありません。O(logn)O(1)logn
EmilJeřábek2017

2つの可能性があります。(1)入力位置[0]には最初の数値の最初のビットが含まれ、位置[1]には最初の数値の2番目のビットが含まれます。次に、チューリングマシンの場合と同様に、RAMで読み取るには時間必要です。したがって、シングルテープTMを使用しても、2次的な高速化しか得られません。(2)入力場所[0]には最初の番号が含まれ、場所[1]には2番目の番号が含まれます。この場合、TMはこのフォームの入力を処理できないため、問題はTMでは意味がありません。したがって、スピードアップはまったく得られませんが、問題はマシンモデルの1つでしか表現できません。O(nlogn)
EmilJeřábek2017

@EmilJeřábek、あなたの発言に続いて、問題を提案するために質問を編集し、(テープから)データを読み取るためにを明示的に取るRAMアルゴリズムを提案しました。関係なくなった発言の一部を削除しました。これがあなたが指摘した問題を解決することを願っています。O(nlog(n))
Daniel Porumbel 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.