Approximationsalgorithmus

Algorithmus, der ein Optimierungsproblem näherungsweise löst
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 13. Juni 2018 um 14:37 Uhr durch 84.63.73.156 (Diskussion) (FPTAS: Latex). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Ein Approximationsalgorithmus ist in der Informatik ein Algorithmus, der ein Optimierungsproblem näherungsweise löst.

Viele Optimierungsprobleme lassen sich mit exakten Algorithmen vermutlich nicht effizient lösen. Für solche Probleme kann es sinnvoll sein, wenigstens eine Lösung zu finden, die einer optimalen Lösung möglichst nahe kommt.

Güte von Approximationsalgorithmen

Es sei   die zu einer Eingabe   gehörige Menge zulässiger Lösungen. Zu jeder möglichen Lösung   sei   der Wert der Zielfunktion für  . Der Zielfunktionswert einer optimalen Lösung für Eingabe   sei  . Ein Approximationsalgorithmus (oder Approximationsverfahren) gibt bei Eingabe   eine Lösung   aus, so dass   relativ nah an   liegt.

Ist   die von einem Approximationsverfahren für die Eingabe   berechnete Lösung, so ist die Güte des Approximationsverfahrens bei der Eingabe  

bei Maximierungsaufgaben als   und bei Minimierungsaufgaben als   definiert.

Es ist also immer  . Gilt  , liefert der Algorithmus eine optimale Lösung für  .

Hat ein Approximationsverfahren für alle möglichen Eingaben   eine Güte   von höchstens  , so spricht man von einer  -Approximation.

Klassen von Approximationsalgorithmen

Optimierungsprobleme werden in der Theoretischen Informatik in verschiedene Approximationsklassen unterschieden, je nachdem welcher Grad an Approximation möglich ist:

APX

Die Abkürzung APX steht für approximable und deutet an, dass das Optimierungsproblem, zumindest bis zu einem gewissen Grad, effizient approximierbar ist. Ein Problem liegt in der Klasse APX, wenn eine Zahl   und ein polynomieller Algorithmus, der bei jeder zulässigen Eingabe   eine Lösung mit einer Güte   liefert, existieren.

PTAS/PAS

PTAS oder PAS steht für polynomial time approximation scheme. Anders als bei der Klasse APX wird hier für jedes   gefordert, dass ein polynomialer Algorithmus existiert, der bei jeder zulässigen Eingabe eine Lösung mit einer Güte   liefert. Der Algorithmus muss also nicht nur für eine bestimmte Güte, sondern für jede Approximationsgüte effizient sein.

FPTAS

FPTAS steht für fully polynomial time approximation scheme. Hier wird gefordert, dass sich der Algorithmus nicht nur polynomiell zur Eingabe, sondern auch zur Güte der Approximation verhält; Dass er also zu jeder Eingabe   und jedem   eine Lösung mit der Güte   ausgibt und seine Laufzeit polynomiell in   und   ist.

Es gilt:  

Unter der Annahme   sind die obigen Inklusionsabbildungen echte Inklusionen. Das heißt, es gibt zum Beispiel mindestens ein Optimierungsproblem, das in der Klasse PTAS liegt, aber nicht in der Klasse FPTAS. Unter dieser Annahme existiert auch mindestens ein Optimierungsproblem, das nicht in APX liegt. Dies lässt sich unter der Annahme   zum Beispiel für das Cliquenproblem zeigen.

Sei   ein Optimierungsproblem, dessen Zielfunktion   für alle Instanzen   ganzzahlig ist. Falls es ein Polynom   mit   für jede Instanz   gibt, dann folgt aus der Existenz eines FPTAS für   die Existenz eines pseudopolynomiellen Algorithmus für  . Hierbei ist   die optimale Lösung für die Instanz   und   der maximale Wert einer Variable von  .

Da stark NP-vollständige Probleme keinen pseudopolynomiellen Algorithmus haben (falls  ), besitzen diese daher kein FPTAS.

Siehe auch

Literatur

  • Rolf Wanka: Approximationsalgorithmen - Eine Einführung, Teubner, Wiesbaden, 2006, ISBN 3-519-00444-5
  • Klaus Jansen, Marian Margraf: Approximative Algorithmen und Nichtapproximierbarkeit, de Gruyter, Berlin, New York, 2008, ISBN 978-3-11-020316-5