Hu`s 2-Warenfluss Theorem

Werbung
Fakultät für Elektrotechnik, Informatik und Mathematik
Hu’s 2-Warenfluss Theorem
WS 2007/2008
von
Jaroslaw Klose
Betreuer
Prof. Dr. Friedrich Eisenbrand
24. Januar 2008
1 Einleitung
2
1 Einleitung
In dieser Ausarbeitung wird ein Beweis für Hu’s 2-Warenfluss Theorem geführt. Es werden im
Wesentlichen die Schritte aus [Sc] Kapitel 70 Seiten 1251-1254 wiedergegeben. Hierbei wird
für den Beweis das Rothschild-Whinston Theorem benutzt, das auch an dieser Stelle wie in [Sc]
bewiesen wird.
Als Erstes werden wir die Problemstellung ausarbeiten.
Gerichtete Graphen
Hu’s 2-Warenfluss Theorem bezieht sich auf ungerichtete Graphen, viele Definitionen basieren
jedoch auf gerichteten Graphen, daher werden wir diese zunächst einführen. Gerichtete Graphen
bestehen aus einer Knotenmenge V und einer Kantenmenge A. Wobei jedes a ∈ A eine Orientierung hat. Diese Orientierung wird im Graphen mit einem Pfeil gekennzeichnet. Ein Beispiel für
einen solchen Graphen sehen wir in Abbildung 1.
Abbildung 1: Beispiel für einen gerichteten Graphen
Für u, v ∈ V bezeichnet uv die Kante von v nach u mit der Orientierung zu u.
In der gesamten Ausarbeitung gehen wir von verbundenen Graphen aus.
Um die Menge der eingehenden und ausgehenden Kanten zu unterscheiden, benötigen wir
zwei Definitionen:
1.1 Definition (δin
A (v), die zu v inzidenten, eingehenden Kanten aus A).
δin
A (v) := {a|a ∈ A ∧ a ist eingehende Kante, die zu v inzident ist}
Analog für ausgehende Kanten:
1.2 Definition (δout
A (v), die zu v inzidenten, ausgehenden Kanten aus A).
δout
A (v) := {a|a ∈ A ∧ a ist ausgehende Kante, die zu v inzident ist}
1 Einleitung
3
Nun können wir einen Fluss auf dem Graphen D definieren:
1.3 Definition (s − t Fluss auf D). Sei D = (V, A) ein gerichteter Graph und seien s,t ∈ V . Eine
Funktion g : A → R heißt s − t Fluss, wenn:
g(a) ≥ 0
∀a ∈ A
in
g(δout
A (v)) = g(δA (v)) ∀v ∈ V \ {s,t}
Wir können nun eine für den Beweis des Theorems entscheidende Funktion definieren:
1.4 Definition (excessg (v)). Sei D = (V, A) ein gerichteter Graph, sei v ∈ V und g : V → R. Dann
ist excessg (v) definiert durch:
out
excessg (v) := g(δin
A (v)) − g(δA (v))
Der Wert des Flusses wird vom Knoten s bestimmt:
1.5 Definition (Wert eines s −t Flusses value(g)). Der Wert eines s −t Flusses g ist definiert als:
in
value(g) = g(δout
A (s)) − g(δA (s))
excessg (v) gibt also für eine Funktion g an, wie sich die eingehenden Waren zu den ausgehenden Waren verhalten. Wenn wir uns an die Definition eines s − t Flusses erinnern, muss
excessg (v) = 0 ∀v ∈ V \ {s,t} gelten, falls g ein Fluss ist. Außerdem gilt excessg (s) = value(g).
Da zwischen allen Knoten von s nach t der Fluss erhalten bleibt, folgt sofort: excessg (t) =
− value(g). Wie man sieht, gilt die auch die Umkehrung, wenn zusätzlich g(a) ≥ 0 ∀a ∈ A
angenommen wird. Denn dann ist die zweite Bedingung, aus der Definition eines Flusses, automatisch erfüllt. Wenn zusätzlich excessg (s) = value(g) gilt, hat der Fluss den Wert value(g).
excessg (t) = − value(g) folgt automatisch aus den anderen Bedingungen. Dieses halten wir in
folgendem Lemma fest:
1.6 Lemma. Sei g : A → R+ eine Funktion, sei D = (V, A) ein gerichteter Graph und seien
s,t ∈ V . Falls excessg (v) = 0 ∀v ∈ V \ {s,t} und excessg (s) = d für ein d ∈ R+ gilt, ist g ein s −t
Fluss mit dem Wert d.
Nun können wir, im nächsten Unterabschnitt, einen Warenfluss auf ungerichteten Graphen
definieren.
Warenfluss
Zunächst werden wir uns verdeutlichen, wobei es sich um einen Warenfluss handelt. Wie der
Name schon verrät, wird der Fluss von Waren modelliert. Die Waren fließen auf einem ungerichteten Graphen G. Dieser Graph besteht aus Knoten V und Kanten E, also G = (V, E). In
Abbildung 2 sehen wir ein Beispiel für einen solchen Graphen. Man spricht in diesem Zusammenhang auch vom versorgenden Graphen.
Analog zu gerichteten Graphen definieren wir δE (v).
1 Einleitung
4
Abbildung 2: Beispiel für einen versorgenden Graphen
1.7 Definition (δE (v), die zu v inzidenten Kanten aus E).
δE (v) := {e|e ∈ E ∧ e ist zu v inzident}
Damit wir von einem Warenfluss sprechen können, müssen in dem Graphen Quellen und Senken gekennzeichnet werden, zwischen denen ein Warenfluss erfolgen soll. Diese Knoten werden
als Terminale bezeichnet. Wir kennzeichnen in unserem Graphen die Quellen mit Kreisen und
die Senken mit Quadraten. Ein Beispiel hierfür ist in Abbildung 3 zu sehen. Zu einer Quelle si
gehört immer eine Senke ti , diese beiden Knoten müssen verschieden sein. Nicht zusammengehörende Quellen und Senken müssen nicht verschieden sein.
Abbildung 3: Beispiel mit gekennzeichneten Quellen (Kreise) und Senken (Quadrate)
Nun können wir den Graphen mit zusätzlichen Kanten versehen, diese Kanten beschreiben,
von welcher Quelle zu welcher Senke Waren fließen sollen. Das Ergebnis ist in Abbildung 4 zu
sehen.
1 Einleitung
5
Abbildung 4: Beispiel mit eingezeichneten Anforderungen
Diese Anforderungen können wir in einem speziellen Graphen darstellen, dem Anforderungsgraphen H = (T, R). Die Knoten T von H sind die Terminale aus V , es gilt also T ⊆ V . Die Kantenmenge R von H beschreibt die Anforderungen. Jede Kante aus R steht für einen Warenfluss,
diese Kanten werden als Netze bezeichnet. Für k = |R| sprechen wir von einem k-Warenfluss.
Wenn die Netze als s1t1 , . . . , sk tk gelistet sind, werden die Indizes 1, . . . , k als Waren bezeichnet.
Den Anforderungsgraphen zu unserem Beispiel aus Abbildung 4 sehen wir in Abbildung 5. In
Abbildung 4 ist dementsprechend die Vereinigung der Kanten des Anforderungsgraphen H und
des versorgenden Graphen V zu sehen, also der Graph (V, E + R).
Abbildung 5: Anforderungsgraph des Beispiels
Da wir hier von ungerichteten Graphen sprechen, müssen wir definieren worum es sich bei
einem Fluss auf einem ungerichteten Graphen handelt. Diese Flüsse werden auf den gerichteten
Fall zurückgeführt:
1 Einleitung
6
1.8 Definition (s − t Fluss auf G). Sei G = (V, E) ein ungerichteter Graph. Für s,t ∈ V ist eine
Funktion g : E → R+ ein s − t Fluss auf G, wenn ein gerichteter Graph D = (V, A) existiert,
wobei a ∈ A aus einer Kante e ∈ E durch Orientieren entsteht, und g ein s − t Fluss in D ist.
Nun können wir auf einem Graphen den Fluss von k Waren von Quellen zu Senken modellieren. Es fehlt noch die Möglichkeit Warenmengen anzugeben. Hierzu benötigen wir eine
Kapazitätsfunktion für die Kanten aus E, diese beschreibt wie viele Waren maximal über diese
Kanten geleitet werden können. Wir erhalten die Funktion c : E → R+ . Zusätzlich benötigen wir
die Funktion d : R → R+ , sie beschreibt die Warenmengen, die über den Graph geleitet werden
sollen. di ∈ R+ bezeichnet die Anforderungen für die Ware i, also di := d(siti ).
Mit der Definition für di definieren wir nun die Funktion pi :
1.9 Definition. Sei D = (V, A) ein gerichteter Graph und d eine Anforderungsfunktion. pi : V →
R ist definiert durch:


falls v = si
di
pi (v) := −di falls v = ti


0
sonst
1.10 Bemerkung. Mit Hilfe des Lemmas 1.6 sehen wir sofort, dass falls für eine Funktion g :
E → R+ excessg (v) = pi ∀v ∈ V gilt, g ein si − ti Fluss mit dem Wert di ist.
Wir werden k Flüsse betrachten, daher definieren wir zuerst einen Multifluss.
1.11 Definition (Multifluss). Eine Funktion f : E → Rk+ ist ein Multifluss, wenn fi ein si − ti
Fluss in G ∀(siti ) ∈ R, i = 1, . . . , k, ist.
Der Wert eines Multiflusses wird über den Wert der einzelnen Flüsse definiert.
1.12 Definition (Multifluss mit dem Wert d). Sei d eine Anforderungsfunktion. Ein Multifluss
f ist ein Multifluss mit dem Wert d, wenn value( fi ) = di ∀i = 1, . . . , k gilt.
Interessant sind Multiflüssen, die die gegebene Kapazitätsfunktion c nicht verletzen. Diese
werden wir zunächst definieren:
1.13 Definition (Multifluss gemäß c). Zu einer gegebenen Kapazitätsfunktion c : E → R+ ist f
ein Multifluss gemäß c, wenn
k
∑ fi (e) ≤ c(e) ∀e ∈ E
i=1
erfüllt ist.
Wenn auch die Anforderungen von d erfüllt sind, sprechen wir von einem zulässigen Multifluss:
2 Schnitt- und Euler-Bedingung
7
1.14 Definition (Zulässiger Multifluss). Gegeben sei ein versorgender Graph G = (V, E), ein
Anforderungsgraph H = (T, R) , wobei T ⊆ V , eine Kapazitätsfunktion c : E → R+ und eine
Anforderungsfunktion d : R → R+ .
Ein Multifluss f gemäß c mit dem Wert d wird als zulässiger Multifluss bezeichnet.
Nun können wir leicht mit den eingeführten Begriffen das Warenflussproblem definieren.
1.15 Definition (k-Warenflussproblem). Gegeben: Ein versorgender Graph G, ein Anforderungsgraph H = (T, R), mit |R| = k, eine Kapazitätsfunktion c und eine Anforderungsfunktion
d
Gesucht: Ein zulässiger Multifluss f
Ein k-Warenflussproblem ist zulässig, wenn ein zulässiger Multifluss existiert.
Diese Definition können wir auf ganzzahlige Werte einschränken:
1.16 Definition (Ganzzahliges k-Warenflussproblem). Gegeben: Ein versorgender Graph G, ein
Anforderungsgraph H = (T, R), mit |R| = k, eine Kapazitätsfunktion c : E → Z+ und eine Anforderungsfunktion d : R → Z+
Gesucht: Ein zulässiger Multifluss f mit fi (e) ∈ Z+ ∀e ∈ E, für i = 1, . . . , k
2 Schnitt- und Euler-Bedingung
Bevor wir das Rothschild-Whinston Theorem formulieren können, benötigen wir noch zwei
wichtige Eigenschaften: Die Schnittbedingung und die Euler-Bedingung.
Schnittbedingung
In diesem Unterabschnitt wird zunächst die Schnittbedingung formuliert. Anschließend werden
wir zeigen, dass es sich um eine notwendige Bedingung für die Existenz eines zulässigen Multiflusses handelt. Außerdem kann durch eine leichte Modifikation des Graphen ein bestimmter
Fluss mit Hilfe der Schnittbedingung garantiert werden. Dieser Fluss wird beim Beweis vom
Rothschild-Whinston Theorem eine wichtige Rolle spielen.
2.1 Definition (Schnittbedingung). Sei G = (V, E) ein versorgender Graph und H = (T, R) ein
Anforderungsgraph, die Schnittbedingung ist erfüllt, falls
c(δE (U)) ≥ d(δR (U)) ∀U ⊆ V
gilt.
Die Schnittbedingung setzt also die Kapazitäten der Kanten aus V mit den Anforderungen
aus R in Verbindung. Nun können wir uns ein wichtige Eigenschaft überlegen, die sich aus
dieser Bedingung ergibt. Für jede Teilmenge U ⊆ V wird gefordert, dass die Kapazitäten der
2 Schnitt- und Euler-Bedingung
8
Kanten aus E mindestens so groß sind wie die Anforderungen zu den Terminalen in V \ U.
Da dieses für alle Teilmengen gilt, gilt es insbesondere für den minimalen Schnitt und dieser
gibt wiederum den maximalen Fluss an (nach Max-Flow Min-Cut Theorem [Sc] Kapitel 10.2).
Daher garantiert die Schnittbedingung, dass ein maximaler Fluss gemäß den Anforderungen
existiert, für jedes Netz und auch für Kombinationen von Netzen. Somit ist sofort klar, dass die
Schnittbedingung erfüllt ist, falls ein zulässiger Multifluss f existiert. Die Schnittbedingung ist
daher eine notwendige Bedingung für einen zulässigen Multifluss. Es gilt:
2.2 Lemma. Seien G = (V, E) ein versorgender Graph, H = (T, R) ein Anforderungsgraph,
wobei T ⊆ V , c : E → R+ eine Kapazitätsfunktion und d : R → R+ eine Anforderungsfunktion.
Falls ein zulässiger Multifluss f existiert, ist die Schnittbedingung erfüllt.
Nun liegt es nahe, dass die Schnittbedingung auch hinreichend sein könnte, dies gilt im Allgemeinen jedoch nicht. Hierzu sehen wir ein Gegenbeispiel in Abbildung 6. Der Graph erfüllt zwar
die Schnittbedingung, es existiert aber kein zulässiger Multifluss. Hierbei sind die Kapazitäten
und Anforderungen jeweils 1. Die Schnittbedingung liefert zwar einen Fluss für jede Ware, sie
stellt jedoch nicht sicher, dass auch gleichzeitig geleitet werden kann, ohne die Kapazitäten zu
verletzen.
s1= t3
s4
s2= t1
t4
s3= t2
Abbildung 6: Beispiel für einen Graphen mit erfüllter Schnittbedingung, ohne einen zulässigen
Multifluss
Die Graphen G0 und G00
Wir beschränken uns nun auf den Fall k = 2, also das 2-Warenfluss Problem. Wir nehmen an,
dass der Graph G = (V, E) die Schnittbedingung erfüllt. Wir bilden den Graphen G0 , hierbei wird
der Graph G um zwei neue Knoten erweitert, s0 und t 0 . Der Knoten s0 wird mit den Terminalen
s1 und s2 verbunden und der Knoten t 0 mit den Terminalen t1 und t2 . Die Kante s0 si erhält die
Kapazität di , also c(s0 si ) = di und analog c(t 0ti ) = di für i = 1, 2. In Abbildung 7 sehen wir den
Graphen G0 .
Wir hatten uns überlegt, dass die Schnittbedingung in G einen maximalen Fluss zwischen den
2 Schnitt- und Euler-Bedingung
d1
9
t2
s1
s'
d2
t'
G
d2
d1
s2
t1
Abbildung 7: Der Graph G0
k
Quellen und Senken mit der Kapazität ∑ di garantiert. Wir haben nun jeweils die Quellen und
i=1
Senken an den Knoten s0 beziehungsweise t 0 zusammengeführt. Die Kanten haben dabei jeweils
die Kapazität des geforderten Flusses di , daher existiert in G0 ein s0 − t 0 Fluss mit der Kapazität
d1 +d2 . Da der minimale Schnitt weiterhin mindestens d1 +d2 ist. Wir fassen diese Beobachtung
in folgendem Lemma zusammen:
2.3 Lemma. Sei G = (V, E) ein versorgender Graph, H = (T, R) ein Anforderungsgraph, c eine
Kapazitätsfunktion und d eine Anforderungsfunktion. Falls die Schnittbedingung auf G erfüllt
ist, existiert eine s0 − t 0 Fluss mit dem Wert d1 + d2 in G0 .
Nun können wir analog einen Graphen G00 definieren. Hierbei wird G um die Knoten s00 und
und Kanten s00 s1 , t1t 00 mit der Kapazität d1 und s00t2 , s2t 00 mit der Kapazität d2 erweitert. In
Abbildung 8 sehen wir den Graphen G00 .
Die Rollen von s2 und t2 werden also vertauscht. Da es sich um einen ungerichteten Graphen
handelt, gilt ein analoges Lemma:
t 00
2.4 Lemma. Sei G = (V, E) ein Graph, H = (T, R) ein Anforderungsgraph, c eine Kapazitätsfunktion und d eine Anforderungsfunktion. Falls die Schnittbedingung auf G erfüllt ist, existiert
eine s00 − t 00 Fluss mit dem Wert d1 + d2 in G00 .
Im nächsten Unterabschnitt werden wir die Euler-Bedingung definieren.
Euler-Bedingung
In diesem Unterabschnitt definieren wir zunächst die Euler-Bedingung. Anschließend werden
wir uns Eigenschaften überlegen, die für den Graphen daraus folgen.
2.5 Definition (Euler-Bedingung). Sei G = (V, E) ein versorgender Graph, H = (T, R) ein Anforderungsgraph, c eine Kapazitätsfunktion und d eine Anforderungsfunktion.
2 Schnitt- und Euler-Bedingung
10
s''
d1
d2
s1
t2
G
s2
t1
d2
d1
t''
Abbildung 8: Der Graph G00
Die Euler-Bedingung auf c und d ist erfüllt, wenn
c(δE (v)) + d(δR (v)) ist gerade ∀v ∈ V
gilt.
/ = 0 gilt, folgt sofort für alle Knoten v, die keine Terminale sind, dass c(δE (v)) gerade
Da d(0)
ist. Für Terminale folgt, dass c(δE (v)) ≡ d(δR (v))(mod 2) gelten muss, da die Summe genau
dann gerade ist. Falls diese beiden Eigenschaften erfüllt sind, ist auch das Kriterium aus 2.5
erfüllt. Daher gilt die Äquivalenz, die wir in nachfolgendem Lemma zusammenfassen:
2.6 Lemma. Die Euler-Bedingung auf c und d ist genau dann erfüllt, wenn die beiden Bedingungen
c(δE (v)) ist gerade ∀v ∈ V \ T
c(δE (t)) ≡ d(δR (t))(mod 2) ∀t ∈ T
erfüllt sind.
2.7 Bemerkung. Wenn wir in einem Graphen sämtliche Kapazitäten und Anforderungen mit einer geraden Zahl multiplizieren, sind alle Anforderungen und Kapazitäten gerade und die EulerBedingung ist automatisch erfüllt, nach Lemma 2.6.
Nun können wir uns eine Eigenschaft für einen s0 − t 0 Fluss nach Lemma 2.3 in G0 überlegen,
wenn zusätzlich die Euler-Bedingung gilt:
2 Schnitt- und Euler-Bedingung
11
2.8 Lemma. Sei G = (V, E) ein versorgender Graph, H = (T, R) ein Anforderungsgraph, c eine
Kapazitätsfunktion und d eine Anforderungsfunktion. Falls die Schnittbedingung und die EulerBedingung auf G erfüllt sind, existiert eine s0 − t 0 Fluss g in G0 mit dem Wert d1 + d2 , für den
gilt:
g(e) ≡ c(e)(mod 2) ∀e ∈ E
Beweis. Lemma 2.3 liefert uns die Existenz eines Flusses mit dem gewünschten Wert. Jetzt
müssen wir uns noch überlegen, warum auch ein Fluss mit der gewünschten Kongruenz existiert.
Man beachte hierbei, dass die Aussage nur für Kanten aus E gilt. Wir werden zeigen, dass die
Anzahl an Kanten, die die Bedingung verletzen an jedem Knoten gerade ist. Dann haben wir
einen verbundenen Teilgraphen, mit einer geraden Anzahl an Kanten pro Knoten. Daher bilden
diese Knoten zusammen mit den inzidenten Kanten Euler-Kreise im Graphen. Wir können dann
einen Warenfluss auf diesen Kreisen erzeugen und so die Kanten reduzieren, die die Bedingung
verletzen. So erhalten wir einen s0 −t 0 Fluss g, der die gewünschte Bedingung erfüllt. Also bleibt
zu zeigen, dass die Anzahl an Kanten, die die Bedingung verletzen pro Knoten immer gerade
ist.
Sei zunächst e ∈ E ein beliebige Kante mit g(e) 6≡ c(e)(mod 2) die zu einem t ∈ T ⊆ V inzident
ist. Da die Euler-Bedingung gilt und vom Knoten si der Fluss di ausgehen muss, da er vom
Knoten s0 eingeht, gilt g(δE (t)) = d(δR (t)). Daraus folgt, dass c(δE (t)) ≡ g(δR (t))(mod 2) gilt.
Wenn also g(e) 6≡ c(e)(mod 2) für ein e gilt, muss auch ein ê existieren, mit g(ê) 6≡ c(ê)(mod 2),
welches die Inkongruenz ausgleicht. Daher ist die Kardinalität der zu einem t ∈ T ⊆ V inzidente
Menge, an solchen Kanten, gerade.
Sei nun e ∈ E ein beliebige Kante mit g(e) 6≡ c(e)(mod 2) die zu einem v ∈ V \ T inzident
ist. Wir nehmen zunächst an, dass g(e) ungerade und c(e) gerade ist. Wenn der ungerade Anteil
des Flusses, der über e in den Knoten hineingeht, über eine Kante ê mit geradem c(ê) ausgeht,
ist die inzidente Menge solcher Kanten gerade. Daher nehmen wir an, dass der ungerade Anteil
des Flusses über eine Kante ê0 mit ungeradem c(ê0 ) hinausgeht. Da c(δE (v)) gerade ist für alle
v ∈ V \ T , muss dieses ungerade c(ê0 ) durch ein zweites ungerades c(ê00 ) ausgeglichen werden.
Damit der Fluss hierbei erhalten bleibt, gilt auch für ê00 , dass g(ê00 ) 6≡ c(ê00 )(mod 2). Somit ist die
inzidente Menge solcher Kanten gerade.
Für den Fall, dass g(e) gerade und c(e) ungerade ist, argumentieren wir analog und erhalten
insgesamt die gewünschte Eigenschaft.
Aufgrund der vertauschten Rollen von s2 und t2 ergibt sich für G00 :
2.9 Lemma. Sei G = (V, E) ein versorgender Graph, H = (T, R) ein Anforderungsgraph, c eine
Kapazitätsfunktion und d eine Anforderungsfunktion. Falls die Schnittbedingung und die EulerBedingung auf G erfüllt sind, existiert eine s00 − t 00 Fluss g in G00 mit dem Wert d1 + d2 , für den
gilt:
g(e) ≡ c(e)(mod 2) ∀e ∈ E
3 Das Rothschild-Whinston Theorem und Hu’s 2-Warenfluss Theorem
12
Nun haben wir die wesentlichen Bestandteile für das Rothschild-Whinston Theorem und Hu’s
2-Warenfluss Theorem zusammengetragen und werden diese im nächsten Abschnitt formulieren.
3 Das Rothschild-Whinston Theorem und Hu’s 2-Warenfluss
Theorem
In diesem Abschnitt wird das Rothschild-Whinston Theorem und Hu’s 2-Warenfluss Theorem
formuliert und bewiesen.
Hu’s Theorem impliziert bei 2-Warenflussproblem auf ungerichteten Graphen, die die Schnittbedingung erfüllen, die Existenz eines zulässigen 2-Warenflusses. Allerdings kann für ganzzahlige 2-Warenflussprobleme nur ein Warenfluss garantiert werden, der auch halbe Waren zulässt.
Rothschild und Whinston [RoWh] erweiterten Hu’s Theorem, indem sie zeigen, dass die Hinzunahme der Eulersche-Bedingung die Existenz eines ganzzahligen 2-Warenflusses bei ganzzahligen 2-Warenflussproblemen garantiert. Hu’s Theorem kann leicht mit Hilfe des RothschildWhinston Theorems bewiesen werden.
Zunächst beweisen wir daher das Rothschild-Whinston Theorem.
3.1 Theorem (Rothschild-Whinston Theorem). Sei G = (V, E) ein Graph, seien s1 ,t1 und s2 ,t2
Paare von Knoten aus G und mögen c : E → Z+ und d1 , d2 ∈ Z+ die Eulersche-Bedingung
erfüllen. Dann existiert ein ganzzahliger 2-Warenfluss gemäß c mit den Werten d1 und d2 genau
dann, wenn die Schnittbedingung erfüllt ist.
Beweis. Die Schnittbedingung ist notwendig für die Existenz eines zulässigen Multiflusses nach
Lemma 2.2. Wir müssen also nur die Umkehrung zeigen. Daher nehmen wir an, dass die Schnittbedingung erfüllt ist.
Wir bilden den gerichteten Graphen D = (V, A). A entsteht indem die Elemente aus E beliebig
orientiert werden. Für alle a ∈ A ist die Kapazität gleich der Kapazität der unterliegenden Kante
aus E.
Nun bilden wir den Graphen G0 . Nach Lemma 2.8 erhalten wir einen s0 − t 0 Fluss g mit dem
Wert d1 + d2 und g(e) ≡ c(e)(mod 2) ∀e ∈ E. Da die Kapazitäten ganzzahlig sind, können wir
annehmen, dass der Fluss auf jeder Kante ganzzahlig ist (nach dem Integrity Theorem [Sc]
Kapitel 10.2 Theorem 10.3a).
Auf dem Graphen D liefert uns g einen Fluss g0 : A → Z. g0 kann so gewählt werden, dass die
folgenden Eigenschaften gelten:
g0 (a) ≡
0
|g (a)| ≤
excessg’ (v) =
c(a)(mod 2) ∀a ∈ A
c(a) ∀a ∈ A
p1 (v) + p2 (v) ∀v ∈ V
Hierbei ist pi für i = 1, 2 definiert wie in Definition 1.9.
3 Das Rothschild-Whinston Theorem und Hu’s 2-Warenfluss Theorem
13
Um die dritte Eigenschaft zu gewährleisten müssen die Vorzeichen von g0 gegenüber g angepasst werden, daher wird bei der zweiten Eigenschaft mit einem Betrag gearbeitet. Die erste und
zweite Eigenschaft ergeben sich ganz natürlich aus g.
Nun bilden wir den Graphen G00 , analog erhalten wir einen s00 −t 00 Fluss mit dem Wert d1 + d2
nach Lemma 2.9. Dieser Fluss liefert uns analog einen Fluss g00 : A → Z der folgende Eigenschaften erfüllt:
g00 (a) ≡
00
|g (a)| ≤
excessg” (v) =
c(a)(mod 2) ∀a ∈ A
c(a) ∀a ∈ A
p1 (v) − p2 (v) ∀v ∈ V
Nun definieren wir die Funktionen f1 := 21 (g0 + g00 ) und f2 := 12 (g0 − g00 ).
f1 und f2 sind ganzzahlig, denn g0 ≡ c ≡ g00 (mod 2).
Wenn wir zeigen können, dass excessfi (v) = pi ∀v ∈ V für i = 1, 2 gilt, bilden | f1 | und | f2 |
Flüsse auf dem Graphen D, nach Bemerkung 1.10. Dann bilden | f1 | und | f2 | Flüsse auf unserem
Graphen G, nach Definition 1.8 eines Flusses auf ungerichteten Graphen. Wir berechen zunächst
excessf1 (v):
excessf1 (v)
1
excessg’ (v) + excessg” (v)
2
1
= (p1 (v) − p2 (v) + p1 (v) + p2 (v))
2
= p1 (v) ∀v ∈ V
=
Analog ergibt sich die Aussage für excessf2 (v). Daher bilden | fi | si − ti Flüsse mit den Werten
di , für i = 1, 2.
Nun müssen wir uns überlegen, dass | f1 (a)| + | f2 (a)| ≤ c(a) ∀a ∈ A gilt. Dies würde bedeuten, dass die beiden Funktionen die Kapazitäten der Kanten nicht verletzen. Zunächst gilt
| f1 (a)| + | f2 (a)| = 21 (| g0 + g00 | + | g0 − g00 |). a und b können jeweils positiv oder negativ sein, es
| {z }
| {z }
a
b
ergeben sich daher 4 Fälle, diese sind in Tabelle 1 zu sehen. Wie wir sehen, gilt für alle 4 Fälle,
dass a+b ≤ max(2|g0 |, 2|g00 |). Insgesamt erhalten wir: | f1 (a)|+| f2 (a)| ≤ 21 (max(2|g0 |, 2|g00 |)) =
max(|g0 |, |g00 |) ≤ c(a) ∀a ∈ A, da |g0 (a)| ≤ c(a) und |g00 (a)| ≤ c(a). Daher werden die Kapazitäten nicht verletzt.
| f1 | und | f2 | bilden einen ganzzahligen Multifluss f mit den Werten d1 und d2 gemäß c. Daher
ist f ein zulässiger 2-Warenfluss.
3.2 Theorem (Hu’s 2-Warenfluss Theorem). Sei G = (V, E) ein Graph, seien s1 ,t1 und s2 ,t2
Paare von Knoten aus G, sei c : E → R+ und seien d1 , d2 ∈ R+ . Dann existiert ein 2-Warenfluss
gemäß c mit den Werten d1 , d2 genau dann, wenn die Schnittbedingung erfüllt ist.
Wenn alle Kapazitäten und Anforderungen ganzzahlig sind, dann existiert ein zulässiger 2Warenfluss mit halben Waren.
3 Das Rothschild-Whinston Theorem und Hu’s 2-Warenfluss Theorem
a
positiv
positiv
negativ
negativ
b
positiv
negativ
positiv
negativ
14
a+b
2g0
2g00
−2g00
−2g0
Tabelle 1: Die vier möglichen Fälle für a + b
Beweis. Nach Lemma 2.2 reicht es die Umkehrung zu zeigen.
Da Q dicht in R liegt, können wir annehmen, dass c, d1 und d2 rationale Werte haben. Dies
liefert uns strenggenommen eine ε-Approximation für das ursprüngliche Problem, für ein beliebig kleines ε > 0. Für eine konkrete Berechnung stellt dies jedoch keine Einschränkung dar.
Die rationalen Werte können wir mit dem kgV der Nenner skalieren und erhalten dann positive ganze Zahlen für c, d1 und d2 . Wenn der kgV ungerade ist, skalieren wir zusätzlich mit 2
um die Euler-Bedingung auf c, d1 und d2 zu erfüllen, nach Bemerkung 2.7. Dann liefert das
Rothschild-Whinston Theorem einen zulässigen Multifluss.
Falls c, d1 und d2 ganzzahlig sind, ist die Euler-Bedingung beim Skalieren mit 2 erfüllt, nach
2.7. Das Rothschild-Whinston Theorem liefert uns dann einen zulässigen Multifluss und somit
einen zulässigen Multifluss mit halben Waren für die ursprünglichen c, d1 und d2 .
Anmerkungen
Das ganzzahlige 2-Warenflussproblem ist nach [EvItSh] NP-vollständig, selbst wenn alle Kapazitäten gleich 1 sind. Für ganzzahlige 2-Warenflussprobleme liefert dass Rothschild-Whinston
Theorem einen Algorithmus zum Bestimmen eines 2-Warenflusses, wenn die Euler-Bedingung
erfüllt ist. Mit Hu’s Theorem erhalten wir, auch ohne die Euler-Bedingung, zumindest einen
2-Warenfluss mit halben Waren.
Um einen solchen Fluss zu bestimmen, werden die Graphen G0 und G00 gebildet, das geht in
polynomieller Zeit. Auf diesen Graphen werden dann die s0 − t 0 bzw. die s00 − t 00 Flüsse gesucht.
Hierfür gibt es polynomielle Algorithmen wie z.B. den Ford-Fulkerson Algorithmus. Falls solche Flüsse gefunden werden, ist automatisch die Schnittbedingung erfüllt, sie braucht also nicht
separat überprüft zu werden. Um g0 und g00 zu erhalten, werden im Wesentlichen für alle Knoten, alle zu ihnen inzidenten Kanten betrachtet. Dies geht auch in polynomieller Zeit. f1 und f2
entstehen durch das Betrachten aller Kanten und können in polynomieller Zeit bestimmt werden.
Sollte die Euler-Bedingung nicht erfüllt sein, ist das Multiplizieren mit 2 und das anschließende Dividieren durch 2 in polynomieller Zeit möglich. Somit kann für ganzzahlige Kapazitäten
und Anforderungen ein zulässiger Multifluss mit halben Waren in polynomieller Zeit gefunden
werden.
Literatur
15
Literatur
[Sc]
A. Schrijver; Combinatorial Optimization - Polyhedra and Efficiency Volume
I-III; Springer-Verlag Berlin Heidelberg (2004)
[RoWh]
B. Rothschild, A. Whinston; Feasibility of two commodity network flows,
Operations Research 14 (1966) Seiten 1121–1129
[EvItSh]
S. Even, A. Itai, A. Shamir; On the complexity of timetable and multicommodity flow problems, SIAM Journal on Computing 5 (1976) Seiten 691–703
Herunterladen