Ortalama


10

Ortalama lg(n!)+o(n) karşılaştırmaları kullanan karşılaştırma tabanlı bir sıralama algoritması var mı?

En kötü durum lg(n!)+o(n) karşılaştırma algoritmasının varlığı açık bir sorundur, ancak ortalama durum her girdi için beklenen lg(n!)+o(n) karşılaştırmaları olan rastgele bir algoritma için yeterlidir . Önemi lg(n!)+o(n) o şekilde o(n) tek bir ortalama israf, en uygun olan karşılaştırmalar o(1) element başına karşılaştırmalar.

Zaten böyle bir algoritmaya sahip olduğum için, bunu bir cevap olarak ekliyorum ( Q / A formatını kullanarak ), ancak böyle bir algoritmanın zaten bilinip bilinmediği, o(n) ve en kötü- kasa lg(n!)+o(n) .

Önceki çalışma:
Birleştirme sıralaması karşılaştırmaları kullanır (en kötü durumda bile). Sort (aynı zamanda sıralama Ford-Johnson olarak da bilinir) Birleştirme-yerleştirme de kullanır karşılaştırmalar ancak çok daha küçük bir sabiti ile . Karşılaştırma Tabanlı Sıralama için Geliştirilmiş Ortalama Karmaşıklık (Kazuo Iwama ve Junichi Teruyama tarafından) - (1,2) Ekleme algoritması, aşağıdaki cevabımın bir kısmına benziyor.l g ( n ! ) + Θ ( n ) Θ ( n )lg(n!)+Θ(n)
lg(n!)+Θ(n)Θ(n)


Bu soru Optimal rasgele karşılaştırmalı sıralama ile örtüşüyor , ancak farklı vurgu (burada spesifik asimtotik davranış - genel bilgi durumu, tüm girdi boyutları ve en kötü durumdan farkı) göz önüne alındığında, yeni bir soru kullanmaya karar verdim.
Dmytro Taranovsky

Yanıtlar:


4

Güncelleme: Bu cevabı, ortalama karşılaştırmalarıylalg(n!)+o(n) bir kağıda genişlettim .

Evet, böyle bir algoritma var. Sadece bağlı olduğunu kanıtlayacağım , ancak olası bir randomizasyon varsayımı altında . Ayrıca ve için bir girişim açıklayacağım .l g ( n ! ) + O ( n 1 - ε ) n 0.5 + o ( 1 ) O ( n 0.5 - ε )lg(n!)+o(n)lg(n!)+O(n1ε)n0.5+o(1)O(n0.5ε)

Gerekirse açıklama ekleyerek tüm öğelerin farklı olduğunu varsayabiliriz; ortalama durumda farklı öğeler rastgele sırayla kullanılır. Adil bir jeton kullanmaya göre her karşılaştırma için entropi kaybını ekleyerek ortalama karşılaştırma sayısını hesaplayabiliriz.

Başlangıç ​​noktası, sıralanan alt kümeye ( sonraki öğenin nereye ekleneceğine karar vermek için ikili aramalı ekleme sıralamasıdır . Tüm , bir ekleme ( entropi açısından) bir katkı faktörüne (ve ortalama-kasa karmaşıklığı için, de çalışır). Şimdi, ne zaman2 gücüne yakın olmadığında, öğesinin eklenmesi yetersizdir (ortalama durumda ve her sorguyu nasıl dengelediğimize bakılmaksızın), ancak karşılaştırmalarını boşa harcarsak, yaklaşık olarak eşit bir dağılıma yönlendirebiliriz aralıklarla( 1 - ε ) 2 m| S | 2 m - 1 m O ( ε ) 2 m| S | ( 1 + ε ) 2 m | S | A o ( 1 ) A SS(1ε)2m|S|2m1mO(ε)2m|S|(1+ε)2m|S|Ao(1)AS uzunluğuna yakın bir 2 gücüne, istenen optimumluğa sahibiz.

Bunu, gruplar halinde elementler ekleyerek ve bazen partinin elemanlarını birbirleriyle verimli bir şekilde karşılaştırarak başarırız, böylece bir element karşılık gelen aralığı yarı rastgele bir şekilde azalır (ve aralık içindeki olasılık dağılımı ile neredeyse eşit) ve aralık uzunluğu 2 gücüne yeterince yakın olduğunda, eklemek için ikili aramayı yapın .A A ASAAA

Ortak yapılar

Biz bir alt kümesi tutacak sıralı elemanlarının ve her sıralanmamış eleman için biz, en az aralık takip eder ait bulunduğu için bilinir. uzunluğu ; aralıkların kimliğidir.A I A S A | I A | I A I A = I BSAIASA|IA|IAIA=IB

Let : ile karşılaştırın ve sonra (rastgele sırada) aralıkları kesilene (veya uzunluk 1'e sahip oluncaya kadar ) ve karşılık gelen elemanlarıyla karşılaştırın . unsuru ( tutarlı bir şekilde) çağrıldığında, üzerinde eşit olarak dağıtıldığı varsayılarak karşılaştırma olasılıklarını mümkün olduğunca 1/ yakın hale getirmek için seçilir (tutarlı bir şekilde). . Sonundaki ayrıklık nedeniyle tekdüzelik varsayımını korur.bir B A B S S o m p bir r e ( A , B ), bir AI B C o m p bir R , eCompare(A,B)ABABSSCompare(A,B)IAIBCompare

Aşağıdaki bölümler birbirinden bağımsız olarak okunabilir.

A algoritmasılg(n!)+o(n)

Verilen: Sıralı bir liste ve bir grup sıralanmamış eleman; ; ayrılmamış elemanlar göre rastgele .m m ω ( 1 ) o ( | S | ) SSmmω(1)o(|S|)S

Mümkünse (1) - (3) ' tekrarlayın:
1. ile iki ve elemanı seçin (herhangi bir seçenek çalışacaktır). 2. çalıştırın . 3. Eğer2 gücüne yeterince yakınsa (not 1) partiden çıkarın ( unutmadan ); ve ile benzer şekilde yapın . Son olarak: Tüm öğeleri ve sıralamayı tamamlayın.B I A = I B C o m p a r e ( A , B ) | I A | A I A B SABIA=IB
Compare(A,B)
|IA|AIAB
S

Not 1: "Yeterince yakın" için, göreceli hata ( bir fonksiyonu olarak , adım (4) 'te elemanlar kaldırılacağı sürece çalışır (not 2 ile mümkündür). Beklenen bir randomizasyon varsayımı altında, göreli hatası öğelerini kullanarak ortalama karşılaştırma sıralama algoritması.m m - o ( m ) c log günlüğü m / log m m ( 1 - log - Θ ( c ) m ) l g ( n ! ) + O ( n log günlüğü n / log n )o(1)mmo(m)cloglogm/logmm(1logΘ(c)m)lg(n!)+O(nloglogn/logn)

Not 2: Aynı karşılaştırma dizisi aynı sınırlama aralığına yol açtığından, hemen hemen tüm elemanlar adım (1) kez geçecektir (adım 4'te kaldırılmadığı sürece). Eğer Başlangıçta, ve çekme , Karşılaştırdıpımız elemanı karşı , ve aşama (3), her bir uygulama vardır azalma olasılığıiçinde kat. Şimdi 2 rasyonel gücü olmayan her oranı ve böyleceA < B bir A G [ ( 1 - 1 / Ω(logm)A<BAAAO(1)| IA| 1/(1-1/S[(11/2)|S|]AO(1)|IA|a>1ε>0d>0m,nN1/(11/2)a>1o(n)ε>0d>0m,nN1ε<amd2n<1+εo(n) ciltli.

Olası bir algoritmasılg(n!)+O(n1ε)

Modulo bir randomizasyon varsayımı olarak, ortalama karşılaştırmaları aşağıdaki gibi elde edebiliriz.lg(n!)+O(n1ε)

  • Öğeleri rastgele karıştırın ve ikinci yarıyı ayrılmamış bir grup olarak tutarken ilk yarıyı listesine ayırın.S

  • Parti boşalana kadar tekrarlayın:
    Rastgele . Let . Eğer boş kaldırmak içine kesikli ve insertten . Aksi takdirde:G = { B toplu : | P ( A < B ) - 0.5 | < n - 0.51 ε } G A SAbatchG={Bbatch:|P(A<B)0.5|<n0.51ε}GAS

    1. Varsa öyle ki olasılığıyla (≥0.05 demek), yapariçinde 2'nin kuvvetlerine göreli hata, koşmak ve eğer başarılı (yani içindedir 2'nin kuvvetlerine göreceli hata) kaldırmak içine kesikli ve insertten .BGΘ(1)Compare(A,B)|IA|nεCompare(A,B)|IA|nεAS
    2. Böyle bir , rastgele bir için .BGCompare(A,B)BG

Randomizasyon varsayım çalışır sonra işlemin çok boyunca, tipik bir (aralık uzunlukları ve pozisyonları, yani dağıtım rastgele yeterlidir) etkin bir şekilde bir seçim ile karşılaştırılabilir ile elemanların ( farklı aralık uzunlukları). Böylece, tipik olarak yukarıdaki (1) için bir karşılaştırma seçebiliriz ve karşılaştırma sonucuyla , hala şansı elde ederiz , böylece ( yeterince küçükse, 0.01 diyelim) a -karşılama algoritması. Bazı değişiklikler ve yaklaşımlarla, toplam hesaplama yarı doğrusal yapılabilir: elementi verilirAnΘ(1)nΘ(1)Θ(logn)εlg(n!)+O(n1ε)A, Aralık uzunlukları vaat hesaplamak ve sonra bakmak sağ Yaklaşık merkez aralık uzunlukları ile s.B

Karşılaştırmaları optimize etmenin birkaç yolu vardır, ancak engel, her karşılaştırmanın şanssız olabileceği ve sınırlı sayıda karşılaştırmamızın olmasıdır. Optimizasyondan sonra ortalama 4 karşılaştırma yapar ve 1/4 olasılıkla 'başarılı' , elde .Compare(A,B)ε(1ε)/4/log4/320.09

Belki de çok daha iyi bir yaklaşım, bir aralık 2 gücüne yakın olana kadar beklemek, bireysel aralık uzunluklarını değil, uzunluk dağılımlarını kontrol etmektir.

algoritmasında denemelg(n!)+n0.5+o(1)

Varsayalım o ve biz bir sıralanmamış toplu verilir aralıklarla elemanları ile de verilmişgenellikle ve eşit olarak dağıtıldı (rastgele bir hataya kadar ve üzerinde koşullandırılmış olsa bile yeterli hassasiyetle tutma ). Ardından, ortalama karşılaştırmasını boşa harcayan öğeleri şu şekilde sıralayabiliriz : (*) Tüm öğeleri ilk . Bu şekilde, aralık uzunluğu 2 güce yakın olduğunda tüm elemanlar eklenir.|S|=nnIA|IA|n1o(1)|IA|2lg|IA|A<S[i]n0.5+o(1)
|IA|2lg|IA|

Sıralama algoritması şu olacaktır: Listeyi rastgele karıştır ve ilk yarısını sırala . İkinci yarıyı eklemek için dağıtımı doğru yapın ve yukarıdaki (*) işlemini yapın.S

Yapmak için dağıtım hakkı, 'rastgele' bir dağıtım yapabilir ve sonra her bir (gerekirse tekrarlayın). Ancak, bu global olarak, gerekli hassasiyetle yerel olarak kontrol edilip edilemeyeceğini bilmiyoruz (dolayısıyla yukarıdaki "girişme" kelimesi).|IA|2lg|IA||IA|/2lg|IA||IA|2lg|IA|

'Rastgele' bir dağılım yapmak için ile rastgele kullanabiliriz , ancak ilk hepsi aynı olduğunda, bir sublogaritmik derinlikte rastgele birleştirme beklemiyoruz (yani yeterince uzun bir ile ). Bununla birlikte, ile elementlerin genellemelerini (muhtemelen herhangi bir makul seçim işe yarayacak şekilde) kullanarak bir sublogaritmik derinlikte randomizasyon elde ettiğimize inanıyorum : öğelerinin birbirine karışmasını (yani karşılaştırma sonuçları kullanılarak bağlandıysa), ile yapılan her bir karşılaştırma için yaklaşık seçeneklere sahip olmalıyız . BuCompare(A,B)P(A<B)0.5IAIAComparek=ω(1)k=ω(1)kSO(logkn+logk)İstediğiniz gibi rasgeleleştirme derinliği elemanlarının ayrıştırılması için depth derinliğine ihtiyacımız olduğu için çok büyük olmadığı varsayılarak ). Yeterince küçük bir kullanılırsa, hesaplamanın yarı doğrusal yapılabileceğini umuyorum .kΘ(logk)k

1/2 evet olasılığı ile sadece entropiyi boşa harcadığından, başlangıç ​​rasgeleleştirme ve sınırlama aralıklarındaki elemanların hafif tekdüzeliği sadece entropi kaybı. Dağılım şekillendirmesi yeterince başarılı olursa, entropi atığı esasen (*) sırasında aralık uzunluğundaki uyumsuzluklardan kaynaklanır (dolayısıyla ).1/2+n0.5O(1/n)no(1)n0.5+o(1)

Olası bir kombinasyonu:lg(n!)+O(n0.5ε) Dağıtım şekillendirme yeterince iyi çalışıyorsa ve toplu iş boyutunu ve öğelerini (*) (yukarıda) seçmeli olarak reddederseniz , bu elemanları entropi atık aşağıdaki gibi. Bölünmüş içine sokma esnasında hemen hemen eşit aralıklarla ve zaman bir aralık üzerinde yerleşir, reddetme aralığı dolayısıyla bu aralıkların uzunlukları varyasyonu azaltır, çok uzun (yani yerleşmesini iptal)|S|+n0.5+εn0.5+εn0.5+εn0.5ε/2+o(1)SnεIAΘ(nε/2)bu da kez rastgele uzunluk aralıklarının uzunluk değişimlerini azaltır . Şimdi, yukarıda kullanabilir algoritması ile geri kalan elemanları eklemek için atık halinde küçüktür yeter. n ε / 2 - o ( 1 ) l g (n!)+O( n 1 - ε )O( n 0,5 - ε ) εn1o(1)nε/2o(1)lg(n!)+O(n1ε)O(n0.5ε)ε

En kötü durum sıralama karmaşıklığı: Büyük olasılıkla, en kötü durum karşılaştırmaları olan bir sıralama algoritması vardır . Ortanca bulmak için ortalama vaka ( karşılaştırması) ve en kötü durum (en az karşılaştırması) arasında doğrusal bir boşluk vardır . Bununla birlikte, sıralama için, karşılaştırmaları düzenleme ve yeni sıralama algoritmaları bulma konusunda bolca özgürlük vardır.1,5 n + o ( n ) ( 2 + εlg(n!)+o(n)1.5n+o(n)(2+ε)nO(1)


1
Bence bunu bir kağıt olarak yazmalısın.
Emil Jeřábek

@ EmilJeřábek Kabul etti. Araştırma düzeyinde bir site olarak, burada birçok soru ve cevap mini makalelerdir, ancak burada uzunluk ve önem ile resmi bir makale istenmektedir. Makalede hangi parçaların genişletilmesi gerektiği konusunda (dmytro@mit.edu adresinden) bana bildirmekten çekinmeyin (bu cevap kısa bir versiyon olarak kalır).
Dmytro Taranovsky
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.