SORU
5 NİSAN 2010, PAZARTESİ


Nasıl doğrusal zaman sayı medyan yığınları kullanarak bulabilirim?

Wikipedia diyor ki:

Seçim algoritmaları: min Bulma, max, min ve max hemmedyanya hatta k-th en büyük unsur olabilir doğrusal zaman kümeler kullanılarak yapılmıştır.

Dediklerinin hepsi yapılabilir ve nasıl değil.

Bana bunun nasıl yapılacağı hakkında bazı başlangıç yığınları kullanarak verebilir misiniz?

CEVAP
9 NİSAN 2010, Cuma


Sabit zaman (ve doğrusal zaman öbek oluşturmak için) min, max ve ortalama bulmak için min-max-medyan bir yığın kullanın. Hazırlanmasında, en küçük/en büyük değeri bulmak için-istatistik ağaçları kullanabilirsiniz. Bu veri yapılarının her ikisi de this paper on min-max heaps [pdf link] olarak açıklanmıştır. Min-max yığınları alternatif ikili kümeler min-ve max kümeler-kümeler arasında.

Gazeteden: min-max-medyan Bir yığın aşağıdaki özelliklere sahip: ikili bir yığın

1) Tüm elemanları ortanca kök yer almaktadır

2) kök sol Alt boyutu tavan min-max, bir yığın Hl[((n-1)/2)] içeren unsurları az ya da ortalama eşit. Sağ alt boyut katın max-min heap İk bir[((n-1)/2)] içeren tek öğeleri daha büyük veya medyan eşit.

Kağıt gibi bir yığın oluşturmak için nasıl açıklar.

Edit: okuma Üzerine kağıt daha iyice göründüğü gibi olsa bina min-max-medyan yığınları gerektiren, yapma medyan (FTA: "Bul medyan tüm n eleman kullanarak herhangi bir bilinen doğrusal-zaman algoritmaları"). Bu, yığın yerleşik sonra medyan sadece soldaki min-max yığın ve sağdaki max-min heap arasındaki dengeyi koruyarak koruyabilirsiniz " dedi. DeleteMedian ya da max-min heap dk ya min-max yığın maksimum dengesini korur (hangisi) ile kökünden değiştirir.

Eğer öyleyse şansın yokmuş sabit bir veri kümesinin ortanca değeri bulmak için min-max-medyan bir yığın kullanmayı planlıyorsanız ama eğer değişen bir veri seti kullanıyorsanız mümkündür.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DorkmanScott

    DorkmanScott

    14 NİSAN 2006
  • Rooster Teeth

    Rooster Teet

    11 Temmuz 2006
  • snookie77

    snookie77

    2 Mart 2006