Her bir elemanın kere karşılaştırıldığı ve bir sıralama ağına bağlı olmadığı şekilde sıralama algoritması


39

Her öğeyi kez karşılaştıracak şekilde sıralama ağlarına indirgemeyen bilinen bir karşılaştırma sıralama algoritması var mı?O(logn)

Bildiğim kadarıyla , her eleman üzerinde karşılaştırması ile sıralama yapmanın tek yolu, girişler için bir AKS sıralama ağı oluşturmak ve girişi sıralama ağında çalıştırmaktır.O(logn)n

AKS'nin uygulanması kolay değildir ve pratik bir sabit faktörü vardır, bu nedenle diğer algoritmaları aramaya motivasyonlar vardır.

Bir sıralama ağını ima etmeyen görünen öğe başına karşılaştırmaları içeren bir algoritma burada sunulmuştur . (iirc, bu ilk olarak Rob Johnson tarafından Stony Brook'un algoritma seminerinde sunuldu ).O(log2n)


2
Soruyu anlamıyorum: birçok sıralı algoritma isteğinize karşılık geliyor gibi görünüyor. örneğin, Birleştirme sıralaması klasik bir sıralama algoritmasıdır ve öğe başına daha fazla karşılaştırma yapmaz . Belki de paralel sıralama algoritmalarını soruyorsunuzdur ? logn
Jeremy,

4
@Jeremy: İki listeleri, birleştirirseniz ve , karşılaştırmakta sonu olabilir her birine karşı olduğunu, Bir element başına karşılaştırmaları. Ve bu sadece bir "birleştirme" adımdı. Elbette ortalama karşılaştırma sayısı mutlaka küçüktür, ancak soru en kötü durum karmaşıklığı ile ilgilidir. (a1,...,an)(b1,...,bn)a1b1,...,bnΩ(n)
Jukka Suomela

6
Bunun mümkün olduğuna inanıyorum. Sıralama ağları veri habersiz ve önceden belirlenmiş bir karşılaştırma yolu vardır, ancak bir sıralama algoritması verilere bağlı olarak farklı işlemler kümesi arasında seçim yapabilir. Bir birleştirme sıralamasını her bir öğe için karşılaştırmasıyla bir algoritmaya göre değiştirebilir ve sıralama ağını redded.com/comments/9jqsi/…O(log2n)
Chao Xu

1
Jukka: Teşekkürler, anladım. Ama bu naif birleşmesini kullanırken sadece var: Bir birleştirebilirsiniz ile hala her eleman, yerleştirmek için arama iki katına kullanarak en kötü durumda toplamda karşılaştırmalar, ancak Her öğede en fazla karşılaştırma, bu Chao'nun bahsettiği birleştirme türünün versiyonunu verir. (a1,,an)(b1,,bn)nlgn
Jeremy

2
Şimdi yeni bir ilgili (ama umarım çok daha kolay) bir soru var: cstheory.stackexchange.com/questions/8073/…
Jukka Suomela

Yanıtlar:


17

Bunu Michael T. Goodrich ile tartıştıktan sonra, EREW PRAM için Cole'un paralel sıralama algoritmasının işe yaradığı anlaşılıyor. Görmek

Bu algoritmada turları vardır ve her turda her eleman karşılaştırmalarına katılır . (Bir kişi, her bir öğenin kopyasını çıkarmayı kötüye kullanmadığımızı görmek için algoritmayı anlamak zorundadır.)O(logn)O(1)

Paralel pointer makinesi için bu algoritmanın bir uzantısı


Kim olduğunuzu bilmek isteriz! : D
Tayfun

@someone Sergio Cabello
birisi

@birisi. Bu cevap için Ty. EREW modelinde sonuçlardan bahseder. Özel okuma ve özel yazma modelinden bu yana, tüm konumlara her turda en fazla O (1) zamanda ve böylece bütün olarak kez dokunulduğu anlamına gelir . Bu, element başına karşılaştırmalarını kullanarak RAM'de medyan bulmak için basit bir algoritma mı (yoksa EREW modelini) mi ifade eder? O(logn)O(logn)
Vk1
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.