Pratikte sezgisel olarak çözülebilen sorunlar?


21

Son zamanlarda, hesaplama karmaşıklığı kavramını, algoritmalar veya karmaşıklık konusunda daha önce hiç resmi bir ders almayan genç yetenekli, kendi kendini eğiten bir programcıya gayrı resmi olarak açıklamanın acı dolu eğlenceli deneyiminden geçtim . Şaşırtıcı olmayan bir şekilde, birçok fikir ilk başta garip görünüyordu, ancak bazı örnekler (PTIME, kararsızlık, hesaplanamazlık) ile mantıklı geldi, bazıları ise daha doğal hale geldi (azaltmalar, zaman ve kaynaklar olarak problemler, asimptotik analizler gibi) . O SAT'ı yanlışlıkla kabul edene kadar her şey mükemmeldi.pratikte etkili bir şekilde çözülebilir * ve aynen böyle, onları kaybettim. Teori için ne kadar ikna edici bir şekilde tartışmaya çalıştığımın önemi yoktu, çocuk onun umrunda olmaması gereken bütün yapay bok matematiği olduğuna ikna oldu . İyi...

¯ \ _ (ツ) _ / ¯

Hayır, kalbim kırılmadı ya da ne düşündüğünü umursamadım, bu sorunun amacı bu değil. Konuşmamız farklı bir soru düşünmemi sağladı.

Teorik olarak inatçı olan (süperpinonsiyel zaman karmaşıklığı) fakat pratik olarak çözülebilir (sezgisel, yaklaşımlar, SAT çözücüler vb.) Problemler hakkında ne kadar bilgim var?

Fark ettim, pek değil. Muazzam örnekleri verimli bir şekilde çözen bazı çok etkili SAT-çözücüleri olduğunu biliyorum, Simplex pratikte harika çalışıyor ve belki birkaç problem veya algoritma daha var. Daha eksiksiz bir resim çizmeme yardım eder misin? Hangi iyi bilinen problemler ve hatta problem sınıfları bu kategoridedir?

TL; DR: Uygulamada sezgisel olarak çözülebilen problemler nelerdir ? Daha fazla okumak için (güncellenmiş) bir kaynak var mı? Onlar için bir karakterizasyonumuz var mı? Ve nihayet, genel bir tartışma sorusu olarak, değil mi?

EDIT # 1: Böyle bir karakterizasyon hakkındaki son tartışma soruma cevap vermeye çalışırken , Daniel Spielman ve Shang-Hua Teng tarafından [1] 'de sürekli olarak en kötü durum arasında araya giren bir kavram olan algoritmaların düzgünleştirilmiş analizine girdim. algoritmaların ortalama-durum analizleri. Yukarıda tartışılan karakterizasyon tam olarak değil, aynı kavramı ele geçiriyor ve ilginç buldum.

[1] Spielman, Daniel A. ve Shang-Hua Teng. "Algoritmaların düzgünleştirilmiş analizi: Simpleks algoritmasının neden genellikle polinom zaman aldığı". ACM Dergisi (JACM) 51, no. 3 (2004): 385-463 sayılı belge.


6
Uygulamada SAT'ın verimli bir şekilde çözülebileceğini belirterek ne demek istediniz? Arkadaşın neden internette güvenliğe güveniyor? Muhtemelen pratikte zor bir problem yok mu? Dayanıklılık, çoklu zaman / verimli çözülebilirliğin temel avantajlarından biridir.
Chandra Chekuri

6
Grafik izomorfizmi doğal bir adaydır.
DW

2
Hey, @ChandraChekuri, demek istediğim, SAT-çözücülerinin SAT örneklerine milyonlarca değişken ve cümle ile cevap verebilmeleriydi. Ya da en azından durumun böyle olduğunu düşündüm. "İnternette güvenlik" hakkında ne demek istediğinizi anladığımdan emin değilim? Formalizme karşı tartışmıyorum, teoriye aykırı olan sorunlarla ilgileniyorum, ancak tüm pratik amaçlar için (belki de iyi bir yaklaşım nedeniyle, belki de gerçek dünya örneklerinin özel yapısı nedeniyle) dikkate alınmaktadır " uysal".
Konstantinos Koiliaris

1
@KonstantinosKoiliaris Bence asıl nokta, her türlü kriptografik protokolün güvenliğinin (genellikle daha güçlü bir şey olmasına) dayandığı ve bu nedenle SAT-çözücüler için son derece zor olan rutin uygulamalardan bol miktarda örnek verdiğini düşünüyorum. ya da yine de çok umut ediyoruz). PNP
Emil Jeřábek,

2
Bu damarda, Genel karmaşıklığı kontrol etmek iyi olabilir. Aslında, durma sorununun neredeyse her zaman polinom zamanında çözülebilir olduğu, örneğin SAT olduğu gibi (aslında SAT daha güçlü bir garantiye sahiptir). “Neredeyse her zaman” ile kastedilen, sorunun, algoritmanın durduğu girdilerin oranı (ve tabii ki doğru cevabı çıkaran), girişin uzunluğu arttıkça 1'e çıkacak şekilde bir algoritma kabul etmesidir.
Guillermo Angeris

Yanıtlar:


17
  • Yüksek yapılandırılmış SAT örnekleri (milyonlarca değişkende bile) uygulamada sıklıkla çözülebilir. Bununla birlikte, birkaç yüz değişkenle bile tatmin edilebilirlik eşiğine yakın rasgele SAT örnekleri hala açıktır (yani, pratikte bile, eğer böyle bir şey üretirseniz, evrenin ömrü boyunca asla bilemeyeceğiniz bir şey üretilip üretilemeyeceğini geçerli SAT çözücüler kullanarak). Bu ilgili soru ve cevapları ilginizi çekebilir .

  • Clique bulucuları "pratikte" de şok edici derecede iyi.

  • Tamsayılı programlama ve karışık tamsayılı doğrusal programlama (bazı rasyonel ve bazı tamsayılı değişkenlerle) tüm Yöneylem Araştırması bölümlerinin odak noktasıdır ve çoğu zaman (ancak her zaman değil) pratikte çözülebilir

  • PSPACEPSPACE

  • EXPSPACE

  • DW'nin yorumlarında da belirtildiği gibi, Grafik İzomorfizmi pratikte hemen hemen çözülebilir. Nauty, mutluluk, saucy, vb. Gibi modern GI yazılımlarını kullanmak çok zordur.


Teşekkürler Joshua, sana önerdiğim en ilginç / en geniş problem için sana veriyorum.
Konstantinos Koiliaris

1
Clique bulucu pratikte her zaman iyi değildir. Gerçekten grafiğe bağlı. Ve bağlantınız sadece rastgele grafiklerden bahsediyor gibi görünüyor.
Peter Shor

GI hakkında biraz genişleme: AFAIK, bahsi geçenler gibi en gelişmiş GI çözücüleri (neredeyse tüm grafikler için kuasiliner bir GI testi olarak çalışan renk iyileştirmedir), optimize edilmiş bir kişiselleştirme-iyileştirme yaklaşımı kullanır. Ancak Neuen ve Schweitzer kısa süre önce bu yöntem için üssel düşük sınırlar göstermiş ve (pratik olarak) zorlu durumlar oluşturmuştur.
Su kristalli

1
@JoshuaGrochow: Evet, bu konuda size katılıyorum. Sadece OP'nin, üstel düşük sınırlar biliniyor ve burada aynı duruma sahip olsak da pratikte çok iyi performans gösterdiğinden bahsettiği gibi, sorunun “karşı sezgisel” kısmını genişletmek istedim.
Su kristalli

1
Ben sadece Keller'ın varsayımını deneyimledim , (şüphesiz ki) grafikler birçok klik bulma algoritmasını kullandı.
Peter Shor

14

Hindley'nin-Milner tür sistemi fonksiyonel programlama dilleri (Haskell, SML, OCaml) kullanılır. Tip-çıkarım algoritması pratikte neredeyse doğrusaldır ve şaşırtıcı derecede iyi çalışır, ancak DEXPTIME'ın tamamlandığı bilinmektedir!

Genel bir yorum: En kötü zaman karmaşıklığının mutlaka bir algoritmadaki pratik performansın çok iyi bir ölçüsü olmaması şaşırtıcı değildir. Bununla birlikte, teoriyle pratik arasındaki farkın karmaşıklığı teorisinin yararsız kıldığını söylemek, doğal sayıların israf olduğunu söylemek gibi bir şey çünkü sadece mevcut tüm sayıların küçük bir miktarını kullanıyoruz. Ünlü bir filozof bir keresinde "Teori olmadan deneyim kördür, ancak deneyim olmadan teori sadece entelektüel bir oyundur" demiştir.


FPL

6

Çoğunlukla programlama dillerinden örnekler:

  1. k-CFA (k-Kontrol Akışı Analizi) EXPTIME tamamlandı (Van Horn ve Mairson 2008), ancak MLton gibi tüm program optimizasyon derleyicileri yine de gerçekleştirdi. Derleme süreleri uzundur, ancak nadiren felakettir.
  2. Çözme (dinamik) aşırı yüklemesi genellikle NP tamamlandı (Palsberg 2012). Ama o zaman gerçek dünyada nadiren bir sorun olur.
  3. k
  4. SMT çözme genellikle NP tamamlayıcıdır, ancak ticari SMT çözücüler (Z3 ve CVC4 gibi) genellikle oldukça iyi performans gösterir. Doğrudan SMT çözücülerle çalışmıyorum, ancak Liquid Haskell ve Dafny'den dolaylı olarak Z3 kullandım ve kontrol süreleri iyi görünüyor.
  5. Presburger aritmetiği için karar sorunu gerçekten karmaşıktır (Fischer ve Rabin 1974), ancak Bill Pugh'un karar algoritması olan Omega testi (Pugh 1991) genellikle düşük dereceli polinom süresi içinde çalışır.

Onn


Referanslar:

[1] David Van Horn ve Harry G. Mairson. 2008. EXPIME için kCFA'nın karara bağlanması tamamlandı. In 13 Fonksiyonel Programlama ACM SIGPLAN Uluslararası Konferansı Tutanakları (ICFP '08). ACM, New York, NY, ABD, 275-282.

[2] http://web.cs.ucla.edu/~palsberg/paper/dedicated-to-kozen12.pdf

[3] MJ Fischer ve MO Rabin. 1974. KARARLAYICI ARİTMETİK ÜZERİNE SÜPER-İSTEĞEL KOMPLEKSİTE. Teknik rapor. Massachusetts Teknoloji Enstitüsü, Cambridge, MA, ABD.

[4] William Pugh. 1991. Omega testi: bağımlılık analizi için hızlı ve pratik bir tam sayı programlama algoritması. In Supercomputing 1991 ACM / IEEE Konferansı Tutanakları (Supercomputing '91). ACM, New York, NY, ABD, 4-13.


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.