Herhangi bir pratik girdi için çalışma zamanının düşük sıralı bir terimin baskın olduğu algoritma örneği?


10

Big-O notasyonu sabit faktörleri gizler, bu nedenle terimindeki katsayı çok büyük olduğu için makul herhangi bir giriş boyutu için mümkün olmayan bazı algoritmaları vardır .nO(n)n

Çalışma zamanı ancak makul giriş boyutları için çalışma zamanına tamamen hakim olacak kadar büyük olan bazı düşük dereceli o (f (n)) terimi olan bilinen herhangi bir algoritma var mı? Bunun gibi bir algoritmayı algoritma kursunda bir örnek olarak kullanmak istiyorum, çünkü big-O gösteriminin neden hiç olmadığı için iyi bir neden veriyor.o ( f ( n ) )O(f(n))o(f(n))

Teşekkürler!


Önce büyük bir tablo oluşturan ve daha sonra her girdi öğesi için tabloda hızlı aramalar yapan algoritmalar? Tablo yeterince büyükse, öğelerin sayısının, tablo oluşturma maliyetini telafi etmek için muazzam olması gerekir. Arama motorları, n sorgu sayısı ise bir örnektir .
András Salamon

Doğrusal programlamanın böyle olduğunu duydum. Simplex üsteldir ancak pratikte polinom algoritmalarından daha hızlıdır.
jmite

1
İhtiyaçlarınıza uygun herhangi bir algoritma bilmiyorum, ancak en doğrusal çalışma süresine sahip bir şey ararım, çünkü bunun ötesinde, daha küçük terimler en makul girdiler için lider terime hükmedebilir. Ama büyük veri sıralamak için kullanıldığında belki de k-yönlü birleştirme ihtiyaçlarınızı karşılar mı? Buradaki sorun, ikincil bellek erişimini en aza indirmektir, çünkü bunlar çok fazla zaman harcamaktadır - ancak bunun göstermek istediğiniz şey için uygun bir örnek olacağından emin değilim ve gerçekten de bunun için yeterince basit olduğunu düşünmüyorum. açıklayıcı olun.
G. Bach

Yanıtlar:


2

Eğer yozlaşmışsa kriptografi bir örnektir. Örneğin, AES şifrelemesini kırmak - tek yapmanız gereken , anahtar boyutuna bağlı olarak veya veya arasında sınırlı bir sayı arasında doğru anahtarı bulmaktır ( anahtarı açık bir şekilde belirleyecek düz metnin yeterince bilindiğini varsayalım). Bununla birlikte, işlem bile bugün tüm bilgisayarları (her biri bir sceond başına yaklaşık bir milyar işlem yapan milyar veya daha fazla) evrenin ömründen (yaklaşık milyar milyar saniye) daha fazla alacaktır.2 128 2 192 2 256 2 128O(1)2128219222562128


Büyük O'nun neden her şey olmadığını göstermenin biraz farklı bir yolu, bazen küçük giriş boyutları için bazen farklı bir algoritma kullandığımızı belirtmektir. Örneğin, hızlı sıralama yapın. Doğru pivot seçimiyle (bu zor bir iştir!), . Quicksort bölme ve fethetme ile çalışır: her örnek çok sayıda küçük dizi yapmayı içerir. Küçük diziler için, ekleme sıralaması gibi ikinci dereceden yöntemler daha iyi performans gösterir. Bu nedenle, en iyi performans için, büyük bir dizinin hızlı sıralaması, küçük boyutlar için çok sayıda ekleme türü içerir.O(nlgn)


Şifrelemeyi kırmanın burada makul bir örnek olduğunu düşünmüyorum; bir şey, asemptotik olarak doğru anahtarı bulma problemini analiz etmek için, Rijndael'in teorik olarak mevcut sürümlerini sabit olmayan anahtar boyutuna, yani boyutundaki anahtarların anahtarını kırmaya çalışmamız gerektiğidir . Aksi takdirde, sonlanan herhangi bir algoritmanın sabit boyutlu girdi için performans gösterdiğini söyleyebiliriz . O ( 1 )nO(1)
G. Bach

@ G.Bach Bu örneğin amacı, sabit zaman (şifre metninin boyutu açısından) olmasına rağmen (hangi karmaşıklık teorisinin yüksek karmaşıklıkla ilişkilendirildiği) mümkün değildir.
Gilles 'SO- kötülüğü bırak'

2
İlk örneğinizin işe yaradığını düşünmüyorum. Kontrol etmek için sadece son derece çok seçenek olduğundan, algoritmanın çalışma zamanı olduğundan, tam çalışma zamanını açıklayan düşük dereceli bir terimi yoktur. o ( 1 )O(1)o(1)
templatetypedef

1
@templatetypedef AES şifreli bir iletinin şifrelemesinin kırılması, iletinin uzunluğu açısından . O(1)
Gilles 'SO- kötü olmayı kes

1

Parametreli karmaşıklık ve FPT algoritmaları alanında iki örnek akla gelmektedir . Bu tam olarak aradığınız şey olmayabilir, ama işte gidiyor.

3-RENKLEME veya HAM-ÇEVRİMİ gibi bir grafik problemi düşünün. Her iki problem de monadik ikinci dereceden mantık olarak ifade edilebilir ve bu nedenle sınırlı trewthth ile grafiklerin doğrusal zamanlarında karar verilebilir. Bu Bruno Courcelle'ın bir sonucudur , ancak ortaya çıkan algoritma pratik olmaktan uzaktır.

Diğer örnek, sabit sayıda değişkenli tamsayı doğrusal programların (ILP) doğrusal zamanda çözülebileceğini söyleyen Lenstra'nın derin bir sonucudur. Ravi Kannan tarafından yapılan ek çalışma ile, tamsayı programlama fizibilite probleminin aritmetik işlemleriyle bit tamsayıları boyutunda çözülebileceği , , ILP değişkenlerinin sayısı ve , girişteki bitlerin sayısıdır. Bu yine, sadece çok küçük örnekler için pratik olan FPT algoritmalarına yol açar.O ( s 2 s L ) p LO(p9p/2)LO(p2pL)pL


2
Courcelle teoremi, terimindeki büyük sabit nedeniyle, bazı terimlerin "küçük" girdilere hakim olduğu için pratik değildir . (Sabit, birinci dereceden formülde iç içe negatiflerin sayısına ve nicelik değiştirici sayısına bağlı olarak yüksekliği iki olan bir kule olarak büyür.)o ( n )O(n)o(n)
David Richerby

0

sorunuzla ilgili olarak, teorik olarak iyi bir performansa sahip olduğu bilinen ancak daha küçük örneklerde pratik olmama nedeniyle gerçek problemlerde kullanılmayan algoritmalar vardır. başka bir deyişle, talep ettiğiniz gibi, "reklamı yapılan performans" yalnızca pratik uygulamalarda görülmeyen teoride büyük girdiler için mümkündür. bu bazen Big-Oh tahminlerine yansır, bazen de tam olarak değil. bazı algoritmalar iyi teorik "performansa" sahiptir, ancak çok mantıklı bir şekilde karmaşıktır ve hiç kimse tarafından uygulanmamıştır ve bu nedenle pratik örnek boyutlarındaki "performans", örneğin Maksimum Akış probleminde olduğu gibi bile bilinmemektedir .


Peki, düşük-sıralı terimler hakim olduğu veya yüksek-sıralı terimlerdeki sabitler kötü olduğu için bunlar pratik değil mi?
David Richerby

ya da bir kombinasyon halinde, her durumda izole edilmesi zor olacaktır. etkili / pratik olarak aynı etki.
vzn

-1

Bu bir şaka ama ciddi bir tarafı var ...

O(nlogn)O(n2)


1
Hayır, bu farklı. Quicksort pratikte kullanışlıdır, çünkü boyut ne kadar büyük olursa olsun tipik girdi için ikinci dereceden bir terim yoktur. Pivot seçimi bir veri düzeni için kötü ise, hızlı sıralama küçük girdi için bile ikinci dereceden davranış gösterir.
Gilles 'SO- kötü olmayı bırak'
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.