Probleme, die in der Praxis nicht intuitiv lösbar sind?


21

Vor kurzem habe ich die schmerzhafte lustige Erfahrung gemacht, einem jungen talentierten Autodidakten, der noch nie einen formalen Kurs in Algorithmen oder Komplexität belegt hat, informell das Konzept der Computerkomplexität zu erklären. Es überrascht nicht, dass viele Begriffe zunächst seltsam wirkten, aber mit einigen Beispielen (PTIME, Unlösbarkeit, Unberechenbarkeit) Sinn machten , während andere natürlicher zu sein scheinen (Problemklassifizierung über Reduktionen, Zeit und Raum als Ressourcen, asymptotische Analyse) . Alles lief großartig, bis ich versehentlich zugab, dass SATkann effizient gelöst werden * in der Praxis ... Und einfach so habe ich sie verloren. Es war egal, wie überzeugend ich versuchte, für die Theorie zu argumentieren, der Junge war überzeugt, dass es alles künstliche Mistmathematik war , für die er sich nicht interessieren sollte. Gut...

¯ \ _ (ツ) _ / ¯

Nein, mir war weder das Herz gebrochen, noch interessierte es mich wirklich, was er dachte, das ist nicht der Punkt dieser Frage. Bei unserem Gespräch musste ich über eine andere Frage nachdenken.

Wie viel weiß ich wirklich über Probleme, die theoretisch nicht lösbar sind (superpolynomielle Zeitkomplexität), aber praktisch lösbar sind (über Heuristiken, Approximationen, SAT-Löser usw.)?

Mir wurde nicht viel klar. Ich weiß, dass es einige sehr effiziente SAT-Löser gibt, die enorme Instanzen effizient lösen, die Simplex in der Praxis hervorragend funktioniert und vielleicht ein paar weitere Probleme oder Algorithmen. Können Sie mir helfen, ein vollständigeres Bild zu zeichnen? Welche bekannten Probleme oder gar Problemklassen fallen in diese Kategorie?

TL; DR: Was sind Probleme, die in der Praxis kontraintuitiv lösbar sind? Gibt es eine (aktualisierte) Ressource, um mehr zu lesen? Haben wir eine Charakterisierung für sie? Und schließlich, als allgemeine Diskussionsfrage, sollten wir nicht?

EDIT # 1: Um meine letzte Diskussionsfrage zu einer solchen Charakterisierung zu beantworten , wurde ich in die geglättete Analyse von Algorithmen eingeführt, ein Konzept, das von Daniel Spielman und Shang-Hua Teng in [1] eingeführt wurde und kontinuierlich zwischen dem Worst-Case und interpoliert Durchschnittsfallanalysen von Algorithmen. Es ist nicht genau die oben diskutierte Charakterisierung, aber es fängt das gleiche Konzept ein, und ich fand es interessant.

[1] Spielman, Daniel A. und Shang-Hua Teng. "Geglättete Analyse von Algorithmen: Warum der Simplex-Algorithmus normalerweise polynomielle Zeit benötigt." Zeitschrift der ACM (JACM) 51, nr . 3 (2004): 385 & ndash; 463.


6
Was meinten Sie damit, dass SAT in der Praxis effizient gelöst werden kann? Warum ist Ihr Freund auf Sicherheit im Internet angewiesen? Vermutlich gibt es in der Praxis keine harten Probleme? Die Robustheit ist einer der Hauptvorteile der Poly-Time / Efficient Solvability.
Chandra Chekuri

6
Der Graphisomorphismus ist ein natürlicher Kandidat.
DW

2
Hey, @ChandraChekuri, ich meinte, dass praktisch SAT-Löser SAT-Instanzen mit Millionen von Variablen und Klauseln beantworten können. Zumindest dachte ich, dass dies der Fall ist. Ich bin mir nicht sicher, ob ich verstehe, was Sie unter "Sicherheit im Internet" verstehen. Ich argumentiere nicht gegen den Formalismus, ich interessiere mich für Probleme, die theoretisch nicht lösbar sind, aber für alle praktischen Zwecke (möglicherweise aufgrund einer anständigen Annäherung, möglicherweise aufgrund der besonderen Struktur von realen Instanzen usw.) in Betracht gezogen werden. " tractable ".
Konstantinos Koiliaris

1
@KonstantinosKoiliaris Ich denke, der Punkt war, dass die Sicherheit aller Arten von kryptografischen Protokollen von abhängt (normalerweise sogar von etwas viel Stärkerem) und als solches zahlreiche Beispiele für Probleme aus der Routine liefert, die für SAT-Löser äußerst schwierig sind ( oder wir hoffen es sehr). PNP
Emil Jeřábek unterstützt Monica

2
In diesem Sinne kann es sinnvoll sein, die allgemeine Komplexität zu überprüfen. Tatsächlich stellt sich heraus, dass das Halteproblem in der Polynomzeit fast immer lösbar ist, wie beispielsweise SAT (tatsächlich hat SAT eine stärkere Garantie). Mit "fast immer" ist gemeint, dass das Problem einen Algorithmus zulässt, bei dem der Anteil der Eingaben, für die der Algorithmus in der Polynomzeit anhält (und natürlich die richtige Antwort ausgibt), mit zunehmender Länge der Eingabe auf 1 steigt.
Guillermo Angeris

Antworten:


17
  • In der Praxis lassen sich häufig stark strukturierte SAT-Instanzen (auch auf Millionen von Variablen) lösen. Es sind jedoch noch zufällige SAT-Instanzen in der Nähe der Erfüllbarkeitsschwelle mit nur ein paar hundert Variablen offen (was bedeutet, dass Sie selbst in der Praxis, wenn Sie so etwas generieren, im Leben des Universums möglicherweise nie wissen, ob das von Ihnen generierte Objekt erfüllbar ist oder nicht) mit aktuellen SAT-Lösern). Diese verwandte Frage und ihre Antworten könnten Sie interessieren .

  • Clique Finder sind auch "in der Praxis" schockierend gut

  • Integer-Programmierung und Mixed Integer-Linear-Programmierung (mit einigen rationalen und einigen ganzzahligen Variablen) stehen im Mittelpunkt ganzer Operations Research-Abteilungen und können in der Praxis oft (aber nicht immer) gelöst werden

  • PSPEINCEPSPEINCE -komplette Problem.)

  • EXPSPEINCE -komplette!

  • Wie bereits in den Kommentaren von DW ausgeführt, kann der Graph-Isomorphismus praktisch gelöst werden. Es ist sehr schwer, moderne GI-Software wie Nauty, Bliss, Saucy usw. zu überlisten.


Danke Joshua, ich gebe es dir für die interessantesten / umfassendsten vorgeschlagenen Probleme.
Konstantinos Koiliaris

1
Clique Finder sind in der Praxis nicht immer gut. Es kommt wirklich auf die Grafik an. Und Ihr Link scheint nur über zufällige Graphen zu sprechen.
Peter Shor

Ein bisschen mehr über GI: AFAIKs modernste GI-Löser wie die genannten verwenden einen optimierten Ansatz zur Individualisierung und Verfeinerung (wobei es sich bei der Verfeinerung um eine Farbverfeinerung handelt, die bereits als quasilinearer GI-Test für fast alle Diagramme funktioniert). , aber Neuen und Schweitzer zeigten kürzlich exponentielle Untergrenzen für diese Methode und konstruierten (praktisch) harte Instanzen.
Watercrystal

1
@ JoshuaGrochow: Ja, da stimme ich Ihnen zu. Ich wollte nur auf den "kontraintuitiven" Teil der Frage eingehen, da OP ausdrücklich erwähnte, dass Simplex in der Praxis sehr gut funktioniert, obwohl exponentielle Untergrenzen bekannt sind und wir hier die gleiche Situation haben.
Watercrystal

1
Ich habe gerade Erfahrung mit Kellers Vermutung , dass die (zugegebenermaßen großen) Graphen viele Clique-Finding-Algorithmen überfordert haben.
Peter Shor

14

Der Hindley-Milner Typ-System wird in funktionalen Programmiersprachen (Haskell, SML, OCaml) verwendet. Der Typ-Inferenz-Algorithmus ist in der Praxis nahezu linear und funktioniert erstaunlich gut, ist jedoch als DEXPTIME-vollständig bekannt!

Ein allgemeiner Kommentar: Es ist keine Überraschung, dass die Komplexität der schlechtesten Zeit nicht unbedingt ein sehr gutes Maß für die praktische Leistung eines Algorithmus ist. Zu sagen, dass die Diskrepanz zwischen Theorie und Praxis die Komplexitätstheorie unbrauchbar macht, ist wie zu sagen, dass natürliche Zahlen eine Verschwendung sind, weil wir nur eine winzige Menge aller verfügbaren Zahlen verwenden. Ein berühmter Philosoph sagte einmal: "Erfahrung ohne Theorie ist blind, aber Theorie ohne Erfahrung ist nur ein intellektuelles Spiel."


FPL

6

Weitere Beispiele, hauptsächlich aus Programmiersprachen:

  1. k-CFA (k-Control Flow Analysis) ist EXPTIME-vollständig (Van Horn & Mairson 2008), aber Compiler wie MLton, die das gesamte Programm optimieren, führen es trotzdem aus. Die Kompilierungszeiten sind lang, aber selten katastrophal.
  2. Das Auflösen (dynamischer) Überlastungen ist in der Regel NP-vollständig (Palsberg 2012). In der realen Welt ist dies jedoch selten ein Problem.
  3. k
  4. Das Lösen von SMTs ist in der Regel NP-vollständig, kommerzielle SMT-Löser (wie Z3 und CVC4) sind jedoch in der Regel recht leistungsfähig. Ich arbeite nicht direkt mit SMT-Solvern, aber ich habe Z3 indirekt von Liquid Haskell und Dafny verwendet, und die Überprüfungszeiten scheinen in Ordnung zu sein.
  5. Das Entscheidungsproblem für die Presburger-Arithmetik ist sehr komplex (Fischer & Rabin 1974), aber der Entscheidungsalgorithmus von Bill Pugh, der Omega-Test (Pugh 1991), läuft im Allgemeinen innerhalb der Polynomzeit niedriger Ordnung.

Onn


Verweise:

[1] David Van Horn und Harry G. Mairson. 2008. Die Entscheidung für kCFA ist für EXPTIME abgeschlossen. In Proceedings der 13. ACM SIGPLAN International Conference on Functional Programming (ICFP '08). ACM, New York, NY, USA, 275–282.

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

[3] MJ Fischer und MO Rabin. 1974. ÜBEREXPONENTIELLE KOMPLEXITÄT DER PRESBURGER-ARITHMETIK. Technischer Bericht. Massachusetts Institute of Technology, Cambridge, Massachusetts, USA.

[4] William Pugh. 1991. Der Omega-Test: Ein schneller und praktischer Algorithmus zur ganzzahligen Programmierung für die Abhängigkeitsanalyse. In Proceedings of the 1991 ACM / IEEE Konferenz über Supercomputing (Supercomputing '91). ACM, New York, NY, USA, 4-13.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.