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