Dies ist mein persönlicher Ansatz, um festzustellen, ob ein Problem (dh eine Sprache ) NP-vollständig ist oder nicht. Wenn beide Bedingungen überprüft werden:L
- Wenn prüfe , ob sich eine Instanz in , muss ich alle möglichen Kombinationen überprüfenLichL
- und dass es keine Möglichkeit gibt, eine solche Kombination in zwei kleinere aufzuteilen
dann kann durchaus NP-hart sein.L
Zum Beispiel muss ich für das Teilmengen-Summenproblem alle Teilmengen von auflisten und prüfen, ob es eine gibt, deren Summe Null ist. Kann ich in zwei kleinere Teilmengen und aufteilen, auf denen ich eine ähnliche Eigenschaft überprüfe? Humm ... nicht wirklich. Vielleicht würde ich nach allen Kombinationen von und aber das wäre wirklich lang ...S S 1 S 2 S 1 S 2SSS1S2S1S2
Normalerweise ist die Fähigkeit, in kleinere Teile zu zerbrechen, ein guter Indikator für ein Problem in P. Dies ist der Divide-and-Conquer- Ansatz. Zum Beispiel des kürzesten Weg zwischen zwei Punkten zu finden, können Sie die Eigenschaft , dass , wenn der kürzeste Weg von nach durchläuft dann ist es nicht länger als der kürzeste Weg von nach und den kürzesten von auf .C B A B B CACBABBC
Ehrlich gesagt ist dieser Ansatz sehr einfach: Ich versuche, einen (polynomiellen) Algorithmus für das gegebene Problem zu finden. Wenn ich keinen finde, wird das Problem aus meiner Sicht "schwer". Dann kommt die ganze NP-Vollständigkeitsüberlegung: Kann ich ein bestehendes NP-vollständiges Problem in dieses kodieren? (Und da dies normalerweise viel schwieriger ist, versuche ich noch einmal, einen Polynomalgorithmus zu finden.)
Ich vermute, dass dies die übliche Denkweise ist. Es bleibt jedoch ziemlich schwierig, sich auf unbekannte Probleme anzuwenden. Ich erinnere mich, dass mich eines der ersten Beispiele für NP-Vollständigkeit überrascht hat: das Clique-Problem . Es schien so einfach zu überprüfen! Ich nehme an, diese Erfahrung hat viel damit zu tun. Auch Intuition kann manchmal unbrauchbar sein. Ich erinnere mich, dass mir mehrmals zwei fast identische Probleme erzählt wurden, von denen eines in P und das andere mit einer kleinen Variation NP-vollständig war.
Ich muss noch ein gutes Beispiel finden (ich brauche hier Hilfe), aber das ist wie das Post-Korrespondenz-Problem : Dies ist ein unentscheidbares Problem, aber einige Varianten sind entscheidbar.