Transdikotomoz modelde O (n) 'de tamsayı sıralama mümkün müdür?


9

Bildiğim kadarıyla aşağıdaki sorunu çözen bir en kötü durum algoritması yoktur:Ö(n)

Sonlu tamsayılardan oluşan bir uzunluk dizisi göz önüne alındığında , her elemanın halefinden küçük veya ona eşit olduğu permütasyonu bulun.n

Ancak, sınıraşan hesaplama modelinde var olmadığına dair bir kanıt var mı?


Tamsayıların aralığını sınırlamadığımı unutmayın. Çözümleri de karşılaştırma türleriyle sınırlamıyorum.


Bildiğim kadarıyla SAT için zaman algoritması olabilir! Dolayısıyla cevap hayır. Ö(n)
Lembik

5
AFAIK, bu hala açık bir problem.
Juho

2
Bilgisayarınızı karşılaştırma ve takaslarla sınırlandırmamanız koşuluyla, hangi hesaplama modelini kullandığınızı belirleyene kadar anlamlı bir yanıt olup olmadığını bilmiyorum. Sadece RAM ve iki sayı karşılaştırmalarıyla, entropiden bir argümanΩ(nlog(n))Transdikotomatik bilgisayarlar için bile zaman sınırlaması. Önemsiz olarak, takaslar ve karşılaştırmalar yerine, sıralama temel bir işlemse,Θ(1). Doğru yere bir tam sayı eklemek temel bir işlemse,Θ(n). Aklınızda belirli bir karşılaştırma-takas modeli var mı?
Lieuwe Vinkhuijzen

2
@LieuweVinkhuijzen Sorum, transdikotomatik hesaplama modelini belirtir. Düz İngilizce: Makinenin kelime boyutunun, sorunun herhangi bir tamsayısını tutacak kadar büyük olduğu bir hesaplama modeli. Yani herhangi iki tamsayıyı karşılaştırmak O (1) 'dir, ama onları eklemek, çoğaltmak vb. Bu hesaplama modelinde entropik sınır çoktan dövülmüştür, bakınız Han, Yijie (2004), "O (n log log n) zamanı ve doğrusal uzayda deterministik sıralama" .
orlp

@ orlp Anlıyorum; tamsayıların yapısından faydalanırsanız, entropik sınırı yenebilirsiniz. Tamsayı sıralamayı bilmiyordum; Bu konuyu mutlaka okuyacağım!
Lieuwe Vinkhuijzen

Yanıtlar:


4

Tamsayılar dengeli bir şekilde sıralanabilir Ö(n) ile zaman Ö(1)ek alan. Daha doğrusu, eğer varsan aralıktaki tamsayılar [1,nc], O (n) zamanında sıralanabilir.

Bu sadece birkaç yıl önce geç Mihai Pătrașcu'nun da dahil olduğu bir ekip tarafından gösterildi (ki bu, işine aşina olmayan kimseyi şaşırtmalı). Daha fazla insanın bilmediği şaşırtıcı bir sonuç, çünkü tamsayıları sıralama probleminin (teorik olarak) çözüldüğü anlamına geliyor.

Anahtarları değiştirmenize izin verilirse pratik bir algoritma (yukarıdaki kağıtta verilmiştir) vardır. Temel olarak, sıralı tam sayıları sıralanmamış tam sayıları sıkıştırabildiğinizden daha fazla sıkıştırabilirsiniz ve kazandığınız ekstra alan, sayı tabanı sıralaması için gereken fazladan belleğe tam olarak eşittir. Ayrıca salt okunur anahtarları destekleyen pratik olmayan bir algoritma sağlarlar.


1
Soyuttan anlayabildiğim kadarıyla bu genel değil - sadece kelimeleri sıralayabilir logn boyut olarak O(n). Sorum açıkça sınırsız tamsayılardan bahsediyor.
orlp

@orlp Makaledeki üçüncü algoritma sınırsız uzunluklu tamsayılardan bahsediyor.
Takma isim

1
Belki yanlış okuyorum, ama sadece sınırsız tamsayı sıralama algoritmalarının bellek kullanımını azaltmak için bir yöntem açıklaması görebilirsiniz . Özetden alıntı (benimki vurgu): "Bir başka ilginç soru, keyfi durumc. Burada, herhangi bir RAM sıralama algoritmasından sadece O (1) ekstra alan kullanan ve aynı çalışma süresine sahip bir sıralama algoritmasına bir kara kutu dönüşümü
sunuyoruz

3
Affet beni, ama şu anki durumunda bu cevap soruya hiç cevap vermiyor . Tamsayıların sınırlı olmadığını açıkça söyledim . Bu cevap tamamen farklı bir sorunu çözüyor.
orlp

1
Son nokta artık küçük bir yazı tipinde değil :)
orlp

-1

Tamsayılar için Radix sıralamasını kullanabilirsiniz . Kovalar oluşturur ve ardından bir sayı listesi sıralar.Ö(bn) nerede b herhangi bir tamsayının bit cinsinden boyut üzerinde bir üst sınırdır ve n sıralanacak öğelerin sayısı.

Tamsayılarınızın boyutunda üst sınır yoksa, o zaman bilinen herhangi bir doğrusal zaman sıralama algoritması olduğuna inanmıyorum.


5
Hoşgeldiniz! Söylediklerin tamamen doğru ama soruyu cevapladığını sanmıyorum. Soru, belirli bir hesaplama modelinde gerekli algoritmanın bulunmadığına dair bir kanıt ister; sadece böyle bir algoritmanın bilinmediğini söylemek hiçbirinin mevcut olmadığını kanıtlamaz.
David Richerby

Aslında, b sorunumuzda bir sabit olarak, bu algoritmanın o (n) 'de olduğunu düşünüyorum
RFC 2549

2
Soru hakkında hiçbir şey söylemiyor bsabit olmak. Sadece sahip olduğumuzu söylüyornsayılar. Bu rakamlar keyfi olarak büyük olabilir. (Ayrıca, muhtemelen yorumunuzda sadece bir yazım hatasıdır, ancakÖ(n) ve Ö(n)çok farklı iki şey.)
David Richerby

Evet, kesinlikle bir yazım hatası;) sorusunda, b uzunluğunda bir kelimeye uyan bir sayı varsayalım, bu bir sabit olur.
RFC 2549

1
Bu kelime uzunluğunu sabit kılmaz. . (Aksi halde, açıkça "tek kelimelere operasyonlar operasyon başına sabit zaman aldığını" varsaymak için hiçbir neden olmazdı
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.