Bu arada Simplex Algoritması dışında uygulamada çok iyi çalışan diğer kötü çalışma süreleri üstel olan başka bir algoritma var mı?


9

Eğer çalışma süresi en kötü durumda polinomsa, genellikle bir algoritmaya "iyi algoritma" diyoruz. Ancak bazı durumlarda (örneğin Simplex algoritması), algoritmanın en kötü durumu üstel olsa da, pratikte çok iyi çalışabilir.

Bu duruma Simplex algoritması dışında (deterministik) örnekler var mı?


1
İlgili bir soru ilginizi çekebilir: cstheory.stackexchange.com/questions/305/…
Radu GRIGDaha

Yanıtlar:


13

Modern SAT çözme algoritmaları , en kötü durum çalışma süresi elbette üstel olsa da çoğu örneği oldukça hızlı bir şekilde çözebilir. Bununla birlikte, bu durumda, pratik hız, tek bir zarif algoritmadan ziyade, yıllarca algoritma mühendisliğinin bir sonucudur. Çatışma güdümlü madde öğreniminin SAT çözücülerinin performansında büyük bir sıçramaya neden olduğunu anlasam da, daha sonraki gelişmeler genellikle algoritmalarda çeşitli sezgisel yöntemlerin akıllıca kullanılmasıyla elde edildi.


13

k-Kümeleme için algoritma düzlemde bile muhtemelen üsteldir, ancak pratikte çok iyi çalışır.


13

Hindley-Milner türü çıkarım EXPTIME-tamamlandı, ancak insanlar genellikle yazdıkları programlarda doğrusalya oldukça yakın.


1
Bu biraz farklı değil mi? Hatırladığım şey, Hindley-Milner'in kötü performans göstermesi için gerekli bir koşulu karakterize edebilmemizdir (derinden iç içe geçmiş izin verir) ve bu yüzden HM'nin pratikte iyi olmasının nedeni, bu iç içe geçirmenin pratikte oldukça düşük olması (genellikle gittikçe daha fazla girintili olmamızdır) ekranın en sağ kenarına doğru ilerlerken sinirlenmeye ve gerginleşmeye ...) Kabul ettim, bu iddiayı daha önce bellekten yaptım ve en son bunun için referansı geri getiremedim.
Rob Simmons

2
Hayır, bu gerekli bir koşul değil. Dizideki her ek girişle birlikte çıkarım tipinin boyutunu kareler olacak şekilde bir dizi izinli bağlama (iç içe geçme olmadan!) Verebilirsiniz. Örnek için cstheory.stackexchange.com/questions/2428/… adresine bakın .
Neel Krishnaswami

Örnek SML'de, ve OCaml'ın bir şeyler yapma yöntemine daha aşinayım, ancak bu bağlanma dizisi "izin ver" olsaydı , iç içe geçeceklerini düşünüyorum . Sadece küresel işlevleri tanımladıkları için değiller, ancak burada devam eden örtük bir yuvalama vardır: Belirli bir tanım, üstündeki tüm tanımlara erişebilir ve aşağıdaki tanımların hiçbirine erişemez.
amnn

1
@amnn: Bahsedilen yuvalama iç içe geçmişti, formun bağlanmasına izin verir - yani, let z = (let y = e in e') in e''aksine let y = e in let z = e' in e''.
Neel Krishnaswami

9

Brendan McKay'ın nauty ( Otoomorfizm Yok, Evet?) Programı, grafiklerin kanonik etiketleme problemini çözüyor (aynı zamanda Grafik İzomorfizmi ve Grafik Otomorfizm problemlerini çözüyor) ve üstel en kötü durum performansına sahip (Miyazaki, 1996). Bununla birlikte, çoğu grafik, özellikle de birkaç otomorfizması olanlar için çok hızlı çalışır.

Özellikle, algoritma köşeleri dereceye, sonra her parça arasındaki dereceye bölerek başlar. Bu işlem dengelendiğinde, önemsiz olmayan bir bölümdeki bir tepe noktasını ayırt etmek için bir seçim yapılmalıdır ve bu üstel davranışa yol açar. Çoğu grafikte, bu dallanma prosedürünün derinliği azdır.


Nauty'un da arıtmaya yardımcı olmak için bazı rasgelelik kullandığını düşündüm? Bu durumda, simpleks algoritmasına çok benzer olabilir (açık bir şekilde grafik izomorfizmi için düzgünleştirilmiş bir analiz kavramı olmamasına rağmen).
Joshua Grochow

1
Tutarlılık kullanmaz, çünkü tutarlı bir kanonik etiketleme yapması gerekir. Ancak, köşeleri bölümlere ayırmaya yardımcı olmak için özel olarak oluşturulmuş bir tepe-değişmez prosedürü kullanabilir. Bazen bu değişmez, nasıl üretildiğini rastgele gösterir (sıklıkla, mesafe derecesi dizileri üzerinde karmaşık bir işlevdir), ancak bu sadece çarpışmaları azaltmak içindir.
Derrick Stolee

1
Bu tepe-değişmez, simpleks algoritmasının döngü karşıtı kurallarıyla karşılaştırılabilir.
Derrick Stolee

4

Basit stokastik oyunlar için çeşitli algoritmalar , üstel en kötü durum çalışma sürelerine sahip olmalarına rağmen uygulamada iyi çalışır. Tabii ki, bu problem bir anlamda doğrusal programlama ile ilgilidir, ancak polinom zamanında olduğu bilinmemektedir.


1

LP'ler için simpleks algoritmasına benzeyen karışık Nash dengeleri bulmak için bir algoritma vardır. (Adı unuttum.) Üstel en kötü durum karmaşıklığına sahip, ancak pratikte genellikle iyi davrandığı belirsiz bir anım var.


Şunu mu demek istediniz: Lemke-Howson algoritması?
Rahul Savani

1

Kutu paketleme (birçok varyant), karmaşıklığı NP-sert olduğu bilinen bir sorundur:

http://en.wikipedia.org/wiki/Bin_packing_problem

Bununla birlikte, "pratik" versiyonlara uygulandığında birçok buluşsal yöntem çok iyi sonuç verir. İlk buluşma gibi bu buluşsal yöntemlerden bazılarını paketleyen 1 boyutlu kutu için; ilk uyum azalması; en uygun; en uygun düşüş, öğrencilere gösterilecek konular olarak çok caziptir. Öğrenciler genellikle kendileri için bazı temel buluşsal yöntemler keşfedebilirler.


Problem NP-tamamlanmış olsa bile, basit algoritmalar onunla başa çıkabiliyorsa, özellikle yaklaşım algoritmalarıyla ilgili birçok örnek vardır. Ama aslında üstel zaman algoritmaları arıyorum, örneğin basit algoritmalar ile çözülmesi kolay zor bir sorun ile ilgilidir. Belki de Bin paketini (veya başka bir problemi) tam olarak çözmek için üstel bir zaman algoritması vardır; ve pratikte polinom zaman alır.
Arman

0

Kalıcılık algoritması (Edelsbrunner-Letscher-Zomorodian'dan orijin, o zamandan beri birçok varyasyon ile) en kötü durum kübiktir, ancak deneylerden genellikle doğrusal zamanda çalıştığı görülmektedir.

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.