質問

アレイ$ a $ n $ numbersで中央値要素を見つけるための通常の簡単なアルゴリズムは次のとおりです。

  • サンプル$ n^{3/4} $ $ a $からの要素を$ b $に置き換えます
  • $ b $を並べ替えて、ランク$ | b | pm sqrt {n} $ elements $ l $ and $ r $ $ b $を見つけます
  • $ l $ and $ r $が$ a $の中央値の反対側にあり、最大$ c sqrt {n} $要素が$ l $と$ r $の間に$ c sqrt {n} $要素があることを確認してください定数$ c> 0 $。これが起こらない場合は失敗します。
  • それ以外の場合は、$ l $と$ r $の間の$ a $の要素を並べ替えて、中央値を見つけます

これが線形時間に実行され、高い確率で成功することを見るのは難しくありません。 (すべての悪い出来事は、二項式の期待から離れた大きな逸脱です。)

同じ問題の代替アルゴリズムは、ここで説明した学生がここで説明されているものです。 ランダム化された選択

また、このものが線形の予想実行時間を持っていることを簡単に確認できます。「ラウンド」は、1/4-3/4の分割を与えたときに終了する一連の再帰呼び出しであり、予想される長さの長さがラウンドはせいぜい2です(ラウンドの最初の描画では、良い分割を取得する確率は1/2であり、実際に増加した後、アルゴリズムが記述されたため、丸い長さは幾何学的なランダム変数によって支配されます。)

だから今質問:

ランダム化選択が高い確率で線形時間に実行されることを示すことは可能ですか?

$ o( log n)$ roundsがあり、各ラウンドの長さは少なくとも$ 2^{-k+1} $で少なくとも$ k $を持っているので、結合は実行時間が$ o(n(n)であることを示します。 log log n)$確率$ 1-1/o( log n)$。

これはちょっと不満ですが、実際には真実ですか?

役に立ちましたか?

解決

アルゴリズムが高い確率で線形時間に実行されることは事実ではありません。最初のラウンドのみを考慮すると、実行時間は少なくとも$ theta(n)$ times A $ g(1/2)$ランダム変数です。 $ p(n) longrightArrow 0 $を許可された障害確率とします。 $ pr [g(1/2) geq log_2 p(n)^{ - 1}] = p(n)$であるため、実行時間は少なくとも$ omega(n log_2 p(n)^です。 {-1})= omega(n)$。

(最初のラウンドの長さは実際には$ g(1/2)$ではないため、いくつかの不正行為があります。この回答をより慎重に分析することは、より慎重な分析が検証されるかもしれません。)

編集:GrübelとRoslerは、予想される比較数を$ n $で割ったものが(ある意味で)(ある意味で)、バウンドされていないある程度の分布になる傾向があることを証明しました。たとえば、Grübelの論文「Hoareの選択アルゴリズム:マルコフチェーンアプローチ」を参照してください。これは元の論文を参照しています。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top