finale Version des Vorlesungsskripts - ZIB

finale Version des Vorlesungsskripts - ZIB finale Version des Vorlesungsskripts - ZIB

23.06.2013 Aufrufe

10 Fourier-Motzkin-Elimination und Projektion Wir haben nun mit dem Simplex-Algorithmus ein Werkzeug zur Hand, um lineare Programme zu lösen. Insbesondere haben wir auch gesehen, wie wir mit dem Simplex- Algorithmus die Frage, ob ein lineares Ungleichungssystem Ax ≤ b eine Lösung hat oder nicht, entscheiden können. Wir werden in diesem Kapitel eine weitere Methode dafür kennenlernen, die gänzlich anders vorgeht und diese für eine theoretische Analyse der (Un)Zulässigkeit linearer Programme nutzen. Wir beginnen mit der Beschreibung eines Algorithmus, der aus einer (m, n)-Matrix A und einem Vektor b ∈ K m eine (r, n)-Matrix D und einen Vektor d ∈ K r macht, so dass eine Spalte von D aus lauter Nullen besteht und dass gilt: Ax ≤ b hat eine Lösung genau dann, wenn Dx ≤ d eine Lösung hat. 10.1 Fourier-Motzkin-Elimination (10.1) Fourier-Motzkin-Elimination (der j-ten Variablen). Eingabe: Eine (m, n)-Matrix A = (aij), ein Vektor b ∈ K m und ein Spaltenindex j ∈ {1, . . . , n} der Matrix A. Ausgabe: Eine (r, n)-Matrix D = (dij) (r wird im Algorithmus berechnet) und ein Vektor d ∈ K r , so dass D.j (die j-te Spalte von D) der Nullvektor ist. 1.) Partitioniere die Menge der Zeilenindizes M = {1, . . . , m} von A wie folgt: N := {i ∈ M | aij < 0}, Z := {i ∈ M | aij = 0}, P := {i ∈ M | aij > 0}. (Die Menge Z ∪ (N × P ) wird die Zeilenindexmenge von D.) 2.) Setze r := |Z ∪ (N × P )|, R := {1, . . . , r}, sei p : R → Z ∪ (N × P ) eine Bijektion (d. h. eine kanonische Indizierung der Elemente von Z ∪ (N × P )). 3.) Führe für i = 1, 2, . . . , r aus: (a) Falls p(i) ∈ Z, dann setze Di· := A p(i)·, di := b p(i) (d. h., die i-te Zeile von D ist gleich der p(i)-ten Zeile von A). 191

10 Fourier-Motzkin-Elimination und Projektion (b) Falls p(i) = (s, t) ∈ N × P , dann setze Di· := atjAs· − asjAt·, di := atjbs − asjbt (d. h., das asj-fache der t-ten Zeile von A wird vom atj-fachen der s-ten Zeile von A abgezogen und als i-te Zeile von D betrachtet). △ Hinweis: Die in (10.1) konstruierte Menge Z ∪ (N × P ) kann leer und somit r = 0 sein. Die Matrix D ist dann eine Matrix mit 0 Zeilen und n Spalten und somit Dx ≤ d ein „leeres Ungleichungssystem“. Die Menge der zulässigen Lösungen P (D, d) = {x ∈ K n |Dx ≤ d} unterliegt folglich keiner Einschränkung und ist daher der ganze Raum K n . Bevor wir den Algorithmus analysieren, betrachten wir ein Beispiel: −7x1 + 6x2 ≤ 25 (1) +x1 − 5x2 ≤ 1 (2) +x1 ≤ 7 (3) −x1 + 2x2 ≤ 12 (4) −x1 − 3x2 ≤ 1 (5) +2x1 − x2 ≤ 10 (6) Wir wollen die zweite Variable x2 eliminieren und erhalten in Schritt 1 von (10.1): N = {2, 5, 6}, Z = {3}, P = {1, 4}. Daraus ergibt sich |Z ∪ (N × P )| = 7. Die Nummerierung der Zeilen von D ist dann R = {1, . . . , 7}, und wir setzen: p(1) = 3, p(2) = (2, 1), p(3) = (2, 4), p(4) = (5, 1), p(5) = (5, 4), p(6) = (6, 1), p(7) = (6, 7). Die zweite Zeile von D ergibt sich dann als die Summe vom 6-fachen der zweiten Zeile von A und dem 5-fachen der ersten Zeile von A. Die zweite Ungleichung des Systems Dx ≤ d hat somit die Form −29x1 + 0x2 ≤ 131. Insgesamt ergibt sich (wenn wir die aus lauter Nullen bestehende zweite Spalte weglassen), das folgende System Dx ≤ d: 192 +x1 ≤ 7 (1) −29x1 ≤ 131 (2) −3x1 ≤ 62 (3) −27x1 ≤ 81 (4) −5x1 ≤ 38 (5) +5x1 ≤ 85 (6) +3x1 ≤ 32 (7)

10 Fourier-Motzkin-Elimination und Projektion<br />

(b) Falls p(i) = (s, t) ∈ N × P , dann setze<br />

Di· := atjAs· − asjAt·,<br />

di := atjbs − asjbt<br />

(d. h., das asj-fache der t-ten Zeile von A wird vom atj-fachen der s-ten Zeile von<br />

A abgezogen und als i-te Zeile von D betrachtet). △<br />

Hinweis: Die in (10.1) konstruierte Menge Z ∪ (N × P ) kann leer und somit r = 0<br />

sein. Die Matrix D ist dann eine Matrix mit 0 Zeilen und n Spalten und somit Dx ≤ d<br />

ein „leeres Ungleichungssystem“. Die Menge der zulässigen Lösungen P (D, d) = {x ∈<br />

K n |Dx ≤ d} unterliegt folglich keiner Einschränkung und ist daher der ganze Raum K n .<br />

Bevor wir den Algorithmus analysieren, betrachten wir ein Beispiel:<br />

−7x1 + 6x2 ≤ 25 (1)<br />

+x1 − 5x2 ≤ 1 (2)<br />

+x1 ≤ 7 (3)<br />

−x1 + 2x2 ≤ 12 (4)<br />

−x1 − 3x2 ≤ 1 (5)<br />

+2x1 − x2 ≤ 10 (6)<br />

Wir wollen die zweite Variable x2 eliminieren und erhalten in Schritt 1 von (10.1):<br />

N = {2, 5, 6}, Z = {3}, P = {1, 4}.<br />

Daraus ergibt sich |Z ∪ (N × P )| = 7. Die Nummerierung der Zeilen von D ist dann<br />

R = {1, . . . , 7}, und wir setzen:<br />

p(1) = 3, p(2) = (2, 1), p(3) = (2, 4), p(4) = (5, 1), p(5) = (5, 4),<br />

p(6) = (6, 1), p(7) = (6, 7).<br />

Die zweite Zeile von D ergibt sich dann als die Summe vom 6-fachen der zweiten Zeile<br />

von A und dem 5-fachen der ersten Zeile von A. Die zweite Ungleichung <strong>des</strong> Systems<br />

Dx ≤ d hat somit die Form −29x1 + 0x2 ≤ 131.<br />

Insgesamt ergibt sich (wenn wir die aus lauter Nullen bestehende zweite Spalte weglassen),<br />

das folgende System Dx ≤ d:<br />

192<br />

+x1 ≤ 7 (1)<br />

−29x1 ≤ 131 (2)<br />

−3x1 ≤ 62 (3)<br />

−27x1 ≤ 81 (4)<br />

−5x1 ≤ 38 (5)<br />

+5x1 ≤ 85 (6)<br />

+3x1 ≤ 32 (7)

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!