Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

NP-vollständige Probleme

Problemreduktion

Das Verfahren der Problemreduktion spielt eine entscheidende Rolle bei der Einordnung von Problemen in Komplexitätsklassen. Wir verdeutlichen es zuerst am Beispiel und betrachten das Hamilton-Problem und das Problem des Handlungsreisenden (in einer Entscheidungsvariante).

Beim Hamilton-Problem ist ein (ungerichteter und ungewichteter) Graph mit seinen Knoten und Kanten gegeben. Zu entscheiden ist, ob es einen Hamiltonkreis gibt - d.h. eine Rundreise durch den Graphen, in der jeder Knoten genau einmal vorkommt - nur Start- und Zielknoten kommen genau zweimal vor.

Beim Problem des Handlungsreisenden ist ein (ungerichteter und gewichteter) Graph mit seinen Knoten und gewichteten Kanten sowie eine Gewichtsschranke gegeben. Zu entscheiden ist, ob es eine Rundreise durch den Graphen gibt (in der jeder Knoten genau einmal vorkommt - nur Start- und Zielknoten kommen genau zweimal vor), so dass die Summe der Gewichte längs der Rundreise kleiner oder gleich der Gewichtsschranke ist.

Das Hamilton-Problem lässt sich auf das Problem des Handlungsreisenden zurückführen (reduzieren). Hierzu wird jedes konkrete Hamilton-Problem in ein entsprechendes Problem des Handlungsreisenden umgewandelt. Das folgende Beispiel soll die Umwandlung verdeutlichen.

Hamilton-Problem: Gibt es in Graph G einen Hamiltonkreis?

Graph

Zum ungewichteten Graphen G wird jetzt ein gewichteter Graph G' konstruiert, indem die Knoten und Kanten von G übernommen werden, die Kanten von G mit dem Gewicht 1 bewertet und sämtliche noch möglichen Kanten zwischen Knoten von G hinzugenommen und mit dem Gewicht 2 bewertet werden.

Graph

Problem des Handlungsreisenden: Gibt es in Graph G' eine Rundreise, dessen Gesamtgewicht kleiner oder gleich der Anzahl der Knoten des Graphen ist?

Beachte, dass der Graph G' so konstruiert ist, dass ein Hamiltonkreis in G einer Rundreise in G' mit dem Gesamtgewicht Anzahl der Knoten entspricht.

Aus einem Algorithmus zur Lösung des Problem des Handlungsreisenden lässt sich jetzt direkt ein Algorithmus zur Lösung des Hamilton-Problem konstruieren.

Wir gehen davon aus, dass ein Algorithmus existiertRundreiseHandlungsreisender existiert, der einen gewichteten Graphen und eine Gewichtsschranke verarbeitet und entscheidet, ob es die gewünschte Rundreise gibt:

ALGORITHMUS existiertRundreiseHandlungsreisender
    Übergabe: gewichteter Graph, Gewichtsschranke
    # ...
    Rückgabe: True / False

Hieraus entwickeln wir einen Algorithmus zur Lösung des Hamilton-Problems:

ALGORITHMUS existiertRundreiseHamilton
    Übergabe: ungewichteter Graph G
    # Umwandlung des Problems
    erzeuge aus G den gewichteten Graphen G' (siehe oben)
    gewichtsschranke = Anzahl der Knoten von G' (bzw. G)
    # Lösung des transformierten Problems
    ergebnis = existiertRundreiseHandlungsreisender(G', gewichtsschranke)
    # Lösung des Ausgangsproblems
    Rückgabe: ergebnis

Für den oben gegebenen Graphen G liefert existiertRundreiseHamilton(G) das Ergebnis False, da existiertRundreiseHandlungsreisender(G', 5) das Ergebnis False liefert.

Die folgende Abbildung verdeutlicht das Prinzip des Problemlösens durch Problemreduktion.

Problemreduktion

Polynomiale Problemreduktion

Bei einer polynomialen Problemreduktion muss der Aufwand zur Umwandlung des Problems (und zur Umwandlung der Lösung) polynomial sein.

Wir schreiben p ≤ p', wenn das Problem p auf das Problem p' polynomial reduzierbar ist.

Beispiel: Das Hamilton-Problem ist auf das Problem des Handlungsreisenden polynomial reduzierbar. Die oben gezeigte Problemreduktion hat offensichtlich die geforderte Eigenschaft, dass die Problem- und Lösungsumwandlung mit polynomialem Aufwand erledigt werden kann. Übrigens: Man kann auch umgekehrt zeigen, dass das Problem des Handlungsreisenden auf das Hamilton-Problem polynomial reduzierbar ist.

Polynomiale Problemreduktionen werden bei Komplexitätsargumentationen benutzt. Die folgende Aussage soll gezeigt werden.

p ≤ p' und p' ∈ P ⇒ p ∈ P 

In Worten: Wenn p auf das Problem p' polynomial reduzierbar ist und wenn p' eine polynomiale Komplexität hat, dann hat auch das Problem p eine polynomiale Komplexität.

Die Argumentation verläuft so: Aus einem Algorithmus A' mit polynomialer Komplexität zur Lösung des Problems p' lässt sich ein Algorithmus A mit polynomialer Komplexität zur Lösung des Problems p erzeugen. Man muss nur (wie im Beispiel oben) den Algorithmus A' mit den Umwandlungsalgorithmen kombinieren. Bei der Argumentation benutzt man zudem, dass das Hintereinanderausführen von Algorithmen mit polynomialer Komplexität zu einem Algorithmus mit polynomialer Komplexität führt.

Problemreduktion

NP-vollständige Probleme

Ein Problem p* heißt NP-vollständig genau dann, wenn es in der Komplexitätsklasse NP liegt (d.h. mit einem nichtdeterministischen Algorithmus mit polynomialer Komplexität gelöst werden kann) und wenn jedes Problem p aus NP auf p* polynomial reduzierbar ist.

Problemreduktion

NP-vollständige Probleme spielen bei der Klärung der Frage P=NP? eine zentrale Rolle. Wenn es gelingt, ein NP-vollständiges Problem p* mit einem Algorithmus mit polynomialer Komplexität zu lösen, dann ist die Aussage P=NP bewiesen. Denn, NP-Vollständigkeit bedeutet ja, dass jedes Problem p ∈ NP auf p* polynomial reduzierbar ist. Aus einem polynomialen Algorithmus für p* lässt sich dann ein polynomialer Algorithmus für jedes p ∈ NP erzeugen.

Zur Klärung der Frage P=NP? konzentriert man sich also auf das Lösen NP-vollständiger Probleme.

Es gibt inzwischen eine Vielzahl von Problemen, die als NP-vollständig nachgewiesen sind. Zu diesen Problemen gehören auch das Hamilton-Problem und das Problem des Handlungsreisenden.

Alle Versuche, ein NP-vollständiges Problem mit einem polynomialen Algorithmus zu lösen, sind bisher fehlgeschlagen. Die NP-vollständigen Probleme erweisen sich also als harte Nüsse und gelten als schwer lösbare Probleme.

Aufgrund der vielen fehlgeschlagenen Versuche, einen polynomialen Lösungsalgorithmus für ein NP-vollständiges Problem zu finden, vermutet man, dass die Frage P=NP? negativ zu beantworten ist.

X

Fehler melden

X

Suche