Die lineare Programmierung (LP) ist in P und die ganzzahlige Programmierung (IP) ist NP-hart. Da Computer jedoch nur Zahlen mit endlicher Genauigkeit manipulieren können, verwendet ein Computer in der Praxis Ganzzahlen für die lineare Programmierung. Sollte LP und IP aus diesem Grund nicht in derselben Komplexitätsklasse liegen?
complexity-theory
polynomial-time
Sasha die Noob
quelle
quelle
Antworten:
Ich kann nicht kommentieren, da es 50 Wiederholungen erfordert, aber es gibt einige Missverständnisse, die verbreitet werden, insbesondere Raphaels Kommentar "Im Allgemeinen bedeutet eine kontinuierliche Domäne, dass es keine rohe Gewalt gibt (und keine klugen Heuristiken, um sie zu beschleunigen)."
Das ist absolut falsch. Der entscheidende Punkt ist in der Tat die Konvexität. Abgesehen von einigen technischen Einschränkungen ist das Minimieren einer konvexen Funktion (oder das Maximieren einer konkaven Funktion) über eine konvexe Menge im Sinne einer polynomiellen Zeitkonvergenz im Wesentlichen trivial.
Man könnte sagen, dass die Konvexität eines Problems in der "mathematischen" Optimierung mit der Realisierbarkeit gieriger Algorithmen in der "Informatik" -Optimierung übereinstimmt. Dies ist in dem Sinne, dass beide lokale Suchmethoden ermöglichen. Sie müssen in einem gierigen Algorithmus niemals einen Back-Track ausführen, und Sie müssen niemals eine Abstiegsrichtung in einem konvexen Optimierungsproblem bereuen. Lokale Verbesserungen der Zielfunktion werden Sie IMMER näher an das globale Optimum bringen.
Dies ist im nicht konvexen Fall nicht der Fall. Hier mag es ein globales Minimum geben, aber es gibt mehrere lokale Minima, auf die ein lokaler Abstiegsalgorithmus immer angewendet wird, genau wie bei gierigen Algorithmen bei NP-Problemen. Manchmal finden sie das wahre Optimum, meistens nicht.
quelle
Die kurze Antwort: Weil Sie mit Ganzzahlen Boolesche Werte für SAT simulieren können , aber wenn Sie sich nicht darauf beschränken, können Sie SAT nicht wirklich simulieren. Sie erhalten eine realisierbare Antwort, die jedoch keine Bedeutung mehr für die SAT-Instanz hat, die Sie simulieren wollten.
quelle
Der Grund, warum die lineare Programmierung "effizient" ist, besteht darin, dass der Lösungsraum durch ein einziges konvexes Polyeder dargestellt werden kann. Wenn man versucht, den "höchsten" Scheitelpunkt auf diesem Polyeder zu finden (man kann eine lineare Transformation auf jedes lineare Programmierproblem anwenden, damit "Höhe" der zu maximierenden Größe entspricht), dann kann man von jedem Scheitelpunkt entlang der Kanten nach wandern der höchste Punkt, ohne jemals "bergab" fahren zu müssen. Was die Ganzzahlprogrammierung "schwierig" macht, ist, dass es keinen zusammenhängenden Lösungsraum gibt, sondern viele nicht zusammenhängende Lösungsräume und keine Möglichkeit, schrittweise auf die optimale Lösung hinzuarbeiten.
quelle
Die anderen Antworten sind richtig, aber ich finde sie ein bisschen technisch. Angenommen, Sie haben eine Matrix gefegt (eliminiert) und suchen nach einer Lösung. Die Matrix sieht dann so aus:
quelle