最適なアルゴリズムを持っていることがわかっているいくつかの問題は何ですか?


15

現在のアルゴリズムが漸近的に最適なアルゴリズムであることがわかっている自明でない問題は何ですか?(チューリングマシン用)

そして、これはどのように証明されていますか?


11
チューリングマシンは、下限の扱いにくいモデルです。defnを変更すると、実行時に多項式が変更される可能性があるため、もう少し具体的にする必要があります。
スレシュヴェンカト

自明ではないことをどのように定義しますか?
ファンクスター

1
Sureshが言うように、使用するTMの種類は影響を及ぼします。パリンドローム(逆読みできる単語)の言語については、O(n2)ステップで言語を決定する最適な1テープTMがあります。また、2テープTMの場合、線形時間で決定できるため、ほぼ最適です。
ブルーノ

回答:


18

線形の時間がかかり、入力全体を読み取らなければならないアルゴリズムは、漸近的に最適でなければなりません。同様に、Raphaelがコメントしているように、ランタイムが出力サイズと同じオーダーのアルゴリズムが最適です。


10
同様に、実行時間が出力サイズと同じオーダーのアルゴリズムが最適です。
ラファエル

9
私はこの答えとそれに続くコメントが完全な最新技術であると信じています。
ジェフ

9
さて、これは
期待外れでした-sture

1
記録に関しては、Jɛff Eのコメントは、以下のShirの回答を参照しているようです。
アンドラスサラモン

1
私は、Shir の答えではなく Maxの答えと、Maxの答えに対するRaphaelのコメントを参照していました。
ジェフ14年

8

考慮している複雑さの尺度がクエリの複雑さ、つまり特定の問題を解決するためにマシンが入力を調べる必要がある回数である場合、最適なアルゴリズムがある多くの問題があります。これは、敵対法などの一般的な手法のおかげで、クエリの複雑さの下限は時間または空間の複雑さの下限よりも達成しやすいためです。

ただし、この複雑さの尺度は、量子情報処理能力と古典的な計算能力の間にギャップを簡単に証明できるため、量子情報処理でほとんど例外的に使用されるという欠点があります。このフレームワークで最も悪名高い量子アルゴリズムは、Groverのアルゴリズムです。バイナリ文字列を考えると単一が存在するために、私、このようなxは、私は = nは、あなたが見つけることが必要とされている私を。古典的に(量子コンピューターなしで)、最も単純なアルゴリズムが最適です:見つけるためにこの文字列を平均でn / 2回照会する必要がありますx1,,xnixi=nin/2。Groverは、 O i文字列へのクエリ。これも最適であることが証明されています。O(n)


2
確かに、クエリの複雑さはMaxの答えの根底にある基礎です。ほとんどの問題では、どのアルゴリズムでも「入力全体を読み取る必要がある」、または少なくとも一定の割合の入力を読み取る必要があります。
ジェフ

6
  • モデルを変更する場合は、データ構造の下限がかなり厳しくなります。参照データ構造のための下限をデータ構造における下限のために良いの参照へのポインタのために。
  • 一部の人々がここで言及した比較モデルでのソートの境界から、入力が平面の第1象限の増加関数。Ω(nlogn)

2
データ構造に言及する場合は+1。しかし、ソートの比較下限を​​介して凸包の有用な下限を取得することは不可能だと思います。その理由は、比較モデルが凸包を計算するほど強力ではないためです。代わりに機能するのは、ハルを計算できる代数決定ツリーなどのより強力なモデルを使用し、ソートの下限をこのより強力なモデルに適合させることです。
デビッドエップスタイン

理にかなっています、説明をありがとう!
アベル・モリーナ

3
  1. 比較(名前を付けてソートをマージを使用した比較ソートが最適であり、証明にはnでツリーの高さを計算するだけです。葉。O(nlogn)n!

  2. ユニークなゲーム予想を想定して、Khot、Kindler、Mossel、およびO'donnellは、GoemansおよびWilliamsonのアルゴリズムよりもMax-Cutを近似する方がNP完全であることを示しました。その意味で、G&Wは最適です(も仮定)。PNP

  3. 一部の分散アルゴリズムは、いくつかの条件(たとえば、敵対プロセッサの割合)に関して最適であることが示されますが、Turingマシンについて言及したので、それはあなたが探しているタイプの例ではないと思います。


2
質問2が質問に回答するかどうかは、質問者が「最適」によって何を意味するかによって異なりますが、質問者がその意味で質問していることは疑います(そうでなければ、UGCを必要としない多くの厳密な近似結果があります)。さらに、項目1または3のいずれかが質問に答えるとは思わない。
伊藤剛

@TsuyoshiIto、質問者が正確に何を意味していたのか推測することは困難です。ところで、(1)が有効な答えではないと言う理由は何ですか?
Shir

2
質問者は、チューリングマシンに最適なアルゴリズムを具体的に要求します。
伊藤剛

6
「比較ソート」は実際には「問題」ですか?それとも、計算モデルの問題制限ですか?
ジェフ

3

あなたは入力を与えられていると仮定とRAMのマシンかどうかを判断するように要求されているMの入力で終了Xの後w=M,x,tMx段階。時間階層定理によって、これを決定するための最適なアルゴリズムが実行シミュレートすることである M X のためのt時間で行うことができるステップ、 O TのtM(x)tO(t)

(注:チューリングマシンの場合、の実行のシミュレーションにはO t log t ステップが必要です; Ω t )の下限しかわからないため、これはチューリングマシンに最適ではありません)。MO(tlogt)Ω(t)

サブケースとして停止問題のバージョンを含むいくつかの他の問題があります。例えば、文章かどうかを決定する WS1Sの結果であることは、時間かかる2 O | θを|、これが最適です。θ2↑↑O(|θ|)


3

「自明でない」とはどういう意味かわかりませんが、これはどうですか。。したがって、この言語は規則的ではなく、それを決定するTMはΩ n log n )で実行する必要があります。単純なアルゴリズム(1つおきに0を越える)が最適です。L={02k|k0}Ω(nlogn)


3

動的なデータ構造の問題を許可する場合、いくつかの超線形時間最適アルゴリズムを知っています。これは、ワードRAMと同じくらい強力なセルプローブモデルにあります。つまり、代数決定木などの制限されたモデルではありません

1つの例は、動的更新の下でプレフィックスの合計を保持することです。まず、数字配列から、目標は次の操作を可能にするデータ構造を保持することです。A[1],,A[n]

  • A [ i ]を追加しますΔA[i]Δが与えられた場合、にiΔ
  • プレフィックスの合計、与えられたj=1iA[i]i

葉にA [ i ]を持つ拡張された二分木に基づくデータ構造を使用して、時間で両方の操作を簡単にサポートできます。PatrascuとDemaineは、任意のデータ構造のためのシーケンスがある:これは最適で示したN取らなければならない追加プレフィックス合計クエリΩをN ログNは時間の合計。O(logn)A[i]nΩ(nlogn)

別の例はunion findです:{ 1のパーティションで開始しますシングルトンに開始し、2つの操作を許可するデータ構造を保持します。{1,n}

  • Union:jを指定すると、以下を含む部分を置き換えますijおよび収容部 jは労働組合とのij
  • 検索:i含む一部の標準的な要素、出力i

O(α(n))αnΩ(nα(n))


1

多くのストリーミングアルゴリズムには、下限と一致する上限があります。


0

入力順序/分布に関する特定の制約に基づいて、[私の理解は]最適な2つの類似した検索アルゴリズムが2つあります。ただし、アルゴリズムのプレゼンテーションでは通常、この最適性を強調していません。

上記のウィキペディアを引用していますが、それが最適であることの証拠はありません。おそらく、最適性を証明する他の参考文献が聴衆によって見つかるかもしれません。


-1

多くの準線形時間アルゴリズムには、下限と一致する上限があります。


3
重複としてフラグが付けられます。
ジェフ

準線形時間アルゴリズムとストリーミングアルゴリズムは異なる分野です。
ビンフー

1
それは本当ですが、答えを1つにまとめる必要があります。
スレシュヴェンカト

最適なサブリニア時間アルゴリズムのいくつかの例としては、することができ
ビンフー

1
また、これがクエリの複雑さの答えの複製ではない理由も明らかではありません。
アルテムKaznatcheev
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.