Uncertain Shortest Path

Werbung
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
Herunterladen