Rheinische Friedrich-Wilhelms-Universität Bonn Institut für Informatik I Ivan Philippov Computing Shortest Paths with Uncertainty 31. Januar 2007 Seminararbeit im WS 0607 Betreuer: Elmar Langetepe Zusammenfassung Diese Arbeit beschäftigt sich mit dem Problem der Berechnung der Länge eines kürzesten Pfades in einem gerichteten Graphen, deren Kantenlängen nur näherungsweise bekannt sind, die jedoch durch Kosten exakt bestimmt werden können. In dem einführenden Teil werden das Problem und einige Instanzen des Problems grob dargestellt und auf einige Anwendungsgebiete für diese Probleme hingewiesen. In den weiteren Abschnitten werden Verfahren zur Lösung des Problems vorgestellt und die Komplexität des Problems und der Probleminstanzen analysiert. Da das allgemeine Problem und die Probleminstanzen ohne Einschränkungen nicht effizient gelöst werden können, werden auch einige Approximationsalgorithmen angegeben. Inhaltsverzeichnis 1 Einleitung 1.1 Bezug zu anderen Arbeiten . . . . . . . . . . . . . . . . . . . 2 3 2 Der 2.1 2.2 4 5 8 Zero-Error“ Fall ” Menge P eingeschränkt . . . . . . . . . . . . . . . . . . . . . . Menge P nicht eingeschränkt . . . . . . . . . . . . . . . . . . 3 Der Unique-Upper-Length“ Fall ” 3.1 NP-Vollständigkeit des Unique-Upper-Length“ Falls und Härte ” der Approximation . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Approximationsalgorithmen . . . . . . . . . . . . . . . . . . 3.3 Unique-Upper-Length“ Fall auf seriell-parallelen Graphen . . ” 3.4 Unique-Upper-Length“ Fall mit explizit angegebener Pfad” menge P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 14 17 19 20 4 Der allgemeine Fall 21 4.1 Approximationsalgorithmen für den allgemeinen Fall . . . . . 24 4.2 Allgemeiner Fall auf Bi-trees . . . . . . . . . . . . . . . . . . 26 1 1 Einleitung Das Problem das wir hier betrachten sieht wie folgt aus. Wir haben einen DAG (gerichteten azyklischen Graphen) G mit einer Quelle s mit keiner eingehenden Kante und eine Senke t, von der keine Kante weggeht. Die genaue Länge der Kanten ist nicht bekannt. Für jede Kante e in G hat man jedoch einen Intervall [le , he ], der die exakte Länge der Kante enthält. Die Länge eines Pfades kann mit Ungewissheit berechnet und mit Hilfe eines Intervalls, der die exakte Länge des Pfades enthält, repräsentiert werden. Genauso kann man auch einen Intervall berechnen, der die Länge des kürzesten Pfades zwischen zwei Knoten in G enthält. Die exakte Länge jeder Kante e kann durch Anfrage bestimmt werden. Die Kosten für diese Anfrage bezeichnen wir mit ce . Daraus ergibt sich folgendes Optimierungsproblem: Gegeben sind ein DAG G, eine Quelle s, eine Senke t, eine Menge P mit s-tPfaden, Intervalle mit Kantenlängen [le1 , he1 ], . . . , [lem , hem ], Anfragekosten ce1 , . . . , cem und ein Genauigkeitsparameter k. Gesucht ist eine Kantenmenge E 0 = {ei1 , . . . , eik } mit minimalen Kosten, so dass wenn genau die Kanten in E 0 angefragt werden, man einen Intervall erhält, deren Breite höchstens k ist und der garantiert die Länge des kürzesten Pfades p ∈ P enthält. Die Menge P kann entweder explizit oder implizit oder überhaupt nicht angegeben sein. Im letzteren Fall kann man sich P als Menge aller s-t-Pfade in G vorstellen. Wir werden später sehen, dass die Repräsentation der Menge P bei einer der Probleminstanzen einen Einfluss auf die Effizienz hat. Es gibt eine Offline- und eine Onlineversion des Problems. Bei der Onlineversion wird die Reihenfolge der Anfragen adaptiv durchgeführt, d.h. jede Anfrage wird beantwortet bevor die nächste Anfrage ausgewählt wird. Bei der Offlineversion ist es anders; hier müssen die Kanten, die angefragt werden sollen, schon vorher spezifiziert werden. Es muss also unabhängig von den Ergebnissen der Anfragen garantiert werden, dass die Länge des kürzesten Pfades ermittelt werden kann; und zwar darf das Intervall für den kürzesten Pfad nicht breiter als k sein. In dem Paper Computing Shortest Paths with Uncertainty“ [3] ” wird nur die Offlineversion des Problems betrachtet. Das Problem die billigste Menge an Kantenanfragen zu finden liegt weder in NP noch co-NP außer wenn NP=co-NP; es liegt in der Klasse ΣP2 . Wie diese Komplexitätsklasse genau aussieht wird in Section 4 erklärt. Daher werden wir einige Instanzen des Problems betrachten, die verschiedene Einschränkungen enthalten. Eine der Instanzen ist das Zero-Error“ Problem. Hier haben wir als Ein” schränkung Fehlerparameter k = 0. Die untere und die obere Intervallgrenze des Intervalls, das die Länge des kürzesten Pfades enthält müssten demnach gleich sein. Durch Einschränkungen der Menge P ist das Zero-Error“ Pro” blem in polynomialer Zeit lösbar. Wenn die Menge P explizit angegeben ist, dann ist die Menge der Pfade, die man betrachten muss polynomial in der Eingabegröße. Somit hat das Zero-Error“ Problem eine Polynomialzeit” Lösung. Wenn P implizit durch eine rekursive Beschreibung, die den Fall von 2 seriell-parallelen Graphen enthält, dargestellt wird, dann kann das Problem ebenfalls in polynomialer Zeit gelöst werden. Wenn die Menge P uneingeschränkt ist, dann ist das Zero-Error“ Problem für alle δ > 0 innerhalb ” n1−δ hart zu approximieren; selbst wenn die Fehler- und Kostenvorgaben wesentlich gelockert werden. Damit man einen Polynomialzeit-Algorithmus oder angemessene Approximationsschranken bekommt, muss man geeignete Einschränkungen für die jeweiligen Probleminstanzen stellen. Wenn man k > 0 zulässt, dann muss man Einschränkungen an die Struktur des Graphen stellen. Einer der Einschränkungen ist die Festlegung der einheitlichen oberen Intervallgrenze für alle s-t-Pfade. Das bedeutet, dass alle Pfade im Graphen dieselbe obere Schranke für die Pfadlänge haben. Diese Probleminstanz bezeichnen wir als Unique-Upper-Length“ Fall. Diese Einschränkung ” alleine reicht jedoch nicht. Damit das Problem in polynomialer Zeit gelöst werden kann oder mit kleinen Approxiamtionsfaktor, muss man noch Einschränkungen an die Struktur der Kanten im Graphen, Einschränkungen an k und Einschränkungen an die Anzahl und Art der nicht trivialen Kanten (Kanten mit nicht genau bekannter Länge; also le 6= he ) auf den Pfaden setzen. 1.1 Bezug zu anderen Arbeiten Das vorgestellte Problem ist durch die Arbeit von Olston und Widom [5] motiviert. Es geht dabei, um Anfragenbearbeitung auf nachgebildeten Datenbanken, wo lokal zwischengespeicherte Kopien der Datenbank dazu verwendet werden schnelle Anfragen auf der Seite des Klienten zu ermöglichen. Es gibt eine Masterkopie der Daten, wo alle Updates der Datenbank gespeichert sind. Die Konsistenz zwischen der Masterkopie und den zwischengespeicherten Kopien ist nicht immer gewährleistet. Die Werte der Kopien können nach einiger Zeit von den Werten der Masterkopie abweichen. Die zwischengespeicherten Kopien speichern jedoch für jeden Datenwert einen Intervall, der garantiert den Wert der Masterkopie enthält. In manchen Systemen ist die Konsistenz kein notwendiges Kriterium, deswegen kann man da, um schnelle Zugriffszeiten auf die Daten zu ermöglichen, auf die Werte der zwischengespeicherten, eventuell veralteten Kopien, zugreifen. Das World-Wide Web ist ein verallgemeinertes Beispiel für so ein abweichendes nachgebildetes System, wo Masterkopien der Seiten auf den Web-Servern und die abweichenden Kopien in den Webbrowsern gespeichert sind. In der Architektur des Internets wird durch das Lesen von zwischengespeicherten Kopien deutlich bessere Performance ermöglicht, als wenn man die Daten jedes Mal vom Webserver abruft. In manchen Systemen werden mehrere Anfragen auf einmal an die Masterkopie benötigt. Hier ist die Offlineversion des Problems von Interesse. Es gibt weitere Anwendungsbereiche, wo die Daten durch einen Graphen repräsentiert werden und die Längen der Kanten nach einiger Zeit 3 aktualisiert werden. Die Anfragen richten sich meistens nach dem kürzesten Weg zwischen zwei Knoten. Dieses Problem hat Anwendungen in Bereichen wie Netzwerküberwachung oder Routenberechnung bei Navigationssystemen in Autos. Hier können sich die Längen der Kanten schnell ändern und übermäßige Anfragen zu hohen Kommunikationskosten führen. 2 Der Zero-Error“ Fall ” Als erstes betrachten wir die Probleminstanz, wo keine Fehler zugelassen sind, d.h. k ist gleich Null. Um ein Verfahren angeben zu können, das überprüft, ob eine Kantenmenge E 0 Fehler k = 0 garantiert, brauchen wir eine Definition für die Dominanz zwischen zwei Pfaden: Definition 1 Seien p und q zwei Pfade von s nach t in P . Sei L die Summe aller le Werte über die Kanten e im Pfad p, aber nicht in q. Sei H die Summe aller he Werte über die Kanten e in q aber nicht in p. Man sagt p dominiert q, wenn L > H oder wenn L = H und p und q haben nicht dieselben nicht trivialen Kanten (also Kanten mit le 6= he ). Wenn also der Pfad p den Pfad q dominiert, dann kann die Länge des Pfades p nicht kürzer sein als die Länge des Pfades q. Die letzte Bedingung (L = H und p und q haben nicht dieselben nicht trivialen Kanten) stellt sicher, dass ein Pfad sich selbst nicht dominieren kann. Pfade, die irgendeinen Pfad dominieren, brauchen wir dann gar nicht zu betrachten. Proposition 2 Eine Auswahl anzufragender Kanten E 0 , garantiert Zero” Error“ (Null Fehler), genau dann wenn in jedem Pfad p ∈ P , der keinen Pfad q ∈ P dominiert, alle nicht trivialen Kanten angefragt werden. (Damit liegt das Zero-Error Problem in co-NP.) Eine Entscheidungsvariante für das Zero-Error“ Problem könnte fol” gendermaßen aussehen: Gegeben ist ein DAG G mit Quelle s und Senke t. Die Frage lautet, ist es möglich ohne eine Kante abzufragen das Zero” Error“ Problem zu lösen? Um dieses Entscheidungsproblem zu lösen, muss man für alle Kanten e überprüfen, ob sie in einem Pfad p liegen, der keinen Pfad q dominiert. Wenn eine solche Kante gefunden wird, dann wird als Antwort NEIN ausgegeben, ansonsten JA. In Abbildung 1 ist ein Beispielgraph, bei dem man das Zero-Error“ Problem ohne eine Kante anzufragen ” lösen kann. Hier ist der rot markierte Pfad der einzige, der keinen anderen Pfad dominiert und nur aus trivialen Kanten besteht. Das komplementäre Problem zum Zero-Error“ Problem ist das Testen, ob eine Kante e in ei” nem Pfad p liegt, der keinen anderen Pfad q dominiert. Dieses Problem liegt in NP, da ein nichtdeterministischer Algorithmus den Pfad p und q erraten kann und nur überprüfen muss, ob der Pfad p den Pfad q dominiert. Damit liegt das Zero-Error“ Problem in co-NP. ” 4 [1,1] [1,2] s [1,1] [1,1] [2,3] t [1,2] Abbildung 1: Ein Beispielgraph, wo man keine Kante anfragen muss. Beweis. Zuerst betrachten wir den Fall, wo eine Kante e in einem Pfad p liegt, der keinen anderen Pfad q dominiert und dann den Fall, wo p von mindestens einem Pfad q dominiert wird. Im ersten Fall müssen wir zeigen, dass wenn die Kante e nicht angefragt wird, Fehler k = 0 nicht garantiert werden kann. Der zweite Fall folgt aus Definition 1. Man stelle sich eine nicht triviale Kante e in einem Pfad p vor, der keinen Pfad q dominiert. Dann gilt für jeden Pfad q, der nicht dieselben nicht trivialen Kanten wie p hat: L ≤ H + δ für beliebiges δ > 0. Man kann δ auch kleiner als die Länge des Intervalls von e wählen. Wenn man jetzt alle Kanten f außer e anfragen würde und als Antwort lf für f in p und als Antwort hf für f nicht in p bekäme, dann würde das resultierende Intervall mindestens das Intervall [L0 , L0 + δ] enthalten, wobei L0 die resultierende Lände des Pfades p ist, wenn man le für e dazu nimmt. Das bedeutet, dass wir in diesem Fall Fehler k = 0 nicht garantieren können, wenn wir die Kante e nicht anfragen. Wenn p irgendeinen Pfad q dominiert, dann kann man p ignorieren, da für alle möglichen Antworten auf Anfragen p nicht kürzer sein kann als q. 2 2.1 Menge P eingeschränkt Damit man das Problem in polynomialer Zeit lösen kann, muss man Einschränkungen an die Menge P stellen. Theorem 3 Wenn die Menge P explizit angegeben ist, dann kann das Zero-Error“ Problem in polynomialer Zeit gelöst werden. ” Beweis. Laut Proposition 2, reicht es aus für jeden Pfad p in P zu testen, ob p irgendein Pfad q in P dominiert. Wenn p keinen Pfad q dominiert, dann müssen alle nicht trivialen Kanten in p angefragt werden. Dazu kann man sich folgenden Algorithmus vorstellen (Algorithm 2.1). 5 Algorithm 2.1 Algorithmus zur Bestimmung der Kantenmenge E 0 // Man geht alle Pfade p aus P durch for all p ∈ P do // und überprüft, ob p keinen Pfad q dominiert for all q ∈ P do if p dominate q then ignore p end if end for query all e ∈ p end for Da, die Pfadmenge P explizit angegeben ist, gehören die Pfade zur Eingabegröße. Damit ist die Menge P polynomial zur Eingabegröße und das Problem kann in polynomialer Zeit gelöst werden. 2 Als nächstes betrachten wir folgende implizite Darstellung der Menge P : Entweder (1) besteht G aus einer einzelnen Kante e = (s, t) und P enthält einen einzelnen Pfad gegeben durch e, oder (2) man hat eine implizite Beschreibung von P 0 für G0 mit Quelle s und Senke t, wobei G0 eine Kante e = (s0 , t0 ) enthält, und eine explizite Darstellung von P 00 für G00 mit Quelle s0 und Senke t0 . Um den Graphen G zu erhalten muss man in G0 Kante e durch G00 ersetzen. Die Pfade P erhält man indem man die Pfade P 0 nimmt und die Vorkommen von e in den Pfaden jeweils durch die Pfade in P 00 ersetzt. Ein Beispiel für einen Graphen mit impliziter Beschreibung ist in Abbildung 2 angegeben. G s t G0 s G00 e = (s0 , t0 ) t s 0 t0 Abbildung 2: Beispiel für einen Graphen mit impliziter Beschreibung. 6 Proposition 4 In der impliziten Beschreibung von P in G, stelle man sich vor, dass jede explizite Beschreibung von P 00 für G00 alle Pfade von G00 enthält. Dann enthält P alle Pfade aus G. Vor allem wenn G ein seriellparalleler Graph ist, dann enthält jeder solcher G00 nur zwei serielle oder parallele Kanten. Damit ergibt sich eine polynomiale Beschreibung für G. Seriell-parallele Graphen sind einfacher als gewöhnliche DAGs zu handhaben, da man zu diesen Graphen immer sehr leicht eine implizite Beschreibung angeben kann. Der Beweis von Proposition 4 ist trivial. Man muss sich dazu überlegen, dass alle Pfade in G den Pfaden in G0 entsprechen. Diese Pfade können natürlich auch durch die spezielle Kante e führen. Damit wäre die Anzahl der Pfade in G00 auch in P enthalten und P würde alle Pfade in G enthalten. Wenn man einen seriell-parallelen Graphen hat, dann kann man ihn auf eine Kante reduzieren indem man wiederholt die G00 Komponenten, die entweder aus zwei parallelen oder seriellen Kanten bestehen, durch eine Kante ersetzt. Theorem 5 Wenn die Menge der Pfade P für G implizit repräsentiert wird, wie es zuvor beschrieben wurde, dann kann man das Zero-Error“ Pro” blem in polynomialer Zeit lösen. Beweis. Nehmen wir an, dass ein Pfad p aus P irgendein Pfad q aus P dominiert. Man kann q so wählen, dass p und q von s bis irgendeinen s0 dieselben Kanten haben, dass sie von s0 bis irgendeinen t0 disjunkt sind und dass sie von t0 bis t dieselben Kanten haben. Auch wenn man einen Graphen, wie in Abbildung 3 hat, kann man q trotzdem so wählen, dass man so ein s0 und t0 , wie zuvor beschrieben findet. Man muss nur einen Abschnitt im Graphen finden, wo L > H ist und den Rest wählt man, so dass p und q gemeinsame Kanten haben. Wenn bei dem Beispiel aus Abbildung 3 L1 > H1 gelten würde, dann würde man s0 = s, t0 = t01 und von t02 bis t Kanten von q gleich den Kanten von p wählen. Der Abschnitt von s bis s0 und von t0 bis t kann auch leer sein. s01 s t01 L1 >H1 ? s02 L2 >H2 ? t02 t Abbildung 3: Beispiel für einen Graphen, wo p (rot markiert) q (grün markiert) dominiert. Nun vereinfacht man den Graphen G indem man wiederholt die G00 Komponenten durch einzelne Kanten ersetzt, bis man eine Komponente G00 7 erhält, die beide Knoten s0 und t0 enthält. Für den Beispiel aus Abbildung 3, würde der vereinfachte Graph wie in Abbildung 4 aussehen. In dieser Komponente G00 , stelle man sich alle Paare der Pfade p00 und q 00 aus P 00 vor; einige solcher Paare entsprechen p und q. s0 t0 t s Abbildung 4: Beispielgraph aus Abbildung 3 nach der Vereinfachung. Man kann nun die Werte L und H für p00 und q 00 bestimmen. Um H zu berechnen wählt man hf für alle Kanten f , die in q 00 aber nicht in p00 sind. Wenn eine solche Kante f einer Subkomponente entspricht, dann muss man den kürzesten Weg in dieser Subkomponente finden, dabei nimmt man hg für jede Kante g in der Subkomponente. Um L zu berechnen, wählt man lf für alle Kanten f 00 die in p00 aber nicht in q 00 sind. Wenn die Kante f einer Subkomponente entspricht, muss man auch hier den kürzesten Weg in dieser Subkomponente finden, dabei nimmt man lg für jede Kante g in der Subkomponente. In den Subkomponenten muss man jedoch nur die Pfade betrachten, die keine anderen Pfade dominieren. Diese Pfade können vorberechnet werden, indem man am Anfang alle Komponenten durchgeht, deren Menge P explizit angegeben ist, und dort überprüft, welche Pfade betrachtet werden müssen. Da in den Komponenten G00 die Menge P 00 explizit angegeben ist und damit zur Eingabe gehört, ist auch hier die Laufzeit polynomial zur Eingabegröße. 2 2.2 Menge P nicht eingeschränkt Nun wollen wir den Fall betrachten, wo die Menge P nicht spezifiziert ist, das bedeutet, dass sie alle Pfade in G enthält. Dadurch ist das Zero-Error“ Pro” blem sogar für sehr speziellen Fall (alle Intervalle [le , he ] sind entweder [0, 0] oder [0, 1]) co-NP-vollständig. Theorem 6 Wenn P alle Pfade aus G enthält und jedes Intervall [le , he ] ist entweder [0, 0] oder [0, 1], dann ist das Zero-Error“ Problem co-NP” vollständig. Im Falle von Einheitskosten ist es innerhalb n1−δ , für beliebiges δ > 0, hart zu approximieren. Vor allem ist es schwer zwischen den Fällen zu unterscheiden, wo es eine Lösung für das Zero-Error“ Problem mit Kosten ” w gibt und wo es keine Lösung mit Fehler höchstens k = nδ1 und Kosten höchsten wnδ2 für alle δ1 , δ2 > 0, die δ1 + δ2 < 1 erfüllen, gibt. 8 Dass das Zero-Error“ Problem bei unbeschränkter Menge P hart zu appro” ximieren ist, bedeutet, dass die Approximation innerhalb des Faktors n1−δ co-NP-hart ist. Beweis. Um zu zeigen, dass das Zero-Error“ Problem co-NP-vollständig ” ist, werden wir zeigen, dass das komplementäre Problem davon NP-vollständig ist. Das bedeutet wir müssen zeigen, dass das Testen, ob eine Kante e in einem Pfad p liegt, der keinen anderen Pfad q dominiert, NP-vollständig ist. Dazu werden wir das 3-Graphfärbeproblem auf das komplementäre Problem reduzieren. Wir konstruieren den DAG aus einem DAG S und einem DAG T wie folgt. Der DAG S hat eine Quelle s und eine Senke s0 , wobei alle Kanten als Intervall [0, 1] haben und der DAG T hat als Quelle t0 und als Senke t, auch hier haben alle Kanten als Intervall [0, 1]. Die Kante e, bei der wir prüfen wollen, ob sie in einem Pfad p liegt, der keinen Pfad q dominiert, geht von s0 nach t0 . Es gibt eine Menge E an Kanten mit Intervall [0, 0], die Knoten in S mit Knoten in T verbinden. Der Pfad p besteht dann immer aus einem Pfad pS aus S von s nach s0 und einen Pfad pT aus T von t0 nach t. Ein solcher Pfad dominiert genau dann keinen anderen Pfad, wenn keine Kante aus E einen Knoten in pS mit einem Knoten in pT verbindet. Sei G eine Instanz des 3-Graphfärbeproblems mit Knoten v1 , . . . , vn und Kanten e1 , . . . , em . Der DAG S hat zusätzlich zu s und s0 die Knoten (vi , 1), (vi , 2) und (vi , 3) für jedes vi in G. Die Kanten in S gehen von jedem (vi , j) zu jedem (vi+1 , j 0 ), außerdem noch die Kanten von s zu jedem (v1 , j) und von (vn , j) zu s0 (siehe Abbildung 5). Der Pfad pS wählt auf diese Weise ein (vi , j) für jedes vi ; das entspricht dann der Wahl der Farbe j für den Knoten vi . Der DAG T hat zusätzlich zu t0 und t die Knoten (el , 1, 1), (el , 2, 1), (el , 3, 1), (el , 1, 2), (el , 2, 2), (el , 3, 2) für jede Kante el in G. Der DAG T hat einen Pfad von t0 nach t, der durch alle (el , j, 1) geht und einen Pfad von t0 nach t, der durch alle (el , j, 2) geht (siehe Abbildung 5). So wählt der Pfad pT ein k in (el, j, k) für jedes el , j. Wenn G eine Kante el = (vi , vi0 ) hat, dann hat E die Kanten ((vi , j), (el , j, 1)) und ((vi0 , j), (el , j, 2)). So kann pT ein k in (el , j, k) für el , j wählen und zwar nur dann wenn vi und vi0 nicht dieselbe Farbe j zugewiesen wurde. Die Kantenmenge E dient dazu für jede Kante sicherzustellen, dass den zwei Knoten der Kante nicht die gleiche Farbe zugewiesen wird. Wenn zwei Knoten dieselbe Farbe zugewiesen wurde, dann dominiert der Pfad p auf jeden Fall einen Pfad q. Denn egal welches k der Pfad pT für el , j wählt, wird auf jeden Fall einer der beiden Knoten ((el , j, 1) oder (el , j, 2)) mit einem der Knoten ((v, j) oder (v 0 , j)) aus dem Pfad pS verbunden sein. Auf diese Weise entspricht die Wahl der Pfade pS , pT dem 3-Graphfärbeproblem von G. Dadurch ist die NP-Vollständigkeit des komplementären Problems und damit auch die co-NP-Vollständigkeit Zero-Error“ Problems bewiesen. ” Jetzt muss noch die Härte der Approximation gezeigt werden. Man kann der Kante e beliebig hohe (Anfrage-)Kosten zuweisen, viel größer als die 9 G v2 v1 el S v1 1 v2 1 s v1 2 v2 2 v1 3 v2 3 vn T vn 1 el 11 vn 2 s0 e el 21 el 31 t 0 t el 12 el 22 el 32 vn 3 Abbildung 5: Konstruktion des DAG zu einem Graphen G. Rote Kanten gehören zu der Kantenmenge E. Summe aller anderen Kosten. Dadurch hätte die Approximation fast genauso hohe Kosten wie die exakte Lösung. Im Falle von Einheitskosten, kann man eine große Zahl an parallelen Kannten für e nehmen, um damit denselben Effekt der hohen Kosten zu erzielen. Wenn parallele Kanten nicht erlaubt sind, dann fügt man einfach zusätzliche Kanten mit der Länge [0, 0] ein. Bei Einheitskosten haben wir m0 Kanten, die von e verschieden sind und mc0 ≈ n Kanten, die e entsprechen. Dadurch folgt eine Härte der Approximation von = n1−δ . mc−1 0 Die strengere Härte der Approximation folgt durch ersetzen der jeweiligen Kanten mit Länge [0, 1] durch einen Pfad von r Kanten der Länge [0, 1]. Somit hat man mr0 Kanten unterschiedlich von e und mc0 r ≈ n Kanten, die e entsprechen. Durch setzen r = nδ1 , mc−1 = nδ−2 und m0 = n1−δ1 −δ2 folgt 0 das Ergebnis. 2 3 Der Unique-Upper-Length“ Fall ” Wir betrachten nun eine andere Probleminstanz. Wir lassen nun Fehler k ≥ 0 zu. Für alle Kanten nehmen wir an, dass die Intervallgrenzen le und he Integer sind. Dadurch brauchen wir auch für k nur Integer zu betrachten. Der Unique-Upper-Length“ Fall ist der Fall, wo es einen Integer H gibt, P ” so dass für alle Pfade p von s nach t, e∈p he = H. Das bedeutet alle s-tPfade haben für die Länge eine einheitliche obere Schranke. Ein Beispiel ist 10 in Abbildung 6 zu sehen. [2, 5] [0, 2] [2, 3] s t [2, 2] [1, 3] [0, 2] Abbildung 6: Beispielgraph für Unique-Upper-Length“ Fall. ” Proposition 7 In dem Unique-Upper-Length“ Fall garantiert eine Aus” wahl an Kantenanfragen E 0 Fehler k, genau dann wenn diese für jeden Pfad von s nach t in P Fehler k garantiert. (Damit ist der Unique-Upper” Length“ Fall in NP.) Wenn man also bei Unique-Upper-Length“ Fall Fehler k garantieren ” will, dann muss man für jeden Pfad Fehler k garantieren, da bei dieser Probleminstanz jeder Pfad der kürzeste sein kann. Ein Algorithmus würde dann alle möglichen Teilmengen, der Kantenmenge durchgehen und für jede Teilmenge überprüfen, ob alle s-t-Pfade Fehler k haben. Fürs Nächste wird angenommen, dass P alle Pfade von s nach t enthält. K ≤ H bezeichnet den Gesamtfehler, wenn kein Intervall angefragt wird. Für den Beispiel aus Abbildung 6 wäre K = 2 − 0 + 5 − 2 = 5. K kann man berechnen indem man für alle Kanten e den le Wert nimmt und die Länge des kürzesten Pfades von s nach t berechnet und diesen Wert von H abzieht. Theorem 8 Der Unique-Upper-Length“ Fall kann für k = 0, 1, K − 1, K ” in polynomialer Zeit gelöst werden. Beweis. Bei Fehler k = K braucht man keine Kanten anzufragen, da K der Gesamtfehler ist, wenn keine Kanten angefragt werden. Hier muss man wie oben beschrieben den Wert K bestimmen. Den kürzesten Weg von s nach t kann man in polynomialer Zeit mit dem Dijkstra-Algorithmus berechnen. Währen bei k = 0 man alle nichttrivialen Kanten anfragen muss und dann wieder mit Hilfe des Dijkstra-Algorithmus den kürzesten Weg bestimmen kann (folgt aus Proposition 7). Sei k = K − 1. In diesem Fall muss man mindestens eine nicht triviale Kante in jedem Pfad p anfragen, so dass die Summe der Längen der Intervalle [le , he ] über Kanten e in p gleich K ist. Wir wählen für alle Kanten e die le Werte und berechnen für jeden Knoten v die Länge lv des kürzesten Pfades von s nach v. Nun können wir K bestimmen: K = H − lt , wobei 11 lt die Länge des kürzesten Pfades von s nach t ist. Die Summe der Längen der Intervalle [le , he ] über die Kanten e = (v, v 0 ) in p ist genau dann gleich K, wenn lv + le = lv0 für alle solche e gilt. In solchen Pfaden müssen wir dann eine Kante anfragen. In allen anderen Pfaden, wo lv + le > lv0 ist, muss keine Kante angefragt werden. Wenn wir jetzt alle Kanten e mit lv + le > lv0 entfernen, dann müssen wir in dem resultierenden Graphen pro Pfad p von s nach t mindestens eine Kante anfragen. Für den Graphen aus Abbildung 6 würde der Restgraphen nur noch aus dem roten Pfad (siehe Abbildung 7) bestehen, da bei den anderen beiden Pfaden die Kanten wegen lv + le > lv0 entfernt wurden. In diesem Restgraphen wollen wir Kanten mit möglichst kleinen Anfragekosten bestimmen. Dieses Problem lässt sich auf das Problem der Berechnung des Schnittes mit minimalen Kosten zwischen s und t übertragen. Bei dem Netzwerkflussproblem geht es darum eine möglichst große Masse von einer Quelle s zu einer Senke t zu befördern. Die Masse, die durch eine Kante durchfließen kann ist durch die Kapazität der Kante beschränkt. Eine Flussfunktion ordnet jeder Kante einen Flusswert zu, der nicht größer als die Kapazität der Kante sein darf. Dabei muss das Flusserhaltungsgesetz eingehalten werden, d.h. die Masse die in einen Knoten hinein fließt muss gleich der Masse, die hinaus fließt, sein. Der Flusswert einer solchen Flussfunktion ist gleich der Masse, die aus dem Knoten s hinaus fließt. Ein Schnitt unterteilt den Graphen in zwei Teile S und T , wobei die Knotenmenge S den Knoten s und die Knotenmenge T den Knoten t enthält. Die Kapazität des Schnittes ist die Summe der Kapazitäten der Kanten, die von einem Knoten in S zu einem Knoten in T führen. Die Anfragekosten der Kanten im DAG würden dann den Kapazitäten der Kanten entsprechen. Man kann beweisen, dass der maximale Fluss gleich dem minimalen Schnitt entspricht (siehe [1] 330ff). Zur Berechnung des maximalen Flusses gibt es effiziente Algorithmen (Ford & Fulkerson), die das Problem in polynomialer Zeit lösen. lv 1 =0 [2, 5] [0, 2] [2, 3] s lv 1 + le >lv t 3 [1, 3] [0, 2] lv 2 lv 3 [2, 2] =1 lv =1 3 l vt = 2 + le >lvt Abbildung 7: Beispielgraph aus Abbildung 6 mit berechneten lv Werten. Kanten, die rot durchgestrichen sind entfallen, da für sie lv + le > lv0 gilt. 12 Als nächstes sei k = 1. In diesem Fall müssen alle Kanten e mit Intervall [le , he ], für die he − le > 1 gilt, angefragt werden. In jedem Pfad p müssen alle außer höchstens einer Kante e mit Intervall [le , he ], für die he − le = 1 gilt, angefragt werden. Um diese Kanten zu bestimmen definieren wir einen assoziierten Graphen G0 , dessen Knoten die Kanten e mit he − le = 1 sind. Eine Kante in G0 geht von e nach e0 , wenn e in irgendeinen Pfad p der Kante e0 direkt vorausgeht (siehe Abbildung 8). Wenn wir uns G0 als transitiv abgeschlossenen Graphen vorstellen, dann würden die Pfade p Cliquen in G0 entsprechen. Ein Graph ist transitiv geschlossen, d.h. wenn es eine Kante a → b und b → c im Graphen gibt, dann muss es auch eine Kante a → c geben. Cliquen sind Knotenmengen in denen jeder Knoten mit jeden durch eine Kante verbunden ist. In jeder solchen Clique muss man alle außer höchstens einer Kante e anfragen, z.B. so dass die angefragten Kanten einen Vertex Cover in G0 bilden. Ein Vertex Cover ist eine Knotenmenge S ⊆ V , so dass für alle Kanten e = (v, w) mindestens einer der Knoten v, w in der Menge S ist. Dieser Vertex Cover soll minimal sein, damit man Kanten mit minimalen Kosten anfragen muss. Da das Problem minimalen Vertex Cover zu finden NP-vollständig ist, müssen wir eine Transformation an unserem assoziierten Graphen vornehmen. G [0,1] s [1,2] e2 [1,2] [1,2] e2 t e5 e4 e1 G0 [0,3] e3 e3 Clique e1 e5 Abbildung 8: Beispielgraph G und der assoziierte Graph G0 . Die gestrichelten Pfeile in G0 sind dazugefügt worden, um sich G0 als transitiv abgeschlossenen Graphen vorzustellen. Wir stellen uns vor, e habe eingehende Kanten aus A und ausgehende Kanten nach B im Graphen G0 . Wir ersetzen e durch zwei Knoten e1 , e2 , so dass e1 eingehende Kanten aus A und e2 ausgehende Kanten nach B hat (siehe Abbildung 9). Dadurch wird beim Vertex Cover höchstens einer von e1 , e2 ausgewählt, da der Vertex Cover entweder alle aus A oder alle aus B auswählen muss. Die Wahl von e im Vertex Cover entspricht Vertex Cover, der e1 oder e2 auswählt; und umgekehrt. Wenn man diese Transformation 13 für jedes e anwendet, dann hat jeder Knoten e1 nur eingehende Kanten und jeder Knoten e2 nur ausgehende Kanten. Somit ist der Graph ein bipartiter (zweigeteilter) Graph mit Knoten e1 auf der einen Seite und Knoten e2 auf der anderen. Im bipartiten Graphen entspricht Vertex Cover minimaler Größe einem maximalen Matching. Man kann das Matchingproblem auf das Netzwerkflussproblem reduzieren, indem man zusätzlich zwei Knoten s und t hinzufügt und die Knoten auf der Seite mit ausgehenden Kanten mit s und die Knoten auf der anderen Seite mit t verbindet. Alle Kanten bekommen 1 als Kapazität. Auf diese Weise kann man Vertex Cover minimaler Kosten bestimmen, indem man den maximalen Fluss oder minimalen Schnitt berechnet. Auch hier geht das in polynomialer Zeit. e12 e11 e22 e21 minimaler Schnitt t s e32 e31 e52 e51 Abbildung 9: bipartiter Graph übertragen auf das Netzwerkflussproblem. 2 3.1 NP-Vollständigkeit des Unique-Upper-Length“ Falls und ” Härte der Approximation Wir haben in dem Kapitel zuvor gesehen, dass für k = 0, 1, K − 1, K der Unique-Upper-Length“ Fall in polynomialer Zeit gelöst werden kann. Wir ” werden nun zeigen, dass es für k = 2, . . . , K − 2 nicht mehr in polynomialer Zeit geht. Theorem 9 Der Unique-Upper-Length“ Fall ist NP vollständig und in” nerhalb 1 + δ für beliebiges δ > 0 hart zu approximieren, wenn 2 ≥ k ≥ K − 2 ≥ H − 2. Dies beinhaltet auch den Fall K = H = 4 und k = 2, sogar wenn (1) alle [le , he ] Intervalle sind [0, 0], [0, 1] oder [0, 2], mit höchstens vier nicht trivialen Intervallen pro Pfad (dieser Fall hat einen 2Approximationsalgorithmus), oder (2) alle [le , he ] Intervalle sind [0, 0], [0, 2] 14 oder [1, 1] mit höchstens drei nicht trivialen Intervallen pro Pfad (dieser Fall hat einen 1,5 Approximationsalgorithmus). Ein 2-Approximationsalgorithmus löst das Problem in polynomialer Zeit, die Kosten seiner Lösung können jedoch doppelt so hoch sein, wie die Kosten der optimalen Lösung. Beweis. Wir beweisen zuerst die zwei oben genannten Spezialfälle. Sei K = H = 4 und k = 2. Die Reduktion folgt vom Vertex Cover für einen Graphen G. Tatsächlich betrachten wir einen Vertex Cover für einen Graphen G0 , den man aus G erhält, indem man jede Kante (v, v 0 ) in G durch einen Pfad (v, x, y, v 0 ) der Länge 3 in G0 ersetzt. Die optimalen Vertex Cover hängen folgendermaßen zusammen: opt(G0 ) = opt(G) + |E(G)|. v1 v1 v2 G x1 y1 v2 x2 v3 G0 x3 y2 y3 v3 Abbildung 10: Beispiel für G und G0 und der Zusammenhang zwischen den Optima. opt(G) = 2, |E(G)| = 3, opt(G0 ) = 5. Wir konstruieren den DAG folgendermaßen. Für jeden Knoten v in G fügen wir einen Knoten v und eine Kante (s, v) mit Intervall [0, 1] im DAG ein. Für jede Kante (v, v 0 ) in G bekommt der DAG zwei zusätzliche Knoten a und b, eine Kante (v, a) mit Intervall [0, 2], die x entspricht, eine Kante (a, t) mit Intervall [0, 1], die y entspricht, eine Kante (v 0 , b) mit Intervall [0, 1] mit sehr hohen Kosten, die nicht angefragt wird und eine Kante (b, a), die für den Fall (1) Intervall [0, 1] mit Null Kosten hat und angefragt wird oder für den Fall (2) Intervall [1, 1] (siehe Abbildung 11). Für die Pfade (s, v, a, t) muss man entweder (v, a) oder (s, v) und (a, t) anfragen, was dem Hinzunehmen der Knoten x oder v und y zum Vertex Cover entspricht. Dadurch werden die zwei Kanten (v, x) und (x, y) überdeckt. Für die Pfade (s, v 0 , b, a, t) muss man entweder (s, v 0 ) oder (a, t) anfragen, die jeweils v 0 und y in G0 entsprechen. Dies entspricht der Überdeckung der Kante (y, v 0 ). Minimaler Vertex Cover in G entspricht somit einer Kantenmenge minimaler Kosten im DAG. Damit ist die Reduktion komplett. Wenn nur Einheitskosten erlaubt sind, dann muss man für Fall (2) viele parallele Pfade (v 0 , b, a) von v 0 nach a einfügen, um hohe Kosten zu simu15 v2 G0 a1 DAG v1 [0, 2] [0, 1] s [0, 1] y1 [0, 2] v2 [0, 1] [0, 1] v3 [0, 1] [0, 1] [1, 1] [0, 1] x1 t b1 a2 v1 [0, 1] x2 [0, 1] [1, 1] y2 b2 v3 Abbildung 11: Beispiel für einen Graphen G0 mit Vertex Cover der Größe 3. Die grünen Kanten im DAG haben sehr hohe Kosten und werden nicht angefragt. Die blauen Kanten haben für Fall (1) Intervall [0, 1] mit Null Kosten und werden angefragt und für Fall (2) Intervall [1, 1]. Die roten Kanten entsprechen den ausgewählten Knoten im Vertex Cover in G0 . lieren. Für Fall (1) muss man ebenso parallele Kanten benutzen und wenn parallele Kanten nicht erlaubt sind, dann Kanten mit Intervall [0, 0] einfügen. Dies weist die NP-Vollständigkeit nach. Für die Härte der Approximation, nimmt man G maximalen Grades d mit d ≥ 3, wo man weiß, dass Vertex Cover innerhalb 1 + δ, für beliebiges δ > 0, hart zu approximieren ist. Dafür könnte man z.B. 5-NodeCover (siehe [2]) nehmen. Wir wissen, dass die Optima r und r0 für G und G0 folgendermaßen zusammenhängen: (1) r0 = r+m, wobei m = |E(G)|. Außerdem gilt die Ungleichung (2) r ≥ m d. d+1 r rd Wenn wir r mit d+1 multiplizieren dann bekommen wir r = d+1 + d+1 . Jetzt nutzen wir die obere Ungleichung aus und setzen sie für r ein und erhalten r rd r m d+1 + d+1 ≥ d+1 + d+1 . Wenn wir die Gleichung (1) benutzen, dann erhalten r rd r m r0 wir: r = d+1 + d+1 ≥ d+1 + d+1 = d+1 . Somit entspricht ein Überschuss von δ δr für den Vertex Cover in G einem Überschuss von d+1 r0 für den Vertex δ 0 Cover in G . Dadurch folgt die Härte innerhalb 1 + d+1 für G0 und damit auch für den DAG mit Quelle s und Senke t. Um jetzt Ergebnisse für beliebiges k, K, H mit 2 ≥ k ≥ K −2 ≥ H −2 zu erhalten, müssen wir einfach nur den DAG, den wir oben konstruiert haben, ein wenig modifizieren. Direkt hinter s fügen wir einen Pfad mit H −K Kanten mit Intervall [1, 1] ein, um damit die Einschränkung K = H aufzulösen. 16 Der Pfad hat außerdem noch K − 4 Kanten mit Intervall [0, 1], von denen k − 2 sehr hohe Kosten haben und nicht angefragt werden und K − k − 2 Null Kosten haben und angefragt werden. Damit sind beliebige k und K erlaubt. Auch hier können unterschiedlich hohe Kosten durch unterschiedliche Anzahl an parallelen Pfaden mit zwei Kanten im Falle von Einheitskosten simuliert werden. Die obere Schranke der Approximation folgt aus Corollary 16. 2 3.2 Approximationsalgorithmen Nun betrachten wir einige Approximationsalgorithmen. Bei einigen Approximationsalgorithmen müssen noch einige Einschränkungen gemacht werden, um gute Approximationsschranken zu erhalten. Theorem 10 Der Unique-Upper-Length“ Fall hat einen (K −k)-Approxi” mationsalgorithmus; und für alle Integer d einen ( kd +d)-Approximationsalgo√ rithmus, vor allem einen (2 k + 1)-Approximationsalgorithmus. Man kann auch einen 2-Approximationsalgorithmus bezüglich des Optimums für ein gegebenes k angeben, wenn man den Fehler k durch 2k ersetzt. Bei dem Fall, wo alle Intervalle [le , he ] die Bedingung he − le ≤ 1 erfüllen, können wir einen HK−k ≤ 1 + log(K − k) Approximationsalgorithmus angeben, wobei P Hv = 1≤i≤v v1 ≤ 1 + log(v); und für alle Integer d einen ( kd + 1 + Hd−1 )Approximationsalgorithmus, vor allem einen (3 + log(k))-Approximationsalgorithmus. Beweis. Zuerst geben wir einen (K −k)-Approximationsalgorithmus an. Sei µ = K −k und sei w die Kosten der optimalen Lösung r0 . Angenommen man habe eine Lösung r gefunden, die den Fehler um λ ≤ µ − 1 reduziert. Man sollte zusätzliche Kanten finden mit Gesamtkosten höchstens w, welche mit der Lösung r kombiniert, den Fehler mindestens um λ + 1 reduziert. Wenn man das höchstens µ mal anwendet, erhält man das Ergebnis. Für jede Kante e in r ersetzen wir nun das Intervall [le , he ] durch [he , he ]. Die zusätzlichen Kanten müssten den Fehler mindestens um 1 reduzieren und eine optimale Lösung des Problems kann man aus Theorem 8 erhalten. Diese optimale Lösung hat Kosten höchstens w, weil die Kanten in r0 und nicht in r zu der Lösung führen und Kosten höchsten w haben. Nun geben wir den ( kd + d)-Approximationsalgorithmus an. Dazu formulieren wir das Problem als ILP (Integer Linear Programming) Problem. Linear Programming wird oft bei linearen Optimierungsproblemen eingesetzt. Man hat meistens ein lineares Ungleichungssystem Ax ≥ (bzw. ≤) b gegeben und sucht einen Lösungsvektor x, der das Ungleichungssystem maximiert (bzw. minimiert). Beim ILP sucht man nach einem Lösungsvektor 17 mit ganzzahligen Komponenten, wobei beim LP die Komponenten reele Zahlen sein können. Da ILP NP-Vollständig ist, formulieren wir eine relaxation. Das bedeutet, dass wir ein Lineares Programm formulieren, das dieselbe Funktion und Constraints hat wie ILP, nur dass die Einschränkung, dass der Lösungsvektor nur ganze Zahlen haben soll, fallen gelassen wird. So können wir das Problem mit einem Polynomialzeit-Algorithmus für das LP Problem lösen. Wir können die Lösung für das LP nicht direkt verwenden, da der Lösungsvektor nicht unbedingt ganzzahlig ist. Man kann jedoch die Tatsache ausnutzen, dass die Lösung des LP nah an der Lösung des ILP liegt. Für jede Kante e führen wir eine Variable 0 ≤ xe ≤ he − le ein. Die Idee ist dabei, dass xe = 0 wenn e angefragt wird und xe = he − le wenn e nicht angefragt wird. Wir wollen, dass der längste Pfad, der die xe Werte verwendet höchstens k wird. Dazu führen wir für jeden Knoten eine Variable yv , die Bedingungen ys = 0, yt ≤ k und für jede Kante e = (v, v 0 ) die Bedingung yv0 ≥ yv + xe ein. Die Funktion, die wir miP e nimieren wollen ist e we (1 − hex−l ). Sei w der Wert des Optimums den e wir mit einem LP-Löser bekommen. Wenn wir alle Kanten anfragen, für d e die 1 − hex−l ≥ k+d gilt, dann haben wir höchstens k+d d w Kosten. Für jee P den Pfad p von s nach t gilt außerdem (1) e∈p xe ≤ k. Jetzt müssen wir noch bestimmen, wie hoch der Fehler für einen Pfad p nach den Anfragen maximal werden kann. Für jede Kante e in p, die nicht angefragt wird, d e gilt entweder 1 − hex−l < k+d oder (2) he − le < k+d k xe . Wir müssen alPe 0 so gucken wie groß e∈E / 0 ,e∈p0 he − le maximal werden kann; wobei p der 0 längste Pfad unter Verwendung der xe Werte ist und E die Kanten, die angefragt wurden, enthält. Wegen (2) können wir folgende Ungleichungskette P k+d P k+d P e∈E / 0 ,e∈p0 he − le < k e∈E / 0 ,e∈p0 xe ≤ k e∈p0 xe aufstellen. Wenn wir (1) in den letzten Teil der Ungleichungskette einsetzen, dann bekommen wir P k + d und damit ist e∈E / 0 ,e∈p0 he − le ≤ k + d − 1. Also ist die Summe der Intervallängen he − le über Kanten e in p, die nicht angefragt werden höchstens k + d − 1. Daher müssen wir den Fehler noch um d − 1 reduzieren. Wenn wir die Intervalle, der zuvor angefragten Kanten durch [he , he ] ersetzen, wird es nochmal höchstens (d − 1)w kosten. Die Gesamtkosten würden k damit ( k+d d + d − 1)w = ( d + d)w betragen. Wenn wir es zulassen Fehler k durch 2k zu ersetzen, dann können wir leicht einen Approximationsalgorithmus mit Faktor 2 bekommen, indem wir d = k setzen. Nehmen wir an, dass alle Intervalle [le , re ] die Bedingung re − le ≤ 1 erfüllen. Wir geben nun den HK−k -Approximationsalgorithmus an. Sei µ = K − k und sei w die Kosten der optimalen Lösung r0 . Angenommen wir haben eine Lösung r gefunden, die den Fehler um λ ≤ µ − 1 reduziert. Man müsste zusätzliche Kanten finden mit Gesamtkosten höchstens wv für v = µ − λ, welche kombiniert mit der Lösung r den Fehler um mindestens λ + 1 reduzieren. Dies höchstens µ mal angewandt führt zum Ergebnis. 18 Für jede Kante e in r ersetzen wir das Intervall [le , he ] durch [he , he ]. Die zusätzlichen Kanten müssten den Fehler im neuen Graphen um mindestens 1 reduzieren und eine optimale Lösung für dieses Problem erhält man aus Theorem 8. Jetzt müssen wir nur noch zeigen, dass diese optimale Lösung höchstens wv kostet. Die Kanten in r0 und nicht in r verringern den Fehler in diesem Graphen um mindestens v; diese Kanten werden wir mit r1 bezeichnen. Nun weisen wir jeder Kante e den Wert le zu und berechnen für jeden Knoten v die Länge lv des kürzesten Pfades von s nach v. Eine Lösung muss mindestens eine nicht triviale Kante in jedem Pfad p anfragen, so dass jede nicht triviale Kante e = (v, v 0 ) in p die Bedingung lv0 − lv = le erfüllt. Dazu kann man einfach in jedem Pfad p alle Kanten e für die lv0 − lv < le gilt entfernen. Nun hat jeder Pfad p mindestens v Kanten in r1 , so dass man die Kanten in r1 in v Gruppen unterteilen kann und jede Gruppe einen Schnitt bildet: die i-te Gruppe enthält alle Kanten, die früher als die i-te Kante aus r1 in beliebigem Pfad p erscheint. Somit setzt eine solche Gruppe den Schnitt mit höchstens wv Kosten fort. Die optimale Lösung aus Theorem 8 hat dann höchstens wv Kosten. Den ( kd +1+Hd−1 )-Approximationsalgorithmus erhält man aus den zuvor beschriebenen Algorithmen. Man braucht k+d d Kosten, um den Fehler durch Lineare Programmierung auf höchstens k+d−1 zu reduzieren. Dann hat man Hd−1 w Kosten um den Fehler mit dem zuvor beschriebenen Algorithmus auf k zu reduzieren. 2 3.3 Unique-Upper-Length“ Fall auf seriell-parallelen Gra” phen Theorem 11 Der Unique-Upper-Length“ Fall hat auf seriell-parallelen ” Graphen einen (1 + δ)-Approximationsalgorithmus und einen exakten Polynomialzeit-Algorithmus, wenn k durch ein Polynom begrenzt ist. Beweis. Wir berechnen eine optimale Lösung auf G für alle möglichen k 0 ≤ k. Wenn G aus zwei parallelen Graphen G1 , G2 besteht, dann muss es eine Lösung für k 0 auf beiden Graphen, G1 und G2 , geben. Wenn G aus zwei seriellen Graphen G1 und G2 besteht, dann muss es eine Lösung für k1 auf G1 und eine Lösung k2 auf G2 mit k1 +k2 = k 0 geben. Man könnte alle solche Unterteilungen von k 0 ausprobieren. Das Ergebnis folgt durch Induktion auf der Struktur von G, wenn k durch ein Polynom beschränkt ist. Kommen wir zu dem Fall, wo k nicht durch ein Polynom beschränkt ist. Dazu gehen wir nach der Branch & Bound Methode vor. Wir nehmen einen Approximationsfaktor von 1 + nδ und machen eine Binärsuche für alle möglichen Werte für k 0 . Wenn die Lösungen für zwei aufeinander folgende Werte von k 0 um einen Faktor höchstens 1 + nδ abweichen, dann stoppen wir immer die jeweilige Abzweigung der Binärsuche. Damit bleibt die Anzahl 19 an Lösungen polynomial. Wenn die Lösungen für G1 und G2 kombiniert werden, um die Lösung für G zu erhalten, kann es durchaus vorkommen, dass die Anzahl der Lösungen die man für G bekommt größer ist. Man kann sie jedoch reduzieren indem man wieder einen anderen Faktor von 1 + nδ hinzuzieht. Da die Graphen höchstens n mal kombiniert werden, ist der Gesamtfaktor höchstens (1 + nδ )n ≈ 1 + δ. Man sollte hier beachten, dass der spezielle Fall, wo der seriell-parallele Graph nur aus einem einzelnen Pfad besteht, dasselbe ist, wie das Rucksackproblem (siehe [5]); und damit NP-vollständig. Hier wären die Intervallängen he − le die Kapazitäten der Objekte und die Anfragekosten ce wären die Gewinne der Objekte. Man würde hier also nach Objekten suchen, die die Gesamtkapazität nicht überschreiten und den Gewinn maxiP mieren ( e∈P he − le ≤ k). Diese Objekte würden dann einer Kantenmenge entsprechen, die wir nicht anfragen. Die übrigen Kanten würden wir dann anfragen, da sie minimale Anfragekosten haben und Fehler k garantieren. Der Fall, wo die Menge P explizit angegeben ist und nicht alle Pfade von G enthält, ist härter. 2 3.4 Unique-Upper-Length“ Fall mit explizit angegebener ” Pfadmenge P In diesem Kapitel werden wir zeigen, dass bei explizit angegebenen Menge P der Unique-Upper-Length“ Fall so hart wie (k + 1)-Hypergraph Vertex ” Cover zu approximieren ist. Der k-Hypergraph Vertex Cover ist der allgemeinere Fall vom Vertex Cover. Ein k-uniformer Hypergraph H = (V, E) besteht aus einer Knotenmenge V und einer Menge E mit Hyperkanten, die jeweils k Knoten haben. Ein Vertex Cover aus H ist eine Teilmenge S ⊆ V , so dass jede Hyperkante in E die Teilmenge S schneidet. Der k-Hypergraph Vertex Cover ist innerhalb k − δ für δ ≥ 2 hart zu approximieren (siehe [4]). Theorem 12 Für eine gegebene Menge P der Pfade in G mit Intervallen [le , he ] gegeben durch [0, 0], [0, 1] oder [1, 1], ist der Unique-Upper” Length“ Fall so hart wie (k+1)-Hypergraph Vertex Cover zu approximieren, selbst wenn k = K − 1 ist. Mit beliebigen Intervallen [le , he ] hat das Problem einen (k+1)-Approximationsalgorithmus. Beweis. Sei R eine Instanz des (k +1)-Hypergraph Vertex Covers bestehend aus n Knoten und jede Hyperkante habe k +1 Knoten. Wir konstruieren nun einen DAG bestehend aus einem Pfad der Länge n, wo wir jede Kante durch zwei parallele Kanten mit Intervallen [0, 1] und [1, 1] ersetzen. Auch hier kann man zusätzliche Kanten mit Intervall [0, 0] benutzen, wenn parallele Kanten nicht erlaubt sind. Jede Kante auf dem Pfad der Länge n entspricht einem Knoten im Hypergraphen. Für jede Hyperkante wählt man einen Pfad im 20 DAG. Dabei wird die Kante [0, 1] ausgewählt, wenn der entsprechende Knoten zu der Hyperkante gehört, ansonsten wird die Kante [1, 1] ausgewählt. Die Menge P enthält dann nur die Pfade, die den Hyperkanten im Hypergraphen entsprechen. Eine Lösung muss mindestens eine Kante in jedem Pfad anfragen. Dadurch wird zu jeder Hyperkante ein Knoten abgedeckt (in Abbildung 12 ist ein Beispiel für k = 1). Damit entspricht es einem Vertex Cover im Hypergraphen. v1 e1 v2 e2 e3 s [0, 1] [0, 1] [0, 1] [1, 1] [1, 1] [1, 1] t v3 Abbildung 12: Beispiel für einen 2-Hypergraphen und den entsprechenden DAG. Die rot markierten Kanten sind die Kanten, die angefragt werden und entsprechen den Knoten im Vertex Cover des Hypergraphen. Den (k + 1)-Approximationsalgorithmus bekommt man hier durch LPrelaxation. Auch hier führen wir für jede Kante e eine Variable 0 ≤ xe ≤ he − le ein, wobei xe = 0 wenn e angefragt wird und xe = he − le wenn e nicht P angefragt wird. Für jeden Pfad p in P muss e∈p xe ≤ k sein. Die Funktion, P e die wir minimieren wollen ist e we (1− hex−l ). Sei w der Wert des Optimums e den wir mit einem LP-Löser bekommen. Wenn wir alle Kanten anfragen, für 1 e ≥ k+1 gilt, dann haben wir höchstens (k + 1)w Kosten. Für die 1 − hex−l e 1 e jede Kante e in p, die nicht angefragt wird, gilt entweder 1 − hex−l < k+1 e oder he − le < k+1 k xe . Damit ist die Summe der Intervallängen he − le über Kanten e in p, die nicht angefragt werden höchstens k. 2 4 Der allgemeine Fall Wir betrachten nun den allgemeinen Fall. Das bedeutet wir haben beliebiges k ≥ 0 und beliebige Intervalle [le , he ]. Proposition 13 Eine Auswahl anzufragender Kanten garantiert Fehler k genau dann wenn für jeden Pfad p in P es einen Pfad q in P (q = p möglich) gibt, derart dass H −L+x ≤ k gilt. Hierbei ist H die Summe der he über alle Kanten e in q, aber nicht in p, L ist die Summe der le über alle Kanten e in p und nicht in q und x ist die Summe der Intervalllängen he −le über Kanten e in p und in q, die nicht angefragt werden. (Damit ist der allgemeine Fall in ΣP2 ). 21 Wenn wir für den Pfad p einen Pfad q finden, so dass die Bedingung H − L + x ≤ k gilt und q = p ist, dann bedeutet es, dass die Summe der Intervalllängen he − le über Kanten e in p, die nicht angefragt werden, höchstens k ist. Damit wäre für den Pfad p der Fehler höchstens k. Für den Fall, wo q 6= p ist und die beiden Pfade keine gemeinsamen nicht trivialen Kanten haben, verlangt die Bedingung H − L + x ≤ k, dass der Unterschied zwischen der oberen Schranke des Pfades q und der unteren Schranke des Pfades p nicht größer als k ist. Dadurch wird sichergestellt, dass man einen Intervall mit Breite höchstens k identifizieren kann, der garantiert die Länge des kürzesten Pfades enthält. Wenn die beiden Pfade gemeinsame nicht triviale Kanten haben, dann verlangt die Bedingung H − L + x ≤ k wie im oberen Fall, dass der Unterschied zwischen den Schranken nicht zu groß ist dazu kommt aber noch der Fehler der gemeinsamen nicht trivialen Kanten, die nicht angefragt werden. In Abbildung 13 sieht man einen Beispielgraphen, wo für den allgemeinen Fall Fehler k garantiert wird, wenn man die blaue Kante anfragt. Für den roten Pfad ist der entsprechende Pfad q der grüne Pfad, so dass H −L+x ≤ k gilt. Und für den grünen Pfad gibt es nur den Pfad selbst, der die Bedingung erfüllt. Da für jeden Pfad in dem Graphen einen Pfad gibt, so dass die Bedingung erfüllt wird, wird hier Fehler k garantiert. [0, 1] [1, 2] s [1, 2] [1, 2] t [1, 3] Abbildung 13: Beispiel für einen DAG, wo für den allgemeinen Fall Fehler k garantiert wird. Hierbei sei k = 2. Die blaue Kante gehört zu den Kanten, die angefragt werden sollen. Um die Klasse ΣP2 zu verstehen muss man wissen, was eine OrakelTuringmaschine ist. Eine Orakel-Turingmaschine ist eine Turingmaschine, die während der Berechnung das Orakel befragen kann, indem sie ein Eingabewort auf das Orakelband schreibt. Das Orakel kann es dann in einem Schritt entscheiden. Dadurch kann eine deterministische Turingmaschine Probleme aus NP in polynomialer Zeit lösen. Die Polynomialzeithierarchie wird mit Hilfe der drei Symbole ∆i , Σi und Πi definiert. Für diese Symbole gilt: ∆P0 := ΣP0 := ΠP0 := P , wobei P die Menge aller in Polynomialzeit lösbaren Entscheidungsprobleme ist. Für i ≥ 0 definiert man: P ∆Pi+1 := P Σi P ΣPi+1 := N P Σi 22 P ΠPi+1 := coN P Σi . Vor allem gilt: ΣP1 = N P und ΠP1 = coN P . P Das bedeutet ΣP2 ist gleich N P Σ1 = N P N P . N P N P ist die Menge aller Probleme, die sich von einer nichtdeterministischen Turingmaschine in polynomialer Zeit entscheiden lassen, die zur Lösung jedoch ein Orakel benutzen kann, das in der Lage ist ein Problem aus NP zu entscheiden. Eine Entscheidungsvariante für den allgemeinen Fall würde wie folgt aussehen: als Eingabe hat man einen DAG, einen Wert C, der die maximalen Kosten für die Anfragen repräsentiert und einen Präzisionsparameter k. Man stellt als Frage, ob es möglich ist Fehler k zu garantieren ohne mehr als C Anfragekosten zu investieren. Der Algorithmus, der dieses Problem löst würde folgendermaßen vorgehen: 1. errate nichtdeterministisch eine Kantenmenge 2. überprüfe, ob für jeden Pfad p ∈ P ein Pfad q ∈ P existiert, so dass H − L + x ≤ k gilt 3. wenn für jeden Pfad p es einen solchen Pfad q gibt, dann gib JA aus, sonst NEIN Im zweiten Schritt muss man alle Pfade durchgehen und überprüfen, ob es einen Pfad q gibt, so dass die Bedingung aus Proposition 13 gilt. Diesen Schritt kann man auf keinen Fall deterministisch in polynomialer Zeit durchführen. Mit Hilfe eines Orakels könnte man jedoch den Pfad q immer erraten und braucht dann nur die Bedingung zu überprüfen. Daher lässt sich das Problem mit einer nichtdeterministischen Turingmaschine nur mit einem Orakel in polynomialer Zeit lösen. Somit liegt das Problem in ΣP2 . Beweis. Nehmen wir an, es gibt einen Pfad, so dass H − L + x > k für jeden Pfad q gilt. Für die Anfragen der Kanten e in p nehmen wir le als Antwort und für alle anderen Kante f nehmen wir he als Antwort. Sei L0 die minimale mögliche Länge auf p. Dann ist für jeden Pfad q die maximale mögliche Länge mindestens L0 + (H − L) + x > L0 + k. Damit können wir aber nicht mehr Fehler k garantieren, denn das Intervall wäre in diesem Fall breiter als k. In Abbildung 14 ist ein Beispiel, wo es einen Pfad p (der grüne Pfad) gibt, so dass für jeden Pfad q die Bedingung H − L + x > k ist. Wenn wir die Anfrage der blauen Kante mit he beantworten, dann ist die minimale mögliche Länge auf p gleich L0 = 2 und für den Pfad q (roter Pfad) wäre die maximale mögliche Länge L0 + (H − L) + x = 2 + 2 + 1 = 5. Damit hat der Intervall [2, 5] also Breite größer als k. Jetzt betrachten wir die umgekehrte Richtung und nehmen nun an, dass für jeden Pfad p es einen Pfad q gibt, sodass H − L + x ≤ k. Nach den Anfragen ist die minimale mögliche Länge eines kürzesten Pfades gleich der minimalen möglichen Länge L0 für irgendeinen Pfad p. Für das Beispiel in Abbildung 13, wäre L0 = 2. Die maximale mögliche Länge für den entsprechenden Pfad q ist höchstens L0 + (H − L) + x ≤ L0 + k. Das Intervall des 23 [0, 1] [1, 2] s [1, 2] [0, 2] t [1, 3] Abbildung 14: Beispiel für einen DAG, wo es für den grünen Pfad keinen Pfad q gibt, so dass H − L + x ≤ k. Hier ist ebenfalls k = 2. kürzesten Pfades wäre damit höchstens k breit. Für das Beispiel wäre die obere Schranke für den kürzesten Pfad L0 + (H − L) + x = 2 + 0 + 2 = 4 und damit wäre das Intervall [2, 4] nicht breiter als k. 2 4.1 Approximationsalgorithmen für den allgemeinen Fall Da der allgemeine Fall schwer zu lösen ist, betrachten wir auch hier einige Approximationsalgorithmen unter verschiedenen Einschränkungen. Wir betrachten zuerst die Einschränkung der Menge P . Wir nehmen an, dass jeder Pfad in P höchstens r nicht trivialen Kanten enthält. Theorem 14 Wenn jeder Pfad in P höchstens r nicht triviale Kanten enthält, dann ist das Problem genauso leicht und hart zu approximieren, wie r-Hypergraph Vertex Cover mit r = O(logn); vor allem hat es einen r-Approximationsalgorithmus. Beweis. Die Härte der Approximation wurde bereits in Theorem 12 gezeigt, wo r = k + 1 war. Für die Leichtigkeit betrachten wir jeden Pfad p. Für eine Kantenauswahl X, die in dem Pfad p angefragt werden soll, kann man für jeden Pfad q berechnen, ob H − L + x > k gilt (siehe Proposition 13). Wenn diese Bedingung für alle q zutrifft, dann müssen zumindest einige nicht triviale Kanten, die in p aber nicht in X liegen, angefragt werden, damit die Bedingung H − L + x ≤ k wenigstens für einen Pfad q gilt. Dies liefert eine Menge von höchstens r nicht trivialen Kanten, da jeder Pfad in P maximal r nicht triviale Kanten enthält. Damit müssen auch höchstens r nicht triviale Kanten abgedeckt werden, was eine entsprechende Hyperkante höchstens der Größe r definieren würde. Für die Wahl von X, die man für p betrachten muss, gibt es höchstens 2r Möglichkeiten. Das ist dann polynomial zur Eingabegröße n. 2 Theorem 15 Wenn die nicht triviale Kanten im Graphen r Farben haben, so dass in jedem Pfad p aus P die Farbe der nicht trivailen Kanten 24 unterschiedlich ist, dann ist das Problem genauso leicht und hart zu approximieren, wie r-Hypergraph Vertex Cover mit r = O(logn); vor allem hat es einen 2r -Approximationsalgorithmus. Beweis. Sei R eine Instanz des r-partiten Hypergraph Vertex Covers mit r Teilen Ri . Wir konstruieren nun einen DAG bestehend aus einem Pfad der Länge r, wobei die ite Kante durch |Ri | parallele Kanten mit Intervall [0, 1] der Farbe i ersetzt wird. Jede Hyperkante in R entspricht damit einem Pfad im DAG, da es für jedes i ein Element aus Ri auswählt. In Abbildung 15 sieht man einen Beispiel für einen 2-partiten 2-Hypergraph Vertex Cover. Hier entspricht jede Kante im bipartiten Graphen einem Pfad im DAG (z.B. der grün markierte Pfad und Kante). Wenn man k = r − 1 setzt, dann muss in jedem Pfad mindestens eine Kante angefragt werden. Dadurch wird sichergestellt, dass jede Hyperkante abgedeckt wird. Daraus folgt die Härte der Approximation. R1 s R2 [0, 1] [0, 1] [0, 1] t [0, 1] [0, 1] Abbildung 15: Beispiel für einen 2-partiten 2-Hypergraph Vertex Cover. Die Leichtigkeit kann man so ähnlich wie in Theorem 14 zeigen. Die Hyperkanten entsprechen hier nicht trivialen Kanten in p und nicht in X, für beliebiges X. Dadurch haben sie alle Elemente unterschiedlicher Farben, z.B. Elemente in unterschiedlichen Teilen Ri des r-partiten Hypergraphen. 2 Corollary 16 Wenn P alle Pfade in G enthält und jeder solcher Pfad höchstens r nicht triviale Kanten besitzt, dann hat das Problem einen 2r Approxi-mationsalgorithmus, wenn r eine Konstante ist. Den Fall r = 2 kann man exakt lösen. (Der Fall r = 3 ist NP-hart zu approximieren innerhalb 1 + δ für beliebiges δ > 0.) Beweis. Jeder nicht trivialen Kanten e weisen wir eine Farbe i zu, welches das maximale i ist, so dass e als i-te nicht triviale Kante in einem Pfad p 25 erscheint. Es sind höchstens r Farben und alle nicht triviale Kanten in jedem Pfad p haben unterschiedliche Farben (siehe Abbildung 16). [2, 3] [1, 2] [0, 1] s [0, 1] [1, 1] [0, 1] [1, 2] [1, 2] t Abbildung 16: Beispielgraph mit höchstens r nicht trivialen Kanten pro Pfad. Die Wahl von maximal r nicht trivialer Kanten für einen Pfad p kann man sich als Berechnung von p vorstellen, da wir die übrigen trivialen Kanten so wählen, dass die Länge des Pfades minimiert wird. Damit ist die Anzahl der zu betrachtenden Pfade in O(mr ). Die Härte für r = 3 wurde bereits in Theorem 9 gezeigt. 2 4.2 Allgemeiner Fall auf Bi-trees Als nächstes betrachten wir Bi-trees. Ein Bi-tree ist ein seriell-paralleler Graph, der aus zwei Bäumen besteht. Ein Baum S mit Wurzel s und Kanten, die von der Wurzel nach unten orientiert sind und ein Baum T mit Wurzel t und Kanten, die zur Wurzel hin orientiert sind. Die Blätter des Baums S stimmen mit den Blättern in T überein (siehe Abbildung 17). t s Abbildung 17: Beispiel für ein Bi-tree. Rot markierte Knoten sind die gemeinsamen Blätter von S und T . 26 Theorem 17 Bi-trees haben einen (1 + δ)-Approximationsalgorithmus für alle δ > 0 und einen exakten Polynomialzeit-Algorithmus, wenn k durch ein Polynom beschränkt ist. Beweis. Stellen wir uns die optimale Lösung vor und betrachten einen seriell-parallelen Subgraphen G0 des vorgegebenen Bi-trees, der durch einen Subbaum, der als Wurzel irgendein s0 des Baums mit Wurzel s hat und einen Subbaum, der als Wurzel irgendein t0 des Baums mit Wurzel t hat, gegeben ist. Die Pfade p, die durch G0 gehen und deren entsprechendes q, das die Bedingung H − L + x ≤ k aus Proposition 13 erfüllt, nicht durch G0 geht, können durch eine untere Schranke L0 bestimmt werden. Sie ist gleich der Summe der le Werte über Kanten e der Pfade p in G0 . Damit sind es höchstens n verschiedene Szenarien, wo die Pfade p, die durch G0 gehen und das entsprechende q ebenfalls in G0 haben. Wenn die Menge solcher p nicht leer ist, dann muss die Summe x0 der he − le für die nicht angefragten Kanten von s nach s0 oder von t0 nach t die Bedingung x0 ≤ k erfüllen. Damit hätte man insgesamt kn Szenarien für jedes solche G0 . Jedes solche G0 bekommt man indem man zwei parallele G1 , G2 kombiniert oder indem man ein G01 nimmt, der s01 ,t01 als Quelle und Senke hat, und entweder eine Kante (s0 , s01 ) oder eine Kante (t01 , t0 ) hinzufügt. Die optimale Lösung für jedes Szenario für G erhält man aus der optimalen Lösung für die Szenarien für G01 im letzten Fall oder für die Szenarien für beide G01 ,G02 im vorherigen Fall. Wegen gegebenen x0 ist es leicht zu bestimmen, welche Pfade q in G01 für die Pfade p in G02 zuständig sind und umgekehrt. Nun betrachten wir den Fall, wo k durch keinen Polynom beschränkt ist. Hier gehen wir ähnlich wie im Beweis von Theorem 11 vor und nehmen in jedem Schritt einen Approximationsfaktor von 1 + nδ , so dass der Gesamtfaktor höchstens (1 + nδ )n ≈ 1 + δ ist. Auch hier ist es, so dass der spezielle Fall, wo der Bi-tree aus einem einzelnen Pfad besteht, dasselbe ist wie das Rucksackproblem und damit NP-vollständig. 2 Literatur [1] C. Baier. InfoIV Skript SS04. 2004. [2] P. Berman and M. Karpinski. On some tighter inapproximability results. Di-macs technical report 99-23., 1999. [3] T. Feder, R. Motwani, L. O’Callaghan, C. Olston, and R. Panigrahy. Computing shortest paths with uncertainty. In Proceedings of the Twentieth International Symposium on Theoretical Aspects of Computer Science., 2003. 27 [4] S. Khot and O. Regev. Vertex cover might be hard to approximate to within 2 − . In In Proc. of 18th IEEE Annual Conference on Computational Complexity (CCC)., pages 379–386, 2003. [5] C. Olston and J. Widom. Offering a precision-performance tradeoff for aggregation queries over replicated data. In Proceedings of the TwentySixth International Conference on Very Large Data Bases., 2000. 28