c NASA (earthasart.gsfc.nasa.gov/ganges.html) Algorithmische Graphentheorie Sommersemester 2014 2. Vorlesung Flüsse Prof. Dr. Alexander Wolff Gewinnmaximierung Sie sind Chef einer kleinen Firma, die zwei Produkte P1 und P2 herstellt. Produzieren Sie x1 Einheiten P1 und x2 Einheiten P2 , so beträgt Ihr Gewinn in e G (x1 , x2 ) = 30x1 + 50x2 Ihre Produktion läuft auf drei Maschinen MA , MB und MC mit folgenden Kapazitäten: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 Welche Wahl von (x1 , x2 ) maximiert Ihren Gewinn? Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 Lösung x2 150 100 50 0 0 50 100 150 200 x1 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 Lösung x2 150 100 50 0 0 50 100 150 200 x1 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 Lösung x2 150 100 50 0 0 50 100 150 200 x1 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 Lösung x2 150 100 50 0 0 50 100 150 200 x1 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lösung x2 150 100 50 0 0 50 100 150 200 x1 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lösung x2 150 100 50 0 0 50 100 150 200 x1 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lösung x2 150 100 50 Menge der zulässigen Lösungen 0 0 50 100 150 200 x1 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lösung x2 150 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 100 50 Menge der zulässigen Lösungen 0 0 50 100 150 200 x1 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lösung x2 150 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 100 50 Menge der zulässigen Lösungen 0 0 50 100 150 200 x1 Lösung x2 150 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 100 1.5 50 00 e Menge der zulässigen Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Lösung x2 150 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 100 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 00 e 1.5 50 00 e Menge der zulässigen Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Lösung x2 150 4.5 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 00 e 1.5 50 00 e Menge der zulässigen Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Lösung x2 150 4.5 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 00 e 1.5 50 00 e Menge der zulässigen Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Lösung x2 150 4.5 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 00 e 1.5 50 00 e Menge der zulässigen Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Lösung x2 150 4.5 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 00 e 1.5 50 00 e Menge ∂ MA ∩ ∂ MB = der zulässigen Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Lösung x2 150 4.5 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 110 Menge ∂ MA ∩ ∂ MB = 40 der zulässigen Lösungen 00 e 1.5 50 00 e 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Lösung x2 150 4.5 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 00 e 1.5 50 00 e Menge G (110, 40) = der zulässigen Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Lösung x2 150 4.5 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 00 e 1.5 50 00 e Menge G (110, 40) = 5.300 der zulässigen Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Lösung x2 150 5.3 00 4.5 e 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 00 e 1.5 50 00 e Menge G (110, 40) = 5.300 der zulässigen Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Lösung x2 150 5.3 00 4.5 e 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 00 e 1.5 50 00 e Menge G (110, 40) = 5.300 der zulässigen Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Lösung x2 150 5.3 00 4.5 e 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 00 e 1.5 50 00 e Menge G (110, 40) = 5.300 der zulässigen Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Ax ≤ b Lösung x2 150 5.3 00 4.5 e 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 00 e 1.5 50 00 e Menge G (110, 40) = 5.300 der zulässigen Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Ax ≤ b x ≥0 Lösung x2 150 5.3 00 4.5 e 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Lineare Zielfunktion: G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 00 e 1.5 50 00 e Menge G (110, 40) = 5.300 der zulässigen Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Ax ≤ b x ≥0 Lösung x2 150 5.3 00 4.5 e 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Ax ≤ b x ≥0 Lineare Zielfunktion: maximiere c T x G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 00 e 1.5 50 00 e Menge G (110, 40) = 5.300 c der zulässigen Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Lösung x2 150 5.3 00 4.5 e 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Ax ≤ b x ≥0 Lineare Zielfunktion: maximiere c T x G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 00 e 1.5 50 00 e Menge G (110, 40) = 5.300 = maximaler Wert der Zielc der zulässigen funktion unter Beschränk. Lösungen 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Lösung x2 150 5.3 00 4.5 e 00 100 e 3.0 Lineare Beschränkungen: MA : 4x1 + 11x2 ≤ 880 MB : x1 + x2 ≤ 150 MC : x2 ≤ 60 x1 ≥ 0 x2 ≥ 0 Ax ≤ b x ≥0 Lineare Zielfunktion: maximiere c T x G (x1 , x2 ) = 30x1 + 50x2 = (30, 50) xx12 00 e 1.5 50 00 e Menge G (110, 40) = 5.300 = maximaler Wert der Zielc der zulässigen funktion unter Beschränk. Lösungen = max{c T x | Ax ≤ b, x ≥ 0} 0 0 50 100 150 200 x1 Iso-Gewinn-Line“: orthogonal zu 30 50 ” Lineares Programmieren I Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn Gesucht: Lineares Programmieren I Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn Gesucht: x ? ∈ Rn Lineares Programmieren I Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Lineares Programmieren I Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Satz. [Dantzig, 1947] Der Simplex-Algorithmus löst lineare Programme. Lineares Programmieren I Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Satz. [Dantzig, 1947] Der Simplex-Algorithmus löst lineare Programme. c Lineares Programmieren I Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Satz. [Dantzig, 1947] Der Simplex-Algorithmus löst lineare Programme. c Satz. [Klee & Minty, 1972] Es gibt Beispiele, auf denen der Simplex-Algorithmus exponentielle Zeit benötigt. Lineares Programmieren II Satz. Leonid Khachiyan *1952 Leningrad †2005 South Brunswick, NJ [Khachiyan, 1979] Ein Lineares Programm der Dim. n lässt sich in O (L2 · n6 ) Zeit lösen. Lineares Programmieren II Satz. Leonid Khachiyan *1952 Leningrad †2005 South Brunswick, NJ [Khachiyan, 1979] Ein Lineares Programm der Dim. n lässt sich in O (L2 · n6 ) Zeit lösen., wobei L = Anz. Bits in der Eingabe. Lineares Programmieren II Satz. Leonid Khachiyan *1952 Leningrad †2005 South Brunswick, NJ Ellipsoidmethode [Khachiyan, 1979] Ein Lineares Programm der Dim. n lässt sich in O (L2 · n6 ) Zeit lösen., wobei L = Anz. Bits in der Eingabe. Lineares Programmieren II Satz. Leonid Khachiyan *1952 Leningrad †2005 South Brunswick, NJ Ellipsoidmethode [Khachiyan, 1979] Ein Lineares Programm der Dim. n lässt sich in O (L2 · n6 ) Zeit lösen., wobei L = Anz. Bits in der Eingabe. Lineares Programmieren II Satz. Leonid Khachiyan *1952 Leningrad †2005 South Brunswick, NJ Ellipsoidmethode [Khachiyan, 1979] Ein Lineares Programm der Dim. n lässt sich in O (L2 · n6 ) Zeit lösen., wobei L = Anz. Bits in der Eingabe. Lineares Programmieren II Satz. Leonid Khachiyan *1952 Leningrad †2005 South Brunswick, NJ Ellipsoidmethode [Khachiyan, 1979] Ein Lineares Programm der Dim. n lässt sich in O (L2 · n6 ) Zeit lösen., wobei L = Anz. Bits in der Eingabe. Lineares Programmieren II Satz. Leonid Khachiyan *1952 Leningrad †2005 South Brunswick, NJ Ellipsoidmethode [Khachiyan, 1979] Ein Lineares Programm der Dim. n lässt sich in O (L2 · n6 ) Zeit lösen., wobei L = Anz. Bits in der Eingabe. Lineares Programmieren II Satz. Leonid Khachiyan *1952 Leningrad †2005 South Brunswick, NJ Ellipsoidmethode [Khachiyan, 1979] Ein Lineares Programm der Dim. n lässt sich in O (L2 · n6 ) Zeit lösen., wobei L = Anz. Bits in der Eingabe. Lineares Programmieren II Satz. Ellipsoidmethode [Khachiyan, 1979] Ein Lineares Programm der Dim. n lässt sich in O (L2 · n6 ) Zeit lösen., wobei L = Anz. Bits in der Eingabe. Leonid Khachiyan *1952 Leningrad †2005 South Brunswick, NJ Narendra Karmarkar *1957 Gwalior, Indien Satz. [Karmakar, 1984] Ein Lineares Programm der Dim. n lässt sich in O (L2 · n3.5 ) Zeit numerisch stabil lösen. Lineares Programmieren II Satz. Ellipsoidmethode [Khachiyan, 1979] Ein Lineares Programm der Dim. n lässt sich in O (L2 · n6 ) Zeit lösen., wobei L = Anz. Bits in der Eingabe. Leonid Khachiyan *1952 Leningrad †2005 South Brunswick, NJ Narendra Karmarkar *1957 Gwalior, Indien Satz. Innere-Punkt-Methode [Karmakar, 1984] Ein Lineares Programm der Dim. n lässt sich in O (L2 · n3.5 ) Zeit numerisch stabil lösen. Lineares Programmieren II Satz. Ellipsoidmethode [Khachiyan, 1979] Ein Lineares Programm der Dim. n lässt sich in O (L2 · n6 ) Zeit lösen., wobei L = Anz. Bits in der Eingabe. Leonid Khachiyan *1952 Leningrad †2005 South Brunswick, NJ Narendra Karmarkar *1957 Gwalior, Indien Satz. Innere-Punkt-Methode [Karmakar, 1984] Ein Lineares Programm der Dim. n lässt sich in O (L2 · n3.5 ) Zeit numerisch stabil lösen. Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn c Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn c Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn c Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn häufig {0, 1}n Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn c Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn c Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Problem. Geg. Graph G = (V , E ) c Ges. Knotenüberdeckung, d.h. V 0 ⊆ V , so dass jede Kante mind. einen Endpunkt in V 0 hat. Ziel: |V 0 | minimal! Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Problem. Geg. Graph G = (V , E ) c Ges. Knotenüberdeckung, d.h. V 0 ⊆ V , so dass jede Kante mind. einen Endpunkt in V 0 hat. Ziel: |V 0 | minimal! Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Problem. Geg. Graph G = (V , E ) c Ges. Knotenüberdeckung, d.h. V 0 ⊆ V , so dass jede Kante mind. einen Endpunkt in V 0 hat. Ziel: |V 0 | minimal! Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Problem. Geg. Graph G = (V , E ) c Ges. Knotenüberdeckung, d.h. V 0 ⊆ V , so dass jede Kante mind. einen Endpunkt in V 0 hat. Ziel: |V 0 | minimal! Aufgabe. Modellieren Sie dieses Problem als ILP! Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Problem. Geg. Graph G = (V , E ) c Ges. Knotenüberdeckung, d.h. V 0 ⊆ V , so dass jede Kante mind. einen Endpunkt in V 0 hat. Ziel: |V 0 | minimal! Aufgabe. Modellieren Sie dieses Problem als ILP! Verwenden Sie für jeden Tipp. Knoten v eine Variable xv ∈ {0, 1}, mit xv = 1 ⇔ v ∈ V 0 Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Problem. Geg. Graph G = (V , E ) c Ges. Knotenüberdeckung, d.h. V 0 ⊆ V , so dass jede Kante mind. einen Endpunkt in V 0 hat. Ziel: |V 0 | minimal! Modell. Für v ∈ V sei xv ∈ {0, 1}. Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Problem. Geg. Graph G = (V , E ) c Ges. Knotenüberdeckung, d.h. V 0 ⊆ V , so dass jede Kante mind. einen Endpunkt in V 0 hat. Ziel: |V 0 | minimal! Modell. Für v ∈ V sei xv ∈ {0, 1}. Ziel: Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Problem. Geg. Graph G = (V , E ) c Ges. Knotenüberdeckung, d.h. V 0 ⊆ V , so dass jede Kante mind. einen Endpunkt in V 0 hat. Ziel: |V 0 | minimal! Modell. Für v ∈ V sei xv ∈ {0, 1}. P Ziel: minimiere v ∈V xv Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Problem. Geg. Graph G = (V , E ) c Ges. Knotenüberdeckung, d.h. V 0 ⊆ V , so dass jede Kante mind. einen Endpunkt in V 0 hat. Ziel: |V 0 | minimal! Modell. Für v ∈ V sei xv ∈ {0, 1}. P Ziel: minimiere v ∈V xv Beschränkungen: Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Problem. Geg. Graph G = (V , E ) c Ges. Knotenüberdeckung, d.h. V 0 ⊆ V , so dass jede Kante mind. einen Endpunkt in V 0 hat. Ziel: |V 0 | minimal! Modell. Für v ∈ V sei xv ∈ {0, 1}. P Ziel: minimiere v ∈V xv Beschränkungen: für jede Kante uv ∈ E fordern wir xu + xv ≥ 1. Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Problem. Geg. Graph G = (V , E ) c Ges. Knotenüberdeckung, d.h. V 0 ⊆ V , so dass jede Kante mind. einen Endpunkt in V 0 hat. Ziel: |V 0 | minimal! Für v ∈ V sei xv ∈ {0, 1}. Modell. P Ziel: minimiere v ∈V xv 0-1-ILP Beschränkungen: für jede Kante uv ∈ E fordern wir xu + xv ≥ 1. Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Problem. Geg. Graph G = (V , E ) c überdeckung, Ges. Knoten NPd.h. V 0 ⊆ V , so dass schwer jede Kante mind. einen 0 Endpunkt in V hat. Ziel: |V 0 | minimal! Für v ∈ V sei xv ∈ {0, 1}. Modell. P Ziel: minimiere v ∈V xv 0-1-ILP Beschränkungen: für jede Kante uv ∈ E fordern wir xu + xv ≥ 1. Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Problem. Geg. Graph G = (V , E ) c überdeckung, Ges. Knoten NPd.h. V 0 ⊆ V , so dass schwer jede Kante mind. einen 0 Endpunkt in V hat. Ziel: |V 0 | minimal! Für v ∈ V sei xv ∈ {0, 1}. Modell. P Ziel: minimiere v ∈V xv 0-1-ILP Beschränkungen: ⇓ für jede Kante uv ∈ E fordern wir xu + xv ≥ 1. Ganzzahlige lineare Programmierung (ILP) Gegeben: A ∈ Rm×n , b ∈ Rm , c ∈ Rn ≥ häufig {0, 1}n oder arg min Gesucht: x ? ∈ Rn mit x ? = arg max{c T x | Ax ≤ b , x ≥ 0} Zn x ∈ Zn Problem. Geg. Graph G = (V , E ) c überdeckung, Ges. Knoten NPd.h. V 0 ⊆ V , so dass schwer jede Kante mind. einen 0 Endpunkt in V hat. Ziel: |V 0 | minimal! Für v ∈ V sei xv ∈ {0, 1}. Modell. P Ziel: minimiere v ∈V xv 0-1-ILP Beschränkungen: ⇓ für jede Kante uv ∈ E NPfordern wir xu + xv ≥ 1. schwer Ein Transportproblem Ihre Firma möchte eine möglichst große Menge einer Ware von einer Quelle s zu einem Ziel t transportieren. Aufgrund bestehender Transport-Kapazitäten (z.B. Kapazitäten der LKW-Flotte) kann nur eine begrenzte Menge (siehe Kantengewichtung) der Ware pro Transportabschnitt (Kante) transportiert werden. Welche Menge pro Tag können Sie zum Großkunden senden? 16 s v1 4 13 v 2 12 v3 9 14 20 t 7 v4 4 Modellierung durch Flüsse Def. Sei G = (V , E ) ein gerichteter Graph mit s , t ∈ V. Eine Funktion f : E → R≥0 heißt s -t -Fluss ( Fluss“), ” wenn für jeden Knoten v ∈ V \ {s , t } gilt X X f (uv ) − f (v w ) = 0. {u ∈V |uv ∈E } 16 s {w ∈V |v w ∈E } v1 4 13 v 2 12 v3 9 14 20 t 7 v4 4 Modellierung durch Flüsse Def. Sei G = (V , E ) ein gerichteter Graph mit s , t ∈ V. Eine Funktion f : E → R≥0 heißt s -t -Fluss ( Fluss“), ” wenn für jeden Knoten v ∈ V \ {s , t } gilt X X f (uv ) − f (v w ) = 0. {u ∈V |uv ∈E } | {w ∈V |v w ∈E } {z } Zuflussf (v ) 16 s v1 4 13 v 2 | {z Abflussf (v ) 12 v3 9 14 20 t 7 v4 4 } Modellierung durch Flüsse Def. Sei G = (V , E ) ein gerichteter Graph mit s , t ∈ V. Eine Funktion f : E → R≥0 heißt s -t -Fluss ( Fluss“), ” wenn für jeden Knoten v ∈ V \ {s , t } gilt X X f (uv ) − f (v w ) = 0. {u ∈V |uv ∈E } | {w ∈V |v w ∈E } {z } Zuflussf (v ) | | {z Abflussf (v ) {z } Nettozuflussf (v ) 16 s v1 4 13 v 2 12 v3 9 14 } 20 t 7 v4 4 Modellierung durch Flüsse Def. Sei G = (V , E ) ein gerichteter Graph mit s , t ∈ V. Eine Funktion f : E → R≥0 heißt s -t -Fluss ( Fluss“), ” wenn für jeden Knoten v ∈ V \ {s , t } gilt X X f (uv ) − f (v w ) = 0. Fluss- {u∈V |uv ∈E } {w ∈V |v w ∈E } | {z } | {z } erhalZuflussf (v ) Abflussf (v ) tung {z } | Nettozuflussf (v ) 16 s v1 4 13 v 2 12 v3 9 14 20 t 7 v4 4 Zulässige und maximale Flüsse Def. Sei G = (V , E ) ein gerichteter Graph mit s , t ∈ V. Seien durch c : E → R>0 Kantenkapazitäten gegeben. Ein Fluss f ist zulässig, wenn für jede Kante e ∈ E gilt 0 ≤ f (e ) ≤ c (e ). 16 s v1 4 13 v 2 12 v3 9 14 20 t 7 v4 4 Zulässige und maximale Flüsse Def. Sei G = (V , E ) ein gerichteter Graph mit s , t ∈ V. Seien durch c : E → R>0 Kantenkapazitäten gegeben. Ein Fluss f ist zulässig, wenn für jede Kante e ∈ E gilt 0 ≤ f (e ) ≤ c (e ). f /c v1 12/ 12 v3 11/ 8/ 16 20 3/ 9 s t 1/ 7 4/ 4 5/ 13 v 2 4/14 v4 3/4 Zulässige und maximale Flüsse Def. Sei G = (V , E ) ein gerichteter Graph mit s , t ∈ V. Seien durch c : E → R>0 Kantenkapazitäten gegeben. Ein Fluss f ist zulässig, wenn für jede Kante e ∈ E gilt 0 ≤ f (e ) ≤ c (e ). f /c v1 12/ 12 v3 11/ 8/ 16 20 3/ 9 s t 1/ 7 4/ 4 5/ 13 v 2 4/14 v4 3/4 Zulässige und maximale Flüsse Def. Sei G = (V , E ) ein gerichteter Graph mit s , t ∈ V. Seien durch c : E → R>0 Kantenkapazitäten gegeben. Ein Fluss f ist zulässig, wenn für jede Kante e ∈ E gilt 0 ≤ f (e ) ≤ c (e ). f /c 10 v1 12/ 12 v3 11/ 8/ 16 20 3/ 9 s t 1/ 7 4/ 4 5/ 13 v 2 4/14 v4 3/4 Zulässige und maximale Flüsse Def. Sei G = (V , E ) ein gerichteter Graph mit s , t ∈ V. Seien durch c : E → R>0 Kantenkapazitäten gegeben. Ein Fluss f ist zulässig, wenn für jede Kante e ∈ E gilt 0 ≤ f (e ) ≤ c (e ). Der Wert |f | eines zulässigen Flusses f ist Nettozuflussf (t ). f /c 10 v1 12/ 12 v3 11/ 8/ 16 20 3/ 9 s t 1/ 7 4/ 4 5/ 13 v 2 4/14 v4 3/4 Zulässige und maximale Flüsse Def. Sei G = (V , E ) ein gerichteter Graph mit s , t ∈ V. Seien durch c : E → R>0 Kantenkapazitäten gegeben. Ein Fluss f ist zulässig, wenn für jede Kante e ∈ E gilt 0 ≤ f (e ) ≤ c (e ). Der Wert |f | eines zulässigen Flusses f ist Nettozuflussf (t ). Ein zulässiger Fluss f ist maximal, wenn für jeden zulässigen Fluss f 0 gilt |f 0 | ≤ |f |. f /c 10 v1 12/ 12 v3 11/ 8/ 16 20 3/ 9 s t 1/ 7 4/ 4 5/ 13 v 2 4/14 v4 3/4 Aufgabe Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und Kantenkapazitäten c : E → R>0 . Aufgabe Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und Kantenkapazitäten c : E → R>0 . Geben Sie eine Methode an, die einen maximalen s -t -Fluss f konstruiert. Aufgabe Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und Kantenkapazitäten c : E → R>0 . Geben Sie eine Methode an, die einen maximalen s -t -Fluss f konstruiert., also eine Funktion f : E → R≥0 , die Aufgabe Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und Kantenkapazitäten c : E → R>0 . Geben Sie eine Methode an, die einen maximalen s -t -Fluss f konstruiert., also eine Funktion f : E → R≥0 , die – den Fluss erhält – zulässig ist – maximal ist Aufgabe Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und Kantenkapazitäten c : E → R>0 . Geben Sie eine Methode an, die einen maximalen s -t -Fluss f konstruiert., also eine Funktion f : E → R≥0 , die – den Fluss erhält, d.h. für jeden Knoten v ∈ / {s , t } sicherstellt: X X Nettozuflussf (v ) = f (uv ) − f (v w ) = 0, {u ∈V |uv ∈E } – zulässig ist – maximal ist {w ∈V |v w ∈E } Aufgabe Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und Kantenkapazitäten c : E → R>0 . Geben Sie eine Methode an, die einen maximalen s -t -Fluss f konstruiert., also eine Funktion f : E → R≥0 , die – den Fluss erhält, d.h. für jeden Knoten v ∈ / {s , t } sicherstellt: X X Nettozuflussf (v ) = f (uv ) − f (v w ) = 0, {u ∈V |uv ∈E } {w ∈V |v w ∈E } – zulässig ist, d.h. für jede Kante e garantiert: 0 ≤ f (e ) ≤ c (e ), – maximal ist Aufgabe Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und Kantenkapazitäten c : E → R>0 . Geben Sie eine Methode an, die einen maximalen s -t -Fluss f konstruiert., also eine Funktion f : E → R≥0 , die – den Fluss erhält, d.h. für jeden Knoten v ∈ / {s , t } sicherstellt: X X Nettozuflussf (v ) = f (uv ) − f (v w ) = 0, {u ∈V |uv ∈E } {w ∈V |v w ∈E } – zulässig ist, d.h. für jede Kante e garantiert: 0 ≤ f (e ) ≤ c (e ), – maximal ist, d.h. unter allen zulässigen s -t -Flüssen |f | = Nettozuflussf (t ) maximiert. Aufgabe Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und Kantenkapazitäten c : E → R>0 . Geben Sie eine Methode an, die einen maximalen s -t -Fluss f konstruiert., also eine Funktion f : E → R≥0 , die Variable – den Fluss erhält, d.h. für jeden Knoten v ∈ / {s , t } sicherstellt: X X Nettozuflussf (v ) = f (uv ) − f (v w ) = 0, {u ∈V |uv ∈E } {w ∈V |v w ∈E } – zulässig ist, d.h. für jede Kante e garantiert: 0 ≤ f (e ) ≤ c (e ), – maximal ist, d.h. unter allen zulässigen s -t -Flüssen |f | = Nettozuflussf (t ) maximiert. Aufgabe Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und Kantenkapazitäten c : E → R>0 . Geben Sie eine Methode an, die einen maximalen s -t -Fluss f konstruiert., also eine Funktion f : E → R≥0 , die Variable – den Fluss erhält, d.h. für jeden Knoten v ∈ / {s , t } sicherstellt: X X Nettozuflussf (v ) = f (uv ) − f (v w ) = 0, {u ∈V |uv ∈E } {w ∈V |v w ∈E } – zulässig ist, d.h. für jede Kante e garantiert: Konstante 0 ≤ f (e ) ≤ c (e ), – maximal ist, d.h. unter allen zulässigen s -t -Flüssen |f | = Nettozuflussf (t ) maximiert. Aufgabe Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und Kantenkapazitäten c : E → R>0 . Geben Sie eine Methode an, die einen maximalen s -t -Fluss f konstruiert., also eine Funktion f : E → R≥0 , die Variable – den Fluss erhält, d.h. für jeden Knoten v ∈ / {s , t } sicherstellt: X X Nettozuflussf (v ) = f (uv ) − f (v w ) = 0, {u ∈V |uv ∈E } {w ∈V |v w ∈E } – zulässig ist, d.h. für jede Kante e garantiert: Konstante 0 ≤ f (e ) ≤ c (e ), – maximal ist, d.h. unter allen zulässigen s -t -Flüssen |f | = Nettozuflussf (t ) maximiert. Aufgabe Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und Kantenkapazitäten c : E → R>0 . Geben Sie eine Methode an, die einen maximalen s -t -Fluss f konstruiert., also eine Funktion f : E → R≥0 , die Variable – den Fluss erhält, d.h. für jeden Knoten v ∈ / {s , t } sicherstellt: X X Nettozuflussf (v ) = f (uv ) − f (v w ) = 0, {u ∈V |uv ∈E } {w ∈V |v w ∈E } – zulässig ist, d.h. für jede Kante e garantiert: Konstante 0 ≤ f (e ) ≤ c (e ), |V | − 2 + |E | lineare Beschränkungen! – maximal ist, d.h. unter allen zulässigen s -t -Flüssen |f | = Nettozuflussf (t ) maximiert. Aufgabe Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und Kantenkapazitäten c : E → R>0 . Geben Sie eine Methode an, die einen maximalen s -t -Fluss f konstruiert., also eine Funktion f : E → R≥0 , die Variable – den Fluss erhält, d.h. für jeden Knoten v ∈ / {s , t } sicherstellt: X X Nettozuflussf (v ) = f (uv ) − f (v w ) = 0, {u ∈V |uv ∈E } {w ∈V |v w ∈E } – zulässig ist, d.h. für jede Kante e garantiert: Konstante 0 ≤ f (e ) ≤ c (e ), |V | − 2 + |E | lineare Beschränkungen! – maximal ist, d.h. unter allen zulässigen s -t -Flüssen |f | = Nettozuflussf (t ) maximiert. Aufgabe Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und Kantenkapazitäten c : E → R>0 . Geben Sie eine Methode an, die einen maximalen s -t -Fluss f konstruiert., also eine Funktion f : E → R≥0 , die Variable – den Fluss erhält, d.h. für jeden Knoten v ∈ / {s , t } sicherstellt: X X Nettozuflussf (v ) = f (uv ) − f (v w ) = 0, {u ∈V |uv ∈E } {w ∈V |v w ∈E } – zulässig ist, d.h. für jede Kante e garantiert: Konstante 0 ≤ f (e ) ≤ c (e ), |V | − 2 + |E | lineare Beschränkungen! – maximal ist, d.h. unter allen zulässigen s -t -Flüssen |f | = Nettozuflussf (t ) maximiert. lineare Zielfunktion! Oh my God – it’s an LP! Aufgabe Gegeben ein gerichteter Graph G = (V , E ) mit s , t ∈ V und Kantenkapazitäten c : E → R>0 . Geben Sie eine Methode an, die einen maximalen s -t -Fluss f konstruiert., also eine Funktion f : E → R≥0 , die Variable – den Fluss erhält, d.h. für jeden Knoten v ∈ / {s , t } sicherstellt: X X Nettozuflussf (v ) = f (uv ) − f (v w ) = 0, {u ∈V |uv ∈E } {w ∈V |v w ∈E } – zulässig ist, d.h. für jede Kante e garantiert: Konstante 0 ≤ f (e ) ≤ c (e ), |V | − 2 + |E | lineare Beschränkungen! – maximal ist, d.h. unter allen zulässigen s -t -Flüssen |f | = Nettozuflussf (t ) maximiert. lineare Zielfunktion! Future Work Kann man maximale Flüsse (= Spezialfall eines LPs) auch mit maßgeschneiderten kombinatorischen Algorithmen berechnen? Hoffnung: Das könnte schneller gehen – und strukturelle Einsichten liefern. Zu den Übungen BITTE: Vermerken Sie immer die Nr. Ihrer Übungsgruppe: I: Fr, 8:30–10, II: Fr, 10–12, III: Fr, 12–14 Uhr. Zu den Übungen BITTE: Vermerken Sie immer die Nr. Ihrer Übungsgruppe: I: Fr, 8:30–10, II: Fr, 10–12, III: Fr, 12–14 Uhr. Die beiden PartnerInnen einer 2er-Gruppe müssen in dieselbe Übung gehen, damit beide bei der Besprechung Einsicht in ihre eigene Lösung haben. Zu den Übungen BITTE: Vermerken Sie immer die Nr. Ihrer Übungsgruppe: I: Fr, 8:30–10, II: Fr, 10–12, III: Fr, 12–14 Uhr. Die beiden PartnerInnen einer 2er-Gruppe müssen in dieselbe Übung gehen, damit beide bei der Besprechung Einsicht in ihre eigene Lösung haben. Regel: Alle (nahezu) identischen Lösungen werden mit null Punkten bewertet. Zu den Übungen BITTE: Vermerken Sie immer die Nr. Ihrer Übungsgruppe: I: Fr, 8:30–10, II: Fr, 10–12, III: Fr, 12–14 Uhr. Die beiden PartnerInnen einer 2er-Gruppe müssen in dieselbe Übung gehen, damit beide bei der Besprechung Einsicht in ihre eigene Lösung haben. Regel: Alle (nahezu) identischen Lösungen werden mit null Punkten bewertet. Moral: Gemeinsam diskutieren, alleine (bzw. in 2er-Gruppe) aufschreiben.