Sırasız bir n
Gerçekten olmadığını düşünüyorum, bu yüzden hiçbirinin olmadığı bir kanıtı da memnuniyetle karşılanmaktadır.
Sırasız bir n
Gerçekten olmadığını düşünüyorum, bu yüzden hiçbirinin olmadığı bir kanıtı da memnuniyetle karşılanmaktadır.
Yanıtlar:
İşte imkansız olduğuna dair bir kanıt. Böyle bir veri yapısı oluşturabileceğinizi varsayalım. İnşa et. Sonra seçim n / log n
Ben yaptın karşılaştırmalar bir öğe olup olmadığını söylemek için yeterli olduğunu iddia etmek istiyorum bir orijinal listedeki herhangi bir yeni madde daha küçüktür veya büyüktür b . Söyleyemediğini varsayalım. Bu bir karşılaştırma tabanlı modeldir çünkü Ardından, ister bilemeyiz bir eşit olduğunu b veya değil, veri yapısı eserlerin varsayımına bir çelişki.
Şimdi bu yana, n / log n seçtiğiniz ürün rastgele, üzerinde sizin karşılaştırmalar içine orijinal listeyi bölmek için, büyük ihtimalle yeterli bilgilerle sahip n / log n listeleri boyutu her O ( log n ) . Bu listelerin her birini sıralayarak, yalnızca karşılaştırmalara dayanan, bir çelişkiden oluşan randomize bir O ( n log log n ) -time sıralama algoritması elde edersiniz .
Burada O ( n ) ön işlemeli bir O ( log k n ) sorgu süresi yapısının imkansızlığını kanıtlayan farklı bir kanıt olduğuna inanıyorum .
Ön işleme sırasında kısmi bir sıraya yol açan O ( n ) karşılaştırmalarını yaptığınızı varsayalım .
Şimdi, içindeki en büyük antichainin A boyutunu düşünün . Bu elemanlar karşılaştırılabilir olmadığından, bir O ( log k n ) sorgu algoritmasına sahip olmamız için, A = O ( log k n ) olmalı .
Şimdi Dilworth teoremine göre, A büyüklüğünün zincirler halinde bir bölümü var .
Şimdi bölümdeki zincirleri belirlemek için algoritmayı tamamlayabiliriz. Yönlendirilmiş bir karşılaştırma grafiği oluşturarak ve ulaşılabilirlik analizi yaparak iki unsurun karşılaştırılabilir olup olmadığını belirleyebiliriz. Bu herhangi bir ek karşılaştırma yapılmadan yapılabilir. Şimdi sadece kaba bir zincir olup olmadığına karar vermek için A boyutunun her olası bölümünü zorlayın .
Zincirlere sahip olduktan sonra , tüm listeyi sıralamak için O ( n log log n ) karşılaştırma algoritması verecek şekilde birleştirebiliriz .
Peter Shor'ın cevabının belirttiği gibi, karşılaştırmaya dayalı bir modelde üyeliği dışlamak için, öğenin her üyeyle nasıl karşılaştırılacağını bilmemiz gerekir. Bu nedenle, k < n rasgele sorguları kullanarak (sorgulanan üye olmayandan daha küçük üye sayısı rastgeledir), n sıralanmamış değerlere sahip olduğuna göre Θ ( n log k ) bilgisi elde ederiz . Bu nedenle, bazı sabiti c > 0 , kullanılarak C
Özellikle O ( n ) ön işleme, o ( n ) sorgu maliyetinesahip olamayız. Aynı zamanda, o ( n- log n ) ön işleme tekabül etmek k olarak O ( n, ε ) her için £ değerinin > 0 ve böylece Ω ( n 1 - ε ) sorgu maliyet.