NP-Vollständigkeit

Werbung
Hauptseminar Pattern Matching und Textalgorithmen
Ausarbeitung zum Thema
Shortest Common Superstrings −
NP−Vollständigkeit
erarbeitet bis 24.01.2003 von
Stefan Wasner
Inhaltsverzeichnis
1. Die Definition von Shortest Common Superstrings (SCS)
2. Die Komplexität des SCS − Problems
3. Der Greedy − Algorithmus für kürzeste Superstrings
4. Ein Näherungsverfahren für Strings mit maximaler Länge 2
5. Der Begriff der MAXSNP − Vollständigkeit
6. Aussagen über die Komplexität der Konstruktion eines SCS im
allgemeinen Fall
7. Zusammenfassung
8. Literaturverzeichnis
1. Die Definition von Shortest Common Superstrings
Gegeben sei eine Menge S, die insgesamt m Strings enthält: S={s1,s2,s3,......,sm} . Die Aufgabe
besteht darin, aus den Strings si einen Superstring zu bilden, dessen besondere Eigenschaft
darin besteht, dass er alle diese Strings als Teilstrings enthält.
Dabei gibt es ganz verschiedene Möglichkeiten, einen derartigen String zu erzeugen. Es bietet
sich beispielsweise an, die einzelnen Zeichenketten si einfach in beliebiger Reihenfolge zu
Seite 1 von 9
konkatenieren; der entstehende String wird trivialerweise alle si als Teilstrings enthalten.
Beispiel: ssuper=smsm−1sm−2........s3s2s1
Der Nachteil dieser Vorgehensweise besteht darin, dass solche Zeichenketten in der Regel
eine grosse Menge an redundanten Informationen enthalten, da es gewöhnlich Strings si
innerhalb der Menge S gibt, die mit anderen Strings sj aus S teilweise übereinstimmen, oder
sogar als Teilstrings in ihnen enthalten sind. Damit liegt es nahe, Superstrings zu konstruieren,
die alle innerhalb der Menge S vorkommenden Strings und Teilstrings nicht mehrmals, sondern
nur einmal enthalten und damit deutlich kürzer sind als der oben gezeigte Beispielstring ssuper .
Ein solcher String mit minimaler Länge heisst Shortest Common Superstring (SCS)
Für Mengen S mit nur wenigen Elementen lässt sich sehr leicht ein naives Verfahren finden,
um einen SCS zu konstruieren. Betrachten wir die Stringmenge S={heike, eik, aldo, donna} als
Beispiel. Die 4 in S enthaltenen Strings mit insgesamt 17 Zeichen lassen sich zu einem
kürzesten Superstring mit nur 12 Zeichen zusammenfügen, wie die folgende Abbildung zeigt:
Das mit Hilfe einer Baumdiagramms illustrierte Verfahren zeigt beide grundlegenden
Möglichkeiten, Zeichen einzusparen: Im linken Teilbaum wird der String "eik " ganz einfach
weggelassen, weil er ohnehin als Teilstring in "heike" enthalten ist. Im rechten Teilbaum
hingegen nutzt man die Tatsache aus, dass "do" sowohl Suffix des Strings "aldo", als auch
Präfix von "donna" ist. Deshalb werden die beiden Wörter zu dem neuen Wort "aldonna"
verschmolzen. Anschliessend bestehen keine weiteren Möglichkeiten mehr, Zeichen
einzusparen; deshalb werden die Strings "heike" und "aldonna" einfach aneinandergehängt.
Kürzeste Superstings besitzen die Eigenschaft, alle zugrunde liegenden Wörter als Teilstrings
zu enthalten und trotzdem erheblich kürzer zu sein als ein trivialer Superstring. Aufgrund dieser
Tatsache kann man mit Hilfe von SCS viel Speicherplatz sparen und sie zum Beispiel im
Bereich der Datenkompression einsetzen. Sie sind hilfreich unter Anderem bei der
Kompilierung von Software mit minimalem Speicherbedarf.
Ein etwas jüngeres, aber ebenfalls sehr wichtiges Anwendungsgebiet innerhalb der Biochemie
stellt die Synthese (=Zusammenfügung) einer grossen Anzahl von DNA − Bruchstücken zu
einem vollständigen DNA − Molekül dar. Das Erbmaterial wird zunächst vielfach kopiert und
dann in viele kleine Einzelteile zerlegt, deren Gencode entschlüsselt werden kann.
Anschliessend muss aus den vielen Bruchstücken wieder das ursprüngliche Molekül hergestellt
werden, das exakt einem kurzen (oft sogar einem kürzesten) Superstring entspricht.
2. Die Komplexität des SCS − Problems
Wie man unschwer erkennen kann, besitzt ein SCS gegenüber einem trivialen Superstring
deutliche Vorteile, was den Speicherbedarf anbetrifft. Allerdings werden Datenstrukturen nicht
allein danach beurteilt, wie viel Speicher sie verbrauchen, sondern auch der Aufwand für ihre
Seite 2 von 9
Erstellung (=Instantiierung) spielt eine grosse Rolle. So ist die Konstruktion eines SCS sehr
aufwändig, wohingegen sich sich ein trivialer S−String in linearer Zeit erzeugen lässt (bei m −
vielen Strings si sind genau m−1 Konkatenationen nötig).
Deshalb hat man zunächst versucht, die Laufzeit zu verkürzen, indem man keine "echten" SCS
erzeugt, sondern mit Näherungsverfahren annähernd kürzeste Strings instantiiert hat.
Die Forschung erzielte jedoch folgende wenig ermutigende Ergebnisse:
1. Für eine Menge S mit Strings, deren Länge höchstens den Wert 2 hat, lässt sich ein
kürzester Superstring immer in polynomieller Zeit instantiieren.
2. Für Mengen S, deren Strings si beliebige Längen > 2 besitzen dürfen, ist es nicht möglich,
ein polynomielles Näherungsverfahren zu finden.
Unglücklicherweise konnte nachgewiesen werden, dass die Existenz eines
Approximationsverfahrens mit polynomieller Laufzeit für das SCS − Problem äquivalent zu der
Tatsache wäre, dass für die Klasse der NP−Probleme gilt: P = NP. Dies gilt nach dem
gegenwärtigen Stand der Forschung als (nahezu) ausgeschlossen.
Allerdings bezieht sich obige Aussage nur auf Näherungsalgorithmen, deren Abweichung vom
entsprechenden kürzesten Superstring relativ gering ist. Eine solche "gute" Näherung liegt
genau dann vor, wenn für den relativen Fehler eines Algorithmus gilt: << 1. Für = 1 ist
das vom Näherungsverfahren erzielte Resultat hingegen viel zu ungenau. Ein Beispiel für ein
Verfahren mit "schlechter" Näherung, aber polynomieller Laufzeit ist der Greedy−Algorithmus.
3. Der Greedy Algorithmus für kürzeste Superstrings
Der vielleicht gängigste Algoritmus für die Erzeugung kurzen Superstrings aus einer
Stringmenge S funktioniert nach dem Greedy−Prinzip. Er entscheidet sich damit in jedem
Schritt für die momentan beste Lösung. Konkret verschmilzt der Algorithmus jeweils die beiden
Strings, deren Überlappung maximal ist.
Für eine Beispielmenge S={ABCD, BCDE, RAT, BERRA} geht Greedy wie folgt vor: Er
verschmilzt zunächst die Strings "ABCD" und "BCDE", weil man durch Überlappung (=merge)
der gemeinsamen Präfixe und Suffixe 3 Zeichen einsparen kann. Im 2. Schritt verschmilzt er
die Strings "BERRA" und "RAT" unter Einsparung von 2 Zeichen (siehe Abbildung)
Die entstandenen Wörter "ABCDE" und "BERRAT" lassen sich nicht mergen, weil die beiden
Strings weder gemeinsame Präfixe/Suffixe besitzen, noch der eine String ein Teilstring des
Anderen ist. Deshalb werden die beiden Wörter einfach aneinandergehängt und wir erhalten
sscs="ABCDEBERRAT" als kürzesten Superstring.
Die Schwäche des Greedy − Algorithmus besteht darin, dass er zwar für viele Spezialfälle
einen kürzesten Superstring findet, im Allgemeinen Fall jedoch nur einen Teil der Zeichen
einspart, die einem trivialen Superstring überflüssig sind. Im Worst Case erzeugt Greedy sogar
einen S−String, der annähernd doppelt so lange ist, wie der entsprechende SCS. Dabei wird
Seite 3 von 9
ihm seine Eigenschaft zu Verhängnis, in jedem Schritt die aktuell beste Lösung zu suchen. Im
konkreten Fall werden so Strings als Zwischenergebnisse erzeugt, die sich aufgrund ihrer
Struktur später nur schlecht oder gar nicht mit anderen Strings verschmelzen lassen.
Da Greedy im Worst Case Superstrings erzeugt, die etwa die doppelte Länge eines SCS
haben, beträgt seine relative Abweichung vom richtigen Resultat bis zu 100%. Deshalb ist es
nicht möglich, das Superstring−Problem mit einer relativen Fehlerschranke < 1 zu
approximieren. Der Algorithmus stellt ist damit kein "gutes" Näherungsverfahren. Eindeutig für
Greedy spricht jedoch seine in jedem Fall polynomielle Laufzeit.
4. Ein Näherungsverfahren für Strings mit maximaler Länge 2
Wie bereits in Abschnitt 2 erwähnt, kann man für eine Menge S={s1,s2,s3,......,sm} mit |s i|
2
in polynomieller Zeit näherungsweise kürzeste Superstrings erzeugen. Hierfür kann man
beispielsweise einen Näherungsverfahren anwenden, das die einzelnen Strings si als Pfade in
einem gerichteten Graphen G=(V,E) interpretiert. Die Knotenmenge V entspricht dabei dem
Alphabet, das der Stringmenge S zugrunde liegt, d.h. jedem Alphabetzeichen aj, das in einem
oder mehreren Strings si enthalten ist, wird genau ein Knoten zugeordnet.
Beispiel: Gegeben sei eine Stringmenge S ={ab, ad, fm, me, he, ei, eg, gf}. Der aus den
Teilstrings ableitbare Graph enthält 2 Zusammenhangskomponenten und hat folgende Form:
Der Algorithmus geht wie folgt vor: Zunächst wird ein Knoten als Startknoten bestimmt, für den
gilt: Ausgangsgrad > Eingangsgrad. Von diesem Knoten aus wird der Graph entlang der
gerichteten Kanten durchlaufen, bis ein Knoten ohne ausgehende Kanten erreicht wird. Die
Menge der durchquerten Kanten wird dabei entfernt und als Pfad gespeichert.
Solange geeignete Startknoten existieren, werden weitere Pfade im jeweils verbleibenden Teil
des Graphen durchlaufen und anschliessend gespeichert. Im Beispielgraphen erhalten wir so
die Pfadmenge {ab, ad, hegfmei} . Durch Konkatenation der Pfade ergibt schliesslich ein
kürzester Superstring, zum Beispiel "abadhegfmei" (in diesem Fall gibt es mehrere Lösungen).
5. Der Begriff der MAXSNP − Vollständigkeit
Die Klasse der NP−Probleme umfasst neben der Klasse P der Probleme, die in polynomieller
Zeit lösbar sind, auch solche, bei denen Dies (nach dem heutigen Stand der Forschung) nicht
möglich ist. Während die konventionelle Beschreibung der Klasse NP sich auf die
Automatentheorie (Turingmaschine!) stützt, so gibt es laut Fagin noch eine weitere gültige
Definition: Die NP−Klasse ist äquivalent zur Klasse aller Graphen, die als Ausdruck zweiter
Ordnung formulierbar sind. Ausdrücke 2. Ordnung haben dabei die folgende Form:
Die Menge der Probleme A NP, auf die man jedes andere NP−Problem in polynomieller Zeit
reduzieren kann, bildet dabei die Klasse der NP−vollständigen Probleme.
Seite 4 von 9
Modifiziert man die oben gezeigten Ausdrücke zweiter Ordnung, so erhält man eine
interessante Teilklasse der NP−Probleme: Die Klasse der strengen NP−Probleme (SNP). Der
entscheidende Unterschied liegt darin, dass die Relation
im Falle der SNP−Probleme für alle
möglichen Variablenkombinationen (x1, x2,...., xk) erfüllt sein muss, während für die Klasse NP
keine entsprechende Bedingung gilt. Ausserdem hängt
von einer Eingaberelation G mit
beliebiger Stelligkeit ab, die für NP−Probleme im allgemeinen Fall nicht gefordert wird. SNP
entspricht damit exakt der Klasse der Probleme, die wie Folgt formulierbar sind:
Um unser Ziel zu erreichen, eine geeignete Klasse von Näherungsproblemen zu finden, zu der
auch das Shortest Common Superstring−Problem zählt, muss die strenge Formulierung der
SNP−Probleme etwas aufgeweicht werden.
Lässt man zu, dass die Relation
nicht für alle Tupel (x1, x2,.....,xk) erfüllt ist, so erhält man
eine wesentlich umfangreichere Klasse von Problemen. Zweckmässiger Weise muss die
Relation S jedoch so gewählt werden, dass
von so vielen Variablentupeln wie möglich erfüllt
wird, und sich damit einem SNP−Problem so weit wie möglich annähert. Man erhält damit eine
Klasse von Maximierungsproblemen. Um die Problemklasse noch mehr zu erweitern, lässt man
statt einer einzigen Eingaberelation G beliebige viele Relationen G1, G2,.....,Gm zu. Damit ergibt
sich die Optimierungsklasse MAXSNP0 .
Für das weitere Vorgehen ist der Begriff der L−Reduktion von Bedeutung: Ein Problem A ist
genau dann auf ein Problem B L−reduzierbar, wenn für diese Aufgabe ein
Reduktionsalgorithmus mit Speicheraufwand O(log(n)) existiert.
Aus MAXSNP0 kann man damit die Problemklasse MAXSNP ableiten, welche genau die
Probleme A enthält, die mit einer L−Reduktion auf (mindestens) ein Problem B
MAXSNP0
zurückführbar sind. Trivialerweise sind alle MAXSNP0 − Probleme mit Aufwand O(1) auf sich
selber reduzierbar und somit in MAXSNP enthalten.
Analog zu den NP−vollständigen Problemen, auf die man alle Elemente der Klasse NP in
polynomieller Zeit reduzieren kann, gibt es auch eine Klasse vollständiger MAXSNP−Probleme:
Ein Problem B
MAXSNP ist MAXSNP − vollständig <=> alle Probleme A
sind L−reduzierbar auf B
MAXSNP
Es liegt nahe, danach zu fragen, ob für ein MAXSNP−vollständiges Problem B ein
polynomielles Näherungsverfahren existiert. Falls ja, so wären alle Probleme A
MAXSNP in
polynomialer Zeit approximierbar, weil jedes MAXSNP−Problem L−reduzierbar auf B wäre.
Damit war die Beantwortung der Frage nach einem "effizienten" Approximationsalgorithmus für
die Informatik von grosser Bedeutung.
Leider kann die Existenz eines polynomiellen Näherungsverfahrens (wie in Kapitel 2 erwähnt)
aufgrund der grossen Ähnlichkeit der MAXSNP−Klasse mit den NP−Problemen widerlegt
werden.
Man kann zeigen, dass eine beliebige Sprache L
NP in polynomieller Zeit auf ein
Näherungsschema für das MAXSNP−vollständige MAX3SAT−Problem reduzierbar ist.
Dieses ist wie folgt formuliert: Eine oder mehrere boolesche Klauseln enthalten jeweils 3 mit
logischem "oder" verknüpfte Variablen. Die Klauseln werden untereinander mit logischem "und"
Seite 5 von 9
verknüpft. Ziel ist es, die einzelnen Variablen so mit den Werten "True" und "False" zu belegen,
dass so viele Klauseln wie möglich erfüllt sind.
Beispiel für Klauseln mit je 3 Variablen: (x1v x2 v x3) ^ (x3 v x4 v x6) ^ (x1 v x5 v x4)
Cook’s Theorem beschreibt einen geeigneten randomisierten Algorithmus, der für jedes Wort x
einen Satz boolescher Klauseln prüft, und so entscheidet, ob x
L gilt. Dabei treten Fehler
auf. Passt man allerdings die Fehlerschranke entsprechend an, so kann man anhand der Zahl
der auftretenden Fehler sicher unterscheiden, ob ein Wort in der Sprache L enthalten ist, oder
nicht.
=> Falls es ein polynomielles Näherungsverfahren für MAX3SAT gibt, kann jedes NP−Problem
(dem je eine Sprache L entspricht) mit geeigneter Schranke in polynomieller Zeit entschieden
werden. In diesem Fall wäre P = NP. Daraus resultiert der Umkehrschluss, dass MAXSNP −
vollständige Probleme nur nicht−polynomielle Näherungsverfahren besitzen, falls P NP.
6. Aussagen über die Komplexität des allgemeinen SCS−Problems
Um die im vorangehenden Abschnitt gewonnenen Erkenntnisse nutzen zu können, muss man
zeigen, dass ein Zusammenhang zwischen der Klasse MAXSNP und dem Problem, einen
kürzesten Superstring zu finden, besteht.
Mit Hilfe einer L−Reduktion des MAXSNP−vollständigen Traveling Salesman Problems (TSP)
auf das Shortest Common Superstring − Problem kann man zeigen, dass die Konstruktion
eines SCS ein MAXSNP−vollständiges Problem ist.
Die Motivation des TSP besteht darin, den kürzest möglichen Weg zu wählen, um eine
vorgegebene Anzahl an Reisezielen zu erreichen. Das Traveling Salesman Problem ist
mathematisch als gewichteter Graph G=(V,E) interpretierbar. Der kürzeste Weg entspricht
dabei einem Hamilton Pfad (der jeden Knoten genau einmal durchläuft) mit minimaler Summe
der Kantengewichte
Für die angestrebte L−Reduktion ist es nötig, einen Spezialfall des TS−Problems zu
betrachten. Man wähle einen Graphen, dessen Kanten gerichtet sind, und dessen
Kantengewichte nur die Werte 1 und 2 annehmen dürfen. Diese Variante des Traveling
Salesman Problems wird TSP(1,2) genannt.
Der vorliegende Graph G lässt sich zerlegen in einen Teilgraphen H, der alle Kanten mit
Gewicht 1 enthält, sowie in einen Restgraphen G\H , der alle Kanten mit Gewicht 2 enthält. Der
H werde durch eine obere Schranke D begrenzt.
maximale Grad der Knoten v
Beispiel: Ein TSP(1,2)−Graph. Die blauen Kanten haben Gewicht 1, die Schwarzen Gewicht 2
Der Beispielgraph lässt sich, genau wie jeder andere TSP(1,2)−Graph, als Folge von Strings
codieren. Man geht dabei nach folgendem Schema vor:
Jeder Knoten v wird als Connector v#v’ codiert. Die Zeichen v und v’ dienen dabei als
Bindeglieder für die Kantenstrings (=K−Strings) eingehender, bzw. ausgehender Kanten.
Seite 6 von 9
Angenommen, der Knoten v besitzt genau d − viele Nachbarknoten wo, w1, w2,.......,wd−1, mit
denen er über Ausgangkanten verbunden ist. Dann wird jede Kante i mit einem Kantenstring
v’wi−1v’wi codiert. Die "benachbarte" Kante i−1, die ebenfalls vom Knoten v ausgeht, ist dabei
beliebig wählbar. Da bereits festgelegt wurde, dass der Grad der Knoten in H durch die
Schranke D begrenzt wird, ist das Wachstum der Kantenzahl linear begrenzt:
Sei n die Knotenzahl und m die Kantenzahl im Graphen H => für m gilt: m
D*n
Im Beispielgraphen für das TSP(1,2)−Problem sind ausreichend Kanten mit Gewicht 1
enthalten, um allein damit einen Hamiltion Pfad zu konstruieren. Dies ist für allgemeine
Graphen H jedoch nicht der Fall. Angenommen, in H fehlen genau k Kanten mit Gewicht 1, um
alle Knoten zu durchlaufen. Dann müssen k zusätzliche Kanten mit Gewicht 2 aus dem
Restgraphen G\H ausgewählt und in H eingefügt werden. Damit beträgt der Aufwand für die
Instantiierung des TSP−Problems genau (n−1)+k, denn hierfür sind genau (n−1−k)
eingewichtige und k zweigewichtige Kanten nötig.
Es ist naheliegend, dass sich die Connectors v#v’ und die Kantenstrings v’wi−1v’wi zu einem
kürzesten gemeinsamen Superstring verschmelzen lassen. Aufgrund der vorangehenden
Überlegungen lässt sich Folgendes vermuten:
Ein SCS, der den Graphen H vollständig beschreibt, enthält genau l=2m+3n+k+1
Zeichen.
l würde wegen des maximal linearen Wachstums der Kantenzahl m und wegen k < n ebenfalls
höchstens linear mit n wachsen. Damit wäre das Traveling Salesman Problem linear auf das
SCS − Problem reduzierbar.
Die Annahme, der Graph H enthalte genau l Zeichen, muss jedoch erst bewiesen werden. Sei
S die Menge aller Strings si, die den Knoten und Kanten aus H zugeordnet wurden. Will man
die si zu einem Superstring verschmelzen (aus dem später jederzeit der Graph H rekonstruiert
werden kann), so ist der Abstandsgraph Gs hilfreich. Der „"Abstand"“ zwischen 2 Strings si und
sj entspricht genau der Anzahl der Zeichen in si, die sich nicht mit sj überlappen.
Beispiel: Der Graph Gs für die Menge S={oh, hallo, haha, ach, huh}. Das Kantengewicht
entspricht jeweils dem Abstand zweier Strings. Kanten zwischen Strings ohne Überlappung
sind der Einfachheit halber nicht eingetragen.
Innerhalb eines jeden Abstansgraphen Gs existiert dabei ein Teilgraph G2, der genau die
Kanten mit Gewicht 2 enthält. Aufgrund dieser Einschränkung besitzt in G2 jeder Knoten v
H
genau eine Zusammenhangskomponente.
Seite 7 von 9
Beispiel: Der Knoten 0 besitze vier Ausgangskanten
Ersetzt man alle Knoten durch Connectors und alle Kanten durch Kantenstrings, so ergibt sich
folgende Zusammenhangskomponente in G2 :
Wie man sieht, enthält die Beispielkomponente ausschliesslich Strings, deren Präfixe mit den
Suffixen anderer Strings übereinstimmen. Diese Überlappungen kann man ausnutzen, um alle
Strings, die zum Knoten 0 (in diesem Fall), bzw. zu einem beliebigen Knoten vi (im allgemeinen
Fall) gehören, zu verschmelzen. Und zwar, indem man den Connector mit einem Kantenstring
überlappt (hierbei wird 1 Zeichen eingespart ) und die Kantenstrings paarweise miteinander
verschmilzt. Sofern man die Überlappung aller K−Strings voll ausnutzt, erzielt man pro Merge
eine Einsparung von 2 Zeichen. Es entsteht ein String minimaler Länge − der Standard−String.
Beispiel: Der Standard − String für den Knoten 0
In einem Graphen mit n Knoten kann man für jeden Knoten i und seine ausgehenden Kanten
einen Standard−String erzeugen. Die Menge dieser Standard−Strings kann man zu einem
gemeinsamen Superstring verschmelzen. Er wird als Standard−Superstring bezeichnet.
Beispiel: Der Knoten 0 habe im Hamilton−Graphen H eine Ausgangskante zum Knoten 1. Will
man einen Standard−Superstring minimaler Länge konstruieren, so muss man die einzelnen
Standard−Strings entsprechend anpassen. Im konkreten Fall müssen die Kantenstrings, die
nach dem Connector von Knoten 0 folgen, so angeordnet werden, dass der letzte K−String sich
mit dem Connector des Standard−Strings von Knoten 1 überlappt. (siehe Abbildung)
Es ist allerdings nicht in jedem Fall möglich, den Connector eines Standard−Strings mit dem
Kantenstring eines Anderen zu verschmelzen. Falls im Graphen H keine Kante vorhanden ist,
die einen Knoten vi mit einem Knoten vi+1 verbindet, so kann man die Standard−Strings von vi
und vi+1 nicht mergen, sondern muss sie statt dessen konkatenieren. Pro fehlender Kante wird
dabei ein zusätzliches Zeichen benötigt, weil sich die Enden der Strings nicht überlappen.
Damit sind, wenn genau k Kanten fehlen, k zusätzliche Zeichen nötig.
Seite 8 von 9
Beispiel: Die Standard−Strings der Knoten 7 und 8 werden aneinander gehängt.
Aufgrund der vorangehenden Überlegungen bezüglich der Überlappung von Connectors,
Kantenstrings und Standard−Strigs kann man nun die Länge eines kürzesten Standard−
Superstrings bestimmen. Insgesamt besitzt unser Graph H genau n Knoten, die jeweils durch
einen Connector mit 3 Zeichen codiert werden. Jede der m Kanten, die in H enthalten sind,
wird durch einen aus 4 Zeichen bestehenden Kantenstring codiert. Davon bleiben aufgrund der
wechselseitigen Überlappung der Kantenstrings (pro Merge werden 2 Zeichen eingespart) und
aufgrund der Überlappung mit den Connectors (1 Zeichen wird pro Merge eingespart) nur
2m+1 Zeichen übrig. Die Konstante 1 kommt dadurch zustande, dass der Kantenstring am
Ende des letzten Standard−Strings zugleich das Ende des gesamten Superstrings darstellt und
deshalb nicht mehr mit einem Connector verschmolzen werden kann. Zudem wissen wir, dass
für k Kanten genau k zusätzliche Zeichen nötig sind.
Dies entspricht exakt unserer Vermutung bezüglich der Länge eines Shortest Common
Superstrings für das TSP−Problem.
7. Zusammenfassung
Wir konnten das MAXSNP−vollständige Traveling Salesman Problem erfolgreich auf das
Problem, einen kürzesten Superstring zu erzeugen, L−reduzieren. Da aber ein MAXSNP−
vollständiges Problem die Eigenschaft besitzt, dass jedes Problem
MAXSNP darauf L−
reduzierbar ist, so kann man schliessen:
Entweder, es gibt kein polynomielles Näherungsverfahren für das Erzeugen kürzester
Superstrings, oder aber es gilt (siehe auch das Resultat von Abschnitt 5): P = NP
Nur für Stringmengen S, deren Strings maximal die Länge 2 haben, existiert (entsprechend
Abschnitt 4) definitiv ein polynomielles Näherungsverfahren.
Insgesamt stellt der Nachweis, dass für MAXSNP−vollständige Probleme nur polynomielle
Näherungsverfahren existieren, falls P = NP, einen schweren Rückschlag dar. Das
nachgewiesene Resultat ist das schlechteste nur Denkbare für die Approximierbarkeit von
MAXSNP−Problemen, abgesehen natürlich von P NP.
8. Literaturverzeichnis
•
[AG] Alberto Apostolico, Zvi Galil (Editoren): Pattern Matching Algorithms, Kapitel 8.1.1,
8.1.2., 8.1.3 und 8.4. Oxford University Press, 1997.
•
Christos H. Papadimitrou: Computational Complexity, Kapitel 13.2., 13.3. Addison−
Wesley, 1994.
Seite 9 von 9
Herunterladen