セットの中央値を見つける必要があるアルゴリズムまたはデータ構造はありますか?


14

私のクラスであるRandomized Algorithmsのためにこの本を読んでいます。この特定の本では、ランダム選択を使用して配列の中央値を見つけることに専念するセクション全体があり、より効率的なアルゴリズムにつながります。今、私は、理論の改善に加えて、コンピューターサイエンスの領域で、このアルゴリズムの実用的なアプリケーションがあるかどうかを知りたかったのです。配列の中央値を見つける必要があるアルゴリズムまたはデータ構造はありますか?


3
クイックソートを見てみたいと思うかもしれません:中央値をピボットとして選択することにより、その最悪のケースを回避でき(最悪の場合の実行時間= O(n ^ 2)ではなくO(n log n))、再帰の深さは最小化(log2(n))。
hoffmale

1
@hoffmale:ただし、中央値を求める必要はありません。中央値にかなり近い値を見つける必要があります。たとえば、上位5%または下位5%にないピボットを見つけると、O(n log n)が保証されます。
gnasher729

1
@ gnasher729:ただし、再帰の深さは最小化されません。リソースが制限されたリアルタイム環境などでは、両方のプロパティが重要です。
hoffmale

ちなみに、@ hoffmale、2を底とする対数(特にコンピューター科学者の間)の通常の表記法は、(lg(n))のように単に「lg」です。
ワイルドカード

@ gnasher729トピックは確率的アルゴリズムであるため、これ(=かなり近い)はおそらくこれらのアルゴリズムが実行していることとまったく同じです。
コンラッドルドルフ

回答:


17

理論的な改善に加えて、コンピューターサイエンスの領域でこのアルゴリズムの実用的なアプリケーションがある場合

このアルゴリズムの適用は簡単です。一連のデータ(言い換えれば配列)の中央値を計算する場合はいつでも使用します。このデータは、天体観測、社会科学、生物学的データなど、さまざまな領域から取得される場合があります。

ただし、平均値(またはモード)の中央値を選択するタイミングについて言及する価値があります。基本的に、記述統計では、データが完全に正規分布している場合、平均、モード、および中央値は等しい、つまり一致します。一方、データが歪んでいる場合、つまりデータの頻度分布が(左/右)歪んでいる場合、歪度が通常の値から左または右にドラッグしているため、平均は最適な中心位置を提供できません、中央値は歪んだデータの影響をそれほど受けないため、典型的な値を指すこの位置を最もよく保持します。したがって、歪んだデータを処理する場合は、中央値の計算が望ましい場合があります。

また、機械学習は、中央値クラスタリングkなど、統計的手法が頻繁に使用される場所です。


ありがとうございました!それは非常に役立ちます!中央値を見つける必要があるかもしれない他のアルゴリズムやテクニックはありますか?
シャランダッジラーラ

5
これは十分に真(+1)ですが、適用された統計ではデータが中央値を見つける前にソートされることがよくあります。統計。
ジョンコールマン

1
面白い。私が話を聞いているではなくについて、平均クラスタリングK -mediansクラスタリング。kk
svick

13

中央値フィルタリングは、画像処理における特定の種類のノイズの削減に一般的です。特に塩と胡noiseのノイズ。これは、画像の各ローカル近傍の各カラーチャンネルの中央値を選択し、それに置換することにより機能します。これらの近隣の大きさはさまざまです。一般的なフィルターサイズ(周辺)は、たとえば3x3および5x5ピクセルです。


1
中央値は、画像のノイズだけでなく、ほとんどすべてのセンサー読み取り値のノイズにも適用されますが、そのカメラはセンサーの一種にすぎません。学校の教科書には、素晴らしい正弦波と方形波が表示されています。現実の世界では、そのようなクリーンなデータはほとんど発生しません。もしそうなら、それはあなたがそれを手に入れる前に他の誰かがデータを滑らかにするのを世話したからです。たとえば、「正しい」値を選択する必要がある、より一般的なセンサー読み取りデータ:(1、3、5、65、68、70、75、80、82、85、540、555)。データを並べ替えてよりわかりやすくしました。
ダンク

1
うん、あなたは正しい。しかし、信号処理で使用できる小さなものをすべて書き留めると、非常に長く退屈な答えになります。
mathreadler

1
画像処理における中央値はまた、時間ノイズを取り除くための方法である、5の配列と、または写真に画素ごとに使用することができる(別名ビューブロッキング観光客。)
ハーゲン・フォンEitzen

@HagenvonEitzenあなたは正しいです!実際、私はほんの数日前に似たようなことを考えていました。周りの多くの観光客
...-mathreadler

10

中央値の計算は、ランダム化アルゴリズムでは特に重要です。

かなり頻繁に、少なくとも確率を持つ近似アルゴリズムがあります。341±ϵA34kA(1±ϵ)kA(1ϵ)A(1+ϵ)k

2nn


5

中央値の中央値は、いくつかのアプリケーションがあります。

  • O(nlogn)
  • O(n)O(n2)

1
実際に中央値の中央値を使用してクイックソートのピボットを選択すると、実際にはアルゴリズムが遅くなる可能性が非常に高いと思われます。しかし、最悪の場合の複雑さについてのあなたのコメントはもちろん正しいです。
-wchargin

@wcharginどのような代替案を提案しますか?私が知っている実用的なクイックソートの実装では、キャッシュに依存するピボットを使用していません。独創的な「ソート機能のエンジニアリング」ペーパーでは、代替案について説明していますが、いずれもキャッシュを認識しません(それにもかかわらず、単純なピボット選択よりも優れています)。
コンラッドルドルフ

1
@wchargin…私自身の質問に答える:Java 7は、私が知らなかった新しいデュアルピボットプロシージャに切り替えました。これは興味をそそられるものであり、ピボットアルゴリズムの中央値が時代遅れになる可能性があります。
コンラッドルドルフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.