Ich versuche, eine Liste von Algorithmen / Problemen zu erstellen, die "außergewöhnlich nützlich" sind, wie zum Beispiel das Lösen von Problemen, die von Natur aus sehr exponentiell erscheinen, aber einige besonders clevere Algorithmen haben, die sie letztendlich lösen. Beispiele für das, was ich meine:
- Lineare Programmierung (Der Simplex-Algorithmus ist eine Exponentialzeit; es hat lange gedauert, bis eine Lösung für die Polynomzeit gefunden wurde!)
- Allgemeiner gesagt, Semidefinite Programming
- Primalitätstests
- 2-SAT und HORNSAT
- Determinanten berechnen (wenn dies nicht schwierig klingt, betrachten Sie die permanente)
- Perfekte Übereinstimmungen finden
- Eine Vielzahl von gruppentheoretischen Problemen, die mit der Klassifikation endlicher einfacher Gruppen gelöst werden können
- Eine Vielzahl schwieriger Graphprobleme, die mit komplizierten Forbidden Minor-Charakterisierungen gelöst werden können (Einbettbarkeit auf einer beliebigen Oberfläche; Begrenzung von Baumbreite und Verzweigungsbreite; reduzierbare Delta-Wye-Graphen)
- Berechnen von Exponentialen in einer begrenzten Gruppe (dh Berechnen von in Schritten, wie durch wiederholtes Quadrieren erreicht)
- Berechnungen, die auf dem LLL-Algorithmus beruhen. (Als Sonderfall: Euklidischer Algorithmus. Als allgemeinerer Fall: PSLQ- oder HJLS-Algorithmus.)
- Einschränkungsprobleme ohne Taylor-Terme (?). Ich gebe zu, dass ich das nicht ganz verstehe, aber es hört sich so an, als würde es die obigen 2-SAT / HORNSAT-Fälle und jegliche lineare Algebra über endliche Felder subsumieren. Siehe hier für einen längeren Beitrag
- Probleme berechenbar über holographische Reduktionen .
Als lobende Erwähnung möchte ich auch den Graphisomorphismus erwähnen, da er immer noch furchtbar einfach ist ( ) und so vielen anderen Isomorphismusproblemen entspricht:
- Digraphen / Multigraphen / Hypergraphen (eine Art "schwierigeres" Problem)
- Endliche Automaten / CFGs
Offensichtlich gibt es eine Reihe von Schwierigkeiten, aber alle lassen zumindest einige Menschen mit einem gewissen Gefühl der "Überraschung" zurück, in dem Sinne, dass das Problem schwierig klingen kann, sich aber als lösbar herausstellt. LP klingt vielleicht relativ unkompliziert, aber es hat einige Zeit gedauert, bis eine Lösung dafür gefunden wurde. Das wiederholte Quadrieren oder Lösen von 2-SAT ist etwas, das sich ein Student möglicherweise selbst einfallen lassen könnte. Wenn Sie jedoch nur von NP-Complete-Problemen erfahren hätten, ohne HORNSAT gesehen zu haben, könnte dies wie ein natürlicher Kandidat für die NP-Vollständigkeit klingen. Das Lösen des CFSG oder die polynomische Überprüfung der Delta-Wye-Reduzierbarkeit sind keine Kleinigkeiten.
Ich hoffe das macht Sinn; Hier gibt es natürlich viele subjektive Attribute, aber ich bin gespannt, was andere Leute für effiziente Lösungen für "offensichtlich schwierige" Probleme halten.