複雑性分析における平方根のアイデアの注目すべき例


15

k = \ sqrt nで最小値を取得するという考え方を活用するアルゴリズムとデータ構造がいくつかあります。一般的な例は次のとおりです。max{k,n/k}k=n

  • O(\ sqrt n)の離散対数を計算するためのベイビーステップジャイアントステップアルゴリズムO(n)
  • On時間およびOnメモリでの静的2D直交範囲カウント、
  • O(\ sqrt [k] n)に EXTRACT-MINがありOnkO1にDECREASE-KEYがある優先度キュー
  • 多項式時間でOn色で3色のグラフを着色する、

ほんの数例を挙げます。

このようなアルゴリズムは多くの場合最適ではありませんが、学生は理解しやすく、素朴な境界が最適でないことをすぐに示すことができます。また、平方根のアイデアのデータ構造は、キャッシュの扱いやすさのために、バイナリツリーベースのデータ構造よりも実用的である場合があります(キャッシュを無視する手法を考慮していません)。だからこそ、教えながらこのトピックにかなりの注意を払っています。

この種のより特徴的な例に興味があります。だから私は、分析が平方根のアイデアに依存する(できればエレガントな)アルゴリズム、データ構造、通信プロトコルなどを探しています。それらの漸近は最適である必要はありません。


質問が少しあいまいな場合は申し訳ありません。気軽に改善してください。
ドミトロKorduban

これはCWですか?
スレシュヴェンカト

2
@Suresh:「big-list⇒CW」ルールがまだ有効な場合は、はい、CWにする必要があります。
伊藤剛


これは、マップ削減モデルの最近のアルゴリズム全体の基本的なトリックです
サショニコロフ

回答:


10

Chazelle、Liu、およびMagenの論文Sublinear Geometric Algorithms(STOC 2003、SICOMP 2006)には、次のランダムサンプリングトリックの巧妙なアプリケーションがいくつかあります。同じトリックのバリエーションは、以前GärtnerとWelzl [ DCG 2001 ] によって使用され、CLRの初版(1990)を引用しました。

連続したメモリブロックに格納された、番号のソートされた循環リンクリストが与えられたとします。つまり、2つの配列とがあり。ここで、N e x t [ 1 .. n ]Key[1 ..n]Neバツt[1 ..n]

  • nKey[1 ..n]は、数字のセットを任意の順序で保存します。n
  • 場合セット内の最大数であり、その後、セット中の最小の数です。それ以外の場合、は、セット内でよりも大きい最小の数値です。K e y [ N e x t [ i ] ] K e y [ N e x t [ i ] ] K e y [ i ]Key[]Key[Neバツt[]]Key[Neバツt[]]Key[]

次に、次のように、予想時間で指定された数値後継を見つけることができます。O バツOn

  • 配列の要素のランダムサンプルを選択します。ましょより小さい最大のサンプルであっても(すべてのサンプルがより大きい場合、または最大サンプル)。 KeyKey[j]xxnKeyKey[j]バツバツ

  • フォローからポインタ、我々はより数の大きいを参照するか、または等しくなるまで(すべてのサンプルがより大きかった場合はラップアラウンドした後、)。K e y [ j ] x xNeバツtKey[j]バツバツ

Yaoの補題の比較的単純な適用は、予想時間範囲が最適であることを意味します。この問題の決定論的なアルゴリズムは、最悪の場合時間を必要とします。ΩnOnΩn


10

任意のエッジグラフには三角形があり、それらは時間で見つけることができます。これを行うには多くの方法がありますが、最も初期のものの1つは、一連の線形時間反復を実行するアルゴリズムを提供するItai and Rodeh(STOC 1977)であり、それぞれがグラフからスパニングフォレストを削除すると思います。残りのフォレストに少なくともコンポーネントがある初期の反復では、アルゴリズムはステップごとに少なくともエッジを削除し、最大コンポーネントを持つ最後の反復では、最大次数はあり、それぞれで少なくとも1つ縮小しますステップ。したがって、反復の総数は最大でのm O M 3 / 2N - KのK のn - k個のk個のM / K + K O Om3/2mOm3/2nkknkkm/k+kで適切なトレードオフを選択すると、繰り返しのと時間のの全体的な境界が得られます。OmOm3/2

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.