最もよく知られているアルゴリズムが実行時間問題はありますか


18

ログを分母に持つアルゴリズムを見たことはありませんが、この形式で実際に有用なアルゴリズムがあるかどうか疑問に思っていますか?

実行時にログファクターが増加する原因となる可能性のあるもの(ソートやツリーベースのアルゴリズムなど)を理解していますが、ログファクターで割り切れる原因は何ですか?


24
マージ、。f(n)=nログ2⁡n
— ジェフ

12
@ ɛff snarkyマクスナークスター
— Suresh Venkat

5
基数ソート-それは実際にはです。何が起こっていることであるランダムアクセスのは、ログ要因保存できるので....ているのでO(nログ⁡n/ログ⁡n)
— サリエルのHar-Peled

DTIME階層定理は、RAMモデルで同様のスペースコスト節約のトリックを実行できることを考えると、このようなアルゴリズムの存在に対する議論として使用できるのだろうかと思います。
— -chazisop

回答:


41

「ログで分割する原因は何ですか?」に対する通常の答え。次の2つのことの組み合わせです。

  1. 単語サイズの整数に対する一定時間の算術演算は許可されますが、単語の長さについては控えめにしたい計算のモデルです。したがって、単語ごとにビット(また、すべてのメモリをアドレス指定することさえできませんでした。また、テーブル検索を使用するアルゴリズムは、単語が長い場合、テーブルのセットアップに時間がかかりすぎるため)O(ログ⁡n)
  2. ビットをワードにパックしてデータを圧縮し、そのワードで動作するアルゴリズム。

多くの例があると思いますが、古典的な例は 最長共通部分列などに対する4つのロシアのアルゴリズムです。実際にはになります。ビット操作のブロックを単一のテーブル検索で置き換えるという別のアイデアを使用して、2番目のログファクターを保存します。O (log 2 n )O(n2/ログ2⁡n)O(ログ2⁡n)


35

ルービックキューブは非常に自然な(そして、私にとっては予想外の)例です。キューブが必要です解決するための手順。(これはシータ表記であるため、これは厳密な上限と下限です)。n×n×nΘ(n2/ログ⁡n)

これはこのペーパー [1]に示されています。

ルービックキューブの特定のインスタンスを解決する複雑さは公開されていますが、NPハード(たとえばここで説明) NPハードであると推測されることは言及する価値があります[2]。アルゴリズムは、解を保証し、そしてそれはすべての溶液は漸近的に最適であるが、それは最適特定のインスタンスを解決しないかもしれないことを保証します。ルービックキューブは通常このアルゴリズムでは解決されないため、有用性の定義はここに適用される場合と適用されない場合があります(実際には高速で最適なソリューションを提供するため、Kociembaのアルゴリズムは一般的に小さなキューブに使用されます)。Θ(n2/ログ⁡n)

[1] Erik D. Demaine、Martin L. Demaine、Sarah Eisenstat、Anna Lubiw、およびAndrew Winslow。ルービックキューブを解くためのアルゴリズム。第19回アルゴリズムに関する欧州シンポジウム(ESA 2011)、2011年9月5〜9日、689〜700ページの議事録

[2] Erik D. Demaine、Sarah Eisenstat、およびMikhail Rudoy。ルービックキューブの最適な解法はNP完全です。第35回コンピューターサイエンスの理論的側面に関する国際シンポジウム(STACS 2018)の議事録、2018年2月28日から3月3日、24:1-24:13ページ。


16

ビットパッキングトリックなしで分母に表示されるの例は、Agarwal、Ben Avraham、Kaplan、Sharirによる、時間O (n 2 log log n / log n )の 2つの多角形チェーン間の離散フレシェ距離の計算に関する最近の論文です。アルゴリズムの詳細についてはよく知りませんが、一般的なトリックの1つは、入力を比較的小さな部分に分割し、回答を巧みに組み合わせることです(もちろん、これは分割統治のように聞こえますが、log n分母には​​いくつかの巧妙なトリックがあります)ログ⁡nO(n2ログ⁡ログ⁡n/ログ⁡n)


5
これは、Davidの回答で説明されている「4つのロシア人」テクニックのより複雑なインスタンスです。
— ジェフ

13

ない正確に何を求めたが、ログ要因が分母に表示される「野生」の状況は紙「であるツリー評価のための小石や分岐プログラムのスティーブン・クック、ピエール・マッケンジー、ダスティンWehrの、マーク・ブレイバーマンによって」、およびラーフル・サンタナム。

ツリー評価問題(TEP)は、次のとおりです。リーフ上の{ 1 、… 、k }の値で注釈されたツリーと、内部ノード上の{ 1 、… 、k } d → { 1 、… 、k }、ツリーを評価します。ここで、各内部ノードは、その子の値に対して注釈付き関数の値を取得します。これは簡単な問題であり、ポイントは対数空間では解決できないことを示すことです(木の高さが入力の一部である場合)。そのために、TEPを解決する分岐プログラムのサイズに関心があります。d{1、…、k}{1、…、k}d→{1、…、k}

5章では、タイトな境界はTEPため、出力がに折りたたまれた関連問題BEP、の両方、高さ3の木のために提示されているいくつかの任意の方法で。TEPの場合、境界はΘ (k 2 d − 1)ですが、BEPの場合、境界はΘ (k 2 d − 1 / log k )です。つまり、log kの節約になります。{0、1}Θ(k2d−1)Θ(k2d−1/ログ⁡k)ログ⁡k


12

それはランタイムについてではありませんにもかかわらず、私はホップクロフト、ポール、およびヴァリアントの古典結果を言及することは価値があると思った: [1]、それはまだだから「ログファクターを節約できる原因」の精神。T私ME[t]⊆SPACE[t/ログ⁡t]

それは、空間の複雑さの最もよく知られている上限が分母にログを持つ問題の多くの例を与えます。(あなたの視点に応じて、この例を非常に興味深いものにします-驚くべき定理!-または非常に面白くない-それはおそらく「実際に有用」ではありません。)

[1] Hopcroft、Paul、およびValiant。時間対スペース。J. ACM 24(2):332-337、1977



8

長さの2つの文字列の編集(別名レーベンシュタイン)距離を計算するための最良の既知のアルゴリズムかかりO ((N /ログN )2)時間:nO((n/ログ⁡n)2)

ウィリアムJ.マセック、マイクパターソン:文字列編集距離を計算する高速アルゴリズム。J.計算 システム。科学 20(1):18-31(1980)。


4
繰り返しますが、これはFour Russiansアルゴリズムのバリエーションです。
— デビッドエップシュタイン

7

は、グレッグとポールヴァリアントによって考慮された問題の正しい境界として表示されます(ビットトリックへの接続なし)。Θ(n/ログ⁡n)

Gregory Valiant、Paul Valiant、The power of linear estimators、2011年。第52回コンピューターサイエンスの基礎に関する年次IEEEシンポジウム、FOCS 2011。


7

対数係数を持つタイトな境界の別の例を次に示します。(これは、ブール関数の複雑さからの定理6.17です:Stasys Juknaによる進歩とフロンティア。)

要素の明確さの問題の数式サイズ(完全なバイナリ基底またはデモルガン基底)は、。ここで、nは入力のビット数です。Θ(n2/ログ⁡n)n

mポリ(m)n:=O(mログ⁡m)O(ログ⁡m)mΘ(m2ログ⁡m)Θ(n2/ログ⁡n)nn


2

θ(nログ⁡(n))θ(nログ⁡(n))


3
2n/log⁡nn

-2

O(f(n))O(f(n)ログ⁡f(n))f(n)=nO(nログ⁡n)


2
DT私ME(n/ログ⁡n)

?準線形時間アルゴリズムにはまだ理論があります
— ...-vzn

3
サブリニアアルゴリズムは、オラクルおよびランダムアクセスモデルで意味があります。DTIMEは、マルチテープTMに関して標準的に定義されており、それがDTIMEの階層定理で使用される定義です。
— サショニコロフ

1
DTIME(n/log⁡n)n/lg⁡nn/lg⁡n

5
n/lg⁡nO(n/ログ⁡n)nnf(n)<nDT私ME(f(n))kk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.