Han'ın


38

Yijie Han'ın , lineer uzay, tamsayı sıralama algoritmasını bilen var mı ? Bu sonuç oldukça kısa bir makalede ( O ( n log log n ) 'de deterministik sıralama ) ve doğrusal uzayda ortaya çıkmaktadır. J. Alg. 50: 96-105, 2004) temel olarak daha önceki sonuçları bir araya getirerek uygun uyarlamaları yapmıştır. Benim sorunum, herhangi bir özelliğe çok derinlemesine girmeden, oldukça el sallayarak bir şekilde yazılmış olmasıdır. Daha önceki kağıtlara yoğun bir şekilde dayanır, aralarında Han tarafından öne çıkan başka bir yazıdır ( Doğrusal alanda geliştirilmiş hızlı tamsayı sıralamaO(nloglogn)O(nloglogn). Bilgi ve Hesaplama 170 (1): 81–94) aynı tarzda yazılmış. Bu iki bildiriyi anlamada, özellikle de önceki sonuçları uyarlama ve kullanma şeklindeki gibi önemli zorluklar yaşıyorum. Herhangi bir yardım için minnettar olurum.

Bu elbette uygun bir soru olarak kabul edilemeyecek kadar geniş ve belirsizdir, ancak birkaç odaklanmış iyi tanımlanmış soru ve cevap arasında bir tartışma geliştirmeyi umuyorum.

Çıkma yolunda, işte ilk özel sorum. Bilginin 2 Lemma'sında. Zorunlu. Bu makalede, her biri RAM kelimelerine k doldurulmuş bir n küçük tamsayı setinde en küçük en küçük tamsayıyı bulmak için özyinelemeli bir zaman algoritması vardır . Algoritmanın açıklaması, temel durum olan k = O ( n ) ' nin nasıl işlendiğini açıklayamaz . Bu durumda seçimin O ( log k ) zamanında yapılması gerekir. Bu nasıl yapılabilir?O(n/klogk)nkk=O(n)O(logk)


13
Hanyij@umkc.edu: Ona yazmak için mükemmel uygun olurdu.
Joseph O'Rourke

Evet. Bu genel konuyu daha önce tartışmıştık ve bunu ele almanın doğru yolu yazara e-postayla göndermektir.
Suresh Venkat

17
Bu, 7 yaşında ve akran inceleme sürecinden geçmiş bir makale hakkında özel bir soruyu içerir. Ari, yazara e-posta gönderebilse de, bu site için ideal bir soru gibi görünüyor. Sapmayı anlamıyorum.
Huck Bennett

18
Tabii ki ilk yaptığım Han yazmaktı. Cevapsız. Sonra, tamsayı sıralama araştırması yapan bir başkasıyla bağlantıya geçtim ve bu konuda, inceleme sonrasında, zamanının daha fazla yatırımını hak etmek için fazla dağınık olamayacağını belirtti. O zaman buraya geldim. Dışarıda Han'ı tanıyan ve benim adıma dikkatini çeken biri varsa, bu da harika olurdu.
Ari

4
Ω(nlogn)

Yanıtlar:


18

Ben de aynı şeyi merak ediyordum.

Neyse ki, 2011'de yayınlanan ve bu konuyu açıklayan bir dergi makalesi bulabildim; Dahası, görüntülemek için bir aboneliğe ihtiyacınız yok: Üstel Ağaç Sıralamalarının Uygulanması ve Performans Analizi

O(nloglogn)

Yijie Han, lineer uzayda karmaşıklığı beklenen süreye indirgeyen bir fikir verdi. [6] Onun kullandığı teknik, Andersson'un üssel arama ağacında [8] tam sayıların aşılması ve tamsayı bitlerinin doğrusal zamanının çok bölünmesiyle koordine edilmiştir. Bir seferde tamsayı üstel arama ağacına eklemek yerine, tüm tamsayıları bir defada üstel arama ağacının bir seviyesine indirdi. Bu tür bir koordineli geçiş, lineer zamanda çoklu bölme yapma ve dolayısıyla algoritmayı hızlandırma şansını sağlar. Bu fikir hızlandırabilir, ancak pratik uygulamada tamsayıları gruplar halinde ele almak çok zordur.

[6] Y. Han, O (n log log n) zamanı ve lineer uzayda deterministik sıralama, 34. STOC, 2002.

[8] A. Andersson, Lineer uzayda hızlı deterministik sıralama ve arama, IEEE Bilgisayar Biliminin Temelleri Sempozyumu, 1996.


Neden aşağı oy?
Suresh Venkat

1
Bu dergi makalesi linkini Üstel ağacı wikipedia sayfasına ekledim . Bilginize: Bu makale, soru sorulduktan sonra yayınlanmış olabilir.
AT

@AT, lütfen cevabınızı biraz genişletip soruyu nasıl cevapladığını açıklar mısınız? Şu anda verdiği tek şey, bazı dergilerdeki bir makalenin bağlantısı.
Kaveh

1
Ben çoktan Han'ın gazetesinden vazgeçtim, bu yüzden bu yardımı sağlayabildiğine sevindim. Bugün buraya döndüğümde hiçbir şey görmeyi beklemiyordum. Teşekkürler! Bu yeni makaleyi okuyacağım ve Han'ın makalesinde ilerleme kaydetmeme yardımcı olup olmadığını göreceğim.
Ari

2
(loglogn)h(h+1)!2(h+1)!h+22(h+2)!2(h+2)!=nh=Ω(logn/loglogn)(loglogn)

1

Cevaptan emin değilim (kağıttan geçmedim) ama bunun yardımcı olması gerektiğini düşünüyorum. Rakamlar tek bir kelimeye paketlenir, böylece tek bir kelimedeki işlemler O (1) zaman alır. Örneğin, her biri k bit h sayısı varsa, kelime büyüklüğü k, h'ye bağlıdır, bu da sırasıyla sayı aralığına bağlıdır. Bu yüzden, sayı aralığını azaltabilen ve birçok sayının tek bir kelimeye sığabileceği aralık azaltma teknikleri kullanıyoruz. Daha sonra uygun bit maskeleri oluşturarak, bir seferde iki kelimeyi dikkate alarak daha kısa olanlardan daha büyük tamsayılar bulabiliriz. Bu O (1) zamanda yapılabilir. (Kesinti: bunun için kelimede depolanan her sayı, kendisiyle ilişkilendirilmiş bir bayrak biti içerir ve sonra iki kelimeyi çıkarırız ... eğer bayrak biti giderse, o zaman daha küçük bir sayıdır).

Benzer şekilde, yukarıdakileri kullanarak, k sayıları içeren herhangi bir kelimeyi O (log k) zamanında (bitonik sıralama) sıralayabiliriz.

Düzenleme: Her bir sayının L = = log (m + k) +2 büyüklüğünü aldığı bir sözcükle paketlenmiş 0 ila m-1 aralığında 2k sayılarını sıralamak için algoritma.

K1

K2

T = log k ila 0 için tekrarlayın.

1. Bölüm - orijinal Z kelimesini iki ve A kelimesi ile ayırınız.

  1. K2K1

  2. 2tL

  3. B = Z- (Z M).

Bölüm 2

  1. K1K1

  2. M = M- (M, L1 yerinden sola kaydırılır).

  3. MIN = (B&M) VEYA (A- (A&M))

  4. MAX = (A&M) VEYA (B- (B&M))

  5. 2tL

  6. Nihayet uygun şekilde, OR ve MAKS.

Krokiyi verdim, umarım gerekli detayları doldurursun.


Ne önerdiğin konusunda net değilim. Varsayım, tamsayıların zaten küçük olduğu ve bunların k'ının zaten tek bir kelimeyle paketlendiği varsayımıdır. Boyutlarını daha da azaltmayı mı öneriyorsunuz? Eğer öyleyse, o zaman ne yaparsınız? Ayrıca, O (log k) zamanında tek bir kelimeye paketlenmiş bir bitonik dizinin nasıl sıralanacağını ya da O (log ^ 2 k) zamanında genel (bitonik olmayan) bir dizinin nasıl sıralanacağını biliyorum. Eğer O (log k) zamanında genel bir sekans sıralayan bir algoritma biliyorsanız, lütfen daha ayrıntılı olarak açıklayabilir misiniz? (Böyle bir algoritma elbette seçim problemini çözer.)
Ari

Daha fazla küçültmek im değil, cevabınızda gerekli olmayan boyutu nasıl küçülteceğinizi önerdim. Karışıklık için özür dilerim.
singhsumit

Yanlış anlamadığım sürece, bitonik sekansları sıralama algoritması gibi görünüyor. Genel dizileri sıralamaz. Örneğin, 3, en soldaki (en önemli) alandaki 3.0,2,0 sırasını sıralar mı?
Ari,

3 0 2 0 ayrılır n A = 3 2 ve B = 0 0 olur, sonra MAX 3 2 olur ve MIN 0 0 olur. Sonra 3 2 0 0 olarak yeni Z oluruz. Herhangi bir genel sekansın boyutu 2 olan bitonik sekans vardır. Her yinelemede bu boyutlar iki katına çıkar ve nihayetinde log zamanı geldiğinde cevabımızı alırız.
singhsumit

Hayır. Sayılar sıkıştırılmaz, yalnızca aşağı kaydırılır. İlk yinelemede, konumlarının yüksek bitinde farklı sayı çiftlerini böldük, böylece A = 0 3 0 2 ve B = 0 0 0 0, yani MIN = 0 0 0 0, MAX = 0 3 0 2 ve Z = 3 0 2 0. İkinci yinelemede çiftleri konumlarının düşük bitine göre değiştiririz, bu yüzden tekrar A = 0 3 0 2, B = 0 0 0 0 olur ve Z yine değişmeden kalır.
Ari
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.