Bir kümenin medyan değerini bulması gereken herhangi bir algoritma veya veri yapısı var mı?


14

Bu kitabı sınıfım için Randomize Algoritmalar için okuyorum . Bu özel kitapta, bir dizinin medyanını rastgele seçim kullanarak bulmaya adanmış, daha verimli bir algoritmaya yol açan bütün bir bölüm vardır. Şimdi, bu algoritmanın, bilgisayar bilimi alanında, teorik bir gelişmenin yanı sıra pratik bir uygulama olup olmadığını bilmek istedim. Bir dizinin medyanını bulması gereken herhangi bir algoritma veya veri yapısı var mı?


3
Quicksort'a bakmak isteyebilirsiniz: Medyanı pivot olarak seçerek en kötü durumundan kaçınılabilir (O ​​(n ^ 2) yerine en kötü durum çalışma zamanı = O (n log n)) ve yineleme derinliği simge durumuna küçültülmüş (log2 (n)).
hoffmale

1
@hoffmale: Ama bu medyanı bulmanızı gerektirmiyor. Ortanca değere oldukça yakın bir değer bulmanızı gerektirir. Örneğin, en üst% 5 veya en alt% 5 dahilinde olmayan bir pivot bulmak O (n log n) değerini garanti eder.
gnasher729

1
@ gnasher729: ancak özyineleme derinliğini en aza indirmez. Her iki özellik de önemlidir, örneğin kaynak sınırlı gerçek zamanlı bir ortamda.
hoffmale

@hoffmale, tesadüfen, baz 2 logaritması (özellikle bilgisayar bilimcileri arasında) için genel gösterim (lg (n)) gibi basitçe "lg" dir.
Wildcard

@ gnasher729 Konu stokastik algoritmalar olduğundan, bu (= oldukça yakın) muhtemelen bu algoritmaların yaptığı şeydir.
Konrad Rudolph

Yanıtlar:


17

teorik bir gelişmenin yanı sıra bilgisayar algoritması alanında bu algoritmanın pratik uygulamaları varsa

Bu algoritmanın uygulaması önemsizdir - bir veri kümesinin medyanını (başka bir deyişle dizi) hesaplamak istediğinizde kullanırsınız . Bu veriler farklı alanlardan gelebilir: astronomik gözlemler, sosyal bilim, biyolojik veriler, vb.

Bununla birlikte, medyanın ne zaman tercih edileceğini (veya modunu) belirtmek gerekir. Temel olarak, tanımlayıcı istatistiklerde, verilerimiz tamamen normal olduğunda, ortalama, mod ve medyan eşittir, yani çakışırlar. Diğer yandan, verilerimiz çarpık olduğunda, yani verilerimiz için frekans dağılımı (sol / sağ) çarpık olduğunda, çarpıklık tipik değerden sola veya sağa sürüklediği için ortalama en iyi merkezi konumu sağlayamaz. medyan, çarpık verilerden güçlü bir şekilde etkilenmese de, bu konumu tipik bir değere işaret eden en iyi şekilde tutar. Bu nedenle, çarpık verilerle uğraşırken bir medyan hesaplamak tercih edilebilir.

Ayrıca, makine öğrenimi istatistiksel yöntemlerin, örneğin medikal kümelenmesinink yoğun olarak kullanıldığı yerdir .


Teşekkür ederim! Bu son derece yararlı! Bir medyan bulması gerekebilecek diğer algoritmalar veya teknikler?
Sharan Duggirala

5
Bu yeterince doğru olsa da (+1), uygulanan istatistiklerde değil, medyanı bulmadan önce veriler sıralanır, çünkü medyanın istendiği birçok bağlamda, hatta çoğu bağlamda, diğer düzenin en azından bazıları İstatistik.
John Coleman

1
İlginç. kümelenme anlamına geldiğini duydum ama k- medyan kümelenme hakkında değil . kk
svick

13

Ortalama filtreleme , görüntü işlemede belirli gürültü türlerinin azaltılmasında yaygındır. Özellikle tuz ve karabiber gürültüsü. Görüntünün her bir yerel mahallesindeki her bir renk kanalındaki ortanca değeri seçerek ve onunla değiştirerek çalışır. Bu mahallelerin büyüklüğü ne kadar değişebilir. Popüler filtre boyutları (mahalleler) örneğin 3x3 ve 5x5 pikseldir.


1
Medyan, yalnızca görüntüdeki parazit için değil, kameraların sadece bir tür sensör olduğu hemen hemen tüm sensör okumalarında parazit için geçerlidir. Okul Ders Kitapları çalışmak için güzel sinüzoidal ve kare dalga şekilleri gösterir. Gerçek dünyada böyle temiz veriler neredeyse hiç olmaz. Eğer öyleyse, neredeyse her zaman bir başkası, siz elde etmeden önce verileri düzeltmeye özen gösterdi. örneğin "doğru" değeri seçmeniz gereken daha tipik sensör okuma verileri: (1, 3, 5, 65, 68, 70, 75, 80, 82, 85, 540, 555). Verileri daha belirgin hale getirmek için sıraladım.
Smaç

1
Evet, haklısın. Ancak sinyal işlemede kullanılabilecek tüm küçük şeyleri yazsaydık çok uzun ve sıkıcı bir cevap olurdu.
mathreadler

1
Görüntü işlemede Ortanca da zamansal gürültü kurtulmak için bir yolu olan 5 dizileriyle veya fotoğraf öylesine piksel başına kullanılabilir (aka görünüm engelleme turist.)
Hagen von Eitzen

@HagenvonEitzen Haklısın! Aslında birkaç gün önce benzer bir şey düşünüyordum. Etrafında birçok turist ...
mathreadler

10

Medyanların hesaplanması özellikle randomize algoritmalarda önemlidir.

Sıklıkla, en az olasılıkla bir yaklaşım algoritmamız var.341±ϵA34kA(1±ϵ)kA(1ϵ)A(1+ϵ)k

2nn


5

Medyanların medyan bazı uygulamaları vardır:

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

1
Aslında quicksort için bir pivot seçmek için medyan-medyan kullanmak, pratikte algoritmayı yavaşlatır gibi görünmektedir, çünkü quicksort'un çabukluğuna ana katkı olan önbellek yerini tamamen öldürür. Ancak en kötü durum karmaşıklığı hakkındaki yorumunuz elbette doğrudur.
wchargin

@wchargin Hangi alternatifleri öneriyorsunuz? Bildiğim pratik bir hızlı sıralama uygulaması, önbelleğe duyarlı bir pivot kullanmıyor, çünkü bunu yapmak iğrenç en kötü durumda çalışma zamanında esnaf yapıyor. “Bir sıralama işlevi tasarlama” makalesinde alternatifler tartışılmamaktadır ve bunların hiçbiri önbellekli değildir (ve yine de saf pivot seçiminden daha iyi performans göstermez).
Konrad Rudolph

1
@wchargin… kendi sorumu cevaplıyorum: Java 7, bilmediğim yeni bir çift pivot prosedürüne geçti. Bu ilginç ve belki eski medyan Pivot algoritmalarını işlemek.
Konrad Rudolph
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.