Einige Schwerpunkte der Vorlesung Diskrete Mathematik und Optimierung Prof. Dr. Konrad Engel 1 Universität Rostock Fachbereich Mathematik D–18051 Rostock 21. Juli 2005 1 [email protected] 2 Kapitel 1 Lineare Optimierung 1.1 Problemstellung Seien x, y ∈ Rn×1 . Bezeichnung: x ≤ y :⇔ ∀i ∈ {1, . . . , n} : xi ≤ yi Allgemeines lineares Optimierungsproblem (LOP): 0 0 Gegeben: A ∈ Rm×n , A0 ∈ Rm ×n , b ∈ Rm×1 , b0 ∈ Rm ×1 , c ∈ Rn×1 Gesucht: x ∈ Rn×1 , sodass Ax = b A0 x ≤ b0 cT x → max (1.1) Beachte: aT x ≥ b ⇔ −aT x ≤ −b cT x → min ⇔ −cT x → max Zulässiger Bereich: Z:={x ∈ Rn×1 : Ax = b, A0 x ≤ b0 } x ist zulässig :⇔ x ∈ Z Zielfunktion: f (x) := cT x x ist optimale Lösung :⇔ x ∈ Z und ∀x0 ∈ Z : f (x) ≤ f (x0 ) 1.2 Graphische Lösung im Fall n = 2 Wissen von der Hesseschen Normalform: Durch eine Ungleichung der Form ax + by ≤ c (bzw. ax + by ≥ c) 3 mit (a, b) 6= (0, 0) wird eine Halbebene beschrieben, deren Rand die durch ax+by = c gegebene Gerade ist und in die, ausgehend von dieser Geraden, der negative Stellungsvektor (−a, −b) (bzw. der Stellungsvektor (a, b)) zeigt. Bei mehreren linearen Ungleichungen ist also der zulässige Bereich Durchschnitt entsprechender Halbebenen, den man auch (konvexes) Polyeder nennt. Will man das Verhalten einer linearen Zielfunktion f (x, y) = ax + by studieren, so betrachtet man zunächst eine Niveaulinie (Gerade) der Form ax + by = c. Auf dieser Geraden hat die Zielfunktion den konstanten Wert c. Verschiebt man nun die Gerade in Richtung des Stellungsvektors (a, b) parallel, so erhält man eine neue Gerade der Form ax + by = d. Hierbei ergibt sich d aus d = a(x + λa) + b(y + λb) = ax + by + λ(a2 + b2 ) = c + λ(a2 + b2 ), wenn um den Vektor λ(a, b) mit λ > 0 verschoben wurde. Insbesondere ist d > c, sodass sich hierbei der Wert der Zielfunktion vergrößert. Bei einem Maximierungsproblem versucht man nun, die Gerade soweit wie möglich parallel in Richtung des Stellungsvektors zu verschieben, sodass sie noch Punkte des zulässigen Bereichs enthält. In der Extremlage (falls sie existiert) sind die Schnittpunkte der Gerade mit dem zulässigen Bereich offenbar genau die optimalen Lösungen. Falls keine Extremlage existiert, gibt es klarerweise auch keine optimale Lösung. 1.3 Transformation auf Normalform Ein LOP ist in Normalform gegeben, falls es die Form hat: Ax = b x ≥0 T c x → max (1.2) Die Transformation von (1.1) in die Form (1.2) wird wie folgt durchgeführt: 1. Führe für jede Ungleichung aT x ≤ b eine Schlupfvariable z ein, sodass aus der Ungleichung eine Gleichung aT x + z = b mit z ≥ 0 wird. 2. Führe eine neue Variable xn+1 ein und ersetze jede Variable xj durch xj − xn+1 . 4 Es entsteht das LOP in Normalform (mit 1T = (1, . . . , 1)): x A| −A1 |O xn+1 = b A0 | −A0 1 |E z x xn+1 ≥ 0 z x (cT | − cT 1|0T ) xn+1 → max z (1.3) Satz 1.3.1. a) Ist durch x̂, x̂n+1 , ẑ eine optimale Lösung von (1.3) gegeben, so ist x̂ − x̂n+1 1 eine optimale Lösung von (1.1). b) Ist der zulässige Bereich von (1.3) leer, so ist auch der zulässige Bereich von (1.1) leer. c) Ist die Zielfunktion von (1.3) auf dem zulässigen Bereich unbeschränkt, so gilt dies auch für die Zielfunktion von (1.1). Bemerkung 1.3.1. Hat man ein LOP, bei dem schon für einige Variablen eine Nichtnegativitätsbedingung vorhanden ist, so braucht man nur noch für die restlichen Variablen xj die Ersetzung xj := xj − xn+1 vorzunehmen. 1.4 Basisdarstellungen Sei ein LOP in Normalform (1.2) gegeben, wobei hier vorausgesetzt wird: A ist eine m × (n + m) Matrix mit rg(A) = m. Sei Aj der j–te Spaltenvektor von A, j ∈ J := {1, . . . , n + m}. Basis von A := Menge von m linear unabhängigen Saltenvektoren von A. Basismenge:=Menge B ⊆ J von Indizes, sodass {Aj , j ∈ B} Basis von A ist. Basisvariable (BV): Alle Variablen xj mit j ∈ B. Nichtbasismenge:=Menge N B ⊆ J, sodass J \ N B Basismenge ist. Nichtbasisvariable (NBV): Alle Variablen xj mit j ∈ N B. Für S = {j1 , . . . , js } ⊆ J sei xj1 cj1 .. .. AS := (Aj1 | . . . |Ajs ), xS = . , cS = . xjs cjs 5 Satz 1.4.1. Sei B Basismenge für A. Das folgende LOP hat den gleichen zulässigen Bereich und auf dem zulässigen Bereich die gleiche Zielfunktion wie (1.2): −1 xB = A−1 B b − AB AN B x N B x ≥0 (1.4) −1 T T cTB A−1 b −(c A A − c )x → max NB NB B B NB B Sei −1 −1 −1 T T T R := A−1 B AN B , s := AB b, g := cB AB AN B − cN B , w := cB AB b Dann lautet (1.4) xB = s − RxN B x ≥0 (1.5) T w − g xN B → max Diese Darstellung wird Basisdarstellung des LOP’s genannt. Sie wird wie folgt durch die Simplextabelle angegeben: B w s NB gT R Bemerkung 1.4.1. Die Simplextabelle ist durch B (und durch die Reihenfolge der Auflistung der Elemente von B und N B) eindeutig festgelegt. Zur Abkürzung setzt man r0,0 := w, r0,j := gj , j = 1, . . . , n, ri,0 := si , i = 1, . . . , m Satz 1.4.2. Sei B = {β1 , . . . , βk , . . . , βm } Basismenge und N B = {γ1 , . . . , γl , . . . , γn } die zugehörige Nichtbasismenge. Dann ist die durch den Austausch βk und γl erhaltene Menge B 0 = {β1 , . . . , γl , . . . , βm } genau dann Basismenge, wenn in der Simplextabelle für B rkl 6= 0 gilt. Satz 1.4.3. Sei B = {β1 , . . . , βk , . . . , βm } Basismenge und N B = {γ1 , . . . , γl , . . . , γn } die zugehörige Nichtbasismenge. Es sei rkl 6= 0. Ferner seien B 0 = {β1 , . . . , γl , . . . , βm } und N B 0 = {γ1 , . . . , βk , . . . , γn } die durch den Austausch βk und γl erhaltene Basismenge bzw. Nichtbasismen0 ge. Die weiteren Elemente der Simplextabelle für B 0 seien mit rij bezeichnet, i = 0, . . . , m, j = 0, . . . , n. Dann gilt: 1 , falls i = k, j = l rij rij , falls i = k, j ∈ {0, . . . , n} \ {l} 0 rij = rklrij falls i ∈ {0, . . . , m} \ {k}, j = l − rkl , r − ril rkj , falls i ∈ {0, . . . , m} \ {k}, j ∈ {0, . . . , n} \ {l} ij rkl 6 1.5 Die Simplexmethode Sei wieder das LOP in Normalform (1.2) mit einer m × (n + m) Matrix A, rg(A) = m, gegeben. Sei (1.5) eine Basisdarstellung. Offenbar ist der folgende Vektor xB eine Lösung des LGS Ax = b: B xB N B = 0, xB = s Man nennt xB Basislösung. Falls zusätzlich s ≥ 0 gilt, heißt xB zulässige Basislösung. Für den Wert der Zielfunktion f (x) = cT x auf der Basislösung xB gilt: f (xB ) = w. 0 Satz 1.5.1. Sei xB zulässige Basislösung und sei xB eine durch den Aus0 tausch βk ↔ γl gemäß Satz 1.4.3 erhaltene neue Basislösung. Es ist xB genau dann zulässig, wenn gilt: rkl > 0 und si sk = min{ , i ∈ {1, . . . , n} : ril > 0} rkl ril oder rkl 6= 0 und sk = 0. Satz 1.5.2. Sei xB eine zulässige Basislösung. Gilt in der zugehörigen Simplextabelle gj ≥ 0 ∀j ∈ {1, . . . , n}, so ist xB eine optimale Lösung des LOP’s (1.2) und w ist der optimale Wert der Zielfunktion. Satz 1.5.3. Sei xB eine zulässige Basislösung. Falls es einen Index γl ∈ N B gibt, sodass in der zugehörigen Simplextabelle gl < 0 und ril ≤ 0 ∀i ∈ {1, . . . , m} gilt, so ist die Zielfunktion auf dem zulässigen Bereich unbeschränkt. Simplexmethode: Initialisierung: Berechne eine zulässige Basislösung und die zugehörige Simplextabelle Iteration: 1. Finde ein l mit gl < 0. Gibt es ein solches l nicht, so ist die optimale Lösung aus der aktuellen Simplextabelle ablesbar, STOP. 2. Finde ein k mit rkl > 0 und rsklk = min{ rsili , i ∈ {1, . . . , n} : ril > 0}. Gibt 7 es ein solches l nicht, so ist die Zielfunktion unbeschränkt, STOP. 3. Führe den Austausch βk ↔ γl gemäß Satz 1.4.3 durch. Eine zulässige Basislösung heißt entartet, falls für die zugehörige Simplextabelle gilt: Es gibt ein i ∈ {1, . . . , m} mit si = 0. Ein LOP in der Normalform (1.2) heißt entartet, wenn es eine entartete zulässige Basislösung hat. Satz 1.5.4. Ist das LOP (1.2) nicht entartet, so bricht die Simplexmethode nach endlich vielen Schritten ab. Dieser Satz bleibt auch im entarteten Fall richtig, wenn die Wahl von l und k nach der Regel von Bland eindeutig festgelegt wird: Regel von Bland: 1. Wähle l so, dass gl < 0 gilt und unter dieser Bedingung γl minimal ist. 2. Wähle k so, dass rkl > 0 und rsklk = min{ rsili , i ∈ {1, . . . , n} : ril > 0} gilt und unter dieser Bedingung βk minimal ist. 1.6 Bestimmung einer ersten zulässigen Basislösung Suchen erste zulässige Basislösung für das LOP Ax = b x ≥0 T c x → max (1.6) mit einer m × n–Matrix A, für die nicht notwendigerweise rg(A) = m ist. O.B.d.A. sei b ≥ 0 (sonst entsprechende Gleichungen mit -1 multiplizieren). Führen künstliche Variable yi = xn+i , i = 1, . . . , m, ein und betrachten das Hilfsproblem (mit 1 = (1, . . . , 1)T ) Ax + y x y −1T y =b ≥0 ≥0 → max (1.7) Eine erste zulässig Basislösung für (1.7) ist mit B = {n + 1, . . . , n + m} gegeben: B x 0 = y b Die zugehörige Simplextabelle lautet: 8 1 −1 b −1T A1 b1 .. . T n+1 .. . n+m ... ... n −1T An A bm Da die Zielfunktion nach oben durch 0 beschränkt ist, führt die Zielfunktion zu einer optimalen Lösung des Hilfsproblems (1.7) xh yh mit der Simplextabelle β1 .. . w s1 .. . βm sm γ1 g1 ... ... γn gn (1.8) R Satz 1.6.1. Das LOP (1.6) besitzt genau dann eine zulässige Lösung, wenn y h = 0 ist. Sei y h = 0. Um eine erste zulässige Basislösung für das LOP (1.6) zu bekommen, werden soviel wie möglich künstliche Variablen zu Nichtbasisvariablen gemacht: Solange in der jeweils aktuellen Simplextabelle ein βk ∈ {n + 1, . . . , n + m} und ein γl ∈ {1, . . . , n} existiert, sodass rkl 6= 0 ist, tausche βk und γl gemäß Satz 1.4.3 aus. Die zum Schluss erhaltene Tabelle sei wieder in der Form (1.8) gegeben. Die erste Simplextabelle (und damit die erste zulässige Basislösung) für das LOP (1.6) bekommt man nun wie folgt: 1. Streiche alle Spalten, die zu künstlichen Variablen gehören (γj ∈ {n + 1, . . . , n + m}). 2. Streiche alle Zeilen, die zu künstlichen Variablen gehören (βi ∈ {n + 1, . . . , n + m}). Die jetzt erhaltene Tabelle habe wieder die Form (1.8) 3. Aktualisiere die Zielfunktion: Sei B = {β1 , . . . , βm }. Setze w := cTB s gj := cTB Rj − cγj , j = 1, . . . , n 9 Bemerkung 1.6.1. Am Anfang braucht man nur für solche Gleichungen künstliche Variable einzuführen, die nicht einen Kandidaten für eine Basisvariable besitzen. Man kann die Rechnung abkürzen, indem man nach jedem Schritt, bei dem eine künstlichen Basisvariable Nichtbasisvariable geworden ist, sofort die entsprechende Spalte streicht. Folgerung 1.6.1. Für jedes lineare Optimierungsproblem tritt genau einer der folgenden Fälle ein: 1. Der zulässige Bereich ist leer. 2. Es gibt eine optimale Lösung. 3. Die Zielfunktion ist auf dem (nichtleeren) zulässigen Bereich unbeschränkt. 1.7 Duale Optimierungsprobleme Zwei Simplextabellen sind dual zueinander, wenn sie die folgende Form haben: B w s NB gT R NB −w g B sT −RT Betrachten zwei LOP’s, die entsprechend einer späteren allgemeineren Definition dual zueinander sind: a11 x1 + . . . + a1n xn + xn+1 ... am1 x1 + . . . + amn xn + xn+m x c1 x1 + . . . + cn xn (−a11 )yn+1 + . . . + (−am1 )yn+m + y1 ... (−a1n) yn+1 + . . . + (−amn )yn+m + yn y (−b1 )yn+1 + . . . + (−bm )yn+m = b1 = bm ≥ 0 → max (1.9) = −c1 = −cn ≥ 0 → max (1.10) Die zu (1.9) und (1.10) sofort ablesbaren Simplexmatrizen sind dual zueinander: 10 n+1 .. . 0 b1 .. . n+m bm 1 −c1 ... ... n −cn A 1 .. . 0 −c1 .. . n −cn n+1 b1 ... ... n+m bm −AT Satz 1.7.1. Sei J = {1, . . . , n + m} und B ⊆ J. a) Genau dann ist B Basismenge für (1.9), wenn J \ B Basismenge für (1.10) ist. b) Sei B Basismenge für (1.9) und N B := J \ B Basismenge für (1.10). Die zu (B, N B) gehörige Simplexmatrix für (1.9) und die zu (N B, B) gehörige Simplexmatrix für (1.10) sind dual zueinander. Neben den Standardrelationen =, ≤, ≥ betrachten wir außerdem die Allrelation ./, d.h. a ./ b ∀a, b ∈ R. Sei R := {≤, ≥, =, ./}. Für R ∈ R sei die duale Relation RD wie folgt definiert: ≥ ≤ ≤ ≥ . , so sei RD = Ist R = ./ = = ./ Offenbar gilt (RD )D = R für alle R ∈ R und somit haben wir es mit zwei dualen Relationspaaren zu tun. Lemma 1.7.1. Seien R ∈ R und a, b, c ∈ R. Dann folgt aus 0Rc (bzw. cR0) und aRD b die Ungleichung bc ≤ ac (bzw. ac ≤ bc). Betrachten die zwei LOP’s mit Ri 1, . . . , n: Pn j=1 aij xj Ri 0 Sj Pn j=1 cj xj → Pn D i=1 aij yi Sj D Pm yi Ri → i=1 bi yi ∈ R, i = 1, . . . , m, und Sj ∈ R, j = bi , i = 1, . . . , m xj , j = 1, . . . , n max (1.11) cj , j = 1, . . . , n 0, i = 1, . . . , m min (1.12) bzw. kurz: AT y S D c y RD 0 bT y → min Ax R b 0 S x cT x → max 11 Die LOP’s (1.11) und (1.12) heißen dual zueinander. Üblicherweise wird (1.11) als primales Problem und (1.12) als duales Problem bezeichnet. Wichtiger Spezialfall: Ax ≤ b x ≥ 0 cT x → max AT y ≥ c y ≥ 0 bT y → min Lemma 1.7.2. Sind x und y zulässige Lösungen von (1.11) und (1.12), so gilt cT x ≤ bT y. Folgerung 1.7.1 (Komplementaritätslemma). Sind x und y zulässige Lösungen von (1.11) bzw. (1.12) und sind die Bedingungen ! m X (1.13) aij yi − cj xj = 0, j = 1, . . . , n i=1 bi − n X ! aij xj yi = 0, i = 1, . . . , m (1.14) j=1 erfüllt, so sind x und y optimale Lösungen für (1.11) bzw. (1.12). Die Bedingungen (1.13) und (1.14) werden Komplementaritätsbedingungen genannt. Folgerung 1.7.2. Ist für eines der Probleme des dualen Paares (1.11),(1.12) die Zielfunktion auf dem nichtleeren zulässigen Bereich unbeschränkt, so hat das andere Problem keine zulässige Lösung. Satz 1.7.2 (Dualitätssatz). Hat eines der Probleme des dualen Paares (1.11),(1.12) eine optimale Lösung, so hat auch das andere eine optimale Lösung und die optimalen Werte der Zielfunktionen stimmen überein. Folgerung 1.7.3 (Komplementaritätssatz). Zulässige Lösungen von (1.11) und (1.12) sind genau dann beide optimal, wenn die Komplementaritätsbedingungen (1.13) und (1.14) erfüllt sind. Folgerung 1.7.4. Das Problem Ax ≤ b x ≥ 0 cT x → max 12 besitzt genau dann eine optimale Lösung, wenn das System A O b O −AT x ≤ −c y −cT bT 0 x 0 ≥ y 0 (1.15) eine zulässige Lösung besitzt. Folgerung 1.7.5 (Lemma von Farkas). Die Implikation Ax ≤ 0 ⇒ cT x ≥ 0 (1.16) gilt für alle x ∈ Rn genau dann, wenn das System AT y = −c y ≥ 0 eine zulässige Lösung besitzt. 13 (1.17) 14 Kapitel 2 Graphen 2.1 Grundbegriffe Graph (ungerichteter schlichter Graph): G = (V, E), wobei V =Menge von Knoten E=Menge von Kanten=Menge von zweielementigen Teilmengen von V Di–Graph (gerichteter schlichter Graph): G = (V, E), wobei V =Menge von Knoten E=Menge von Bögen=Menge von Paaren mit Elementen von V , wobei Paare der Form (v, v) verboten sind Schreibweise: vw statt {v, w} bzw. (v, w) Beachte: Im ungerichteten Fall ist vw = wv. Knoten v, w adjazent in G :⇔ in G gibt es Kante (bzw. Bogen) e = vw oder e = wv. Knoten v und Kante (bzw. Bogen) e sind inzident :⇔ in G gibt es Knoten w, sodass e = vw oder e = wv Ist e = vw Kante, so heißen v, w Endknoten von e Ist e = vw Bogen, so heißt e− := v Anfangsknoten und e+ := w Endknoten Sei E = {e1 , . . . , em } und V = {v1 , . . . , vn }. Die rechteckigen Schemata (Ma15 trizen) a1,1 a1,2 a2,1 a2,2 A= an,1 an,2 . . . a1,n b1,1 b1,2 b2,1 b2,2 . . . a2,n B = ... . . . an,n bm,1 bm,2 . . . b1,n . . . b2,n ... . . . bm,n heißen Adjazenzmatrix bzw. Inzidenzmatrix von G = (V, E) :⇔ ( 1 aij = 0 1 falls vi vj ∈ E −1 bij = sonst 0 falls vj Endknoten von ei falls vj Anfangsknoten von ei (nur im gerichteten Fall) sonst Listendarstellung eines Graphen G = (V, E): Jedem v ∈ V wird die Liste aller mit v adjazenten w ∈ V zugeordnet Graph G = (V, E) ist isomorph zu Graph G0 = (V 0 , E 0 ) :⇔ es existiert eine bijektive Abbildung f : V → V 0 , sodass vw ∈ E ⇔ f (v)f (w) ∈ E 0 Bemerkung 2.1.1. “Isomorphsein” ist eine Äquivalenzrelation in der Menge aller Graphen. Seien a, b Knoten von G = (V, E) und k ∈ N. Gerichteter a–b–Bogenzug der Länge k: + k–Tupel Z = (e1 , . . . , ek ) von Bögen von G, sodass e− 1 = a, ek = b und − + ei+1 = ei für alle i = {1, . . . , k − 1}. Mit ei = vi−1 vi kann der Bogenzug auch durch die Knoten angegeben werden: Z = (v0 , v1 , . . . , vk ) Im ungerichteten Fall heißt Z = (v0 , v1 , . . . , vk ) a–b–Kantenzug der Länge k, falls vi vi+1 ∈ E für alle i ∈ {0, . . . , k − 1} und vi vi+1 6= vi+1 vi+2 für alle i ∈ {0, . . . , k − 2} gilt. Mit ei = vi−1 vi kann der Kantenzug auch durch Z = (e1 , . . . , ek ) angegeben werden. Gilt v0 = vk und k > 0, so spricht man von einem geschlossenen Bogenzug bzw. Kantenzug. Ein Bogenzug bzw. Kantenzug Z = (v0 , v1 , . . . , vk ) heißt Di–Weg bzw. Weg :⇔ v0 , . . . , vk sind paarweise verschieden. Ein geschlossener Bogenzug bzw. Kantenzug Z = (v0 , v1 , . . . , vk ) heißt Di– Kreis bzw. Kreis :⇔ v0 , . . . , vk−1 sind paarweise verschieden. Lemma 2.1.1. Sei G = (V, E) und seien a, b ∈ V . 16 a) Es gibt gerichteten a–b–Bogenzug bzw. a–b–Kantenzug ⇔ Es gibt a–b– Di–Weg bzw. a–b–Weg. b) G enthält geschlossenen gerichteten Bogenzug bzw. Kantenzug ⇔ G enthält Di–Kreis bzw. Kreis Im Folgenden sei G = (V, E) ungerichtet. Grad (Valenz) des Knotens v: d(v) := |{w : vw ∈ E}| Knoten v heißt isoliert :⇔ d(v) = 0 P Lemma 2.1.2. Es gilt v∈V d(v) = 2|E|. Lemma 2.1.3. Sei die Relation R auf V definiert durch aRb :⇔ es existiert ein a–b–Kantenzug Dann ist R Äquivalenzrelation. Die Klassen dieser Äquivalenzrelation heißen Komponenten von G. G zusammenhängend:⇔ G hat nur eine Komponente Kantenzug Z in G heißt Eulersch :⇔ Z enthält jede Kante von G genau einmal. Satz 2.1.1. Sei G zusammenhängend. In G existiert geschlossener Eulerscher Kantenzug :⇔ jeder Knoten von G hat geraden Grad. Kreis K in G heißt Hamilton–Weg bzw. Hamilton–Kreis :⇔ K ist ein Weg bzw. Kreis und Kenthält jeden Knoten von G genau einmal. Satz 2.1.2. Sei d(v) ≥ Hamilton–Kreis. |V | 2 > 1 für alle v ∈ V . Dann enthält G einen Lemma 2.1.4. Sei G = (V, E). a) Ist G zusammenhängend, so gilt |E| ≥ |V | − 1. b) Ist |E| ≥ |V |, so enthält G einen Kreis. Graph G heißt Baum :⇔ G ist zusammenhängend und G enthält keinen Kreis. Graph G heißt Wald :⇔ G enthält keinen Kreis. Satz 2.1.3. Folgende Bedingungen sind für den Graphen G = (V, E) äquivalent: 17 i) G ist Baum. ii) G ist zusammenhängend und |E| = |V | − 1. iii) G enthält keinen Kreis und |E| = |V | − 1. iv) Für beliebige Knoten a, b von G gibt es genau einen a–b–Weg. 2.2 Minimalgerüste, Greedy Algorithmen, kürzeste Wege und dynamische Optimierung Sei G = (V, E) ein Graph oder ein Di–Graph. Eine Funktion w : E → R heißt Gewichtsfunktion, die auch als Längenfunktion, Kostenfunktion, . . . interpretiert werden kann. (G, w) bzw. (V, E, w) heißt gewichteter Graph bzw. Di–Graph. P Für E 0 ⊆ E sei w(E 0 ) := e∈E 0 w(e). Beim folgenden Minimalgerüst–Problem sei G = (V, E) ein ungerichteter Graph mit V = {1, . . . , n}. T = (V, E 0 ) heißt Gerüst von G, falls E 0 ⊆ E und T ein Wald ist, der genauso viele (d.h. als Knotenmengen sogar die gleichen) Komponenten wie G besitzt. Ein zusammenhängendes Gerüst nennt man auch spannenden Baum. Das Gewicht eines Gerüstes ist das Gewicht seiner Kantenmenge. Minimalgerüst–Problem: Gegeben sei ein gewichteter Graph (G, w). Finde ein Gerüst von G mit kleinstem Gewicht. Greedy–Algorithmus zur Bestimmung eines Minimalgerüstes: Ordne die Kantenmenge E = {e1 , . . . , em }, sodass w(e1 ) ≤ · · · ≤ w(em ). Setze E 0 := ∅. Für k = 1..m Falls (V, E 0 ∪ {ek }) keinen Kreis enthält, setze E 0 := E 0 ∪ {k}. Ausgabe (V, E 0 ). Satz 2.2.1. Der beim Greedy Algorithmus erzeugte Teilgraph (V, E 0 ) von G = (V, E) ist ein Minimalgerüst von G. Die Länge eines (Di–)Weges sei das Gewicht seiner Kanten– (bzw. Bogen)– Menge. 18 Im Folgenden sei G = (V, E) ein Di–Graph mit V = {1, . . . , n}. Der ungerichtete Fall ist ein Spezialfall: w(ij) = w(ji) ∀i, j ∈ V . Kürzeste–Wege–Problem: Gegeben sei ein gewichteter (Di–)Graph. Finde für zwei beliebige Knoten i, j die kleinste Länge eines i–j–(Di–)Weges sowie einen solchen kürzesten i–j–(Di–)Weg. Sei dkij die kleinste Länge eines i–j–Di–Weges, der als Zwischenknoten (alle Knoten des Di–Weges außer i und j) nur die Knoten der Menge {1, . . . , k} erlaubt. Gibt es keinen solchen Weg, so setzt man dkij := ∞. Satz 2.2.2. Falls (G, w) keinen Di–Kreis negativer Länge enthält, gilt: falls i = j 0, 0 dij = w(ij), falls ij ∈ E ∞, sonst und für alle k = 1, . . . , n k−1 k−1 dkij = min{dk−1 ij , dik + dkj } Dieser Satz ermöglicht bereits die iterative Berechnung der gesuchten kleinsten Längen dnij . Zur Ermittlung der kürzesten Wege selbst, bestimmt man noch für alle Knotenpaare (i, j) den vorletzten Knoten vijk eines kürzesten i–j–Di–Weges, der als Zwischenknoten nur die Knoten der Menge {1, . . . , k} erlaubt. Gibt es keinen solchen Knoten, so setzt man vijk = 0. Satz 2.2.3. Falls (G, w) keinen Di–Kreis negativer Länge enthält, gilt: ( i, falls ij ∈ E vij0 = 0, sonst und für alle k = 1, . . . , n ( vijk−1 , vijk = k−1 vkj , k−1 falls dk−1 ≤ dk−1 ij ik + dkj sonst Di–Kreise negativer Länge erkennt man, wenn für ein i und ein k im Algorithmus dkii < 0 ist. Tritt diese Situation ein, so muss der Algorithmus abgebrochen werden. Bei der Implementierung benötigt man nur zwei Arrays bzw. Matrizen d und v. Man initialisiert d und v, wie in den Sätzen 2.2.2 und 2.2.3 und iteriert dann wie folgt: 19 Dynamische Optimierung zur Bestimmung kürzester Wege: Für k = 1..n Für i = 1..n Für j = 1..n Falls dij > dik + dkj vij = vkj ; dij = dik + dkj ; Falls dii < 0 STOP wegen Di–Kreis negativer Länge; Den gesuchten kürzesten i–j–Di–Weg erhält man dann wie folgt in umgekehrter Reihenfolge: Setze p := j; Falls vij = 0, so gibt es keinen i–j–Di–Weg, STOP; Solange p 6= 0 Ausgabe p; Setze p := vip . Das Minimalgerüst–Problem lässt sich ebenfalls mittels dynamischer Optimierung lösen. Im Folgenden setzen wir voraus, dass die Kantengewichte paarweise verschieden sind. Indem man das Gewicht der i–ten Kante ei durch w(ei ) := w(ei ) + εi mit einem genügend kleinem ε > 0 stört, kann man diese Voraussetzung immer erfüllen. Praktisch rechnet man dann aber nicht mit diesen veränderten Gewichten, sondern mit Paaren (w(ei ), i), die lexikografisch geordnet werden, bei denen also die erste Komponente höhere Priorität als die zweite Komponente hat. Die Dicke eines i–j–Weges sei gleich dem maximalen Gewicht seiner Kanten. Zunächst löst man das Kleinste–Dicke–Problem: Gegeben sei ein gewichteter Graph. Finde für zwei beliebige Knoten i, j die kleinste Dicke eines i–j–Weges. Sei dkij die kleinste Dicke eines i–j–Weges, der als Zwischenknoten (alle Knoten des Weges außer i und j) nur die Knoten der Menge {1, . . . , k} erlaubt. Gibt es keinen solchen Weg, so setzt man dkij := ∞. Satz 2.2.4. Es gilt: ( w(ij), d0ij = ∞, falls ij ∈ E sonst und für alle k = 1, . . . , n k−1 k−1 k−1 dkij = min{dij , max{dik , dkj }} 20 Die Implementierung als Algorithmus ist analog zum Kürzeste–WegeProblem. Satz 2.2.5. Sei (G, w) ein gewichteter Graph, bei dem alle Kantengewichte paarweise verschieden sind. Sei E 0 := {e ∈ E : w(e) = dnij }. Dann ist (V, E 0 ) ein Minimalgerüst. 21