Adakah yang akrab dengan Yijie Han , ruang linear, algoritma pengurutan integer? Hasil ini muncul dalam makalah yang cukup singkat ( Deterministic sorting dalam O ( n log log n ) waktu dan ruang linear . J. Alg. 50: 96-105, 2004) yang pada dasarnya menempelkan banyak hasil sebelumnya, dengan adaptasi yang sesuai. Masalah saya adalah bahwa itu ditulis dalam cara yang agak melambaikan tangan tanpa masuk terlalu dalam ke spesifik. Ini sangat bergantung pada kertas sebelumnya, menonjol di antara mereka kertas lain oleh Han ( Peningkatan integer cepat yang menyortir dalam ruang linear. Informasi dan Komputasi 170 (1): 81–94) ditulis dengan gaya yang hampir sama. Saya mengalami kesulitan yang signifikan dalam memahami kedua makalah ini, terutama cara mereka beradaptasi dan menggunakan hasil sebelumnya. Saya sangat menghargai bantuan apa pun.
Ini tentu saja terlalu luas dan tidak jelas untuk dianggap sebagai pertanyaan yang tepat, tetapi saya berharap dapat mengembangkan diskusi di beberapa pertanyaan dan jawaban yang terfokus dengan baik.
Untuk memimpin, inilah pertanyaan spesifik pertama saya. Dalam Lemma 2 dari Info. Comp. kertas ada algoritma waktu rekursif untuk menemukan integer terkecil saya dalam satu set n integer kecil yang dikemas k masing-masing ke dalam kata-kata RAM. Deskripsi algoritma gagal menyebutkan bagaimana kasus dasar k = O ( n ) ditangani. Dalam hal ini diperlukan untuk melakukan seleksi dalam waktu O ( log k ) . Bagaimana ini bisa dilakukan?
Jawaban:
Saya hanya ingin tahu hal yang sama.
Untungnya, saya dapat menemukan artikel jurnal yang diterbitkan pada 2011 yang menjelaskan hal ini; Terlebih lagi, Anda tidak perlu berlangganan untuk melihatnya: Implementasi dan Analisis Kinerja Penyortiran Pohon Eksponensial
Saya merekomendasikan membaca seluruh artikel untuk mempelajari bagaimana itu dapat diimplementasikan dan untuk lebih memahami teorinya yang mendasarinya. Ini juga menunjukkan bagaimana Pohon Eksponensial bertumpu pada Quick-Sort dan Binary Trees. Berikut kutipan yang relevan terkait dengan Han waktu, ruang linear, integer algoritma sortingO(nloglogn) :
[6] Y. Han, pengurutan deterministik dalam O (n log log n) waktu dan ruang linier, 34th STOC, 2002.
[8] A. Andersson, Penyortiran deterministik cepat dan pencarian dalam ruang linear, Simposium IEEE pada Yayasan Ilmu Komputer, 1996.
sumber
Saya tidak yakin tentang jawabannya (belum melalui kertas) tetapi saya pikir ini akan membantu. Angka-angka tersebut dikemas menjadi satu kata, sehingga operasi pada satu kata membutuhkan waktu O (1). Jika ada, katakanlah, k jumlah h bit masing-masing maka ukuran kata tergantung pada k, h yang pada gilirannya juga tergantung pada kisaran angka. Jadi kami menggunakan teknik reduksi rentang yang dapat mengurangi rentang angka sehingga banyak angka bisa muat dalam satu kata. Kemudian membuat topeng bit yang tepat, kita dapat menemukan bilangan bulat terpisah yang lebih besar dari yang lebih pendek mempertimbangkan dua kata sekaligus. Ini dapat dilakukan dalam O (1) waktu. (Tanda tangan: untuk ini setiap angka yang disimpan dalam kata memiliki bit bendera yang terkait dengannya dan kemudian kita kurangi dua kata ... jika bit bendera hilang maka itu adalah angka yang lebih kecil).
Demikian pula dengan menggunakan di atas kita juga bisa mengurutkan kata yang mengandung angka k dalam waktu O (log k) (jenis bitonic).
Sunting: Algoritma untuk mengurutkan angka 2k dalam kisaran 0 hingga m-1 yang dikemas dalam kata di mana setiap angka mengambil ukuran L dari = log (m + k) +2.
Ulangi untuk t = log k ke 0.
Bagian 1 - pisahkan kata asli Z menjadi dua kata A dan B.
B = Z- (Z&M).
Bagian 2
M = M- (M bergeser ke kiri tempat L-1).
MIN = (B&M) ATAU (A- (A&M))
MAX = (A&M) ATAU (B- (B&M))
Akhirnya dengan tepat ORing MAX dan MIN kita kembali Z.
Saya telah memberikan sketsa, semoga Anda dapat mengisi rincian yang diperlukan.
sumber