Algoritma pengurutan, sehingga setiap elemen dibandingkan

39

Adakah algoritme pengurutan perbandingan yang diketahui yang tidak direduksi menjadi jaringan pengurutan, sehingga setiap elemen dibandingkan dengan kali?O(logn)

Sejauh yang saya tahu, satu-satunya cara untuk menyortir dengan perbandingan pada setiap elemen adalah dengan membangun jaringan penyortiran AKS untuk input, dan menjalankan input pada jaringan penyortiran.nO(logn)n

AKS tidak mudah diimplementasikan dan memiliki faktor konstan yang tidak praktis, sehingga ada motivasi untuk mencari algoritma lain.

Algoritma dengan perbandingan per item yang tampaknya tidak menyiratkan jaringan pengurutan disajikan di sini . (iirc, ini pertama kali dipresentasikan oleh Rob Johnson di seminar algoritma Stony Brook).O(log2n)

Chao Xu
sumber
2
Saya tidak mengerti pertanyaan: banyak algoritma berurutan tampaknya sesuai dengan permintaan Anda. mis. Gabung sort adalah algoritma pengurutan klasik, dan tidak menghasilkan lebih dari perbandingan per elemen. Mungkin Anda bertanya tentang algoritma penyortiran paralel ? logn
Jeremy
4
@Jeremy: Jika Anda menggabungkan dua daftar, dan , Anda dapat membandingkan dengan masing-masing dari , yaitu, Perbandingan per satu elemen. Dan ini hanya satu langkah "menggabungkan". Tentu saja jumlah rata - rata perbandingan selalu kecil, tetapi pertanyaannya adalah tentang kompleksitas kasus terburuk . ( b 1 , . . . , B n ) a 1 b 1 , . . . , b n Ω ( n )(a1,...,an)(b1,...,bn)a1b1,...,bnΩ(n)
Jukka Suomela
6
Saya percaya itu mungkin. Jaringan penyortiran adalah data yang tidak disadari dan memiliki cara perbandingan yang telah ditentukan, tetapi algoritma penyortiran mungkin dapat memilih antara rangkaian operasi yang berbeda bergantung pada data. Seseorang dapat memodifikasi penggabungan penggabungan ke dalam suatu algoritma dengan perbandingan untuk setiap elemen, dan tampaknya tidak menyiratkan jaringan penyortiran reddit.com/comments/9jqsi/…O(log2n)
Chao Xu
1
Jukka: Terima kasih, saya mengerti maksud Anda. Tapi itu hanya ketika menggunakan penggabungan naif: satu dapat menggabungkan dengan ( b 1 , ... , b n ) menggunakan dua kali lipat pencarian untuk menempatkan setiap elemen, yang masih n perbandingan total dalam kasus terburuk, tapi lg n perbandingan per elemen maksimum, yang menghasilkan versi jenis gabungan yang disinggung oleh Chao. (a1,,an)(b1,,bn)nlgn
Jeremy
2
Sekarang ada pertanyaan terkait baru (tapi semoga lebih mudah): cstheory.stackexchange.com/questions/8073/…
Jukka Suomela

Jawaban:

17

Setelah membahas hal ini dengan Michael T. Goodrich, tampaknya algoritma pengurutan paralel oleh Cole untuk EREW PRAM melakukan pekerjaannya. Lihat

Dalam algoritma itu ada putaran dan di setiap putaran masing-masing elemen berpartisipasi dalam perbandingan O ( 1 ) . (Kita harus memahami algoritma untuk melihat bahwa kita tidak menyalahgunakan membuat salinan dari setiap elemen.)O(logn)O(1)

Perpanjangan dari algoritma untuk mesin penunjuk paralel diberikan dalam

some one
sumber
Kami ingin tahu siapa Anda! : D
Tayfun Pay
@ seseorang adalah Sergio Cabello
seseorang
O(logn)O(logn)