Algoritmaların Karmaşıklığında Gizli Sabitler


9

Birçok problem için, en iyi asimtotik karmaşıklığa sahip algoritmanın, büyük O gösterimi ile gizlenen çok büyük bir sabit faktörü vardır. Bu, matris çarpımı, tamsayı çarpımı (özellikle, Harvey ve van der Hoeven'in son O (n log n) tamsayısı çarpma algoritması, düşük derinlikli sıralama ağları ve grafik küçükleri bulma, birkaç yapmak için oluşur. Bu tür algoritmalara bazen Galaktik algoritmalar denir.

Genel sıralama ve tamsayı ekleme gibi diğer algoritmalar için algoritmaların en uygun asimptotik karmaşıklık ve küçük sabit faktörlerle bilindiğini unutmayın.

Eski algoritmaları ikinci algoritmalardan teorik bir perspektiften ayırmak için hangi araştırmalar yapılmıştır?

Gizli sabitlerin genellikle farklı hesaplama modelleri arasındaki ayrımı gizlememesinin farkındayım. Bununla birlikte, çok çeşitli farklı modeller altında, bu Galaktik algoritmaların, örneğin bir milyar büyüklüğündeki girdiler için asimptotik olarak daha kötü algoritmalardan daha yavaş olacağından eminim. Bazı durumlarda ayrım ince değildir. Titiz mi yapıldı?

Örneğin, çok basit bir ISA'ya sahip bir von Neumann makinesi gibi çok basit bir hesaplama modeli icat edebilir ve daha sonra algoritmaları uygulayabilir ve çalışma sürelerini açık sabitlerle bağlayabilir. Bu çeşitli algoritmalar için yapıldı mı?


1
Hızlı tamsayı çarpma algoritmaları galaktik değildir. Aslında pratikte yaygın olarak kullanılırlar.
Emil Jeřábek

2
@ EmilJeřábek Belki OP David Harvey ve Joris van der Hoeven'in son atılımı hakkında konuşuyor, " O(nlogn)galaktik olduğu zaman", (bu örnek için Lipton'ın blogun bu girişin bakın: rjlipton.wordpress.com/2019/03/29/... )
Lamine

1
Yazarlar kendilerini yazdıkça (ve Lipton'un blogunda belirtildiği gibi), basitlik makalesi sabitleri optimize etmeye çalışmaz, ancak muhtemelen pratik hale getirilebilir.
Emil Jeřábek

@ EmilJeřábek Bu makale gerçekten bahsettiğim gazeteydi. Makale, yapılabilecek iyileştirmeleri açıklamaktadır, ancak olduğu gibi algoritmanın, ne kadar küçük günlük günlüğü n pratik girdiler içindir.
isaacg

4
@ EmilJeřábek Özellikle, kağıtta sunulan algoritma, sayıdan daha az olduğunda temel bir durum için daha basit bir algoritmayı tanımlar. 2d12 şu anda aldıkları bitler d=1729. Açıkladıkları optimizasyonlar,d=9 onun yerine, ama 2912bitler hala evrendeki parçacık sayısını aşıyor, bu yüzden pratiklik hala söz konusu değil. Makalelerinin 5.4 bölümüne bakınız.
isaacg

Yanıtlar:


2

Belirli bir algoritma sınıfı ve kombinatoryal problemler için ilginç bir şekilde ele alındığı bir yer analitik kombinatoriktir . Açıklanan ana yaklaşım, önerdiğinize benzer: bir algoritmanın somut bir uygulamasına başlarsınız ve belirli bir girdinin yürütülmesi için açıkça sayılabilir bir karmaşıklığı ilişkilendirmek için kullanacağınız bazı tekrarlanan işlemleri (genellikle en ağır olanı) tanımlarsınız boyutN sayı şeklinde CN seçilen işlemin gerçekleştirilmesi.

Metodoloji, elbette faydalı olabilmesine rağmen, belirli bir hesaplama modelini düzeltmeyi gerektirmez. Ayrıca, en kötü durum davranışını veya beklenen davranışı veya başka bir şeyi hesaplamaya çalışabileceğinizi unutmayın.

Bu metodolojideki en önemli bileşen, bu değerlerin üreten fonksiyonlarının analizidir. Bazen karmaşık analiz yöntemlerini kullanarak çok kesin asimtotik yaklaşımlar elde edebilirsiniz.

Kitapta ele alınan basit bir örnek hızlı sıralamadır. Bu ikinci dereceden en kötü durum çalışma süresine sahiptir, ancak pratikte çoğuO(nlogn)algoritmaları. Quicksort'un beklenen maliyetinin kesin bir analizini yaparken ve bunu birleştirme ile karşılaştırdığınızda, doğru hatırlarsam, ikincisinin yaklaşık 10 boyuttan daha iyi performans göstermesinin beklendiğini görürsünüz. Bu tür şeyleri hesaplayabilmek için elbette gizli sabitleri göz ardı edemezsiniz.

Aslında, quicksort'da bir listeyi alt listeleri özyinelemeli olarak sıralayarak sıralarsınız, böylece 10'dan küçük listelerde birleştirme kullanırsanız tüm boyutlar için bir iyileşme elde edersiniz. jenerik sıralama algoritması, 10 boyuta inene kadar hızlı sıralama olarak uygulanır ve daha sonra birleştirme kullanılır. Kod yorumlarında performans testlerinin bu değerin optimal olduğunu gösterdiği belirtilmektedir.

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.