https://de.wikipedia.org/w/api.php?action=feedcontributions&feedformat=atom&user=Mathmon Wikipedia - Benutzerbeiträge [de] 2025-04-30T08:30:42Z Benutzerbeiträge MediaWiki 1.44.0-wmf.25 https://de.wikipedia.org/w/index.php?title=Potenzial_(Spieltheorie)&diff=129229930 Potenzial (Spieltheorie) 2014-04-05T11:18:16Z <p>Mathmon: </p> <hr /> <div>Ein '''Ordnungspotenzial''' oder eine '''Ordnungspotenzialfunktion''' ist in der [[Spieltheorie]] eine spezielle [[Funktion (Mathematik)|Funktion]] auf der Menge der [[Strategiekombination]]en eines [[Spiel (Spieltheorie)|Spiels]]. Durch diese Funktion werden die Strategiekombination nach ihrer [[Auszahlung]] an die Spieler angeordnet. Eine Strategiekombination besitzt dabei genau dann einen höheren Wert, wenn sie für jeden Spieler zu einer höheren Auszahlung führt. Indem man Ordnungspotenzialfunktion strenger an die Auszahlungsfunktionen bindet, erhält man die Spezialfälle des '''gewichteten Potenzials''' und des '''exakten Potenzials'''. Letzteres wird auch einfach nur als '''Potenzial''' oder '''Potenzialfunktion''' bezeichnet.<br /> <br /> Die meisten Spiele besitzen allerdings kein Ordnungpotenzial. Von [[Dov Monderer]] wurden deshalb 1988 bzw. 1996 die folgenden Klassen von Spielen eingeführt:&lt;ref name=&quot;potential&quot;&gt;Dov Monderer, Lloyd S. Shapley: [http://ie.technion.ac.il/~dov/potential.pdf ''Potential Games.''] (PDF; 200&amp;nbsp;kB) Games and Economic Behavior 14, 1996, S. 124–143&lt;/ref&gt;<br /> * '''Spiel mit Ordnungspotenzial'''<br /> * '''Spiel mit gewichtetem Potenzial'''<br /> * '''Spiel mit (exaktem) Potenzial'''<br /> <br /> Eine Potenzialfunktion wurde bei Spielen erstmals 1973 von [[Robert W. Rosenthal]] eingesetzt, um zu zeigen, dass [[Auslastungsspiel]]e ein [[Nash-Gleichgewicht|Nash-Gleichgewicht in reinen Strategien]] besitzen.&lt;ref&gt;Robert W. Rosenthal: [http://www.springerlink.com/index/J5T4730452755627.pdf ''A Class of Games Possessing Pure-Strategy Nash Equilibria.''] In: ''International Journal of Game Theory.'' Nr. 2, 1973, S. 65–67&lt;/ref&gt;<br /> <br /> == Definition ==<br /> <br /> Bei allen drei Definitionen sei &lt;math&gt;\Gamma = (N, \Sigma, u)&lt;/math&gt; ein Spiel in [[Normalform (Spieltheorie)|Normalform]]. Weiter sei &lt;math&gt;\sigma \in \Sigma&lt;/math&gt; ein beliebiges aber festes Strategieprofil und<br /> &lt;math&gt;\sigma' := (\sigma^{-i}, \sigma_i')&lt;/math&gt; das Profil, das durch den Wechsel der Strategie eines Spielers &lt;math&gt;i \in N&lt;/math&gt; von &lt;math&gt;\sigma_i&lt;/math&gt; zu &lt;math&gt;\sigma_i'&lt;/math&gt; entsteht.<br /> <br /> === Ordnungspotenzial ===<br /> <br /> Eine Ordnungspotenzialfunktion &lt;math&gt;P&lt;/math&gt; ist eine Funktion &lt;math&gt;P: \Sigma \rightarrow \R&lt;/math&gt;, für die gilt, dass<br /> <br /> :&lt;math&gt;u_i(\sigma') - u_i(\sigma) &gt; 0 \quad \Leftrightarrow \quad P(\sigma') - P(\sigma) &gt; 0&lt;/math&gt;<br /> <br /> === Gewichtetes Potenzial ===<br /> <br /> Eine gewichtete Potenzialfunktion &lt;math&gt;P&lt;/math&gt; ist eine Funktion &lt;math&gt;P: \Sigma \rightarrow \R&lt;/math&gt;<br /> bei der für jeden Spieler &lt;math&gt;i \in N&lt;/math&gt; eine Zahl &lt;math&gt;w_i &gt; 0&lt;/math&gt; existiert, sodass stets gilt, dass<br /> <br /> :&lt;math&gt;u_i(\sigma') - u_i(\sigma) = w_i \cdot (P(\sigma') - P(\sigma))&lt;/math&gt;<br /> <br /> In diesem Fall nennt man &lt;math&gt;\Gamma&lt;/math&gt; ein gewichtetes Potenzialspiel. Die Gewichte &lt;math&gt;w_1, w_2, \ldots, w_n&lt;/math&gt; bilden einen Vektor &lt;math&gt;w&lt;/math&gt;. Kennt man diese Zahlen, so nennt man &lt;math&gt;P&lt;/math&gt; ein &lt;math&gt;w&lt;/math&gt;-Potenzial und spricht von einem Spiel mit &lt;math&gt;w&lt;/math&gt;-Potenzial.<br /> <br /> === Exaktes Potenzial ===<br /> <br /> Eine (exakte) Potenzialfunktion &lt;math&gt;P&lt;/math&gt; ist eine Funktion &lt;math&gt;P: \Sigma \rightarrow \R&lt;/math&gt; für die gilt, dass<br /> <br /> :&lt;math&gt;u_i(\sigma') - u_i(\sigma) = P(\sigma') - P(\sigma)&lt;/math&gt;<br /> <br /> Die exakte Potenzialfunktion ist also ein Spezialfall einer gewichteten Potenzialfunktion, bei der alle Gewichte &lt;math&gt;w_i = 1&lt;/math&gt; sind.<br /> Es gilt, dass jedes [[Auslastungsspiel]] eine exakte Potentialfunktion hat, umgekehrt ist jedes endliche Spiel, welches eine exakte Potentialfunktion<br /> besitzt, isomorph zu einem Auslastungsspiel.&lt;ref name=&quot;potential&quot; /&gt;<br /> <br /> == Eigenschaften ==<br /> <br /> Jedes endliche Spiel mit Ordnungspotenzial besitzt ein Nash-Gleichgewicht in reinen Strategien.<br /> <br /> Zwei Potenzialfunktionen &lt;math&gt;P_1&lt;/math&gt; und &lt;math&gt;P_2&lt;/math&gt; eines Spiels unterscheiden sich nur durch eine Konstante:<br /> :&lt;math&gt;P_1(\sigma) = P_2(\sigma) + c&lt;/math&gt;<br /> Das bedeutet, dass für zwei Strategiekombinationen &lt;math&gt;\sigma^*&lt;/math&gt; und &lt;math&gt;\sigma^{**}&lt;/math&gt; gilt<br /> :&lt;math&gt;P_1(\sigma^*) - P_1(\sigma^{**}) = P_2(\sigma^*) - P_2(\sigma^{**})&lt;/math&gt;<br /> <br /> == Quellen ==<br /> <br /> &lt;references/&gt;<br /> <br /> [[Kategorie:Spieltheorie]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Potenzial_(Spieltheorie)&diff=128724893 Potenzial (Spieltheorie) 2014-03-20T21:56:03Z <p>Mathmon: /* Definition */</p> <hr /> <div>Ein '''Ordnungspotenzial''' oder eine '''Ordnungspotenzialfunktion''' ist in der [[Spieltheorie]] eine spezielle [[Funktion (Mathematik)|Funktion]] auf der Menge der [[Strategiekombination]]en eines [[Spiel (Spieltheorie)|Spiels]]. Durch diese Funktion werden die Strategiekombination nach ihrer [[Auszahlung]] an die Spieler angeordnet. Eine Strategiekombination besitzt dabei genau dann einen höheren Wert, wenn sie für jeden Spieler zu einer höheren Auszahlung führt. Indem man Ordnungspotenzialfunktion strenger an die Auszahlungsfunktionen bindet, erhält man die Spezialfälle des '''gewichteten Potenzials''' und des '''exakten Potenzials'''. Letzteres wird auch einfach nur als '''Potenzial''' oder '''Potenzialfunktion''' bezeichnet.<br /> <br /> Die meisten Spiele besitzen allerdings kein Ordnungpotenzial. Von [[Dov Monderer]] wurden deshalb 1988 bzw. 1996 die folgenden Klassen von Spielen eingeführt:&lt;ref&gt;Dov Monderer, Lloyd S. Shapley: [http://ie.technion.ac.il/~dov/potential.pdf ''Potential Games.''] (PDF; 200&amp;nbsp;kB) Games and Economic Behavior 14, 1996, S. 124–143&lt;/ref&gt;<br /> * '''Spiel mit Ordnungspotenzial'''<br /> * '''Spiel mit gewichtetem Potenzial'''<br /> * '''Spiel mit (exaktem) Potenzial'''<br /> <br /> Eine Potenzialfunktion wurde bei Spielen erstmals 1973 von [[Robert W. Rosenthal]] eingesetzt, um zu zeigen, dass [[Auslastungsspiel]]e ein [[Nash-Gleichgewicht|Nash-Gleichgewicht in reinen Strategien]] besitzen.&lt;ref&gt;Robert W. Rosenthal: [http://www.springerlink.com/index/J5T4730452755627.pdf ''A Class of Games Possessing Pure-Strategy Nash Equilibria.''] In: ''International Journal of Game Theory.'' Nr. 2, 1973, S. 65–67&lt;/ref&gt;<br /> <br /> == Definition ==<br /> <br /> Bei allen drei Definitionen sei &lt;math&gt;\Gamma = (N, \Sigma, u)&lt;/math&gt; ein Spiel in [[Normalform (Spieltheorie)|Normalform]]. Weiter sei &lt;math&gt;\sigma \in \Sigma&lt;/math&gt; ein beliebiges aber festes Strategieprofil und<br /> &lt;math&gt;\sigma' := (\sigma^{-i}, \sigma_i')&lt;/math&gt; das Profil, das durch den Wechsel der Strategie eines Spielers &lt;math&gt;i \in N&lt;/math&gt; von &lt;math&gt;\sigma_i&lt;/math&gt; zu &lt;math&gt;\sigma_i'&lt;/math&gt; entsteht.<br /> <br /> === Ordnungspotenzial ===<br /> <br /> Eine Ordnungspotenzialfunktion &lt;math&gt;P&lt;/math&gt; ist eine Funktion &lt;math&gt;P: \Sigma \rightarrow \R&lt;/math&gt;, für die gilt, dass<br /> <br /> :&lt;math&gt;u_i(\sigma') - u_i(\sigma) &gt; 0 \quad \Leftrightarrow \quad P(\sigma') - P(\sigma) &gt; 0&lt;/math&gt;<br /> <br /> === Gewichtetes Potenzial ===<br /> <br /> Eine gewichtete Potenzialfunktion &lt;math&gt;P&lt;/math&gt; ist eine Funktion &lt;math&gt;P: \Sigma \rightarrow \R&lt;/math&gt;<br /> bei der für jeden Spieler &lt;math&gt;i \in N&lt;/math&gt; eine Zahl &lt;math&gt;w_i &gt; 0&lt;/math&gt; existiert, sodass stets gilt, dass<br /> <br /> :&lt;math&gt;u_i(\sigma') - u_i(\sigma) = w_i \cdot (P(\sigma') - P(\sigma))&lt;/math&gt;<br /> <br /> In diesem Fall nennt man &lt;math&gt;\Gamma&lt;/math&gt; ein gewichtetes Potenzialspiel. Die Gewichte &lt;math&gt;w_1, w_2, \ldots, w_n&lt;/math&gt; bilden einen Vektor &lt;math&gt;w&lt;/math&gt;. Kennt man diese Zahlen, so nennt man &lt;math&gt;P&lt;/math&gt; ein &lt;math&gt;w&lt;/math&gt;-Potenzial und spricht von einem Spiel mit &lt;math&gt;w&lt;/math&gt;-Potenzial.<br /> <br /> === Exaktes Potenzial ===<br /> <br /> Eine (exakte) Potenzialfunktion &lt;math&gt;P&lt;/math&gt; ist eine Funktion &lt;math&gt;P: \Sigma \rightarrow \R&lt;/math&gt; für die gilt, dass<br /> <br /> :&lt;math&gt;u_i(\sigma') - u_i(\sigma) = P(\sigma') - P(\sigma)&lt;/math&gt;<br /> <br /> Die exakte Potenzialfunktion ist also ein Spezialfall einer gewichteten Potenzialfunktion, bei der alle Gewichte &lt;math&gt;w_i = 1&lt;/math&gt; sind.<br /> Es gilt, dass jedes [[Auslastungsspiel]] eine exakte Potentialfunktion hat, umgekehrt ist jedes endliche Spiel, welches eine exakte Potentialfunktion<br /> besitzt, isomorph zu einem Auslastungsspiel.&lt;ref&gt;Dov Monderer, Lloyd S. Shapley: [http://www.cs.bu.edu/~steng/teaching/Fall2008/potential.pdf ''Potential Games''] In: ''Games and Economic Behaviour.'' Nr. 14, 1996, S. 124–143&lt;/ref&gt;<br /> <br /> == Eigenschaften ==<br /> <br /> Jedes endliche Spiel mit Ordnungspotenzial besitzt ein Nash-Gleichgewicht in reinen Strategien.<br /> <br /> Zwei Potenzialfunktionen &lt;math&gt;P_1&lt;/math&gt; und &lt;math&gt;P_2&lt;/math&gt; eines Spiels unterscheiden sich nur durch eine Konstante:<br /> :&lt;math&gt;P_1(\sigma) = P_2(\sigma) + c&lt;/math&gt;<br /> Das bedeutet, dass für zwei Strategiekombinationen &lt;math&gt;\sigma^*&lt;/math&gt; und &lt;math&gt;\sigma^{**}&lt;/math&gt; gilt<br /> :&lt;math&gt;P_1(\sigma^*) - P_1(\sigma^{**}) = P_2(\sigma^*) - P_2(\sigma^{**})&lt;/math&gt;<br /> <br /> == Quellen ==<br /> <br /> &lt;references/&gt;<br /> <br /> [[Kategorie:Spieltheorie]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Potenzial_(Spieltheorie)&diff=128724635 Potenzial (Spieltheorie) 2014-03-20T21:47:01Z <p>Mathmon: </p> <hr /> <div>Ein '''Ordnungspotenzial''' oder eine '''Ordnungspotenzialfunktion''' ist in der [[Spieltheorie]] eine spezielle [[Funktion (Mathematik)|Funktion]] auf der Menge der [[Strategiekombination]]en eines [[Spiel (Spieltheorie)|Spiels]]. Durch diese Funktion werden die Strategiekombination nach ihrer [[Auszahlung]] an die Spieler angeordnet. Eine Strategiekombination besitzt dabei genau dann einen höheren Wert, wenn sie für jeden Spieler zu einer höheren Auszahlung führt. Indem man Ordnungspotenzialfunktion strenger an die Auszahlungsfunktionen bindet, erhält man die Spezialfälle des '''gewichteten Potenzials''' und des '''exakten Potenzials'''. Letzteres wird auch einfach nur als '''Potenzial''' oder '''Potenzialfunktion''' bezeichnet.<br /> <br /> Die meisten Spiele besitzen allerdings kein Ordnungpotenzial. Von [[Dov Monderer]] wurden deshalb 1988 bzw. 1996 die folgenden Klassen von Spielen eingeführt:&lt;ref&gt;Dov Monderer, Lloyd S. Shapley: [http://ie.technion.ac.il/~dov/potential.pdf ''Potential Games.''] (PDF; 200&amp;nbsp;kB) Games and Economic Behavior 14, 1996, S. 124–143&lt;/ref&gt;<br /> * '''Spiel mit Ordnungspotenzial'''<br /> * '''Spiel mit gewichtetem Potenzial'''<br /> * '''Spiel mit (exaktem) Potenzial'''<br /> <br /> Eine Potenzialfunktion wurde bei Spielen erstmals 1973 von [[Robert W. Rosenthal]] eingesetzt, um zu zeigen, dass [[Auslastungsspiel]]e ein [[Nash-Gleichgewicht|Nash-Gleichgewicht in reinen Strategien]] besitzen.&lt;ref&gt;Robert W. Rosenthal: [http://www.springerlink.com/index/J5T4730452755627.pdf ''A Class of Games Possessing Pure-Strategy Nash Equilibria.''] In: ''International Journal of Game Theory.'' Nr. 2, 1973, S. 65–67&lt;/ref&gt;<br /> <br /> == Definition ==<br /> <br /> Bei allen drei Definitionen sei &lt;math&gt;\Gamma = (N, \Sigma, u)&lt;/math&gt; ein Spiel in [[Normalform (Spieltheorie)|Normalform]]. Weiter sei &lt;math&gt;\sigma \in \Sigma&lt;/math&gt; ein beliebiges aber festes Strategieprofil und<br /> &lt;math&gt;\sigma' := (\sigma^{-i}, \sigma_i')&lt;/math&gt; das Profil, das durch den Wechsel der Strategie eines Spielers &lt;math&gt;i \in N&lt;/math&gt; von &lt;math&gt;\sigma_i&lt;/math&gt; zu &lt;math&gt;\sigma_i'&lt;/math&gt; entsteht.<br /> <br /> === Ordnungspotenzial ===<br /> <br /> Eine Ordnungspotenzialfunktion &lt;math&gt;P&lt;/math&gt; ist eine Funktion &lt;math&gt;P: \Sigma \rightarrow \R&lt;/math&gt;, für die gilt, dass<br /> <br /> :&lt;math&gt;u_i(\sigma') - u_i(\sigma) &gt; 0 \quad \Leftrightarrow \quad P(\sigma') - P(\sigma) &gt; 0&lt;/math&gt;<br /> <br /> === Gewichtetes Potenzial ===<br /> <br /> Eine gewichtete Potenzialfunktion &lt;math&gt;P&lt;/math&gt; ist eine Funktion &lt;math&gt;P: \Sigma \rightarrow \R&lt;/math&gt;<br /> bei der für jeden Spieler &lt;math&gt;i \in N&lt;/math&gt; eine Zahl &lt;math&gt;w_i &gt; 0&lt;/math&gt; existiert, sodass stets gilt, dass<br /> <br /> :&lt;math&gt;u_i(\sigma') - u_i(\sigma) = w_i \cdot (P(\sigma') - P(\sigma))&lt;/math&gt;<br /> <br /> In diesem Fall nennt man &lt;math&gt;\Gamma&lt;/math&gt; ein gewichtetes Potenzialspiel. Die Gewichte &lt;math&gt;w_1, w_2, \ldots, w_n&lt;/math&gt; bilden einen Vektor &lt;math&gt;w&lt;/math&gt;. Kennt man diese Zahlen, so nennt man &lt;math&gt;P&lt;/math&gt; ein &lt;math&gt;w&lt;/math&gt;-Potenzial und spricht von einem Spiel mit &lt;math&gt;w&lt;/math&gt;-Potenzial.<br /> <br /> === Exaktes Potenzial ===<br /> <br /> Eine (exakte) Potenzialfunktion &lt;math&gt;P&lt;/math&gt; ist eine Funktion für die gilt, dass<br /> <br /> :&lt;math&gt;u_i(\sigma') - u_i(\sigma) = P(\sigma') - P(\sigma)&lt;/math&gt;<br /> <br /> Die exakte Potenzialfunktion ist also ein Spezialfall einer gewichteten Potenzialfunktion, bei der alle Gewichte &lt;math&gt;w_i = 1&lt;/math&gt; sind.<br /> Es gilt, dass jedes [[Auslastungsspiel]] eine exakte Potentialfunktion hat, umgekehrt ist jedes endliche Spiel, welches eine exakte Potentialfunktion<br /> besitzt, isomorph zu einem Auslastungsspiel.&lt;ref&gt;Dov Monderer, Lloyd S. Shapley: [http://www.cs.bu.edu/~steng/teaching/Fall2008/potential.pdf ''Potential Games''] In: ''Games and Economic Behaviour.'' Nr. 14, 1996, S. 124–143&lt;/ref&gt;<br /> <br /> == Eigenschaften ==<br /> <br /> Jedes endliche Spiel mit Ordnungspotenzial besitzt ein Nash-Gleichgewicht in reinen Strategien.<br /> <br /> Zwei Potenzialfunktionen &lt;math&gt;P_1&lt;/math&gt; und &lt;math&gt;P_2&lt;/math&gt; eines Spiels unterscheiden sich nur durch eine Konstante:<br /> :&lt;math&gt;P_1(\sigma) = P_2(\sigma) + c&lt;/math&gt;<br /> Das bedeutet, dass für zwei Strategiekombinationen &lt;math&gt;\sigma^*&lt;/math&gt; und &lt;math&gt;\sigma^{**}&lt;/math&gt; gilt<br /> :&lt;math&gt;P_1(\sigma^*) - P_1(\sigma^{**}) = P_2(\sigma^*) - P_2(\sigma^{**})&lt;/math&gt;<br /> <br /> == Quellen ==<br /> <br /> &lt;references/&gt;<br /> <br /> [[Kategorie:Spieltheorie]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Potenzial_(Spieltheorie)&diff=128715005 Potenzial (Spieltheorie) 2014-03-20T16:20:56Z <p>Mathmon: </p> <hr /> <div>Ein '''Ordnungspotenzial''' oder eine '''Ordnungspotenzialfunktion''' ist in der [[Spieltheorie]] eine spezielle [[Funktion (Mathematik)|Funktion]] auf der Menge der [[Strategiekombination]]en eines [[Spiel (Spieltheorie)|Spiels]]. Durch diese Funktion werden die Strategiekombination nach ihrer [[Auszahlung]] an die Spieler angeordnet. Eine Strategiekombination besitzt dabei genau dann einen höheren Wert, wenn sie für jeden Spieler zu einer höheren Auszahlung führt. Indem man Ordnungspotenzialfunktion strenger an die Auszahlungsfunktionen bindet, erhält man die Spezialfälle des '''gewichteten Potenzials''' und des '''exakten Potenzials'''. Letzteres wird auch einfach nur als '''Potenzial''' oder '''Potenzialfunktion''' bezeichnet.<br /> <br /> Die meisten Spiele besitzen allerdings kein Ordnungpotenzial. Von [[Dov Monderer]] wurden deshalb 1988 bzw. 1996 die folgenden Klassen von Spielen eingeführt:&lt;ref&gt;Dov Monderer, Lloyd S. Shapley: [http://ie.technion.ac.il/~dov/potential.pdf ''Potential Games.''] (PDF; 200&amp;nbsp;kB) Games and Economic Behavior 14, 1996, S. 124–143&lt;/ref&gt;<br /> * '''Spiel mit Ordnungspotenzial'''<br /> * '''Spiel mit gewichtetem Potenzial'''<br /> * '''Spiel mit (exaktem) Potenzial'''<br /> <br /> Eine Potenzialfunktion wurde bei Spielen erstmals 1973 von [[Robert W. Rosenthal]] eingesetzt, um zu zeigen, dass [[Auslastungsspiel]]e ein [[Nash-Gleichgewicht|Nash-Gleichgewicht in reinen Strategien]] besitzen.&lt;ref&gt;Robert W. Rosenthal: [http://www.springerlink.com/index/J5T4730452755627.pdf ''A Class of Games Possessing Pure-Strategy Nash Equilibria.''] In: ''International Journal of Game Theory.'' Nr. 2, 1973, S. 65–67&lt;/ref&gt;<br /> <br /> == Definition ==<br /> <br /> Bei allen drei Definitionen sei &lt;math&gt;\Gamma = (N, \Sigma, u)&lt;/math&gt; ein Spiel in [[Normalform (Spieltheorie)|Normalform]]. Weiter sei &lt;math&gt;\sigma \in \Sigma&lt;/math&gt; ein beliebiges aber festes Strategieprofil und<br /> &lt;math&gt;\sigma' := (\sigma^{-i}, \sigma_i')&lt;/math&gt; das Profil, das durch den Wechsel der Strategie eines Spielers &lt;math&gt;i \in N&lt;/math&gt; von &lt;math&gt;\sigma_i&lt;/math&gt; zu &lt;math&gt;\sigma_i'&lt;/math&gt; entsteht.<br /> <br /> === Ordnungspotenzial ===<br /> <br /> Eine Ordnungspotenzialfunktion &lt;math&gt;P&lt;/math&gt; ist eine Funktion &lt;math&gt;P: \Sigma \rightarrow \R&lt;/math&gt;, für die gilt, dass<br /> <br /> :&lt;math&gt;u_i(\sigma') - u_i(\sigma) &gt; 0 \quad \Leftrightarrow \quad P(\sigma') - P(\sigma) &gt; 0&lt;/math&gt;<br /> <br /> === Gewichtetes Potenzial ===<br /> <br /> Eine gewichtete Potenzialfunktion &lt;math&gt;P&lt;/math&gt; ist eine Funktion &lt;math&gt;P: \Sigma \rightarrow \R&lt;/math&gt;<br /> bei der für jeden Spieler &lt;math&gt;i \in N&lt;/math&gt; eine Zahl &lt;math&gt;w_i &gt; 0&lt;/math&gt; existiert, sodass stets gilt, dass<br /> <br /> :&lt;math&gt;u_i(\sigma') - u_i(\sigma) = w_i \cdot (P(\sigma') - P(\sigma))&lt;/math&gt;<br /> <br /> In diesem Fall nennt man &lt;math&gt;\Gamma&lt;/math&gt; ein gewichtetes Potenzialspiel. Die Gewichte &lt;math&gt;w_1, w_2, \ldots, w_n&lt;/math&gt; bilden einen Vektor &lt;math&gt;w&lt;/math&gt;. Kennt man diese Zahlen, so nennt man &lt;math&gt;P&lt;/math&gt; ein &lt;math&gt;w&lt;/math&gt;-Potenzial und spricht von einem Spiel mit &lt;math&gt;w&lt;/math&gt;-Potenzial.<br /> <br /> === Exaktes Potenzial ===<br /> <br /> Eine (exakte) Potenzialfunktion &lt;math&gt;P&lt;/math&gt; ist eine Funktion für die gilt, dass<br /> <br /> :&lt;math&gt;u_i(\sigma') - u_i(\sigma) = P(\sigma') - P(\sigma)&lt;/math&gt;<br /> <br /> Die exakte Potenzialfunktion ist also ein Spezialfall einer gewichteten Potenzialfunktion, bei der alle Gewichte &lt;math&gt;w_i = 1&lt;/math&gt; sind.<br /> <br /> == Eigenschaften ==<br /> <br /> Jedes endliche Spiel mit Ordnungspotenzial besitzt ein Nash-Gleichgewicht in reinen Strategien.<br /> <br /> Zwei Potenzialfunktionen &lt;math&gt;P_1&lt;/math&gt; und &lt;math&gt;P_2&lt;/math&gt; eines Spiels unterscheiden sich nur durch eine Konstante:<br /> :&lt;math&gt;P_1(\sigma) = P_2(\sigma) + c&lt;/math&gt;<br /> Das bedeutet, dass für zwei Strategiekombinationen &lt;math&gt;\sigma^*&lt;/math&gt; und &lt;math&gt;\sigma^{**}&lt;/math&gt; gilt<br /> :&lt;math&gt;P_1(\sigma^*) - P_1(\sigma^{**}) = P_2(\sigma^*) - P_2(\sigma^{**})&lt;/math&gt;<br /> <br /> == Quellen ==<br /> <br /> &lt;references/&gt;<br /> <br /> [[Kategorie:Spieltheorie]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Benutzer_Diskussion:Mathmon&diff=120469171 Benutzer Diskussion:Mathmon 2013-07-12T08:57:42Z <p>Mathmon: </p> <hr /> <div>== Herzlich willkommen in der Wikipedia, Mathmon! ==<br /> Ich habe gesehen, dass [[Wikipedia:Warum sich hier alle duzen|du]] dich kürzlich hier angemeldet hast und möchte dir ein paar Tipps geben, damit du dich in der Wikipedia möglichst schnell zurechtfindest:<br /> {| class=&quot;hintergrundfarbe5&quot; style=&quot;width:100%;padding:0.5em&quot;<br /> ! style=&quot;border-right:0.1em solid #888&quot; | [[Hilfe:Neu bei Wikipedia|Neu bei Wikipedia]]<br /> ! style=&quot;border-right:0.1em solid #888&quot; | [[Wikipedia:Tutorial|Tutorial]]&amp;nbsp;<br /> ! style=&quot;border-right:0.1em solid #888&quot; | [[Wikipedia:Wie schreibe ich gute Artikel|Gute Artikel schreiben]]<br /> ! style=&quot;border-right:0.1em solid #888&quot; | [[Wikipedia:Mentorenprogramm|Persönliche Betreuung]]<br /> ! [[Wikipedia:Fragen von Neulingen|Noch Fragen? Hier klicken!]]<br /> |}<br /> [[Datei:Signaturhinweis deutsch vector.png|rechts|gerahmt|Diskussionsbeiträge sollten immer mit Klick auf diese Schaltfläche [[Hilfe:Signatur|unterschrieben]] werden – Beiträge zu [[Wikipedia:Artikel|Artikeln]] hingegen nicht.]]<br /> * [[Wikipedia:Sei mutig|Sei mutig]], aber vergiss bitte nicht, dass andere Benutzer auch Menschen sind. Daher wahre bitte immer einen [[Wikipedia:Wikiquette|freundlichen Umgangston]], auch wenn du dich mal über andere ärgerst.<br /> * Bitte gib bei Artikelbearbeitungen möglichst immer eine [[Wikipedia:Belege|Quelle]] an (am besten als [[Hilfe:Einzelnachweise|Einzelnachweis]]) und begründe deine Bearbeitung kurz in der [[Hilfe:Zusammenfassung und Quellen|Zusammenfassungszeile]]. Damit vermeidest du, dass andere Benutzer deine Änderung rückgängig machen, weil sie diese nicht nachvollziehen können.<br /> * Nicht alle Themen und Texte sind für eine Enzyklopädie wie die Wikipedia geeignet. Enttäuschungen beim Schreiben von Artikeln kannst du vermeiden, wenn du dir zuvor [[Wikipedia:Was Wikipedia nicht ist]] und [[Wikipedia:Relevanzkriterien]] anschaust.<br /> * [[Hilfe:Übersicht]] zeigt dir den Zugang zu allen Hilfethemen.<br /> * [[Hilfe:Glossar]] informiert dich, wenn du Abkürzungen oder Ausdrücke in den [[Hilfe:Zusammenfassung und Quellen|Editkommentaren]] oder auf Diskussionsseiten nicht verstehst.<br /> Schön, dass du zu uns gestoßen bist – und: Lass dich nicht stressen.<br /> <br /> Einen guten Start wünscht dir --[[Benutzer:Asturius|Asturius]] ([[Benutzer Diskussion:Asturius|Diskussion]]) 20:55, 25. Okt. 2012 (CEST)<br /> :Bei weiteren Fragen kannst du dich auch gerne an das [[Portal:Mathematik]] wenden! --[[Benutzer:Asturius|Asturius]] ([[Benutzer Diskussion:Asturius|Diskussion]]) 20:55, 25. Okt. 2012 (CEST)</div> Mathmon https://de.wikipedia.org/w/index.php?title=Gleichgewicht_in_korrelierten_Strategien&diff=118598755 Gleichgewicht in korrelierten Strategien 2013-05-17T15:25:06Z <p>Mathmon: /* Formale Definition des Gleichgewichtes in korrelierten Strategien */</p> <hr /> <div>[[Datei:ישראל אומן 2010.jpg|thumb|Robert Aumann 2010]]<br /> <br /> Das '''Gleichgewicht in korrelierten Strategien''' (auch ''Correlated equilibrium''-Konzept&lt;ref name=&quot;JOME&quot;&gt;Aumann, Robert:''Subjectivity and Correlation in Randomized Strategies.'' Journal of Mathematical Economics 1, 1974: S. 67-96.&lt;/ref&gt;) ist ein vom Mathematiker [[Robert Aumann]] entwickeltes [[Lösungskonzept]], durch das im Rahmen der [[Spieltheorie]] eine Harmonisierung der [[Strategie (Spieltheorie)|Strategien]] möglich wird.&lt;ref&gt;Holler, Manfred/ Illing, Gerhard: ''Einführung in die Spieltheorie.''6., überarbeitete Auflage, Springer Verlag, Berlin und Heidelberg, 2006: S. 87ff.&lt;/ref&gt; Im Gegensatz zum [[Nash-Gleichgewicht]], das weder bindende Verträge noch Kommunikation vor dem Entscheidungstreffen der beteiligten Spieler zulässt und somit die Strategiewahl des einen von der Strategiewahl des anderen Spielers unberührt bleibt, ermöglicht das ''Gleichgewicht in korrelierten Strategien'' eine [[Korrelation|Korrelierung]] der Strategien untereinander.<br /> <br /> == Überblick ==<br /> Die Grundidee erlaubt die Betrachtung der gemeinsamen Randomisierungen der Spieler über die [[Strategie (Spieltheorie)|Strategiemenge S]] und die Offenlegung der korrelierten Strategien (eng. correlated strategies).&lt;ref name=&quot;JOME&quot; /&gt;Zu Anschauungszwecken wird sehr oft ein öffentlicher [[Münzwurf|Wahrscheinlichkeitsmechanismus]] unterstellt (eng. correlation device)&lt;ref name=&quot;JOME&quot; /&gt;, an dem die Spieler ihre Strategie ausrichten. Dies kann zum Beispiel ein einfacher Münzwurf sein. Hier wird correlation device streng im Sinne des ''public correlation device'' verwendet. In Abgrenzung dazu sei erwähnt, dass je nach wissenschaftlicher Fragestellung, die Verwendung eines ''private correlation device'' möglich ist.&lt;ref&gt;Bone, John/ Drouvelis, Micaelis/ Ray, Indrajit: ''Avoiding Coordination-Failure using Correlation Devices: Experimental Evidences.'' Department of Economics, University of Michigan, letzte Version September 2011: S. 1-13. Verfügbar auf: http://www.isid.ac.in/~pu/conference/dec_11_conf/Papers/IndrajitRay.pdf&lt;/ref&gt;<br /> <br /> Das Aumannsche Konzept stellt ein stärkeres Gleichgewichtskonzept als das von [[John Forbes Nash Jr.|John Nash]] dar. Für die Spieler resultiert, selbst im Falle, dass keine bindenden Verträge möglich sind, ein höheres [[Feiglingsspiel|Auszahlungspotential]]. Ein Gleichgewicht nach Nash in [[Gemischte Strategie|gemischten Strategien]] kann demnach als eine stabile Situation begriffen werden, welche die Randomisierung der Strategien auf unkorrelierte Art und Weise, also im statistisch unabhängigen Modus impliziert.<br /> <br /> Das große Verdienst von Aumann besteht darin, dass er die Starrheit des Konzeptes von Nash aufgehoben hat, und zwar durch seine Beweisführung, dass eine Randomisierung der Spieler, die einem gemeinsamen Zufallsmechanismus folgt und somit die Randomisierung der Strategien im statistisch abhängigen Modus korreliert, beide Spieler besser stellen kann.&lt;ref&gt;<br /> &lt;font&gt;Aumann, Robert: &lt;/font&gt;[http://ideas.repec.org/a/ecm/emetrp/v55y1987i1p1-18.html &lt;font&gt;''Correlated Equilibrium as an Expression of Bayesian Rationality.''&lt;/font&gt;]&lt;font&gt; [http://ideas.repec.org/s/ecm/emetrp.html Econometrica], Econometric Society, Vol. 55, No. 1, 1987: S. 1-6.&lt;/font&gt;&lt;/ref&gt;<br /> Vorausgesetzt, die Beteiligten sind gewillt, sich auf einen gemeinsamen Mechanismus bezüglich der Definition der Strategienmischung zu einigen, und sofern unter dieser Prämisse keine Verbesserung durch das Zurückgreifen auf unkorrelierte Strategien möglich ist, spricht man von einem ''Gleichgewicht in korrelierten Strategien''.<br /> <br /> == Beispiel ==<br /> Das ''Gleichgewicht in korrelierten Strategien'' wird am Beispiel des Problems „[[Kampf der Geschlechter]]“ illustriert.<br /> <br /> === Modellannahmen ===<br /> Das [[Modell]] geht zunächst von der Annahme aus, dass beide Spieler an einem ihnen wohlbekannten Spiel teilnehmen. Bevor dieses beginnt, bekommen beide ein Signal zugewiesen, dass die [[Spiel mit dem Untergang|Nutzeneinheiten]] selbst nicht verändert, sehr wohl aber, da beide Spieler ihre Strategien korrelieren, d.h. aufeinander abstimmen können, den Ausgang des Spieles und somit den erhaltenen Nutzen jeden Spielers.&lt;ref&gt;Holler, Manfred/ Illing, Gerhard: ''Einführung in die Spieltheorie.'' 6., überarbeitete Auflage, Springer Verlag, Berlin und Heidelberg, 2006: S. 88.&lt;/ref&gt;<br /> <br /> Von entscheidender Bedeutung beim Konzept von Aumann ist die Existenz eines unabhängigen Koordinators, der jedem Spieler seine Strategie zuweist. Diesem vertrauen beide Spieler, denn sie haben in dem Modell schließlich die Gewissheit, dass es sich bei der vorgeschlagenen Strategie um ein Gleichgewicht handelt. Somit ist es für keinen Spieler lohnend, von der vorgeschlagenen Strategie abzuweichen.&lt;ref&gt;Hart, Sergiu: ''Robert Aumann's Game and Economic Theory''. Scandinavian Journal of Economics, Vol. 108, No. 2, July 2006: S. 202. Verfügbar auf: http://www.ma.huji.ac.il/hart/papers/aumann-n.pdf&lt;/ref&gt;<br /> <br /> === Modell ===<br /> Das bekannte Spiel [[Kampf der Geschlechter]] wird mittels einer [[Spieltheorie#Darstellungsformen|Bimatrix]] dargestellt:<br /> <br /> {| border=&quot;1&quot;<br /> |<br /> |<br /> ! colspan=&quot;2&quot; align=&quot;center&quot; | Frau<br /> |-<br /> |<br /> |<br /> ! Fußball (s&lt;sub&gt;21&lt;/sub&gt;)<br /> ! Ballett (s&lt;sub&gt;22&lt;/sub&gt;)<br /> |-<br /> ! rowspan=&quot;2&quot; align=&quot;center&quot; | Mann<br /> ! Fußball (s&lt;sub&gt;11&lt;/sub&gt;)<br /> | align=&quot;center&quot; | 3/1<br /> | align=&quot;center&quot; | 0/0<br /> |-<br /> ! Ballett (s&lt;sub&gt;12&lt;/sub&gt;)<br /> | align=&quot;center&quot; | 0/0<br /> | align=&quot;center&quot; | 1/3<br /> |}<br /> <br /> Die reinen Nash-Gleichgewichte sind {Fußball,Fußball} und {Ballett, Ballett}. Die Wahrscheinlichkeit, dass einer der Spieler mit seiner Vermutung, welches der beiden obigen Gleichgewichte vom anderen Spieler gewählt wird, richtig liegt, ist in einer Welt ohne Absprache gering.<br /> <br /> Abweichung davon ist beispielsweise in einer Umgebung möglich, in der die Männer die Frauen dominieren, so dass sich das Ehepaar immer auf den Besuch des Fußballspieles einigt; dieser sogenannte [[Fokaler Punkt|Focus-Punkt-Effekt]] (eng. focal-point effect) wurde von dem US-amerikanischen Ökonomen und Nobelpreisträger [[Thomas Schelling]] in seinem einflussreichen Buch über die Sozialtheorie ''Strategy of Conflict(1960)'' beschrieben und somit auf den Einfluss von Umwelt- und Kulturfaktoren auf das rationale Verhalten hingewiesen&lt;ref&gt;Myerson, Roger: ''Learning from Schelling's strategy of conflict''. Department of Economics, University of Chicago, letzte Version April 2009: S. 5. Verfügbar auf: http://home.uchicago.edu/~rmyerson/research/stratofc.pdf&lt;/ref&gt;.<br /> <br /> === Möglichkeiten zur Modellierung von strategischer Unsicherheit ===<br /> [[Unsicherheit|Strategische Unsicherheit]] liegt bei einem Spiel also dann vor, wenn weder die Möglichkeit expliziter, d.h. verbaler noch impliziter [[Kommunikation]], wie sie zum Beispiel im kulturellen Kontext durch Gewohnheiten mehr oder minder stark determiniert ist, existiert. Dies macht den Rückgriff auf alternative Lösungskonzepte notwendig.<br /> <br /> Die erste Lösungsmöglichkeit geht auf John Nash zurück und stellt die klassische Betrachtung eines [[Gemischte Strategie|Gleichgewichtes in gemischten Strategien]] dar. In der obigen Bimatrix liegt ein Gleichgewicht in gemischten Strategien nach Nash in &lt;math&gt;\textstyle s_{11}=\frac{3}{4}&lt;/math&gt; und &lt;math&gt;\textstyle s_{12}=\frac{1}{4}&lt;/math&gt; vor, jedoch beträgt die erwartete Auszahlung hierbei nur 0,75, und zwar sowohl für den Mann als auch für die Frau.&lt;ref&gt;[http://www.gametheory.net/Mike/applets/NormalForm/NormalForm.html] Java-Aplett zur Lösung von Normalformspielen&lt;/ref&gt;Somit bekommt jeder weniger als das, was in den beiden Nash-Gleichgewichten beim Spielen von [[Reine Strategie|reinen Strategien]]möglich ist.<br /> <br /> Gegeben dem Fall also, dass sich die Spieler, in diesem Fall das Paar darauf einigen könnte, zusammen eines von zweien Nash-Gleichgewichten in reinen Strategien zu spielen und sich somit jeweils einen erwarteten Nutzen von 2 zu sichern, so wäre die Absprache und zwar auch ohne einen bindenden [[Vertrag]] stabil, denn weder der Mann noch die Frau hätten einen Anreiz abzuweichen. Die Kommunikation erweist sich somit als äußerst vorteilhaft und ebnet den Weg zu der zweiten Lösungsmöglickeit, nämlich dem Gleichgewicht in korrelierten Strategien, dem Kernstück von Aumanns Arbeit.<br /> <br /> Dieses kann über verschiedene Mechanismen implentiert werden. Zum einen kann sich das Ehepaar im Vorfeld darauf einigen bei schönem Wetter zu einem Fußballspiel und bei schlechtem Wetter ins Ballett zu gehen oder um auf den Münzwurf zu Beginn zurückzukommen, das Vorhandensein eines vertrauenswürdigen Vermittlers, bei dem beide davon ausgehen können, dass die vorgeschlagene Strategie ein Gleichgewicht ist und der dem Ehepaar bei Kopf zum Fußball und bei Zahl zum Ballett rät, also zum Spielen von &lt;math&gt;(s_{11}, s_{21})&lt;/math&gt; oder alternativ &lt;math&gt;(s_{12}, s_{22})&lt;/math&gt;.<br /> <br /> Da die Wahrscheinlichkeit sowohl für Kopf als auch für Zahl im Falle einer perfekten Münze jeweils &lt;math&gt;\textstyle \frac{1}{2}&lt;/math&gt; ist, sind demnach &lt;math&gt;(s_{11}, s_{21})&lt;/math&gt; und &lt;math&gt;(s_{12}, s_{22})&lt;/math&gt;, bevor Kopf oder Zahl gefallen ist, gleich wahrscheinlich.<br /> <br /> == Mathematische Darstellung ==<br /> <br /> === Vorüberlegungen zu privaten und nicht privaten Signalen ===<br /> <br /> Wie in den obigen Abschnitten bereits erläutert worden ist, kann das Konzept des Nash-Gleichgewichts in gemischten Strategien zur Modellierung von Spielen mit nicht deterministischen Spielerstrategien und vorgeschriebenen Wahrscheinlichkeitsverteilungen dieser Strategien verwendet werden.&lt;ref&gt;Osborne, Martin J./ Rubinstein, Ariel: ''A Course in Game Theory.'' MIT Press Books, The MIT Press, edition 1, Vol 1, No. 0262650401, 1994: S. 31, 32, 38.&lt;/ref&gt; Das Nash-Gleichgewicht in gemischten Strategien darf folglich als eine stationäre Situation aufgefasst werden, in der die Spieler ihre reinen Strategien von einem von außen kommendem, privaten und voneinander unabhängigen [[Signal]] abhängig machen.&lt;ref&gt;Osborne, Martin J./ Rubinstein, Ariel: ''A Course in Game Theory.'' MIT Press Books, The MIT Press, edition 1, Vol. 1, No. 0262650401, 1994: S. 39-41.&lt;/ref&gt;<br /> <br /> Aumanns Arbeit geht dagegen von der Prämisse aus, dass es in korrelierten Gleichgewichten Abhängigkeiten zwischen den Spielersignalen gibt, da diese nicht mehr privat sind.&lt;ref&gt;Hart, Sergiu: ''Robert Aumann's Game and Economic Theory''. Scandinavian Journal of Economics, Vol. 108, No. 2, July 2006: S. 202-204.&lt;/ref&gt;Dies impliziert die Optimalität der reinen Strategie eines jeden Spielers, sobald die Informationen der Spieler bekannt sind.<br /> <br /> === Definitionen ===<br /> <br /> Im folgenden wird ein Überblick über die mathematischen Aspekte von Aumanns Konzept vermittelt.<br /> <br /> ==== Definition der korrelierten Strategie ====<br /> <br /> Zunächst wird die Definition der korrelierten Strategie selbst gegeben. Wenn die [[Wahrscheinlichkeitsverteilung]] &lt;math&gt;w(s)&lt;/math&gt;<br /> <br /> * gemeinsames Wissen aller Spieler ist<br /> * und wenn für diese über die Strategiemenge &lt;math&gt;S&lt;/math&gt; aus allen reinen Strategiekombinationen &lt;math&gt;\textstyle \sum w(s)=1&lt;/math&gt; und &lt;math&gt;w(s) \ge 0&lt;/math&gt; für alle &lt;math&gt;s \in S_i&lt;/math&gt; gilt,<br /> <br /> dann nennt man &lt;math&gt;w(s)&lt;/math&gt; eine korrelierte Strategie.&lt;ref&gt;Holler, Manfred/ Illing, Gerhard: ''Einführung in die Spieltheorie.'' 6., überarbeitete Auflage, Springer Verlag, Berlin und Heidelberg, 2006: S. 89.&lt;/ref&gt;<br /> <br /> ==== Formale Definition des Gleichgewichtes in korrelierten Strategien ====<br /> <br /> Ein strategisches &lt;math&gt;N&lt;/math&gt;-Spieler-Spiel &lt;math&gt;\displaystyle (N,S_i,u_i)&lt;/math&gt; sei charakterisiert durch die möglichen Handlungen &lt;math&gt;\displaystyle S_i&lt;/math&gt; and die [[Nutzenfunktion]] &lt;math&gt;u_i&lt;/math&gt; für jeden Spieler &lt;math&gt;i&lt;/math&gt;. Falls der Spieler &lt;math&gt;i&lt;/math&gt; die Strategiewahl &lt;math&gt;s \in S_i&lt;/math&gt; des zugrundeliegenden Spiels trifft und die nachfolgenden Spieler eine Strategie wählen, die durch das &lt;math&gt;N-1&lt;/math&gt;-Tupel &lt;math&gt;\displaystyle s_{-i}&lt;/math&gt; charakterisiert ist, dann sei der Nutzen des Spielers &lt;math&gt;i&lt;/math&gt; mit &lt;math&gt;\displaystyle u_i(s_i,s_{-i})&lt;/math&gt; bezeichnet. Eine Modifikation der Strategie für jeden Spieler &lt;math&gt;i&lt;/math&gt; sei durch die Funktion &lt;math&gt;\displaystyle \phi : S_i \to S_i&lt;/math&gt; dargestellt, folglich ist der Spieler &lt;math&gt;i&lt;/math&gt; in der Lage gemäß &lt;math&gt;\displaystyle \phi&lt;/math&gt; seine Handlungen zu modifizieren, d.h. auf die Anweisung&lt;math&gt;\displaystyle s_i&lt;/math&gt; zu spielen folgt &lt;math&gt;\displaystyle \phi(s_i)&lt;/math&gt;.&lt;br /&gt;<br /> Gegeben sei ein endlicher [[Wahrscheinlichkeitsraum]] &lt;math&gt;\displaystyle(\Omega, \pi)&lt;/math&gt;, wobei &lt;math&gt;\displaystyle\Omega&lt;/math&gt; die Menge der Zustände und &lt;math&gt;\displaystyle\pi&lt;/math&gt; ein [[Wahrscheinlichkeitsmaß]] auf &lt;math&gt;\displaystyle\Omega&lt;/math&gt; ist.&lt;br /&gt;<br /> <br /> Des Weiteren sei für jeden Spieler &lt;math&gt;i&lt;/math&gt;<br /> * &lt;math&gt;\displaystyle P_i&lt;/math&gt; dessen [[Informationspartition]],<br /> * die Strategie &lt;math&gt;\displaystyle s_i:\Omega\rightarrow S_i&lt;/math&gt; sei innerhalb derselben Informationspartition des Spielers &lt;math&gt;i&lt;/math&gt; enthalten<br /> * und &lt;math&gt;\displaystyle q(w)&lt;/math&gt; die Wahrscheinlichkeitsverteilung.<br /> <br /> Dann stellt &lt;math&gt;\displaystyle((\Omega, \pi),P_i)&lt;/math&gt; ein korreliertes Gleichgewicht eines strategischen Spieles &lt;math&gt;\displaystyle (N,S_i,u_i)&lt;/math&gt; für jeden Spieler &lt;math&gt; i&lt;/math&gt; und für jede Modifikation der Strategie &lt;math&gt;\phi&lt;/math&gt; dar, falls gilt:<br /> <br /> :&lt;math&gt;\displaystyle\sum_{\omega \in \Omega} q(\omega)u_i(s_i, s_{-i}) \geq \sum_{\omega \in \Omega} q(\omega)u_i(\phi(s_i), s_{-i}).&lt;/math&gt;&lt;ref&gt;Osborne, Martin J./ Rubinstein, Ariel: ''A Course in Game Theory.'' MIT Press Books, The MIT Press, edition 1, Vol. 1, No. 0262650401, 1994: S. 45.&lt;/ref&gt;<br /> <br /> Oder einfacher ausgedrückt: &lt;math&gt;\displaystyle((\Omega, \pi),P_i)&lt;/math&gt; ist ein korreliertes Gleichgewicht, falls kein Spieler seinen erwarteten Nutzen mittels einer Strategiemodifikation ändern kann und somit um auf das Ursprungsmodell zurückzukommen, keinen Anreiz zum Abweichen von der vorgeschlagenen Strategie hat.<br /> <br /> ==== Zusammenhang zwischen dem Nash-Gleichgewicht und dem Gleichgewicht in korrelierten Strategien ====<br /> <br /> Für jedes Nash-Gleichgewicht gilt, dass es ein Spezialfall des Gleichgewichtes in korrelierten Strategien darstellt. Die Besonderheit liegt in der Unabhängigkeit der Wahrscheinlichkeiten bei der Wahl von Strategien durch verschiedene Spieler. Die Wahrscheinlichkeiten zeigen hier keine Korrelation. So gilt in einem 2-Personen-Spiel für 2 Spieler: &lt;math&gt;\displaystyle w(s)= w(s_1)*w(s_2)&lt;/math&gt;.&lt;ref&gt;Holler, Manfred/ Illing, Gerhard: ''Einführung in die Spieltheorie.'' 6., überarbeitete Auflage, Springer Verlag, Berlin und Heidelberg, 2006: S. 89.&lt;/ref&gt;<br /> <br /> Da reine Nash-Gleichgewichte durch konvexe Kombination wiederum ein Gleichgewicht in korrelierten Strategien ergeben, kann ihre Menge größer als die der Nash-Gleichgewichte sein.<br /> <br /> Erwähnenswert zudem ist noch die Verwandtschaft der korrelierten Gleichgewichte mit [[Sunspot-Gleichgewichten]] aus der [[Rationale Erwartung|Theorie der rationalen Erwartungen]].&lt;ref&gt;Holler/Illing (2006): S. 90.&lt;/ref&gt;<br /> <br /> ==== Effiziente korrelierte Strategien ====<br /> <br /> Nun wird in den folgenden Ausführungen anhand des beliebten [[Feiglingsspiel|Feiglingsspiels (eng. Chicken Game)]] erläutert, was eine effiziente korrelierte Strategie ist. Im Feiglingspiel geht es darum, dass zwei sozial fehlgeleitete Jugendliche in zwei Autos aufeinander zurasen. Wer von beiden in dieser Mutprobe als erster ausweicht, wird vom Rest der Clique als Feigling betrachtet. Weicht jedoch keiner aus, sterben beide in einem Feuerball beim Aufeinanderprallen. Zunächst sei darauf hingewiesen, dass beim Feiglingsspiel die Auszahlungsstruktur bezüglich derer von Battle of Sexes durch das Vorhandensein einer [[Pareto-optimal|pareto-optimalen]] [[Kampf der Geschlechter|symmetrischen Auszahlungskombination]], die eine höhere Auszahlungssumme verspricht, differiert.&lt;ref&gt;Sen, Sandip/ Airiau, Stephane/ Mukherjee, Rajatish: ''Towards a Pareto-optimal Solution in General-Sum Games'', Proceedings of the Second International Joint Conference on Autonomous Agents and Multiagent Systems, Melbourne, Australia, July 2003: S. 153-160. Verfügbar auf: http://dl.acm.org/citation.cfm?id=860600&lt;/ref&gt;<br /> <br /> Hier die Bimatrix:<br /> <br /> {| border=&quot;1&quot;<br /> |<br /> |<br /> ! colspan=&quot;2&quot; align=&quot;center&quot; | Spieler 2<br /> |-<br /> |<br /> |<br /> ! Ausweichen (s&lt;sub&gt;21&lt;/sub&gt;)<br /> ! Weiterfahren (s&lt;sub&gt;22&lt;/sub&gt;)<br /> |-<br /> ! rowspan=&quot;2&quot; align=&quot;center&quot; | Spieler 1<br /> ! Ausweichen (s&lt;sub&gt;11&lt;/sub&gt;)<br /> | align=&quot;center&quot; | 3/3<br /> | align=&quot;center&quot; | 1/4<br /> |-<br /> ! Weiterfahren (s&lt;sub&gt;12&lt;/sub&gt;)<br /> | align=&quot;center&quot; | 4/1<br /> | align=&quot;center&quot; | 0/0<br /> |}<br /> <br /> &lt;math&gt;(s_{11}, s_{22})&lt;/math&gt; und &lt;math&gt;(s_{12}, s_{21})&lt;/math&gt;, die beiden Gleichgewichte in reinen Strategien, werden bei einem Zufallsmechanismus wie z.B. dem Münzwurf mit gleicher Wahrscheinlichkeit gewählt, nämlich &lt;math&gt;\textstyle \frac{1}{2}&lt;/math&gt;, doch kann man beim Chicken Game mit einem raffinierteren Vorgehen die höhere pareto-optimale Auszahlungskombination (3,3) realisieren und zwar:<br /> <br /> * Beide Spieler kennen die Wahrscheinlichkeiten für die Strategiekombinationen.<br /> * Nachdem die Zufallsvariable realisiert worden ist, erfährt jeder Spieler, welche Strategie er spielen soll. Jeder von beiden ist jedoch im Ungewissen über den Strategie des anderen.<br /> <br /> Angenommen, die Wahrscheinlichkeitsverteilung &lt;math&gt;w(s_{11}, s_{21})=0,2&lt;/math&gt; und &lt;math&gt;w(s_{11}, s_{22})=w(s_{12}, s_{21})=0,4&lt;/math&gt; liegt vor und Spieler 1 bekommt die Anweisung die Strategie &lt;math&gt;s_{11}&lt;/math&gt; zu wählen. Er antizipiert dann, dass der Spieler 2 mit einer [[Bedingte Wahrscheinlichkeit|bedingten Wahrscheinlichkeit]] von &lt;math&gt;\textstyle \frac{2}{3}&lt;/math&gt; die Strategie &lt;math&gt;s_{22}&lt;/math&gt; wählt. Spieler 1 könnte auf &lt;math&gt;s_{12}&lt;/math&gt; abweichen und sich &lt;math&gt;\textstyle \frac{1}{3}*4+&lt;/math&gt; &lt;math&gt;\textstyle \frac{2}{3}*0=&lt;/math&gt;<br /> &lt;math&gt;\textstyle \frac{4}{3}&lt;/math&gt; sichern, doch das Spielen der Strategie &lt;math&gt;s_{11}&lt;/math&gt; ergibt &lt;math&gt;\textstyle \frac{1}{3}*3+&lt;/math&gt; &lt;math&gt;\textstyle \frac{2}{3}*1=&lt;/math&gt;&lt;math&gt;\textstyle \frac{5}{3}&lt;/math&gt; an erwarteter Auszahlung.<br /> <br /> Gegeben sei jetzt der Fall, dass &lt;math&gt;w(s_{11}, s_{21})=0,5&lt;/math&gt; und &lt;math&gt;w(s_{11}, s_{22})=w(s_{12}, s_{21})=0,25&lt;/math&gt;. Falls der Spieler 2 nun die Empfehlung bekommt auszuweichen, wird er antizipieren, dass Spieler 1 mit einer bedingten Wahrscheinlichkeit von &lt;math&gt;\textstyle \frac{2}{3}&lt;/math&gt; auch Ausweichen spielt. In diesem Fall aber gebe es für den Spieler 2 überhaupt keinen Anreiz sich an die Empfehlung, die ihm vom correlation device gegeben wird, zu halten.<br /> <br /> An den obigen Ausführungen sieht man, dass es zu einer Maximierung der Auszahlungen kommt, falls durch die Wahrscheinlichkeitsverteilung die Wahrscheinlichkeit für &lt;math&gt;(s_{11}, s_{21})&lt;/math&gt; hoch genug festgelegt wird, aber es gleichzeitig für die Spieler keinen Grund zum Abweichen von der Vorgabe des correlation device gibt. Andernfalls ist die korrelierte Strategie nicht effizient.&lt;ref&gt;Holler/Illing (2006): S. 91, 92.&lt;/ref&gt;<br /> <br /> Das obige Beispiel kann in formale mathematische Sprache zusammengefasst werden. Die Ermittlung effizienter korrelierter Strategien erfolgt durch die Maximierung des gewichteten Nutzen aller Spieler, wobei die Ungleichung&lt;br /&gt;<br /> <br /> &lt;math&gt;\displaystyle\sum_{\omega \in \Omega} q(\omega)u_i(s_i, s_{-i}) \geq \sum_{\omega \in \Omega} q(\omega)u_i(\phi(s_i), s_{-i})&lt;/math&gt; erfüllt sein muss.&lt;ref&gt;Osborne, Martin J./ Rubinstein, Ariel: ''A Course in Game Theory.'' MIT Press Books, The MIT Press, edition 1, Vol. 1, No. 0262650401, 1994: S.45-48.&lt;/ref&gt; Es handelt sich naturgemäß um ein einfaches konvexes lineares Optimierungsproblem, da Linearität in &lt;math&gt;w&lt;/math&gt; sowohl für die Beschränkung als auch für die Zielfunktion festgestellt werden kann.&lt;ref&gt;Holler/Illing (2006): S. 93.&lt;/ref&gt;<br /> <br /> == Anwendung von Aumanns Gleichgewichtskonzept auf andere Bereiche ==<br /> <br /> Das Gleichgewichtskonzept fand und findet immer noch in vielen anderen Gebieten der wissenschaftlichen Forschung regen Anklang.<br /> <br /> === Aumanns Vorarbeit mündet im Agreement Theorem ===<br /> <br /> Aumann begründete mit seinem 1976 verfassten Theorem der Unmöglichkeit der Einigkeit über die Uneinigkeit (eng. The Agreement Theorem)&lt;ref&gt;Aumann, Robert: ''Agreeing to disagree.'' Annals of Statistics Vol. 4, No. 6, 1976: S. 1236-1239. Verfügbar auf: http://www.jstor.org/stable/2958591&lt;/ref&gt; die [[Interaktive Epistemologie|interaktive Wissensalgebra]] und legte somit den Grundstein für weitere Forschungsarbeit in der Philosophie, der Logik, der Ökonomie und vielen anderen Bereichen der Wissenschaft.&lt;ref&gt;Hart, Sergiu: ''Robert Aumann's Game and Economic Theory''. Scandinavian Journal of Economics, Vol. 108, No. 2, July 2006: S. 205.&lt;/ref&gt; Ihm gelang es über eine formale Definition des ''gemeinsames Wissens'' zu beweisen, dass es für zwei Individuen nicht möglich ist sich darauf zu einigen sich nicht einig zu sein und zwar im folgenden Sinne:<br /> <br /> Gegeben sei der Fall, dass die Spieler über eine gemeinsame [[A-priori-Verteilung|A-priori-Wahrscheinlichkeitsverteilung]]verfügen. Falls zudem die [[A-posteriori-Wahrscheinlichkeit|Wahrscheinlichkeiten a posteriori]] für ein Ereignis E gemeinsames Wissen beider Spieler darstellen, so müssen auch diese A-posteriori-Wahrscheinlichkeiten identisch sein.<br /> <br /> === Brückenschlag zum Bayes`schen rationalen Verhalten ===<br /> <br /> Im Jahr 1987 gelang es Aumann schließlich durch seine oben erörterte Vorarbeit einen Brückenschlag zum [[Perfektes Bayessches Gleichgewicht|Bayes`schen rationalen Verhalten]] zu bewältigen.&lt;ref&gt;&lt;font&gt;Aumann, Robert: &lt;/font&gt;[http://ideas.repec.org/a/ecm/emetrp/v55y1987i1p1-18.html &lt;font&gt;'''''Correlated Equilibrium as an Expression of Bayesian Rationality.'''''&lt;/font&gt;]&lt;font&gt; [http://ideas.repec.org/s/ecm/emetrp.html Econometrica], Econometric Society, Vol. 55, No. 1, 1987: S. 1-18.&lt;/font&gt;&lt;/ref&gt; Ein Spieler handelt dann rational im Sinne von Bayes, wenn seine Handlung optimal gegeben seine Information ist.<br /> Das von Aumann in diesem Zusammenhang aufgestellte Theorem postuliert folgendes:<br /> <br /> Gegeben sei ein Spiel, welches die Spieler mit gleichen Einschätzungen (eng. beliefs) beginnen, aber im Laufe des Spiels unterschiedliche Informationen erhalten. Wenn es gemeinsames Wissen (eng. common knowledge) darstellt, dass sich alle Spieler rational im Sinne von Bayes verhalten, dann spielen diese ein korreliertes Gleichgewicht des Spieles. Oder anders ausgedrückt: Gleichgewichte in korrelierten Strategien sind als Ergebnis Bayes`schen rationalen Verhaltens zu betrachten. Aumann selbst postuliert in seinem Haupttheorem dieser Arbeit: &quot;''If each player is Bayes rational at each state of the world, then the distribution of the action n-tuple s is a correlated equilibrium distribution.''&quot;&lt;ref&gt;Aumann, Robert: &lt;/font&gt;[http://ideas.repec.org/a/ecm/emetrp/v55y1987i1p1-18.html &lt;font&gt;'''''Correlated Equilibrium as an Expression of Bayesian Rationality.'''''&lt;/font&gt;]&lt;font&gt; [http://ideas.repec.org/s/ecm/emetrp.html Econometrica], Econometric Society, Vol. 55, No. 1, 1987: S. 7.&lt;/ref&gt;, was in Deutschem etwas weniger formal weiter oben wiedergegeben wurde.<br /> <br /> === Bedeutung von correlated equilibrium in Situationen mit Informationsasymmetrie ===<br /> <br /> Eine besondere Bedeutung kommt Gleichgewichten in korrelierten Strategien in Situationen zu, die beispielsweise im [[Versicherung (Kollektiv)|Versicherungswesen]] mit [[Moral Hazard]] bzw. [[Adverse Selektion|adverser Selektion]] in Verbindung gebracht werden. Moral Hazard oder eingedeutscht moralisches Risiko/Wagnis ist auf die [[Asymmetrische Information|versteckte Handlung (eng. hidden action)]] zurückzuführen, im Falle der adversen Selektion spielt vor allem die [[Asymmetrische Information|versteckte Information (eng. hidden information)]], sehr gut am [[Saure-Gurken-Problem|Lemons-Problem]] von [[George A. Akerlof]] dargestellt, die tragende Rolle.&lt;ref&gt;Guesnerie, Roger/ Picard, Pierre/ Rey, Patrick : ''Adverse selection and moral hazard with risk-neutral agents.'' European Economic Review, Vol. 33, No. 4, 1989: S. 807-823. Verfügbar auf: http://www.sciencedirect.com/science/article/pii/0014292189900275&lt;/ref&gt; Beide können, da Nicht-Beobachtbarkeit und/oder Nicht-Kontrahierbarkeit von Interaktionssituationen vorliegen, zum [[Marktversagen]] führen.&lt;ref&gt;Pindyck, S. Robert/ Rubinfeld, L. Daniel: ''Mikroökonomie.'' Pearson Education, 2009: S. 803.&lt;/ref&gt;<br /> <br /> Es ist zu beachten, dass Aumann das Konzept des ''correlated equilibrium'' hauptsächlich auf die reine Moral Hazard-Problematik bezieht, während das Konzept von Bayes zu Beginn vorwiegend mit dem Problemfeld der Adversen Selektion in Verbindung gebracht wurde. Der US-amerikanische Nobelpreisträger [[Roger B. Myerson]] führte beide im ''Bayesian incentive-compatible mechanism'' zusammen.&lt;ref&gt;Myerson, B. Roger: ''Multistage Games with Communication.'' [http://ideas.repec.org/s/ecm/emetrp.html Econometrica], Econometric Society, Vol. 54, No. 2, März 1986: S. 323-358. Verfügbar auf: http://www.jstor.org/sici?sici=0012-9682%28198603%2954%3A2%3C323%3AMGWC%3E2.0.CO%3B2-P&lt;/ref&gt;<br /> <br /> Die große Bedeutung von Aumanns Arbeit liegt darin, dass über das Gleichgewicht in korrelierten Strategien eine Lösung für die Anreizverträglichkeit von Verträgen angeboten wird, so dass trotz der vorliegenden Informationsasymmetrie eine derartige Gestaltung von Verträgen und die damit verbundene Anreizsetzung gelingt, so dass es sich für die Spieler lohnt sich an die Vereinbarungen zu halten. Die Suche nach den anreizverträglichen Mechanismen ist dann laut [[Manfred Holler|Holler]]/Illing gleichbedeutend &quot;''mit der Bestimmung effizienter Bayes`scher Gleichgewichte in korrelierten Strategien.''&quot; &lt;ref&gt;Holler/Illing (2006): S. 94.&lt;/ref&gt;<br /> <br /> &quot;''Wenn es überhaupt eine direkte Anwendungsmöglickeit der Spieltheorie für die Praxis der Kapitalmärkte gibt, dann diese: Das Entscheidende an der Spieltheorie und allen ökonomischen Anwendungen ist das Anreizsystem. Anreize sind die Antriebskraft für alle wirtschaftlichen Aktivitäten - und zwar weltwelt.''&quot;&lt;ref&gt;Institutional Money, Ausgabe 3/2011, Interview mit Robert Aumann, S. 42-46.&lt;/ref&gt;<br /> <br /> Soweit die Aussage von Aumann in einem 2011 durchgeführten Interview, in dem er sich dazu äußert, dass durch die [[Bail-out (Wirtschaft)|Bail-outs]] falsche Anreize für die Banken gesetzt werden, da diese &quot;''zwar gewinnen, aber nicht verlieren können.''&quot; Somit wird noch einmal anhand der Aktualität der Finanzmarktkrise, die 2008 ihre sichtbaren Wirkungen zu entfalten begann, verdeutlicht, wie wichtig die Spieltheorie und vor allem das Verständnis von der richtigen Anreizsetzung für die Weltwirtschaft ist. Aumanns Konzept hat dieses Verständnis noch weiter ausgebaut, indem ein wichtiges Puzzlestück für die Vervollständigung des Gesamtbildes beigetragen wurde.<br /> <br /> == Siehe auch ==<br /> * [[Spieltheorie]]<br /> * [[Perfektes Bayessches Gleichgewicht]]<br /> <br /> == Einzelnachweise ==<br /> &lt;references /&gt;<br /> <br /> == Literatur ==<br /> <br /> * [[Robert Aumann]]: ''Subjectivity and Correlation in Randomized Strategies.'' Elsevier, Journal of Mathematical Economics, Vol. 1, No. 1., The Hebrew University of Jerusalem, Jerusalem, Israel, 1974.<br /> * {{Literatur | Autor= [[Manfred J. Holler]], Gerhard Illing | Titel= Einführung in die Spieltheorie | Verlag= Springer Verlag | Ort= Berlin und Heidelberg | ISBN= 3-540-27880-X | Auflage= 6., überarbeitete | Jahr= 2006 | Kommentar=}}<br /> * John Bone, Michaelis Drouvelis, Indrajit Ray: ''Avoiding Coordination-Failure using Correlation Devices: Experimental Evidences.''Department of Economics, University of Michigan, USA, 2011.<br /> * Robert Aumann: ''Correlated Equilibrium as an Expression of Bayesian Rationality.'' Econometrica, Econometric Society, Vol. 55, No. 1, The Hebrew University of Jerusalem, Jerusalem, Israel, 1987.<br /> * Sergiu Hart: ''Robert Aumann's Game and Economic Theory.'' Wiley-Blackwell, Scandinavian Journal of Economics, Vol. 108, No. 2, London, England, 2006.<br /> * Roger Myerson: ''Learning from Schelling's strategy of conflict.'' Department of Economics, University of Chicago, USA, 2009.<br /> * {{Literatur | Autor= Martin J. Osborne, [[Ariel Rubinstein]] | Titel= A Course in Game Theory | Verlag= MIT Press | Ort= London, England | Jahr= 1994 | Kommentar=}}<br /> * Sandip Sen, Stephane Airiau, Rajatish Mukherjee: ''Towards a Pareto-optimal Solution in General-Sum Games.'' Proceedings of the Second International Joint Conference on Autonomous Agents and Multiagent Systems, Melbourne, Australia, 2003.<br /> * Robert Aumann: ''Agreeing to disagree.'' Annals of Statistics Vol. 4, No. 1, Institute of Mathematical Statistics, Beachwood, USA, 1976.<br /> * Roger Guesnerie, Pierre Picard, Patrick Rey : ''Adverse selection and moral hazard with risk-neutral agents.'' Elsevier, European Economic Review, Vol. 33, No. 4, Département d'Économie (Economics Department), École Polytechnique, Palaiseau, France, 1989.<br /> * {{Literatur | Autor= Robert S. Pindyck, Daniel L. Rubinfeld | Titel= Mikroökonomie | Verlag= Pearson Education | Ort= München [u.a.], | ISBN= 978-3-8273-7282-6 | Auflage= 7., aktualisierte | Jahr= 2009 | Kommentar=}}<br /> * Roger B. Myerson: ''Multistage Games with Communication.'' Econometrica, Econometric Society, Vol. 54, No. 2, Department of Economics, University of Chicago, USA, 1986.<br /> * Institutional Money, FONDS professionell Multimedia GmbH, Ausgabe 3/2011, Wien, Österreich, 2011.<br /> <br /> == Weblinks ==<br /> * [http://www.spieltheorie.de/index.htm Professor Rieck's Spieltheorie-Seite] - Einstiegsseite zur Spieltheorie<br /> * [http://www.ma.huji.ac.il/raumann/publication.htm Sektion von Robert Aumann der Hebrew University of Jerusalem]<br /> * [http://oyc.yale.edu/economics/game-theory/contents/downloads Yale University-Vorlesungen zur Spieltheorie (24 x 75 Minuten)]<br /> * [http://www.gametheory.net/Mike/applets/NormalForm/NormalForm.html Gametheory.net] - Schönes Java-Applet zur Lösung von Normalformspielen mit Möglichkeit der Vorwahl von bekannten Spielen (englisch)<br /> * [http://www.spieltheorie-software.de Spieltheorie-Software.de] - Java-Software zur umfangreichen Analyse von 2-Personen Spielen<br /> <br /> [[Kategorie:Spieltheorie]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Gleichgewicht_in_korrelierten_Strategien&diff=118598714 Gleichgewicht in korrelierten Strategien 2013-05-17T15:23:48Z <p>Mathmon: /* Formale Definition des Gleichgewichtes in korrelierten Strategien */</p> <hr /> <div>[[Datei:ישראל אומן 2010.jpg|thumb|Robert Aumann 2010]]<br /> <br /> Das '''Gleichgewicht in korrelierten Strategien''' (auch ''Correlated equilibrium''-Konzept&lt;ref name=&quot;JOME&quot;&gt;Aumann, Robert:''Subjectivity and Correlation in Randomized Strategies.'' Journal of Mathematical Economics 1, 1974: S. 67-96.&lt;/ref&gt;) ist ein vom Mathematiker [[Robert Aumann]] entwickeltes [[Lösungskonzept]], durch das im Rahmen der [[Spieltheorie]] eine Harmonisierung der [[Strategie (Spieltheorie)|Strategien]] möglich wird.&lt;ref&gt;Holler, Manfred/ Illing, Gerhard: ''Einführung in die Spieltheorie.''6., überarbeitete Auflage, Springer Verlag, Berlin und Heidelberg, 2006: S. 87ff.&lt;/ref&gt; Im Gegensatz zum [[Nash-Gleichgewicht]], das weder bindende Verträge noch Kommunikation vor dem Entscheidungstreffen der beteiligten Spieler zulässt und somit die Strategiewahl des einen von der Strategiewahl des anderen Spielers unberührt bleibt, ermöglicht das ''Gleichgewicht in korrelierten Strategien'' eine [[Korrelation|Korrelierung]] der Strategien untereinander.<br /> <br /> == Überblick ==<br /> Die Grundidee erlaubt die Betrachtung der gemeinsamen Randomisierungen der Spieler über die [[Strategie (Spieltheorie)|Strategiemenge S]] und die Offenlegung der korrelierten Strategien (eng. correlated strategies).&lt;ref name=&quot;JOME&quot; /&gt;Zu Anschauungszwecken wird sehr oft ein öffentlicher [[Münzwurf|Wahrscheinlichkeitsmechanismus]] unterstellt (eng. correlation device)&lt;ref name=&quot;JOME&quot; /&gt;, an dem die Spieler ihre Strategie ausrichten. Dies kann zum Beispiel ein einfacher Münzwurf sein. Hier wird correlation device streng im Sinne des ''public correlation device'' verwendet. In Abgrenzung dazu sei erwähnt, dass je nach wissenschaftlicher Fragestellung, die Verwendung eines ''private correlation device'' möglich ist.&lt;ref&gt;Bone, John/ Drouvelis, Micaelis/ Ray, Indrajit: ''Avoiding Coordination-Failure using Correlation Devices: Experimental Evidences.'' Department of Economics, University of Michigan, letzte Version September 2011: S. 1-13. Verfügbar auf: http://www.isid.ac.in/~pu/conference/dec_11_conf/Papers/IndrajitRay.pdf&lt;/ref&gt;<br /> <br /> Das Aumannsche Konzept stellt ein stärkeres Gleichgewichtskonzept als das von [[John Forbes Nash Jr.|John Nash]] dar. Für die Spieler resultiert, selbst im Falle, dass keine bindenden Verträge möglich sind, ein höheres [[Feiglingsspiel|Auszahlungspotential]]. Ein Gleichgewicht nach Nash in [[Gemischte Strategie|gemischten Strategien]] kann demnach als eine stabile Situation begriffen werden, welche die Randomisierung der Strategien auf unkorrelierte Art und Weise, also im statistisch unabhängigen Modus impliziert.<br /> <br /> Das große Verdienst von Aumann besteht darin, dass er die Starrheit des Konzeptes von Nash aufgehoben hat, und zwar durch seine Beweisführung, dass eine Randomisierung der Spieler, die einem gemeinsamen Zufallsmechanismus folgt und somit die Randomisierung der Strategien im statistisch abhängigen Modus korreliert, beide Spieler besser stellen kann.&lt;ref&gt;<br /> &lt;font&gt;Aumann, Robert: &lt;/font&gt;[http://ideas.repec.org/a/ecm/emetrp/v55y1987i1p1-18.html &lt;font&gt;''Correlated Equilibrium as an Expression of Bayesian Rationality.''&lt;/font&gt;]&lt;font&gt; [http://ideas.repec.org/s/ecm/emetrp.html Econometrica], Econometric Society, Vol. 55, No. 1, 1987: S. 1-6.&lt;/font&gt;&lt;/ref&gt;<br /> Vorausgesetzt, die Beteiligten sind gewillt, sich auf einen gemeinsamen Mechanismus bezüglich der Definition der Strategienmischung zu einigen, und sofern unter dieser Prämisse keine Verbesserung durch das Zurückgreifen auf unkorrelierte Strategien möglich ist, spricht man von einem ''Gleichgewicht in korrelierten Strategien''.<br /> <br /> == Beispiel ==<br /> Das ''Gleichgewicht in korrelierten Strategien'' wird am Beispiel des Problems „[[Kampf der Geschlechter]]“ illustriert.<br /> <br /> === Modellannahmen ===<br /> Das [[Modell]] geht zunächst von der Annahme aus, dass beide Spieler an einem ihnen wohlbekannten Spiel teilnehmen. Bevor dieses beginnt, bekommen beide ein Signal zugewiesen, dass die [[Spiel mit dem Untergang|Nutzeneinheiten]] selbst nicht verändert, sehr wohl aber, da beide Spieler ihre Strategien korrelieren, d.h. aufeinander abstimmen können, den Ausgang des Spieles und somit den erhaltenen Nutzen jeden Spielers.&lt;ref&gt;Holler, Manfred/ Illing, Gerhard: ''Einführung in die Spieltheorie.'' 6., überarbeitete Auflage, Springer Verlag, Berlin und Heidelberg, 2006: S. 88.&lt;/ref&gt;<br /> <br /> Von entscheidender Bedeutung beim Konzept von Aumann ist die Existenz eines unabhängigen Koordinators, der jedem Spieler seine Strategie zuweist. Diesem vertrauen beide Spieler, denn sie haben in dem Modell schließlich die Gewissheit, dass es sich bei der vorgeschlagenen Strategie um ein Gleichgewicht handelt. Somit ist es für keinen Spieler lohnend, von der vorgeschlagenen Strategie abzuweichen.&lt;ref&gt;Hart, Sergiu: ''Robert Aumann's Game and Economic Theory''. Scandinavian Journal of Economics, Vol. 108, No. 2, July 2006: S. 202. Verfügbar auf: http://www.ma.huji.ac.il/hart/papers/aumann-n.pdf&lt;/ref&gt;<br /> <br /> === Modell ===<br /> Das bekannte Spiel [[Kampf der Geschlechter]] wird mittels einer [[Spieltheorie#Darstellungsformen|Bimatrix]] dargestellt:<br /> <br /> {| border=&quot;1&quot;<br /> |<br /> |<br /> ! colspan=&quot;2&quot; align=&quot;center&quot; | Frau<br /> |-<br /> |<br /> |<br /> ! Fußball (s&lt;sub&gt;21&lt;/sub&gt;)<br /> ! Ballett (s&lt;sub&gt;22&lt;/sub&gt;)<br /> |-<br /> ! rowspan=&quot;2&quot; align=&quot;center&quot; | Mann<br /> ! Fußball (s&lt;sub&gt;11&lt;/sub&gt;)<br /> | align=&quot;center&quot; | 3/1<br /> | align=&quot;center&quot; | 0/0<br /> |-<br /> ! Ballett (s&lt;sub&gt;12&lt;/sub&gt;)<br /> | align=&quot;center&quot; | 0/0<br /> | align=&quot;center&quot; | 1/3<br /> |}<br /> <br /> Die reinen Nash-Gleichgewichte sind {Fußball,Fußball} und {Ballett, Ballett}. Die Wahrscheinlichkeit, dass einer der Spieler mit seiner Vermutung, welches der beiden obigen Gleichgewichte vom anderen Spieler gewählt wird, richtig liegt, ist in einer Welt ohne Absprache gering.<br /> <br /> Abweichung davon ist beispielsweise in einer Umgebung möglich, in der die Männer die Frauen dominieren, so dass sich das Ehepaar immer auf den Besuch des Fußballspieles einigt; dieser sogenannte [[Fokaler Punkt|Focus-Punkt-Effekt]] (eng. focal-point effect) wurde von dem US-amerikanischen Ökonomen und Nobelpreisträger [[Thomas Schelling]] in seinem einflussreichen Buch über die Sozialtheorie ''Strategy of Conflict(1960)'' beschrieben und somit auf den Einfluss von Umwelt- und Kulturfaktoren auf das rationale Verhalten hingewiesen&lt;ref&gt;Myerson, Roger: ''Learning from Schelling's strategy of conflict''. Department of Economics, University of Chicago, letzte Version April 2009: S. 5. Verfügbar auf: http://home.uchicago.edu/~rmyerson/research/stratofc.pdf&lt;/ref&gt;.<br /> <br /> === Möglichkeiten zur Modellierung von strategischer Unsicherheit ===<br /> [[Unsicherheit|Strategische Unsicherheit]] liegt bei einem Spiel also dann vor, wenn weder die Möglichkeit expliziter, d.h. verbaler noch impliziter [[Kommunikation]], wie sie zum Beispiel im kulturellen Kontext durch Gewohnheiten mehr oder minder stark determiniert ist, existiert. Dies macht den Rückgriff auf alternative Lösungskonzepte notwendig.<br /> <br /> Die erste Lösungsmöglichkeit geht auf John Nash zurück und stellt die klassische Betrachtung eines [[Gemischte Strategie|Gleichgewichtes in gemischten Strategien]] dar. In der obigen Bimatrix liegt ein Gleichgewicht in gemischten Strategien nach Nash in &lt;math&gt;\textstyle s_{11}=\frac{3}{4}&lt;/math&gt; und &lt;math&gt;\textstyle s_{12}=\frac{1}{4}&lt;/math&gt; vor, jedoch beträgt die erwartete Auszahlung hierbei nur 0,75, und zwar sowohl für den Mann als auch für die Frau.&lt;ref&gt;[http://www.gametheory.net/Mike/applets/NormalForm/NormalForm.html] Java-Aplett zur Lösung von Normalformspielen&lt;/ref&gt;Somit bekommt jeder weniger als das, was in den beiden Nash-Gleichgewichten beim Spielen von [[Reine Strategie|reinen Strategien]]möglich ist.<br /> <br /> Gegeben dem Fall also, dass sich die Spieler, in diesem Fall das Paar darauf einigen könnte, zusammen eines von zweien Nash-Gleichgewichten in reinen Strategien zu spielen und sich somit jeweils einen erwarteten Nutzen von 2 zu sichern, so wäre die Absprache und zwar auch ohne einen bindenden [[Vertrag]] stabil, denn weder der Mann noch die Frau hätten einen Anreiz abzuweichen. Die Kommunikation erweist sich somit als äußerst vorteilhaft und ebnet den Weg zu der zweiten Lösungsmöglickeit, nämlich dem Gleichgewicht in korrelierten Strategien, dem Kernstück von Aumanns Arbeit.<br /> <br /> Dieses kann über verschiedene Mechanismen implentiert werden. Zum einen kann sich das Ehepaar im Vorfeld darauf einigen bei schönem Wetter zu einem Fußballspiel und bei schlechtem Wetter ins Ballett zu gehen oder um auf den Münzwurf zu Beginn zurückzukommen, das Vorhandensein eines vertrauenswürdigen Vermittlers, bei dem beide davon ausgehen können, dass die vorgeschlagene Strategie ein Gleichgewicht ist und der dem Ehepaar bei Kopf zum Fußball und bei Zahl zum Ballett rät, also zum Spielen von &lt;math&gt;(s_{11}, s_{21})&lt;/math&gt; oder alternativ &lt;math&gt;(s_{12}, s_{22})&lt;/math&gt;.<br /> <br /> Da die Wahrscheinlichkeit sowohl für Kopf als auch für Zahl im Falle einer perfekten Münze jeweils &lt;math&gt;\textstyle \frac{1}{2}&lt;/math&gt; ist, sind demnach &lt;math&gt;(s_{11}, s_{21})&lt;/math&gt; und &lt;math&gt;(s_{12}, s_{22})&lt;/math&gt;, bevor Kopf oder Zahl gefallen ist, gleich wahrscheinlich.<br /> <br /> == Mathematische Darstellung ==<br /> <br /> === Vorüberlegungen zu privaten und nicht privaten Signalen ===<br /> <br /> Wie in den obigen Abschnitten bereits erläutert worden ist, kann das Konzept des Nash-Gleichgewichts in gemischten Strategien zur Modellierung von Spielen mit nicht deterministischen Spielerstrategien und vorgeschriebenen Wahrscheinlichkeitsverteilungen dieser Strategien verwendet werden.&lt;ref&gt;Osborne, Martin J./ Rubinstein, Ariel: ''A Course in Game Theory.'' MIT Press Books, The MIT Press, edition 1, Vol 1, No. 0262650401, 1994: S. 31, 32, 38.&lt;/ref&gt; Das Nash-Gleichgewicht in gemischten Strategien darf folglich als eine stationäre Situation aufgefasst werden, in der die Spieler ihre reinen Strategien von einem von außen kommendem, privaten und voneinander unabhängigen [[Signal]] abhängig machen.&lt;ref&gt;Osborne, Martin J./ Rubinstein, Ariel: ''A Course in Game Theory.'' MIT Press Books, The MIT Press, edition 1, Vol. 1, No. 0262650401, 1994: S. 39-41.&lt;/ref&gt;<br /> <br /> Aumanns Arbeit geht dagegen von der Prämisse aus, dass es in korrelierten Gleichgewichten Abhängigkeiten zwischen den Spielersignalen gibt, da diese nicht mehr privat sind.&lt;ref&gt;Hart, Sergiu: ''Robert Aumann's Game and Economic Theory''. Scandinavian Journal of Economics, Vol. 108, No. 2, July 2006: S. 202-204.&lt;/ref&gt;Dies impliziert die Optimalität der reinen Strategie eines jeden Spielers, sobald die Informationen der Spieler bekannt sind.<br /> <br /> === Definitionen ===<br /> <br /> Im folgenden wird ein Überblick über die mathematischen Aspekte von Aumanns Konzept vermittelt.<br /> <br /> ==== Definition der korrelierten Strategie ====<br /> <br /> Zunächst wird die Definition der korrelierten Strategie selbst gegeben. Wenn die [[Wahrscheinlichkeitsverteilung]] &lt;math&gt;w(s)&lt;/math&gt;<br /> <br /> * gemeinsames Wissen aller Spieler ist<br /> * und wenn für diese über die Strategiemenge &lt;math&gt;S&lt;/math&gt; aus allen reinen Strategiekombinationen &lt;math&gt;\textstyle \sum w(s)=1&lt;/math&gt; und &lt;math&gt;w(s) \ge 0&lt;/math&gt; für alle &lt;math&gt;s \in S_i&lt;/math&gt; gilt,<br /> <br /> dann nennt man &lt;math&gt;w(s)&lt;/math&gt; eine korrelierte Strategie.&lt;ref&gt;Holler, Manfred/ Illing, Gerhard: ''Einführung in die Spieltheorie.'' 6., überarbeitete Auflage, Springer Verlag, Berlin und Heidelberg, 2006: S. 89.&lt;/ref&gt;<br /> <br /> ==== Formale Definition des Gleichgewichtes in korrelierten Strategien ====<br /> <br /> Ein strategisches &lt;math&gt;N&lt;/math&gt;-Spieler-Spiel &lt;math&gt;\displaystyle (N,S_i,u_i)&lt;/math&gt; sei charakterisiert durch die möglichen Handlungen &lt;math&gt;\displaystyle S_i&lt;/math&gt; and die [[Nutzenfunktion]] &lt;math&gt;u_i&lt;/math&gt; für jeden Spieler &lt;math&gt;i&lt;/math&gt;. Falls der Spieler &lt;math&gt;i&lt;/math&gt; die Strategiewahl &lt;math&gt;s \in S_i&lt;/math&gt; des zugrundeliegenden Spiels trifft und die nachfolgenden Spieler eine Strategie wählen, die durch das &lt;math&gt;N-1&lt;/math&gt;-Tupel &lt;math&gt;\displaystyle s_{-i}&lt;/math&gt; charakterisiert ist, dann sei der Nutzen des Spielers &lt;math&gt;i&lt;/math&gt; mit &lt;math&gt;\displaystyle u_i(s_i,s_{-i})&lt;/math&gt; bezeichnet. Eine Modifikation der Strategie für jeden Spieler &lt;math&gt;i&lt;/math&gt; sei durch die Funktion &lt;math&gt;\displaystyle \phi : S_i \to S_i&lt;/math&gt; dargestellt, folglich ist der Spieler &lt;math&gt;i&lt;/math&gt; in der Lage gemäß &lt;math&gt;\displaystyle \phi&lt;/math&gt; seine Handlungen zu modifizieren, d.h. auf die Anweisung&lt;math&gt;\displaystyle s_i&lt;/math&gt; zu spielen folgt &lt;math&gt;\displaystyle \phi(s_i)&lt;/math&gt;.&lt;br /&gt;<br /> Gegeben sei ein endlicher [[Wahrscheinlichkeitsraum]] &lt;math&gt;\displaystyle(\Omega, \pi)&lt;/math&gt;, wobei &lt;math&gt;\displaystyle\Omega&lt;/math&gt; die Menge der Zustände und &lt;math&gt;\displaystyle\pi&lt;/math&gt; ein [[Wahrscheinlichkeitsmaß]] auf &lt;math&gt;\displaystyle\Omega&lt;/math&gt; ist.&lt;br /&gt;<br /> <br /> Des Weiteren sei für jeden Spieler &lt;math&gt;i&lt;/math&gt;<br /> * &lt;math&gt;\displaystyle P_i&lt;/math&gt; dessen [[Informationspartition]],<br /> * die Strategie &lt;math&gt;\displaystyle s_i:\Omega\rightarrow S_i&lt;/math&gt; sei innerhalb derselben Informationspartition des Spielers&lt;math&gt;i&lt;/math&gt; enthalten<br /> * und &lt;math&gt;\displaystyle q(w)&lt;/math&gt; die Wahrscheinlichkeitsverteilung.<br /> <br /> Dann stellt &lt;math&gt;\displaystyle((\Omega, \pi),P_i)&lt;/math&gt; ein korreliertes Gleichgewicht eines strategischen Spieles&lt;math&gt;\displaystyle (N,S_i,u_i)&lt;/math&gt; für jeden Spieler &lt;math&gt; i&lt;/math&gt; und für jede Modifikation der Strategie &lt;math&gt;\phi&lt;/math&gt;dar, falls gilt:<br /> <br /> :&lt;math&gt;\displaystyle\sum_{\omega \in \Omega} q(\omega)u_i(s_i, s_{-i}) \geq \sum_{\omega \in \Omega} q(\omega)u_i(\phi(s_i), s_{-i}).&lt;/math&gt;&lt;ref&gt;Osborne, Martin J./ Rubinstein, Ariel: ''A Course in Game Theory.'' MIT Press Books, The MIT Press, edition 1, Vol. 1, No. 0262650401, 1994: S. 45.&lt;/ref&gt;<br /> <br /> Oder einfacher ausgedrückt: &lt;math&gt;\displaystyle((\Omega, \pi),P_i)&lt;/math&gt; ist ein korreliertes Gleichgewicht, falls kein Spieler seinen erwarteten Nutzen mittels einer Strategiemodifikation ändern kann und somit um auf das Ursprungsmodell zurückzukommen, keinen Anreiz zum Abweichen von der vorgeschlagenen Strategie hat.<br /> <br /> ==== Zusammenhang zwischen dem Nash-Gleichgewicht und dem Gleichgewicht in korrelierten Strategien ====<br /> <br /> Für jedes Nash-Gleichgewicht gilt, dass es ein Spezialfall des Gleichgewichtes in korrelierten Strategien darstellt. Die Besonderheit liegt in der Unabhängigkeit der Wahrscheinlichkeiten bei der Wahl von Strategien durch verschiedene Spieler. Die Wahrscheinlichkeiten zeigen hier keine Korrelation. So gilt in einem 2-Personen-Spiel für 2 Spieler: &lt;math&gt;\displaystyle w(s)= w(s_1)*w(s_2)&lt;/math&gt;.&lt;ref&gt;Holler, Manfred/ Illing, Gerhard: ''Einführung in die Spieltheorie.'' 6., überarbeitete Auflage, Springer Verlag, Berlin und Heidelberg, 2006: S. 89.&lt;/ref&gt;<br /> <br /> Da reine Nash-Gleichgewichte durch konvexe Kombination wiederum ein Gleichgewicht in korrelierten Strategien ergeben, kann ihre Menge größer als die der Nash-Gleichgewichte sein.<br /> <br /> Erwähnenswert zudem ist noch die Verwandtschaft der korrelierten Gleichgewichte mit [[Sunspot-Gleichgewichten]] aus der [[Rationale Erwartung|Theorie der rationalen Erwartungen]].&lt;ref&gt;Holler/Illing (2006): S. 90.&lt;/ref&gt;<br /> <br /> ==== Effiziente korrelierte Strategien ====<br /> <br /> Nun wird in den folgenden Ausführungen anhand des beliebten [[Feiglingsspiel|Feiglingsspiels (eng. Chicken Game)]] erläutert, was eine effiziente korrelierte Strategie ist. Im Feiglingspiel geht es darum, dass zwei sozial fehlgeleitete Jugendliche in zwei Autos aufeinander zurasen. Wer von beiden in dieser Mutprobe als erster ausweicht, wird vom Rest der Clique als Feigling betrachtet. Weicht jedoch keiner aus, sterben beide in einem Feuerball beim Aufeinanderprallen. Zunächst sei darauf hingewiesen, dass beim Feiglingsspiel die Auszahlungsstruktur bezüglich derer von Battle of Sexes durch das Vorhandensein einer [[Pareto-optimal|pareto-optimalen]] [[Kampf der Geschlechter|symmetrischen Auszahlungskombination]], die eine höhere Auszahlungssumme verspricht, differiert.&lt;ref&gt;Sen, Sandip/ Airiau, Stephane/ Mukherjee, Rajatish: ''Towards a Pareto-optimal Solution in General-Sum Games'', Proceedings of the Second International Joint Conference on Autonomous Agents and Multiagent Systems, Melbourne, Australia, July 2003: S. 153-160. Verfügbar auf: http://dl.acm.org/citation.cfm?id=860600&lt;/ref&gt;<br /> <br /> Hier die Bimatrix:<br /> <br /> {| border=&quot;1&quot;<br /> |<br /> |<br /> ! colspan=&quot;2&quot; align=&quot;center&quot; | Spieler 2<br /> |-<br /> |<br /> |<br /> ! Ausweichen (s&lt;sub&gt;21&lt;/sub&gt;)<br /> ! Weiterfahren (s&lt;sub&gt;22&lt;/sub&gt;)<br /> |-<br /> ! rowspan=&quot;2&quot; align=&quot;center&quot; | Spieler 1<br /> ! Ausweichen (s&lt;sub&gt;11&lt;/sub&gt;)<br /> | align=&quot;center&quot; | 3/3<br /> | align=&quot;center&quot; | 1/4<br /> |-<br /> ! Weiterfahren (s&lt;sub&gt;12&lt;/sub&gt;)<br /> | align=&quot;center&quot; | 4/1<br /> | align=&quot;center&quot; | 0/0<br /> |}<br /> <br /> &lt;math&gt;(s_{11}, s_{22})&lt;/math&gt; und &lt;math&gt;(s_{12}, s_{21})&lt;/math&gt;, die beiden Gleichgewichte in reinen Strategien, werden bei einem Zufallsmechanismus wie z.B. dem Münzwurf mit gleicher Wahrscheinlichkeit gewählt, nämlich &lt;math&gt;\textstyle \frac{1}{2}&lt;/math&gt;, doch kann man beim Chicken Game mit einem raffinierteren Vorgehen die höhere pareto-optimale Auszahlungskombination (3,3) realisieren und zwar:<br /> <br /> * Beide Spieler kennen die Wahrscheinlichkeiten für die Strategiekombinationen.<br /> * Nachdem die Zufallsvariable realisiert worden ist, erfährt jeder Spieler, welche Strategie er spielen soll. Jeder von beiden ist jedoch im Ungewissen über den Strategie des anderen.<br /> <br /> Angenommen, die Wahrscheinlichkeitsverteilung &lt;math&gt;w(s_{11}, s_{21})=0,2&lt;/math&gt; und &lt;math&gt;w(s_{11}, s_{22})=w(s_{12}, s_{21})=0,4&lt;/math&gt; liegt vor und Spieler 1 bekommt die Anweisung die Strategie &lt;math&gt;s_{11}&lt;/math&gt; zu wählen. Er antizipiert dann, dass der Spieler 2 mit einer [[Bedingte Wahrscheinlichkeit|bedingten Wahrscheinlichkeit]] von &lt;math&gt;\textstyle \frac{2}{3}&lt;/math&gt; die Strategie &lt;math&gt;s_{22}&lt;/math&gt; wählt. Spieler 1 könnte auf &lt;math&gt;s_{12}&lt;/math&gt; abweichen und sich &lt;math&gt;\textstyle \frac{1}{3}*4+&lt;/math&gt; &lt;math&gt;\textstyle \frac{2}{3}*0=&lt;/math&gt;<br /> &lt;math&gt;\textstyle \frac{4}{3}&lt;/math&gt; sichern, doch das Spielen der Strategie &lt;math&gt;s_{11}&lt;/math&gt; ergibt &lt;math&gt;\textstyle \frac{1}{3}*3+&lt;/math&gt; &lt;math&gt;\textstyle \frac{2}{3}*1=&lt;/math&gt;&lt;math&gt;\textstyle \frac{5}{3}&lt;/math&gt; an erwarteter Auszahlung.<br /> <br /> Gegeben sei jetzt der Fall, dass &lt;math&gt;w(s_{11}, s_{21})=0,5&lt;/math&gt; und &lt;math&gt;w(s_{11}, s_{22})=w(s_{12}, s_{21})=0,25&lt;/math&gt;. Falls der Spieler 2 nun die Empfehlung bekommt auszuweichen, wird er antizipieren, dass Spieler 1 mit einer bedingten Wahrscheinlichkeit von &lt;math&gt;\textstyle \frac{2}{3}&lt;/math&gt; auch Ausweichen spielt. In diesem Fall aber gebe es für den Spieler 2 überhaupt keinen Anreiz sich an die Empfehlung, die ihm vom correlation device gegeben wird, zu halten.<br /> <br /> An den obigen Ausführungen sieht man, dass es zu einer Maximierung der Auszahlungen kommt, falls durch die Wahrscheinlichkeitsverteilung die Wahrscheinlichkeit für &lt;math&gt;(s_{11}, s_{21})&lt;/math&gt; hoch genug festgelegt wird, aber es gleichzeitig für die Spieler keinen Grund zum Abweichen von der Vorgabe des correlation device gibt. Andernfalls ist die korrelierte Strategie nicht effizient.&lt;ref&gt;Holler/Illing (2006): S. 91, 92.&lt;/ref&gt;<br /> <br /> Das obige Beispiel kann in formale mathematische Sprache zusammengefasst werden. Die Ermittlung effizienter korrelierter Strategien erfolgt durch die Maximierung des gewichteten Nutzen aller Spieler, wobei die Ungleichung&lt;br /&gt;<br /> <br /> &lt;math&gt;\displaystyle\sum_{\omega \in \Omega} q(\omega)u_i(s_i, s_{-i}) \geq \sum_{\omega \in \Omega} q(\omega)u_i(\phi(s_i), s_{-i})&lt;/math&gt; erfüllt sein muss.&lt;ref&gt;Osborne, Martin J./ Rubinstein, Ariel: ''A Course in Game Theory.'' MIT Press Books, The MIT Press, edition 1, Vol. 1, No. 0262650401, 1994: S.45-48.&lt;/ref&gt; Es handelt sich naturgemäß um ein einfaches konvexes lineares Optimierungsproblem, da Linearität in &lt;math&gt;w&lt;/math&gt; sowohl für die Beschränkung als auch für die Zielfunktion festgestellt werden kann.&lt;ref&gt;Holler/Illing (2006): S. 93.&lt;/ref&gt;<br /> <br /> == Anwendung von Aumanns Gleichgewichtskonzept auf andere Bereiche ==<br /> <br /> Das Gleichgewichtskonzept fand und findet immer noch in vielen anderen Gebieten der wissenschaftlichen Forschung regen Anklang.<br /> <br /> === Aumanns Vorarbeit mündet im Agreement Theorem ===<br /> <br /> Aumann begründete mit seinem 1976 verfassten Theorem der Unmöglichkeit der Einigkeit über die Uneinigkeit (eng. The Agreement Theorem)&lt;ref&gt;Aumann, Robert: ''Agreeing to disagree.'' Annals of Statistics Vol. 4, No. 6, 1976: S. 1236-1239. Verfügbar auf: http://www.jstor.org/stable/2958591&lt;/ref&gt; die [[Interaktive Epistemologie|interaktive Wissensalgebra]] und legte somit den Grundstein für weitere Forschungsarbeit in der Philosophie, der Logik, der Ökonomie und vielen anderen Bereichen der Wissenschaft.&lt;ref&gt;Hart, Sergiu: ''Robert Aumann's Game and Economic Theory''. Scandinavian Journal of Economics, Vol. 108, No. 2, July 2006: S. 205.&lt;/ref&gt; Ihm gelang es über eine formale Definition des ''gemeinsames Wissens'' zu beweisen, dass es für zwei Individuen nicht möglich ist sich darauf zu einigen sich nicht einig zu sein und zwar im folgenden Sinne:<br /> <br /> Gegeben sei der Fall, dass die Spieler über eine gemeinsame [[A-priori-Verteilung|A-priori-Wahrscheinlichkeitsverteilung]]verfügen. Falls zudem die [[A-posteriori-Wahrscheinlichkeit|Wahrscheinlichkeiten a posteriori]] für ein Ereignis E gemeinsames Wissen beider Spieler darstellen, so müssen auch diese A-posteriori-Wahrscheinlichkeiten identisch sein.<br /> <br /> === Brückenschlag zum Bayes`schen rationalen Verhalten ===<br /> <br /> Im Jahr 1987 gelang es Aumann schließlich durch seine oben erörterte Vorarbeit einen Brückenschlag zum [[Perfektes Bayessches Gleichgewicht|Bayes`schen rationalen Verhalten]] zu bewältigen.&lt;ref&gt;&lt;font&gt;Aumann, Robert: &lt;/font&gt;[http://ideas.repec.org/a/ecm/emetrp/v55y1987i1p1-18.html &lt;font&gt;'''''Correlated Equilibrium as an Expression of Bayesian Rationality.'''''&lt;/font&gt;]&lt;font&gt; [http://ideas.repec.org/s/ecm/emetrp.html Econometrica], Econometric Society, Vol. 55, No. 1, 1987: S. 1-18.&lt;/font&gt;&lt;/ref&gt; Ein Spieler handelt dann rational im Sinne von Bayes, wenn seine Handlung optimal gegeben seine Information ist.<br /> Das von Aumann in diesem Zusammenhang aufgestellte Theorem postuliert folgendes:<br /> <br /> Gegeben sei ein Spiel, welches die Spieler mit gleichen Einschätzungen (eng. beliefs) beginnen, aber im Laufe des Spiels unterschiedliche Informationen erhalten. Wenn es gemeinsames Wissen (eng. common knowledge) darstellt, dass sich alle Spieler rational im Sinne von Bayes verhalten, dann spielen diese ein korreliertes Gleichgewicht des Spieles. Oder anders ausgedrückt: Gleichgewichte in korrelierten Strategien sind als Ergebnis Bayes`schen rationalen Verhaltens zu betrachten. Aumann selbst postuliert in seinem Haupttheorem dieser Arbeit: &quot;''If each player is Bayes rational at each state of the world, then the distribution of the action n-tuple s is a correlated equilibrium distribution.''&quot;&lt;ref&gt;Aumann, Robert: &lt;/font&gt;[http://ideas.repec.org/a/ecm/emetrp/v55y1987i1p1-18.html &lt;font&gt;'''''Correlated Equilibrium as an Expression of Bayesian Rationality.'''''&lt;/font&gt;]&lt;font&gt; [http://ideas.repec.org/s/ecm/emetrp.html Econometrica], Econometric Society, Vol. 55, No. 1, 1987: S. 7.&lt;/ref&gt;, was in Deutschem etwas weniger formal weiter oben wiedergegeben wurde.<br /> <br /> === Bedeutung von correlated equilibrium in Situationen mit Informationsasymmetrie ===<br /> <br /> Eine besondere Bedeutung kommt Gleichgewichten in korrelierten Strategien in Situationen zu, die beispielsweise im [[Versicherung (Kollektiv)|Versicherungswesen]] mit [[Moral Hazard]] bzw. [[Adverse Selektion|adverser Selektion]] in Verbindung gebracht werden. Moral Hazard oder eingedeutscht moralisches Risiko/Wagnis ist auf die [[Asymmetrische Information|versteckte Handlung (eng. hidden action)]] zurückzuführen, im Falle der adversen Selektion spielt vor allem die [[Asymmetrische Information|versteckte Information (eng. hidden information)]], sehr gut am [[Saure-Gurken-Problem|Lemons-Problem]] von [[George A. Akerlof]] dargestellt, die tragende Rolle.&lt;ref&gt;Guesnerie, Roger/ Picard, Pierre/ Rey, Patrick : ''Adverse selection and moral hazard with risk-neutral agents.'' European Economic Review, Vol. 33, No. 4, 1989: S. 807-823. Verfügbar auf: http://www.sciencedirect.com/science/article/pii/0014292189900275&lt;/ref&gt; Beide können, da Nicht-Beobachtbarkeit und/oder Nicht-Kontrahierbarkeit von Interaktionssituationen vorliegen, zum [[Marktversagen]] führen.&lt;ref&gt;Pindyck, S. Robert/ Rubinfeld, L. Daniel: ''Mikroökonomie.'' Pearson Education, 2009: S. 803.&lt;/ref&gt;<br /> <br /> Es ist zu beachten, dass Aumann das Konzept des ''correlated equilibrium'' hauptsächlich auf die reine Moral Hazard-Problematik bezieht, während das Konzept von Bayes zu Beginn vorwiegend mit dem Problemfeld der Adversen Selektion in Verbindung gebracht wurde. Der US-amerikanische Nobelpreisträger [[Roger B. Myerson]] führte beide im ''Bayesian incentive-compatible mechanism'' zusammen.&lt;ref&gt;Myerson, B. Roger: ''Multistage Games with Communication.'' [http://ideas.repec.org/s/ecm/emetrp.html Econometrica], Econometric Society, Vol. 54, No. 2, März 1986: S. 323-358. Verfügbar auf: http://www.jstor.org/sici?sici=0012-9682%28198603%2954%3A2%3C323%3AMGWC%3E2.0.CO%3B2-P&lt;/ref&gt;<br /> <br /> Die große Bedeutung von Aumanns Arbeit liegt darin, dass über das Gleichgewicht in korrelierten Strategien eine Lösung für die Anreizverträglichkeit von Verträgen angeboten wird, so dass trotz der vorliegenden Informationsasymmetrie eine derartige Gestaltung von Verträgen und die damit verbundene Anreizsetzung gelingt, so dass es sich für die Spieler lohnt sich an die Vereinbarungen zu halten. Die Suche nach den anreizverträglichen Mechanismen ist dann laut [[Manfred Holler|Holler]]/Illing gleichbedeutend &quot;''mit der Bestimmung effizienter Bayes`scher Gleichgewichte in korrelierten Strategien.''&quot; &lt;ref&gt;Holler/Illing (2006): S. 94.&lt;/ref&gt;<br /> <br /> &quot;''Wenn es überhaupt eine direkte Anwendungsmöglickeit der Spieltheorie für die Praxis der Kapitalmärkte gibt, dann diese: Das Entscheidende an der Spieltheorie und allen ökonomischen Anwendungen ist das Anreizsystem. Anreize sind die Antriebskraft für alle wirtschaftlichen Aktivitäten - und zwar weltwelt.''&quot;&lt;ref&gt;Institutional Money, Ausgabe 3/2011, Interview mit Robert Aumann, S. 42-46.&lt;/ref&gt;<br /> <br /> Soweit die Aussage von Aumann in einem 2011 durchgeführten Interview, in dem er sich dazu äußert, dass durch die [[Bail-out (Wirtschaft)|Bail-outs]] falsche Anreize für die Banken gesetzt werden, da diese &quot;''zwar gewinnen, aber nicht verlieren können.''&quot; Somit wird noch einmal anhand der Aktualität der Finanzmarktkrise, die 2008 ihre sichtbaren Wirkungen zu entfalten begann, verdeutlicht, wie wichtig die Spieltheorie und vor allem das Verständnis von der richtigen Anreizsetzung für die Weltwirtschaft ist. Aumanns Konzept hat dieses Verständnis noch weiter ausgebaut, indem ein wichtiges Puzzlestück für die Vervollständigung des Gesamtbildes beigetragen wurde.<br /> <br /> == Siehe auch ==<br /> * [[Spieltheorie]]<br /> * [[Perfektes Bayessches Gleichgewicht]]<br /> <br /> == Einzelnachweise ==<br /> &lt;references /&gt;<br /> <br /> == Literatur ==<br /> <br /> * [[Robert Aumann]]: ''Subjectivity and Correlation in Randomized Strategies.'' Elsevier, Journal of Mathematical Economics, Vol. 1, No. 1., The Hebrew University of Jerusalem, Jerusalem, Israel, 1974.<br /> * {{Literatur | Autor= [[Manfred J. Holler]], Gerhard Illing | Titel= Einführung in die Spieltheorie | Verlag= Springer Verlag | Ort= Berlin und Heidelberg | ISBN= 3-540-27880-X | Auflage= 6., überarbeitete | Jahr= 2006 | Kommentar=}}<br /> * John Bone, Michaelis Drouvelis, Indrajit Ray: ''Avoiding Coordination-Failure using Correlation Devices: Experimental Evidences.''Department of Economics, University of Michigan, USA, 2011.<br /> * Robert Aumann: ''Correlated Equilibrium as an Expression of Bayesian Rationality.'' Econometrica, Econometric Society, Vol. 55, No. 1, The Hebrew University of Jerusalem, Jerusalem, Israel, 1987.<br /> * Sergiu Hart: ''Robert Aumann's Game and Economic Theory.'' Wiley-Blackwell, Scandinavian Journal of Economics, Vol. 108, No. 2, London, England, 2006.<br /> * Roger Myerson: ''Learning from Schelling's strategy of conflict.'' Department of Economics, University of Chicago, USA, 2009.<br /> * {{Literatur | Autor= Martin J. Osborne, [[Ariel Rubinstein]] | Titel= A Course in Game Theory | Verlag= MIT Press | Ort= London, England | Jahr= 1994 | Kommentar=}}<br /> * Sandip Sen, Stephane Airiau, Rajatish Mukherjee: ''Towards a Pareto-optimal Solution in General-Sum Games.'' Proceedings of the Second International Joint Conference on Autonomous Agents and Multiagent Systems, Melbourne, Australia, 2003.<br /> * Robert Aumann: ''Agreeing to disagree.'' Annals of Statistics Vol. 4, No. 1, Institute of Mathematical Statistics, Beachwood, USA, 1976.<br /> * Roger Guesnerie, Pierre Picard, Patrick Rey : ''Adverse selection and moral hazard with risk-neutral agents.'' Elsevier, European Economic Review, Vol. 33, No. 4, Département d'Économie (Economics Department), École Polytechnique, Palaiseau, France, 1989.<br /> * {{Literatur | Autor= Robert S. Pindyck, Daniel L. Rubinfeld | Titel= Mikroökonomie | Verlag= Pearson Education | Ort= München [u.a.], | ISBN= 978-3-8273-7282-6 | Auflage= 7., aktualisierte | Jahr= 2009 | Kommentar=}}<br /> * Roger B. Myerson: ''Multistage Games with Communication.'' Econometrica, Econometric Society, Vol. 54, No. 2, Department of Economics, University of Chicago, USA, 1986.<br /> * Institutional Money, FONDS professionell Multimedia GmbH, Ausgabe 3/2011, Wien, Österreich, 2011.<br /> <br /> == Weblinks ==<br /> * [http://www.spieltheorie.de/index.htm Professor Rieck's Spieltheorie-Seite] - Einstiegsseite zur Spieltheorie<br /> * [http://www.ma.huji.ac.il/raumann/publication.htm Sektion von Robert Aumann der Hebrew University of Jerusalem]<br /> * [http://oyc.yale.edu/economics/game-theory/contents/downloads Yale University-Vorlesungen zur Spieltheorie (24 x 75 Minuten)]<br /> * [http://www.gametheory.net/Mike/applets/NormalForm/NormalForm.html Gametheory.net] - Schönes Java-Applet zur Lösung von Normalformspielen mit Möglichkeit der Vorwahl von bekannten Spielen (englisch)<br /> * [http://www.spieltheorie-software.de Spieltheorie-Software.de] - Java-Software zur umfangreichen Analyse von 2-Personen Spielen<br /> <br /> [[Kategorie:Spieltheorie]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Mathieusche_Differentialgleichung&diff=118307495 Mathieusche Differentialgleichung 2013-05-08T11:46:27Z <p>Mathmon: /* Lösungseigenschaften */</p> <hr /> <div>Als '''Mathieusche Differentialgleichung''' wird eine spezielle [[Lineare Abbildung|lineare]] [[gewöhnliche Differentialgleichung]] zweiter Ordnung bezeichnet. Die DGL ist nach dem Mathematiker [[Émile Léonard Mathieu]] benannt und ist ein Spezialfall der [[Hillsche Differentialgleichung|Hillschen Differentialgleichung]] mit der Parameterfunktion<br /> <br /> :&lt;math&gt; q(x) = q_o + \Delta q \cdot \cos(x) &lt;/math&gt;<br /> <br /> == Normalform ==<br /> <br /> Die Gleichung wird in der Literatur in unterschiedlicher Form dargestellt. Eine als Normalform bezeichnete Gleichung &lt;ref&gt; Kurt Magnus: ''Schwingungen: Eine Einführung in die physikalischen Grundlagen und die theoretische Behandlung von Schwingungsproblemen.'' 8., überarb. Auflage, Vieweg+Teubner, 2008, Kapitel 4, ISBN 3835101935.&lt;/ref&gt; hat die Gestalt<br /> <br /> :&lt;math&gt;\ y''(x)+[\lambda + \gamma\cos(x) ] \cdot y(x)=0. &lt;/math&gt;<br /> <br /> Ist x eine Funktion der Zeit<br /> <br /> :&lt;math&gt; x = \Omega \cdot t &lt;/math&gt;<br /> <br /> so stehen die Abkürzungen &lt;math&gt; \lambda &lt;/math&gt; und &lt;math&gt; \gamma &lt;/math&gt; für<br /> <br /> :&lt;math&gt; \lambda = q_0/\Omega^2; \gamma = \Delta q / \Omega^2&lt;/math&gt; <br /> <br /> == Alternative Darstellung ==<br /> <br /> Die DGL wird auch, unter Anderem, folgendermaßen angegeben &lt;ref&gt;[http://dlmf.nist.gov/28.2 NIST Digital Library of Mathematical Functions: Mathieu Functions and Hill's Equation] (englisch)&lt;/ref&gt; &lt;ref&gt;Wolfgang Demtröder: ''Experimentalphysik 1: Mechanik und Wärme'' Springer, 2008, Kapitel 11.7, ISBN 3540792945.&lt;/ref&gt;<br /> <br /> :&lt;math&gt;\ y''(x)+[a-2q\cos (2x) ] \cdot y(x)=0. &lt;/math&gt;<br /> <br /> :&lt;math&gt;\ \ddot x(t) + \omega_0^2[1 + h \cos(\Omega t)] \cdot x(t) = 0 &lt;/math&gt;<br /> <br /> == Lösungseigenschaften ==<br /> <br /> Die Mathieusche Differentialgleichung lässt sich als lineares Differentialgleichungssystem erster Ordnung mit zwei Gleichungen darstellen:<br /> <br /> :&lt;math&gt;<br /> \begin{pmatrix}<br /> 0 &amp; 1 \\<br /> \lambda + \gamma \cos(x) &amp; 0 \\<br /> \end{pmatrix}<br /> <br /> \begin{pmatrix}<br /> u(x) \\<br /> v(x) \\<br /> \end{pmatrix}<br /> <br /> = <br /> <br /> \begin{pmatrix}<br /> u(x) \\<br /> v(x) \\<br /> \end{pmatrix}'<br /> <br /> &lt;/math&gt;<br /> <br /> Die Koeffizientenmatrix ist hier &lt;math&gt;2\pi&lt;/math&gt;-periodisch. Nach dem [[Satz von Floquet]]<br /> lässt sich die [[Fundamentalsystem (Mathematik)|Fundamentalmatrix]] beschreiben als<br /> <br /> :&lt;math&gt;<br /> \Phi(x) = P(x)\exp(xR)<br /> &lt;/math&gt;<br /> <br /> Dabei ist &lt;math&gt;R \in \mathbb{C}^{2 \times 2}&lt;/math&gt; und &lt;math&gt;P: \mathbb{R}\rightarrow GL(m; \mathbb{C})&lt;/math&gt;<br /> ebenfalls &lt;math&gt;2\pi&lt;/math&gt;-periodisch. Durch die Berechnung der [[jordansche Normalform|jordanschen Normalform]]<br /> der Matrix &lt;math&gt;R&lt;/math&gt; ergeben sich zwei Fälle:<br /> <br /> # &lt;math&gt;R&lt;/math&gt; hat zwei verschiedene (komplexe) Eigenwerte &lt;math&gt;\gamma_1 \neq \gamma_2&lt;/math&gt;: In diesem Fall sind die Lösungen von der Form &lt;math&gt;e^{\gamma_{1} x} \phi_{1}(x)&lt;/math&gt; und &lt;math&gt; e^{\gamma_{2} x} \phi_{2}(x)&lt;/math&gt;, wobei &lt;math&gt;\phi_1, \phi_2&lt;/math&gt; jeweils &lt;math&gt;2\pi&lt;/math&gt;-periodisch sind.<br /> # &lt;math&gt;R&lt;/math&gt; hat einen einzigen Eigenwert &lt;math&gt;\gamma&lt;/math&gt;: Hier sind die Lösungen von der Gestalt &lt;math&gt;e^{\gamma x} \phi(x)&lt;/math&gt; und &lt;math&gt; x e^{\gamma x} \phi(x)&lt;/math&gt; mit einer &lt;math&gt;2\pi&lt;/math&gt;-periodischen Funktion &lt;math&gt;\phi&lt;/math&gt;.<br /> <br /> == Siehe auch ==<br /> * [[Parametrischer Oszillator]]<br /> * [[Paul-Falle]]<br /> <br /> == Einzelnachweise ==<br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> *[http://functions.wolfram.com/MathieuandSpheroidalFunctions/ List of equations and identities for Mathieu Functions] functions.wolfram.com (englisch)<br /> * {{cite journal | author=Mathieu, E. |title=Mémoire sur Le Mouvement Vibratoire d’une Membrane de forme Elliptique |url=http://math-docARRAYjf-grenobleARRAYr/JMPA/ |journal=Journal de Mathématiques Pures et Appliquées | year=1868 | pages=137–203 | url=http://visualiseur.bnf.fr/ConsulterElementNum?O=NUMM-16412&amp;Deb=145&amp;Fin=211&amp;E=PDF}}<br /> <br /> <br /> [[Kategorie:Gewöhnliche Differentialgleichungen]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Mathieusche_Differentialgleichung&diff=118290037 Mathieusche Differentialgleichung 2013-05-07T19:17:48Z <p>Mathmon: </p> <hr /> <div>Als '''Mathieusche Differentialgleichung''' wird eine spezielle [[Lineare Abbildung|lineare]] [[gewöhnliche Differentialgleichung]] zweiter Ordnung bezeichnet. Die DGL ist nach dem Mathematiker [[Émile Léonard Mathieu]] benannt und ist ein Spezialfall der [[Hillsche Differentialgleichung|Hillschen Differentialgleichung]] mit der Parameterfunktion<br /> <br /> :&lt;math&gt; q(x) = q_o + \Delta q \cdot \cos(x) &lt;/math&gt;<br /> <br /> == Normalform ==<br /> <br /> Die Gleichung wird in der Literatur in unterschiedlicher Form dargestellt. Eine als Normalform bezeichnete Gleichung &lt;ref&gt; Kurt Magnus: ''Schwingungen: Eine Einführung in die physikalischen Grundlagen und die theoretische Behandlung von Schwingungsproblemen.'' 8., überarb. Auflage, Vieweg+Teubner, 2008, Kapitel 4, ISBN 3835101935.&lt;/ref&gt; hat die Gestalt<br /> <br /> :&lt;math&gt;\ y''(x)+[\lambda + \gamma\cos(x) ] \cdot y(x)=0. &lt;/math&gt;<br /> <br /> Ist x eine Funktion der Zeit<br /> <br /> :&lt;math&gt; x = \Omega \cdot t &lt;/math&gt;<br /> <br /> so stehen die Abkürzungen &lt;math&gt; \lambda &lt;/math&gt; und &lt;math&gt; \gamma &lt;/math&gt; für<br /> <br /> :&lt;math&gt; \lambda = q_0/\Omega^2; \gamma = \Delta q / \Omega^2&lt;/math&gt; <br /> <br /> == Alternative Darstellung ==<br /> <br /> Die DGL wird auch, unter Anderem, folgendermaßen angegeben &lt;ref&gt;[http://dlmf.nist.gov/28.2 NIST Digital Library of Mathematical Functions: Mathieu Functions and Hill's Equation] (englisch)&lt;/ref&gt; &lt;ref&gt;Wolfgang Demtröder: ''Experimentalphysik 1: Mechanik und Wärme'' Springer, 2008, Kapitel 11.7, ISBN 3540792945.&lt;/ref&gt;<br /> <br /> :&lt;math&gt;\ y''(x)+[a-2q\cos (2x) ] \cdot y(x)=0. &lt;/math&gt;<br /> <br /> :&lt;math&gt;\ \ddot x(t) + \omega_0^2[1 + h \cos(\Omega t)] \cdot x(t) = 0 &lt;/math&gt;<br /> <br /> == Lösungseigenschaften ==<br /> <br /> Die Mathieusche Differentialgleichung lässt sich als lineares Differentialgleichungssystem erster Ordnung mit zwei Gleichungen darstellen:<br /> <br /> :&lt;math&gt;<br /> \begin{pmatrix}<br /> 0 &amp; 1 \\<br /> \lambda + \gamma \cos(x) &amp; 0 \\<br /> \end{pmatrix}<br /> <br /> \begin{pmatrix}<br /> u(x) \\<br /> v(x) \\<br /> \end{pmatrix}<br /> <br /> = <br /> <br /> \begin{pmatrix}<br /> u(x) \\<br /> v(x) \\<br /> \end{pmatrix}'<br /> <br /> &lt;/math&gt;<br /> <br /> Die Koeffizientenmatrix ist hier &lt;math&gt;\pi&lt;/math&gt;-periodisch. Nach dem [[Satz von Floquet]]<br /> lässt sich die [[Fundamentalsystem (Mathematik)|Fundamentalmatrix]] beschreiben als<br /> <br /> :&lt;math&gt;<br /> \Phi(x) = P(x)\exp(xR)<br /> &lt;/math&gt;<br /> <br /> Dabei ist &lt;math&gt;R \in \mathbb{C}^{2 \times 2}&lt;/math&gt; und &lt;math&gt;P: \mathbb{R}\rightarrow GL(m; \mathbb{C})&lt;/math&gt;<br /> ebenfalls &lt;math&gt;\pi&lt;/math&gt;-periodisch. Durch die Berechnung der [[jordansche Normalform|jordanschen Normalform]]<br /> der Matrix &lt;math&gt;R&lt;/math&gt; ergene sich zwei Fälle:<br /> <br /> # &lt;math&gt;R&lt;/math&gt; hat zwei verschiedene (komplexe) Eigenwerte &lt;math&gt;\gamma_1 \neq \gamma_2&lt;/math&gt;: In diesem Fall sind die Lösungen von der Form &lt;math&gt;e^{\gamma_{1} x} \phi_{1}(x)&lt;/math&gt; und &lt;math&gt; e^{\gamma_{2} x} \phi_{2}(x)&lt;/math&gt;, wobei &lt;math&gt;\phi_1, \phi_2&lt;/math&gt; jeweils &lt;math&gt;\pi&lt;/math&gt;-periodisch sind.<br /> # &lt;math&gt;R&lt;/math&gt; hat einen einzigen Eigenwert &lt;math&gt;\gamma&lt;/math&gt;: Hier sind die Lösungen von der Gestalt &lt;math&gt;e^{\gamma x} \phi(x)&lt;/math&gt; und &lt;math&gt; x e^{\gamma x} \phi(x)&lt;/math&gt; mit einer &lt;math&gt;\pi&lt;/math&gt;-periodischen Funktion &lt;math&gt;\phi&lt;/math&gt;.<br /> == Siehe auch ==<br /> * [[Parametrischer Oszillator]]<br /> * [[Paul-Falle]]<br /> <br /> == Einzelnachweise ==<br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> *[http://functions.wolfram.com/MathieuandSpheroidalFunctions/ List of equations and identities for Mathieu Functions] functions.wolfram.com (englisch)<br /> * {{cite journal | author=Mathieu, E. |title=Mémoire sur Le Mouvement Vibratoire d’une Membrane de forme Elliptique |url=http://math-docARRAYjf-grenobleARRAYr/JMPA/ |journal=Journal de Mathématiques Pures et Appliquées | year=1868 | pages=137–203 | url=http://visualiseur.bnf.fr/ConsulterElementNum?O=NUMM-16412&amp;Deb=145&amp;Fin=211&amp;E=PDF}}<br /> <br /> <br /> [[Kategorie:Gewöhnliche Differentialgleichungen]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Mathieusche_Differentialgleichung&diff=118287733 Mathieusche Differentialgleichung 2013-05-07T17:56:34Z <p>Mathmon: /* Siehe auch */</p> <hr /> <div>Als '''Mathieusche Differentialgleichung''' wird eine spezielle [[Lineare Abbildung|lineare]] [[gewöhnliche Differentialgleichung]] zweiter Ordnung bezeichnet. Die DGL ist nach dem Mathematiker [[Émile Léonard Mathieu]] benannt und ist ein Spezialfall der [[Hillsche Differentialgleichung|Hillschen Differentialgleichung]] mit der Parameterfunktion<br /> <br /> :&lt;math&gt; q(x) = q_o + \Delta q \cdot cos(x) &lt;/math&gt;<br /> <br /> == Normalform ==<br /> <br /> Die Gleichung wird in der Literatur in unterschiedlicher Form dargestellt. Eine als Normalform bezeichnete Gleichung &lt;ref&gt; Kurt Magnus: ''Schwingungen: Eine Einführung in die physikalischen Grundlagen und die theoretische Behandlung von Schwingungsproblemen.'' 8., überarb. Auflage, Vieweg+Teubner, 2008, Kapitel 4, ISBN 3835101935.&lt;/ref&gt; hat die Gestalt<br /> <br /> :&lt;math&gt;\ y''(x)+[\lambda + \gamma\cos(x) ] \cdot y(x)=0. &lt;/math&gt;<br /> <br /> Ist x eine Funktion der Zeit<br /> <br /> :&lt;math&gt; x = \Omega \cdot t &lt;/math&gt;<br /> <br /> so stehen die Abkürzungen &lt;math&gt; \lambda &lt;/math&gt; und &lt;math&gt; \gamma &lt;/math&gt; für<br /> <br /> :&lt;math&gt; \lambda = q_0/\Omega^2; \gamma = \Delta q / \Omega^2&lt;/math&gt; <br /> <br /> == Alternative Darstellung ==<br /> <br /> Die DGL wird auch, unter Anderem, folgendermaßen angegeben &lt;ref&gt;[http://dlmf.nist.gov/28.2 NIST Digital Library of Mathematical Functions: Mathieu Functions and Hill's Equation] (englisch)&lt;/ref&gt; &lt;ref&gt;Wolfgang Demtröder: ''Experimentalphysik 1: Mechanik und Wärme'' Springer, 2008, Kapitel 11.7, ISBN 3540792945.&lt;/ref&gt;<br /> <br /> :&lt;math&gt;\ y''(x)+[a-2q\cos (2x) ] \cdot y(x)=0. &lt;/math&gt;<br /> <br /> :&lt;math&gt;\ \ddot x(t) + \omega_0^2[1 + h \cos(\Omega t)] \cdot x(t) = 0 &lt;/math&gt;<br /> <br /> == Siehe auch ==<br /> * [[Parametrischer Oszillator]]<br /> * [[Paul-Falle]]<br /> <br /> == Einzelnachweise ==<br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> *[http://functions.wolfram.com/MathieuandSpheroidalFunctions/ List of equations and identities for Mathieu Functions] functions.wolfram.com (englisch)<br /> * {{cite journal | author=Mathieu, E. |title=Mémoire sur Le Mouvement Vibratoire d’une Membrane de forme Elliptique |url=http://math-docARRAYjf-grenobleARRAYr/JMPA/ |journal=Journal de Mathématiques Pures et Appliquées | year=1868 | pages=137–203 | url=http://visualiseur.bnf.fr/ConsulterElementNum?O=NUMM-16412&amp;Deb=145&amp;Fin=211&amp;E=PDF}}<br /> <br /> <br /> [[Kategorie:Gewöhnliche Differentialgleichungen]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Lineare_Optimierung&diff=117647174 Lineare Optimierung 2013-04-18T11:22:58Z <p>Mathmon: /* Der Satz vom komplementären Schlupf */</p> <hr /> <div>{{Dieser Artikel|behandelt '''Lineare Optimierung''' im Rahmen des Operations Research. Für den Begriff in der Spieltheorie, siehe [[Lineare Optimierung (Spieltheorie)]].}}<br /> [[Datei:Linopt-feasible-region de.svg|miniatur|240px|Bei linearen Optimierungsproblemen ist die Menge der zulässigen Punkte (braun) durch lineare Ungleichungen (Halbräume, definiert durch [[Hyperebene]]n) eingeschränkt.]]<br /> <br /> Die '''Lineare Optimierung''' oder '''Lineare Programmierung''' ist eines der Hauptverfahren des [[Operations Research]] und beschäftigt sich mit der [[Optimierung (Mathematik)|Optimierung]] [[Lineare Abbildung|linearer Zielfunktionen]] über einer Menge, die durch lineare [[Gleichung]]en und [[Ungleichung]]en eingeschränkt ist. Häufig lassen sich ''lineare Programme (LPs)'' zur Lösung von Problemen einsetzen, für die keine speziell entwickelten Lösungsverfahren bekannt sind, beispielsweise bei der Planung von Verkehrs- oder Telekommunikationsnetzen oder in der Produktionsplanung. Die lineare Optimierung ist ein Spezialfall der [[Konvexe Optimierung|konvexen Optimierung]] und Grundlage mehrerer Lösungsverfahren in der [[Ganzzahlige lineare Optimierung|ganzzahligen linearen]] und der [[Nichtlineare Optimierung|nichtlinearen Optimierung]]. Viele Eigenschaften linearer Programme lassen sich als Eigenschaften von [[Polyeder]]n interpretieren und auf diese Art geometrisch modellieren und beweisen.<br /> <br /> Der Begriff „Programmierung“ ist eher im Sinne von „Planung“ zu verstehen als im Sinne der Erstellung eines Computerprogramms. Er wurde schon Mitte der 1940er Jahre von [[George Dantzig]], einem der Begründer der Linearen Optimierung, geprägt, bevor Computer zur Lösung linearer Optimierungsprobleme eingesetzt wurden. <br /> <br /> Aus [[Komplexitätstheorie|komplexitätstheoretischer]] Sicht ist die lineare Optimierung ein einfaches Problem, da es sich beispielsweise mit einigen [[Innere-Punkte-Verfahren]] in [[Polynomialzeit|polynomialer Zeit]] lösen lässt. In der Praxis hat sich allerdings das [[Simplex-Verfahren]] als einer der schnellsten Algorithmen herausgestellt, obwohl es im schlechtesten Fall exponentielle Laufzeit besitzt. Neben dem eigentlichen Problem löst es immer auch das sogenannte [[Duales Problem|duale Problem]] mit, was unter anderem in mehreren Verfahren zur Lösung ganzzahliger linearer Programme ausgenutzt wird.<br /> <br /> == Geschichte ==<br /> Die Methode der linearen Optimierung wurde 1939 von dem sowjetischen Mathematiker [[Leonid Witaljewitsch Kantorowitsch]] in seinem Aufsatz „''Mathematische Methoden für die Organisation und Planung der Produktion''“ eingeführt.&lt;ref&gt;[http://www.feg.unesp.br/~mapereira/PL_arquivos/ManSci-v6_n4-366_422-1960.pdf ''Mathematical Methods of Organizing and Planning Production''] (PDF; 1,4&amp;nbsp;MB). In: ''Management Science'', Band 6, Nr. 4 (Juli 1960), S.&amp;nbsp;366–422.&lt;/ref&gt; Kurz danach veröffentlichte der Amerikaner [[Frank L. Hitchcock]] eine Arbeit zu einem [[Transportproblem]]. Damals erkannte man noch nicht die Bedeutung dieser Arbeiten. Unter anderem für seinen Beitrag zur linearen Optimierung bekam Kantorowitsch aber 1975 den [[Nobelpreis]] für [[Wirtschaftswissenschaften]].<br /> <br /> Mitte der 1940er Jahre erkannte [[George Dantzig]], dass sich viele praktische Beschränkungen durch lineare Ungleichungen beschreiben ließen, und ersetzte erstmals die bis dahin vorherrschenden Faustregeln zur Lösung von Planungsproblemen durch eine (lineare) Zielfunktion. Insbesondere etablierte er damit eine klare Trennung zwischen dem ''Ziel'' der Optimierung und den ''Mitteln'' zur Lösung des Planungsproblems. <br /> <br /> Den Durchbruch für die lineare Optimierung schaffte Dantzig 1947, als er eine Arbeit über das [[Simplex-Verfahren]] veröffentlichte, das heute eines der meistgenutzten Verfahren zur Lösung linearer Programme ist&lt;ref&gt;Dr. Heiner Müller-Merbach: ''Operations Research'', 3. Auflage, Verlag Franz Vahlen München, 1973, ISBN 3-8006-0388-8, Seite 89.&lt;/ref&gt;. Interesse an dieser Arbeit zeigten zunächst die amerikanischen Militärs, speziell die [[United States Air Force|US Air Force]], die militärische Einsätze optimieren wollten. In den Folgejahren entwickelten Dantzig, [[John von Neumann]], [[Oskar Morgenstern]], [[Tjalling Koopmans]] und andere das Verfahren und die zugehörige Theorie weiter und stellten Zusammenhänge zur [[Spieltheorie]] her. Mit dem Aufkommen von [[Computer]]n Mitte der 1950er Jahre konnte man auch größere Probleme lösen. Etwa ab 1950 entdeckte die Wirtschaft, insbesondere Ölraffinerien, die Anwendungsmöglichkeiten der linearen Optimierung. Ab den 1970er Jahren profitierte der Simplex-Algorithmus von algorithmischen Fortschritten der [[Numerische lineare Algebra|numerischen linearen Algebra]]. Insbesondere die Entwicklung numerisch stabiler [[Gaußsches Eliminationsverfahren#LR-Zerlegung|LR-Zerlegungen]] zur Lösung großer [[Lineares Gleichungssystem|linearer Gleichungssysteme]] trugen maßgeblich zum Erfolg und der Verbreitung des Simplex-Verfahrens bei. <br /> <br /> Im Jahre 1979 veröffentlichte [[Leonid Khachiyan]] die [[Ellipsoidmethode]], mit der lineare Programme erstmals – zumindest theoretisch – in [[Polynomialzeit]] gelöst werden konnten. 1984 begannen [[Narendra Karmarkar]] und andere mit der Entwicklung von [[Innere-Punkte-Verfahren]] zur Lösung linearer Programme.&lt;ref&gt;N. Karmarkar: ''A new polynomial-time algorithm for linear programming''. Combinatorica 4 (1984), Nr. 4, 373–395.&lt;/ref&gt; Diese Algorithmen, die als erste polynomiale Lösungsmethoden auch das Potential zum praktischen Einsatz hatten, wurden innerhalb des nachfolgenden Jahrzehnts noch wesentlich verbessert. Parallel dazu wuchs die Bedeutung des Simplex-Verfahrens zur Lösung von Unterproblemen in der ganzzahligen linearen Optimierung. Anfang der 1990er Jahre wurden hier noch einmal große Fortschritte durch die Entwicklung neuer [[Pivotelement|Pivotstrategien]] für den dualen Simplex-Algorithmus erzielt, insbesondere durch das ''dual steepest edge pricing'' von John Forrest und Donald Goldfarb.<br /> <br /> Sowohl das Simplex-Verfahren als auch verschiedene Innere-Punkte-Verfahren sind nach wie vor Gegenstand aktueller Forschung. Die lineare Optimierung wird heute in sehr vielen Bereichen zur Lösung praktischer Probleme eingesetzt. Unter der in praktischen Anwendungen fast immer erfüllten Voraussetzung, dass die auftretenden LP-Matrizen [[Dünnbesetzte Matrix|dünnbesetzt]] sind (also nur wenige Nicht-Null-Einträge besitzen), können heute lineare Programme mit mehreren hunderttausend Variablen oder Ungleichungen innerhalb weniger Minuten bis Stunden optimal gelöst werden. Die tatsächliche Lösungszeit hängt dabei neben dem verwendeten Lösungsverfahren auch stark von der Anzahl und Anordnung der Nicht-Null-Einträge in der beteiligten Matrix und von der Wahl der Startlösung ab.<br /> <br /> == Problemdefinition ==<br /> === Mathematische Formulierung ===<br /> Bei einem ''linearen Programm (LP)'' sind eine [[Matrix (Mathematik)|Matrix]] &lt;math&gt;A\in\R^{m,n}&lt;/math&gt; und zwei [[Vektor]]en &lt;math&gt;b\in\R^m&lt;/math&gt; und &lt;math&gt;c\in\R^n&lt;/math&gt; gegeben. Eine ''zulässige Lösung'' ist ein Vektor &lt;math&gt;x \in \R^n&lt;/math&gt; mit nichtnegativen Einträgen, der die linearen Bedingungen<br /> :&lt;math&gt;<br /> \begin{matrix}<br /> a_{11} x_1 &amp;+ \ldots &amp;+ a_{1n} x_n &amp;\leq b_1 \\ <br /> a_{21} x_1 &amp;+ \ldots &amp;+ a_{2n} x_n &amp;\leq b_2 \\<br /> \vdots &amp; \vdots &amp; \vdots &amp; \vdots \\<br /> a_{m1} x_1 &amp;+ \ldots &amp;+ a_{mn} x_n &amp;\leq b_m <br /> \end{matrix}<br /> &lt;/math&gt;<br /> erfüllt. Ziel ist es, unter allen zulässigen Vektoren &lt;math&gt;x&lt;/math&gt; einen zu finden, der das [[Standardskalarprodukt]] <br /> :&lt;math&gt;c^T x = c_1 x_1 + \ldots + c_n x_n&lt;/math&gt; <br /> maximiert. Dieses Optimierungsproblem in der sogenannten ''Standardform'' wird oft abkürzend als<br /> :&lt;math&gt;\max \{ c^T x \;|\; A x \leq b, x \geq 0 \}&lt;/math&gt;<br /> geschrieben, wobei die Bedingungen &lt;math&gt;A x \le b&lt;/math&gt; und &lt;math&gt;x \geq 0&lt;/math&gt; komponentenweise zu verstehen sind.<br /> <br /> Darüber hinaus gibt es noch weitere äquivalente Formulierungen, die sich durch einfache Operationen in diese Standardform bringen lassen:<br /> * Minimierungsproblem statt Maximierungsproblem: Multiplikation des Zielfunktionsvektors &lt;math&gt;c&lt;/math&gt; mit (-1)<br /> * Größer-gleich- statt Kleiner-gleich-Bedingungen: Multiplikation der entsprechenden Ungleichungen mit (-1)<br /> * Gleichheitsbedingungen statt Ungleichheitsbedingungen: Ersetzung von &lt;math&gt;a_i x = b_i&lt;/math&gt; durch &lt;math&gt;a_i x \leq b_i&lt;/math&gt; und &lt;math&gt; - a_i x \leq - b_i&lt;/math&gt;<br /> * Variablen ohne Nichtnegativitätsbedingung: Ersetzung von &lt;math&gt;x&lt;/math&gt; durch &lt;math&gt;x' - x''&lt;/math&gt; mit &lt;math&gt;x', x'' \ge 0&lt;/math&gt;<br /> <br /> Die lineare Optimierung behandelt nur Probleme, bei denen die Variablen beliebige reelle Zahlen annehmen dürfen. Ein ''(gemischt-)ganzzahliges lineares Programm'', bei dem einige Variablen nur ganzzahlige Werte annehmen dürfen, ist ''kein Spezialfall'', sondern – im Gegenteil – eine Verallgemeinerung. Solche Optimierungsprobleme sind im Allgemeinen [[NP-Äquivalenz|NP-äquivalent]], d.&amp;nbsp;h. [[P-NP-Problem|vermutlich]] nicht effizient lösbar. Dieser Fall wird von der [[Ganzzahlige lineare Optimierung|ganzzahligen linearen Optimierung]] behandelt.<br /> <br /> === Formen eines Linearen Optimierungsproblems ===<br /> Es gibt vier verschiedene Formen, in der sich Lineare Optimierungsprobleme darstellen lassen. <br /> <br /> ==== Allgemeine Form ====<br /> Für die Allgemeine Form gelten keine Einschränkungen:<br /> <br /> &lt;math&gt;\begin{matrix}\min \\ \max\end{matrix}\; \left\{ c^\top x : Ax \gtreqless b \right\}&lt;/math&gt;<br /> <br /> ==== Standardform ====<br /> Die Standardform benötigt eine Nichtnegativitätsbedingung für &lt;math&gt;x&lt;/math&gt; und eine zu maximierende Zielfunktion, sowie eine Größer-Gleich-Relation der Nebenbedingungen:<br /> <br /> &lt;math&gt;\max \left\{ c^\top x : Ax \leq b,\;\; x \geq 0 \right\}&lt;/math&gt;<br /> <br /> ==== Normalform ====<br /> Die Normal beinhaltet die Einschränkungen der Standardform. Zusätzlich wird die Koeffizientenmatrix &lt;math&gt;A&lt;/math&gt; um die Einheitsmatrix &lt;math&gt;E \in \mathbb{R}^{m\times m}&lt;/math&gt; und die Schlupfvariablen &lt;math&gt;s = s_1, \dots, s_{m-n}&lt;/math&gt; erweitert, sodass gilt:<br /> <br /> &lt;math&gt;(A|E)\begin{pmatrix}x\\s\end{pmatrix} = b = \begin{pmatrix}a_{11} &amp; \dots &amp; a_{1n} &amp; e_{11} &amp; \dots &amp; e_{1m}\\<br /> \vdots &amp; &amp; \vdots &amp; \vdots &amp; &amp; \vdots\\<br /> a_{m1} &amp; \dots &amp; a_{mn} &amp; e_{m1} &amp; \dots &amp; e_{mm}<br /> \end{pmatrix} \cdot \begin{pmatrix}x_1\\ \vdots \\ x_n\\ s_1 \\ \vdots \\ s_{m-n}\end{pmatrix} = \begin{pmatrix}b_1\\ \vdots \\ b_m\end{pmatrix}&lt;/math&gt;<br /> <br /> mit dem Teilvektor &lt;math&gt;s = \begin{pmatrix}s_1 &amp; \dots &amp; s_{m-n}\end{pmatrix}^\top&lt;/math&gt; als Schlupfvariablen. <br /> <br /> Um in der ursprünglichen Notationsweise zu bleiben, gilt also<br /> <br /> &lt;math&gt;\max\left\{ c^\top x : \begin{pmatrix}A | E\end{pmatrix} \cdot \begin{pmatrix}x&amp; s\end{pmatrix}^\top = b , \;\; x\geq 0\right\}&lt;/math&gt;<br /> <br /> ==== Kanonische Form ====<br /> Die Kanonische Form wird für den Simplex-Algorithmus benötigt. Sie beinhaltet die Normalform und benötigt die Nichtnegativitätsbedingung &lt;math&gt;b\geq 0&lt;/math&gt;.<br /> <br /> &lt;math&gt;\max\; \left\{ c^\top x : (A | E) (x\quad s)^\top = b , \;\; x,b\geq 0\right\}&lt;/math&gt;<br /> <br /> === Geometrische Interpretation ===<br /> Ein lineares Programm lässt sich geometrisch interpretieren. Wenn &lt;math&gt;a_i x \leq b_i&lt;/math&gt; die i. Zeile eines linearen Programms in Standardform ist, dann beschreibt die Menge &lt;math&gt;\{ x \; | \; a_i x = b_i \}&lt;/math&gt; aller Punkte &lt;math&gt;x&lt;/math&gt;, die die zugehörige lineare Gleichung &lt;math&gt;a_i x = b_i&lt;/math&gt; erfüllen, eine [[Hyperebene]] im &lt;math&gt;n&lt;/math&gt;-dimensionalen Raum. Die Menge der Punkte, die die lineare Ungleichung &lt;math&gt;a_i x \leq b_i&lt;/math&gt; erfüllen, besteht aus allen Punkten auf der einen Seite der Hyperebene (inklusive der Hyperebene selbst), bildet also einen [[Halbraum]]. Jede Zeile &lt;math&gt;a_i x \leq b_i&lt;/math&gt; teilt daher den &lt;math&gt;n&lt;/math&gt;-dimensionalen Raum in zwei Hälften, wobei die Punkte in der einen Hälfte zulässig sind und in der anderen nicht. Die Menge<br /> : &lt;math&gt;P := \{ x \; | \; Ax \leq b, \; x \geq 0 \} = \{ x \; | \; a_i x \leq b_i, \; i = 1,\ldots,m, \; x \geq 0 \}&lt;/math&gt;<br /> der Punkte, die alle Ungleichungen des LPs erfüllen, ist genau der [[Schnittmenge#Schnittmenge|Schnitt]] dieser Halbräume, also die Menge aller Punkte, die für jede Ungleichung in der jeweiligen zulässigen Hälfte des Raumes liegen. Diese Lösungsmenge &lt;math&gt;P&lt;/math&gt; des linearen Programms bildet ein [[Konvexe Menge|konvexes]] [[Polyeder]], also ein &lt;math&gt;n&lt;/math&gt;-dimensionales Vieleck, in dem die Verbindungslinie zwischen zwei beliebigen Punkten von &lt;math&gt;P&lt;/math&gt; vollständig in &lt;math&gt;P&lt;/math&gt; enthalten ist. Ziel der Optimierung ist es, unter allen Punkten des Polyeders einen zu finden, der die lineare Funktion &lt;math&gt;c:\,x \to c^T x&lt;/math&gt; maximiert. Geometrisch entspricht dies der Verschiebung der Hyperebene &lt;math&gt;\{ x \; | \; c^T x = 0 \}&lt;/math&gt; in Richtung des Vektors &lt;math&gt;c&lt;/math&gt;, bis die verschobene Hyperebene das Polyeder gerade noch [[Berührung (Mathematik)|berührt]]. Die Menge aller Berührungspunkte ist genau die Menge der Optimallösungen des linearen Programms.<br /> <br /> [[Datei:Linopt-feasible-region2.png|miniatur|250px|Zulässige Menge (blau) eines LPs in Standardform mit einschränkenden Ungleichungen (grün), Zielfunktion (rote Linie) und einer optimalen Lösung (roter Punkt)]]<br /> <br /> Im nebenstehenden Bild ist diese Anordnung für den Fall von nur zwei Variablen dargestellt. Eine Hyperebene im zweidimensionalen Raum ist eine [[Gerade]], im Bild grün dargestellt. Jede dieser Geraden teilt den Raum in eine zulässige und eine unzulässige Hälfte. Die Menge der Punkte, die auf der zulässigen Seite jeder Geraden liegen, bilden das blau dargestellte Polyeder (Vieleck). Die rote Gerade stellt die Zielfunktion dar. Ziel ist es, sie so weit wie möglich in Richtung des roten Vektors &lt;math&gt;c&lt;/math&gt; zu verschieben, ohne das Polyeder zu verlassen. Im nebenstehenden Bild ist der rote Berührungspunkt der Zielfunktionsgeraden mit dem Polyeder die einzige Optimallösung.<br /> <br /> == Beispiel aus der Produktionsplanung (zweidimensional) ==<br /> Eine Firma stellt zwei verschiedene Produkte her, für deren Fertigung drei Maschinen A, B, C zur Verfügung stehen. Diese Maschinen haben eine maximale monatliche Laufzeit (Kapazität) von 170 Stunden (A), 150 Stunden (B) bzw. 180 Stunden (C). Eine Mengeneinheit (ME) von Produkt 1 liefert einen [[Deckungsbeitrag]] von 300 Euro, eine ME von Produkt 2 dagegen 500 Euro. Fertigt man eine ME von Produkt 1, dann benötigt man dafür eine Stunde die Maschine A und eine Stunde die Maschine B. Eine Einheit von Produkt 2 belegt zwei Stunden lang Maschine A, eine Stunde Maschine B und drei Stunden Maschine C. Ziel ist es, Produktionsmengen zu bestimmen, die den Deckungsbeitrag der Firma maximieren, ohne die Maschinenkapazitäten zu überschreiten. Fixkosten können in dem Optimierungsproblem ignoriert und anschließend dazuaddiert werden, da sie per Definition unabhängig von den zu bestimmenden Produktionsmengen sind.<br /> <br /> === Mathematische Modellierung ===<br /> [[Datei:Linear_programming_polytope.png|miniatur|330px|Veranschaulichung des Beispiels (Erklärung siehe Text)]]<br /> <br /> Angenommen, der Betrieb fertigt pro Monat &lt;math&gt;x_1&lt;/math&gt; ME von Produkt 1 und &lt;math&gt;x_2&lt;/math&gt; ME von Produkt 2. Dann beträgt der Gesamtdeckungsbeitrag<br /> <br /> :&lt;math&gt;G(x_1,x_2) = 300 x_1 + 500 x_2.&lt;/math&gt;<br /> <br /> Diesen Wert möchte die Firma maximieren. Da die Maschinenkapazitäten eingehalten werden müssen, ergeben sich die Nebenbedingungen:<br /> :&lt;math&gt;<br /> \begin{alignat}{3}<br /> x_1 &amp;+ &amp; 2x_2 &amp;\leq 170 &amp;&amp;\text{ (Maschine A, rechts in schwarz eingezeichnet)}\\<br /> x_1 &amp;+ &amp; x_2 &amp;\leq 150 &amp;&amp;\text{ (Maschine B, rechts in tuerkis eingezeichnet)}\\<br /> &amp; &amp; 3x_2 &amp;\leq 180 &amp;&amp;\text{ (Maschine C, rechts in violett eingezeichnet)}<br /> \end{alignat}<br /> &lt;/math&gt;<br /> Da außerdem keine negativen Produktionsmengen möglich sind, muss &lt;math&gt;x_1, x_2 \geq 0&lt;/math&gt; gelten (Nichtnegativitätsbedingung).<br /> <br /> === Geometrische Interpretation als Polyeder ===<br /> Im nebenstehenden Bild sind die Ungleichungen aus dem obigen Beispiel als türkise, schwarze und violette Beschränkungen eingezeichnet. Zusammen definieren sie das (blau umrandete) [[Polyeder]] der zulässigen Punkte. Die rotgestrichelten Linien stellen Iso-Gewinnfunktionen dar, d.&amp;nbsp;h., alle Punkte auf einer solchen Linie haben denselben Zielfunktionswert. Da die Firma möglichst viel Gewinn erzielen will, ist das Ziel der Optimierung, solch eine rot gestrichelte Linie so weit nach rechts oben zu schieben, dass sie gerade noch das Polyeder berührt. Alle Berührungspunkte sind dann optimal. In diesem Fall ist der Punkt (130,20) die eindeutige optimale [[Ecke]], und der optimale Zielfunktionswert beträgt 49.000 Euro. <br /> <br /> Im Allgemeinen ist die Optimallösung eines linearen Optimierungsproblems allerdings weder eindeutig noch ganzzahlig. Wenn beispielsweise beide Produkte den gleichen Deckungsbeitrag hätten, wären die roten Iso-Gewinnfunktionen parallel zur Ungleichung &lt;math&gt;x_1 + x_2 \leq 150&lt;/math&gt;. In diesem Fall wäre jeder Punkt auf der Strecke zwischen (130,20) und (150,0) optimal, es gäbe also unendlich viele Optimallösungen.<br /> <br /> == Anwendungen ==<br /> Die lineare Optimierung hat viele Anwendungen in der Praxis, von denen hier einige beispielhaft vorgestellt werden sollen.<br /> <br /> === Produktionsplanung ===<br /> Wie in dem obigen Beispiel kann ein Unternehmen eine Reihe von Produkten mit bekanntem [[Deckungsbeitrag]] herstellen. Die Herstellung einer Einheit jedes dieser Produkte benötigt eine bekannte Menge an beschränkten Ressourcen (Produktionskapazität, Rohmaterialien, etc). Die Aufgabe ist die Erstellung eines Produktionsplans, d.&amp;nbsp;h. die Festlegung, wie viel von jedem Produkt produziert werden soll, so dass der Profit der Firma maximiert wird, ohne die Ressourcenbeschränkungen zu verletzen. Ein Beispiel hierfür sind [[Zuschnittsproblem]]e.<br /> <br /> === Mischungsprobleme ===<br /> Eine ähnliche Anwendung sind Mischungsprobleme, bei denen es darum geht, Zutaten zu einem Endprodukt zusammenzustellen, wobei die Menge der jeweiligen Zutaten innerhalb eines bestimmten Bereichs variiert werden kann. Ein Beispiel hierfür ist das 1947 von George Dantzig untersuchte ''Diät-Problem:'' Gegeben sind eine Reihe von Rohmaterialien (z.&amp;nbsp;B. Hafer, Schweinefleisch, Sonnenblumenöl, etc.) zusammen mit ihrem Gehalt an bestimmten Nährwerten (z.&amp;nbsp;B. Eiweiß, Fett, Vitamin A, etc.) und ihrem Preis pro Kilogramm. Die Aufgabe besteht darin, eines oder mehrere Endprodukte mit minimalen Kosten aus den Rohmaterialien zu mischen, unter der Nebenbedingung, dass bestimmte Mindest- und Höchstgrenzen für die einzelnen Nährwerte eingehalten werden. Auch bei Schmelzvorgängen treten solche Mischungsprobleme auf, wie z.&amp;nbsp;B. in der Stahlherstellung.<br /> <br /> === Routing in Telekommunikations- oder Verkehrsnetzen ===<br /> Ein klassisches Anwendungsgebiet der linearen Optimierung ist die Bestimmung eines [[Routing]]s für Verkehrsanforderungen in [[Telekommunikationsnetz|Telekommunikations-]] oder Verkehrsnetzen, oft in Verbindung mit Kapazitätsplanung. Dabei müssen Verkehrsflüsse so durch ein Netz geroutet werden, dass alle Verkehrsanforderungen erfüllt werden, ohne die Kapazitätsbedingungen zu verletzen. Diese sogenannten ''Mehrgüterflüsse'' (englisch ''multicommodity flow'') sind ein Beispiel für ein Problem, das mit linearer Optimierung gut lösbar ist, für das aber im allgemeinen Fall kein exakter Algorithmus bekannt ist, der nicht auf LP-Theorie basiert.<br /> <br /> === Spieltheorie ===<br /> {{Hauptartikel|Lineare Optimierung (Spieltheorie)}}<br /> <br /> Innerhalb der mathematischen [[Spieltheorie]] kann die lineare Optimierung dazu verwendet werden, optimale Strategien in Zwei-Personen-[[Nullsummenspiel]]en zu berechnen. Dabei wird für jeden Spieler eine [[Wahrscheinlichkeitsverteilung]] berechnet, bei der es sich um ein zufälliges Mischungsverhältnis seiner Strategien handelt. „Würfelt“ ein Spieler seine Strategie gemäß dieser Wahrscheinlichkeitsverteilung zufällig aus, ist ihm die bestmögliche Gewinnerwartung sicher, die er haben kann, wenn er seine Strategie unabhängig von der seines Gegners wählt.<br /> <br /> === Nichtlineare und ganzzahlige Optimierung ===<br /> Viele Anwendungsprobleme lassen sich mit kontinuierlichen Variablen nicht sinnvoll modellieren, sondern erfordern die Ganzzahligkeit einiger Variablen. Beispielsweise können keine 3,7 Flugzeuge gekauft werden, sondern nur eine ganze Anzahl, und ein Bus kann nur ganz oder gar nicht fahren, aber nicht zu zwei Dritteln. Bei der Verwendung von [[Branch-and-Cut]] zur Lösung eines solchen [[Ganzzahlige lineare Optimierung|ganzzahligen linearen Optimierungsproblems]] müssen sehr viele ähnliche lineare Programme hintereinander als Unterproblem gelöst werden. Eine optimale ganzzahlige Lösung eines linearen Programms zu finden ist [[NP-Vollständigkeit|NP-vollständig]], aber [[Parametrisierter Algorithmus|parametrisierbar]] in der Anzahl der Variablen. Es ist sogar NP-vollständig, irgendeine ganzzahlige Lösung eines linearen Programms zu finden.<br /> Auch zur Lösung [[Optimierung (Mathematik)#Nichtlineare Optimierung|nichtlinearer Optimierungsprobleme]] gibt es Algorithmen, in denen lineare Programme als Unterproblem gelöst werden müssen (z.&amp;nbsp;B. ''Sequential Linear Programming'').<br /> <br /> == Lösbarkeit aus theoretischer Sicht ==<br /> Ein lineares Programm hat nicht immer eine Optimallösung. Drei Fälle sind zu unterscheiden:<br /> # Das LP ist ''unzulässig'', weil sich Ungleichungen widersprechen (z.&amp;nbsp;B. &lt;math&gt;x \leq 1&lt;/math&gt; und &lt;math&gt;x \geq 2&lt;/math&gt;). In diesem Fall gibt es keine Lösung, die alle Ungleichungen erfüllt, d.&amp;nbsp;h. das zugehörige Polyeder ist die leere Menge.<br /> # Das LP ist unbeschränkt, d.&amp;nbsp;h. es gibt unendlich viele zulässige Lösungen mit beliebig hohen Zielfunktionswerten (z.&amp;nbsp;B. &lt;math&gt;\max \{ x \;|\; x \geq 0\}&lt;/math&gt;).<br /> # Das LP besitzt mindestens eine Optimallösung. Dies ist beispielsweise gegeben, falls das zugehörige Polyeder beschränkt, also ein [[Polytop (Geometrie)|Polytop]], und nichtleer ist.<br /> <br /> Die Menge der Optimallösungen bildet eine Seitenfläche ([[Ecke]], Kante,…) des Polyeders, so dass es entweder keine, genau eine oder unendlich viele Optimallösungen gibt. Letzteres bedeutet anschaulich, dass die Zielfunktion parallel zu einer beschränkenden Hyperebene liegt. Wenn das LP lösbar und beschränkt ist, gibt es immer eine optimale Ecke, also einen optimalen Punkt, der nicht aus anderen Punkten des Polyeders [[Linearkombination|konvex kombiniert]] werden kann. Diese Eigenschaft macht sich unter anderem das [[Simplex-Verfahren|primale Simplex-Verfahren]] zunutze.<br /> <br /> == Komplexität und Lösungsverfahren ==<br /> Das Finden einer Optimallösung bzw. die Feststellung, dass ein LP keine Lösung besitzt, ist mit Hilfe von [[#Innere-Punkte-Verfahren|Innere-Punkte-Verfahren]] oder der [[#Ellipsoidmethode|Ellipsoidmethode]] in [[Polynomialzeit]] möglich, so dass die Lineare Optimierung aus Sicht der [[Komplexitätstheorie]] ein leicht lösbares Problem ist. Aus praktischer Sicht ist jedoch oft das Simplex-Verfahren schneller, obwohl es theoretisch exponentielle Laufzeit besitzt. Es ist bis heute unbekannt, ob es einen ''streng polynomialen'' Algorithmus zur Lösung allgemeiner linearer Programme gibt, also einen Algorithmus, dessen Laufzeit nicht von der Größe der auftretenden Zahlen abhängt.<br /> <br /> === Simplex-Verfahren ===<br /> {{Hauptartikel|Simplex-Verfahren}}<br /> <br /> [[Datei:Simplex-method-3-dimensions.png|miniatur|Das Simplex-Verfahren läuft die Ecken des Polyeders ab, bis es an einer Optimallösung angekommen ist.]]<br /> <br /> Das ''Simplex-Verfahren'', das im Jahre 1947 von [[George Dantzig]] entwickelt und seitdem wesentlich verbessert wurde, ist der wichtigste Algorithmus zur Lösung linearer Programme in der Praxis. Die Grundidee besteht darin, von einer Ecke des [[Polyeder]]s zu einer benachbarten Ecke mit besserem Zielfunktionswert zu laufen, bis dies nicht mehr möglich ist. Da es sich bei der linearen Optimierung um ein [[Konvexe Optimierung|konvexes Optimierungsproblem]] handelt, ist die damit erreichte lokal optimale Ecke auch global optimal. Das Verfahren ist im nebenstehenden Bild illustriert: Ziel ist es, einen möglichst weit oben liegenden Punkt des Polyeders zu finden. In roter Farbe ist ein möglicher Pfad des Simplex-Verfahrens entlang der Ecken des Polyeders dargestellt, wobei sich der Zielfunktionswert mit jedem Schritt verbessert.<br /> <br /> Aus komplexitätstheoretischer Sicht benötigt der Simplex-Algorithmus im schlechtesten Fall exponentielle Laufzeit. Für jede Variante des Algorithmus konnte bisher ein Beispiel konstruiert werden, bei dem der Algorithmus alle Ecken des Polyeders abläuft, meist basierend auf dem ''Klee-Minty-Würfel''.&lt;ref&gt;Harvey J. Greenberg: ''Klee-Minty Polytope Shows Exponential Time Complexity of Simplex Method.'' University of Colorado at Denver, 1997 ([http://glossary.computing.society.informs.org/notes/Klee-Minty.pdf pdf])&lt;/ref&gt; Aus praktischer Sicht sind solche Fälle allerdings sehr selten. Bei sogenannten ''entarteten'' linearen Programmen, bei denen eine Ecke durch mehr Ungleichungen definiert wird als unbedingt nötig (beispielsweise durch drei Ungleichungen im zweidimensionalen Raum), kann es allerdings passieren, dass der Algorithmus, wie in diesem [[Pivotverfahren#Kreislaufanfällige Pivotauswahlregel|Beispiel]], immer wieder dieselbe Ecke betrachtet, anstatt zur nächsten Ecke zu wechseln. Dieses Problem tritt bei praktischen Planungsproblemen häufig auf und kann dazu führen, dass der Algorithmus nicht terminiert oder der Zielfunktionswert sich über viele Iterationen hinweg nicht verbessert. Gute Simplex-Implementierungen entdecken solche Fälle und behandeln sie beispielsweise durch eine leichte Perturbation (absichtliche numerische Störung) des Problems, die später wieder rückgängig gemacht wird. <br /> <br /> Unter der Voraussetzung, dass die Matrix &lt;math&gt;A&lt;/math&gt; [[Dünnbesetzte Matrix|dünnbesetzt]] ist (d.&amp;nbsp;h. nur wenige Koeffizienten ungleich Null enthält), was in der Praxis fast immer der Fall ist, können mit dem Simplex-Verfahren heute sehr große LPs &lt;!--mit bis zu mehreren Hunderttausenden Variablen oder Ungleichungen --&gt;in annehmbarer Zeit optimal gelöst werden. Ein großer Vorteil des Simplex-Verfahrens besteht darin, dass es nach dem Hinzufügen einer Ungleichung oder Variable im LP oder nach einer leichten Änderung der Koeffizienten einen „Warmstart“ von einer vorher bereits erreichten Ecke aus durchführen kann, so dass nur wenige Iterationen zum erneuten Finden einer Optimallösung notwendig sind. Dies ist insbesondere im Zusammenhang mit [[Schnittebenenverfahren]] oder [[Branch-and-Cut]] zur Lösung ganzzahliger linearer Programme von großer Bedeutung, wo sehr viele ähnliche LPs in Serie gelöst werden müssen.<br /> <br /> === Innere-Punkte-Verfahren ===<br /> {{Hauptartikel|Innere-Punkte-Verfahren}}<br /> <br /> [[Datei:Interior-point-method-three-dimensions.png|miniatur|Innere-Punkte-Verfahren nähern sich einer Optimallösung durch das Innere des Polyeders.]]<br /> <br /> ''Innere-Punkte-Verfahren'', auch ''Barrier-Verfahren'' genannt, nähern sich einer optimalen Ecke durch das Innere des Polyeders (siehe Bild). Der erste solche Algorithmus wurde 1984 von [[Narendra Karmarkar]] beschrieben. Seine Bedeutung lag vor allem darin, dass er der erste polynomiale Algorithmus zum Lösen linearer Programme war, der das Potential hatte, auch praktisch einsetzbar zu sein. Die entscheidenden Durchbrüche, die Innere-Punkte-Verfahren konkurrenzfähig zum Simplex-Algorithmus machten, wurden aber erst in den 1990er Jahren erzielt. Ein Vorteil dieser Verfahren ist, dass sie, im Gegensatz zum Simplex-Verfahren, in leichter Abwandlung auch zum Lösen [[Quadratische Programmierung|quadratischer]] oder bestimmter [[Nichtlineare Optimierung|nichtlinearer Programme]] eingesetzt werden können. Des Weiteren sind sie für große, dünnbesetzte Probleme häufig dem Simplex-Verfahren überlegen. Ein Nachteil ist, dass sie sich nach dem Hinzufügen einer Nebenbedingung oder Variablen im LP bei weitem nicht so effizient „warmstarten“ lassen wie das Simplex-Verfahren.<br /> <br /> === Ellipsoidmethode ===<br /> {{Hauptartikel|Ellipsoidmethode}}<br /> <br /> [[Datei:Ellipsoid-method.png|miniatur|Zwei Iterationen der Ellipsoidmethode]]<br /> <br /> Die ''Ellipsoidmethode'' wurde ursprünglich in den Jahren 1976 und 1977 von [[David Yudin]] und [[Arkadi Nemirovski]] und unabhängig davon von [[Naum Schor]] zur Lösung [[Konvexe Optimierung|konvexer Optimierungsprobleme]] entwickelt. Im Jahre 1979 modifizierte der russische Mathematiker [[Leonid Khachiyan]] das Verfahren und entwickelte damit den ersten [[Polynomialzeit|polynomialen]] Algorithmus zur Lösung linearer Programme. Für praktische Zwecke ist er allerdings nicht geeignet. Die Ellipsoidmethode dient dazu, einen beliebigen Punkt in einem volldimensionalen Polyeder zu finden oder festzustellen, dass das Polyeder leer ist. Da man zeigen kann, dass die Lösung eines LPs äquivalent ist zum Finden eines zulässigen Punktes in einem geeignet definierten Hilfspolyeder, lässt sich mit Hilfe der Ellipsoidmethode (theoretisch) auch ein LP lösen.<br /> <br /> Die Grundidee des Verfahrens besteht darin, ein [[Ellipsoid]] (im Bild rot) zu definieren, das alle Ecken des Polyeders (blau) enthält. Anschließend wird festgestellt, ob der Mittelpunkt dieses Ellipsoids im Polyeder enthalten ist. Falls ja, hat man einen Punkt im Polyeder gefunden und kann aufhören. Andernfalls kann man das Halbellipsoid bestimmen, in dem das Polyeder enthalten sein muss, und ein neues, kleineres Ellipsoid um das Polyeder legen (im Bild grün). Nach einer Anzahl von Schritten, die polynomial von der [[Kodierungslänge]] des LPs abhängt, hat man entweder einen Punkt im Polyeder gefunden oder weiß, dass das Polyeder leer ist, weil es sonst größer sein müsste als das aktuelle Ellipsoid.<br /> <br /> === Weitere Methoden ===<br /> Für einige Klassen von linearen Programmen gibt es spezielle Algorithmen, die theoretisch oder praktisch schneller laufen als z.&amp;nbsp;B. der Simplexalgorithmus. Ein Beispiel hierfür ist die [[Ungarische Methode]], die auf Zuordnungsprobleme angewandt werden kann. Lineare Programme mit zwei Variablen lassen sich näherungsweise zeichnerisch lösen (siehe [[#Beispiel|obiges Beispiel]]). Diese Methode hat aber hauptsächlich didaktischen Wert, da in der Praxis auftretende LPs leicht mehrere Hunderttausende Variablen besitzen können.<br /> <br /> == Dualität ==<br /> === Obere Schranken ===<br /> Um zu verifizieren, dass eine gültige Lösung &lt;math&gt;x^*&lt;/math&gt; optimal für ein lineares Programm ist, versucht man,<br /> den Zielfunktionswert des Programms nach oben abzuschätzen. Für das obige Beispiel gilt etwa<br /> <br /> :&lt;math&gt;<br /> x_1 + x_2 \leq 150<br /> \; \Rightarrow \; 500 x_1 + 500 x_2 \leq 500 \cdot 150 = 75000<br /> &lt;/math&gt;<br /> <br /> Da &lt;math&gt;x_1 \geq 0&lt;/math&gt; und &lt;math&gt;x_2 \geq 0&lt;/math&gt; folgt daraus, dass<br /> <br /> :&lt;math&gt;<br /> G(x_1, x_2) = 300 x_1 + 500 x_2 \leq 500 x_1 + 500 x_2 \leq 75000<br /> &lt;/math&gt;<br /> <br /> Die Optimallösung kann somit keinen Zielfunktionswert größer als &lt;math&gt;75000&lt;/math&gt; haben. Eine bessere<br /> Abschätzung erhält man, indem man &lt;math&gt;300&lt;/math&gt; Mal die zweite und &lt;math&gt;100&lt;/math&gt; Mal die dritte<br /> Ungleichung addiert:<br /> <br /> :&lt;math&gt;<br /> G(x_1, x_2) = 300 x_1 + 500 x_2 \leq 300 \cdot (x_1 + x_2) + 100 \cdot ( 3 x_2 ) = 300 x_1 + 600 x_2 \leq 63000<br /> &lt;/math&gt;<br /> <br /> Dieses Verfahren lässt sich leicht verallgemeinern: Wählt man für ein gegebenes LP in Standardform<br /> ''Multiplikatoren'' &lt;math&gt;y \in \mathbb{R}^{m}_+&lt;/math&gt;, so ist jeder Vektor &lt;math&gt;y^T A&lt;/math&gt; eine obere<br /> Schranke, sofern &lt;math&gt;y^T A \geq c^T&lt;/math&gt;. Dies entspricht einer<br /> [[Linearkombination#Positive Koeffizienten|konischen]] Kombination der Spalten von &lt;math&gt;A&lt;/math&gt;. Die Bedingung <br /> &lt;math&gt;y^T A \geq c^T&lt;/math&gt; stellt sicher,<br /> dass sich die Koeffizienten von &lt;math&gt;c^T&lt;/math&gt; für &lt;math&gt;x \geq 0 &lt;/math&gt; gegen <br /> &lt;math&gt;y^T A&lt;/math&gt; abschätzen lassen. Der Zielfunktionswert der durch &lt;math&gt;y&lt;/math&gt; gegebenen obere Schranke ist<br /> somit &lt;math&gt;y^T b&lt;/math&gt;. Um die ''beste'' obere Schranke zu finden kann man nun ein weiteres LP aufstellen:<br /> <br /> :&lt;math&gt;\min \; \{ y^T b \,:\, y^T A \geq c^T,\; y \geq 0\}&lt;/math&gt;<br /> <br /> Dieses LP nennt man das ''duale Problem'' zu dem ''primalen Problem''<br /> <br /> :&lt;math&gt;\max \; \{ c^T x \,:\, Ax \leq b,\; x \geq 0\}&lt;/math&gt;<br /> <br /> Die Einträge des Vektors &lt;math&gt;y&lt;/math&gt; werden als Multiplikatoren oder ''Dualvariablen'' bezeichnet.<br /> <br /> Falls ein lineares Programm aus einem [[Kombinatorische Optimierung| kombinatorischen Optimierungsproblem]] entsteht, so<br /> hat das duale Programm oft eine anschauliche Interpretation; die nachfolgenden Sätze können dann auch benutzt werden,<br /> um Resultate wie das [[Max-Flow-Min-Cut-Theorem|Max-Flow-Min-Cut Theorem]] herzuleiten.<br /> <br /> === Dualisierung beliebiger linearer Programme ===<br /> Für lineare Programme, welche nicht in Standardform vorliegen, gelten die folgenden Vorschriften zur<br /> Dualisierung:<br /> <br /> {| class=&quot;wikitable&quot;<br /> |-<br /> ! primales LP !! duales LP<br /> |-<br /> | &lt;math&gt;\max \; \{ c^T x \,:\, Ax \leq b,\; x \geq 0\}&lt;/math&gt; || &lt;math&gt;\min \; \{ y^T b \,:\, y^T A \geq c^T,\; y \geq 0\}&lt;/math&gt;<br /> |-<br /> | &lt;math&gt;\max \; \{ c^T x \,:\, Ax = b,\; x \geq 0\}&lt;/math&gt; || &lt;math&gt;\min \; \{ y^T b \,:\, y^T A \geq c^T\}&lt;/math&gt;<br /> |-<br /> | &lt;math&gt;\max \; \{ c^T x \,:\, Ax \leq b\}&lt;/math&gt; || &lt;math&gt;\min \; \{ y^T b \,:\, y^T A = c^T,\; y \geq 0\}&lt;/math&gt;<br /> |}<br /> <br /> Für Minimierungsprobleme gilt analog:<br /> <br /> {| class=&quot;wikitable&quot;<br /> |-<br /> ! primales LP !! duales LP<br /> |-<br /> | &lt;math&gt;\min \; \{ c^T x \,:\, Ax \geq b,\; x \geq 0\}&lt;/math&gt; || &lt;math&gt;\max \; \{ y^T b \,:\, y^T A \leq c^T,\; y \geq 0\}&lt;/math&gt;<br /> |-<br /> | &lt;math&gt;\min \; \{ c^T x \,:\, Ax = b,\; x \geq 0\}&lt;/math&gt; || &lt;math&gt;\max \; \{ y^T b \,:\, y^T A \leq c^T\}&lt;/math&gt;<br /> |-<br /> | &lt;math&gt;\min \; \{ c^T x \,:\, Ax \geq b\}&lt;/math&gt; || &lt;math&gt;\max \; \{ y^T b \,:\, y^T A = c^T,\; y \geq 0\}&lt;/math&gt;<br /> |}<br /> <br /> Im Allgemeinen gilt:<br /> <br /> {| class=&quot;wikitable&quot;<br /> |-<br /> ! primales LP !! duales LP<br /> |-<br /> | nichtnegative Variable || Ungleichung<br /> |-<br /> | nicht vorzeichenbeschränkte Variable || Gleichung<br /> |-<br /> | Ungleichung || nichtnegative Variable<br /> |-<br /> | Gleichung || nicht vorzeichenbeschränkte Variable<br /> |}<br /> <br /> Dabei ist zu beachten, dass bei Maximierungsproblemen die Ungleichungen stets in der Form<br /> &lt;math&gt;\alpha x \leq \beta&lt;/math&gt; und bei Minimierungsproblemen in der Form<br /> &lt;math&gt;\alpha x \geq \beta&lt;/math&gt; aufgeschrieben werden.<br /> <br /> === Eigenschaften des dualen Programms ===<br /> Das primale und duale LP bilden ein [[Dualität (Mathematik)|duales]] Paar, es gilt also, dass aus der<br /> Dualisierung des dualen LP wieder das primale LP entsteht.<br /> <br /> Des Weiteren gilt für beliebige zulässige primale bzw. duale Lösungen &lt;math&gt;x,y&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> c^T x \leq y^T A x \leq y^T b<br /> &lt;/math&gt;<br /> <br /> Dabei gilt die erste Ungleichung, da &lt;math&gt;x \geq 0&lt;/math&gt; und &lt;math&gt;y^T A \geq c^T&lt;/math&gt; und die zweite,<br /> weil &lt;math&gt;A x \leq b&lt;/math&gt; und &lt;math&gt;y \geq 0&lt;/math&gt;. Dieses Resultat ist als der ''schwache Dualitätssatz''<br /> bekannt.<br /> <br /> === Der starke Dualitätssatz ===<br /> Der ''starke Dualitätssatz'' verschärft die obige Aussage: Wenn eines der beiden LPs eine beschränkte Optimallösung besitzt, dann auch das andere, und die optimalen Zielfunktionswerte sind in diesem Fall gleich. Für jede optimale Lösung &lt;math&gt;x^*&lt;/math&gt; des primalen und jede optimale Lösung &lt;math&gt;y^*&lt;/math&gt; des dualen Problems gilt also <br /> :&lt;math&gt;c^T\;x^* = (y^*)^T b&lt;/math&gt;.<br /> <br /> Man kann zeigen, dass folgende Zusammenhänge gelten: <br /> * Das duale Problem hat genau dann eine beschränkte Optimallösung, wenn das primale Problem eine beschränkte Optimallösung besitzt.<br /> * Wenn das primale Problem keine zulässige Lösung hat, ist das duale Problem unbeschränkt oder hat auch keine zulässige Lösung.<br /> * Wenn das primale Problem unbeschränkt ist, hat das duale Problem keine zulässige Lösung.<br /> <br /> Diese und weitere Sätze bilden die Grundlage für alle Verfahren, die mit primalen und dualen Schranken für den Wert einer Optimallösung arbeiten, wie beispielsweise [[Branch-and-Cut]] und [[Schnittebenenverfahren]].<br /> <br /> === Der Satz vom komplementären Schlupf ===<br /> Zusätzlich zu den obigen Zusammenhängen über die Lösbarkeit des primalen bzw dualen Problems gilt die folgende Aussage:<br /> <br /> Falls sowohl das primale als auch das duale Problem zulässige Lösungen haben, so existiert <br /> ein Paar &lt;math&gt;x^*,y^*&lt;/math&gt; von Lösungen mit der Eigenschaft, dass<br /> <br /> :&lt;math&gt;<br /> y^*_i \cdot (b_i - (A x^*)_i) = 0 \;\;\; \forall i = 1, \ldots m<br /> &lt;/math&gt;<br /> <br /> Dies bedeutet, dass &lt;math&gt;y^*_i &gt; 0 \; \Rightarrow \; (A x^*)_i = b_i&lt;/math&gt; und<br /> umgekehrt &lt;math&gt;(A x^*)_i &lt; b_i \; \Rightarrow \; y^*_i = 0 &lt;/math&gt;. Hierbei bezeichnet &lt;math&gt;(A x^*)_i&lt;/math&gt;<br /> die &lt;math&gt;i&lt;/math&gt;-te Komponente des Vektors &lt;math&gt;A x^*&lt;/math&gt;.<br /> <br /> Man sieht leicht, dass diese Lösungen auch optimal sind, da in<br /> diesem Fall die obigen Ungleichungen mit Gleichheit erfüllt sind: <br /> <br /> :&lt;math&gt;c^Tx^* = (y^*)^T A x^* = (y^*)^Tb&lt;/math&gt;.<br /> <br /> Diese zusätzliche Eigenschaft wird zum Beispiel bei primal-dualen Algorithmen ausgenutzt, um die Optimalität einer<br /> Lösung zu verifizieren.<br /> <br /> === Äquivalenz von Optimierungs- und Zulässigkeitsproblemen ===<br /> Der starke Dualitätssatz ermöglicht es ebenfalls, Optimierungsprobleme auf Zulässigkeitsprobleme zu reduzieren:<br /> Anstatt das Problem &lt;math&gt;\max \; \{ c^T x \,:\, Ax \leq b,\; x \geq 0\}&lt;/math&gt; zu lösen, kann man ebenso gut<br /> ein Paar von Lösungen finden, die den folgenden Bedingungen gehorchen:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> Ax &amp;\leq b ,\; x \geq 0 \\<br /> y^T A &amp;\geq c^T ,\; y \geq 0 \\<br /> c^T x &amp;\geq y^T b \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Dabei stellen die ersten beiden Bedingungen sicher, dass &lt;math&gt;x&lt;/math&gt; eine zulässige Lösung des Problems ist, während die nächsten Bedingungen dafür sorgen,<br /> dass &lt;math&gt;y&lt;/math&gt; gültig für das duale Programm ist. Die letzte Ungleichung wird nur von solchen Lösungspaaren &lt;math&gt;x,y&lt;/math&gt; erfüllt, deren Zielfunktionswerte übereinstimmen.<br /> Dies ist genau dann der Fall, wenn es sich bei &lt;math&gt;x&lt;/math&gt; und &lt;math&gt;y&lt;/math&gt; um die Optimallösungen der beiden Probleme handelt.<br /> Das obige Optimierungsproblem hat damit eine Optimallösung genau dann wenn der obige Polyeder nicht leer ist.<br /> Offensichtlich kann man die Zulässigkeit eines Problems auch durch Lösung eines Optimierungsproblems entscheiden, man wählt dazu beispielsweise den [[Nullvektor]] als<br /> Zielfunktion. Damit sind lineare Optimierungsprobleme und Zulässigkeitsprobleme von Polyedern äquivalent bezüglich ihrer [[Komplexitätstheorie|Zeitkomplexität]].<br /> <br /> == Literatur ==<br /> * [[Robert Bixby]]: ''Solving real-world linear programs: A decade and more of progress''. In: ''Operations Research,'' Band 50, Nr. 1, 2002, S. 3–15.<br /> * [[George Dantzig|George B. Dantzig]]: ''Lineare Programmierung und Erweiterungen.'' Springer-Verlag 1966 (Originalausgabe: ''Linear Programming and Extensions'', Princeton University Press, ISBN 0-691-05913-6).<br /> * [[Vašek Chvátal]]: ''Linear Programming.'' W. H. Freeman and Company, New York, 1983, ISBN 0-7167-1587-2.<br /> * [[Alexander Schrijver]]: ''Theory of Linear and Integer Programming.'' John Wiley and Sons. 1998, ISBN 0-471-98232-6.<br /> * F. L. Hitchcock: ''The distribution of a product from several sources to numerous localities''. In: ''Journal of Mathematical Physics,'' Bd. 20, 1941, S. 224–230.<br /> * L. W. [[Kantorowitsch]]: ''Mathematical Methods of Organizing and Planning Production'', Management Science, Vol. 6, No. 4, Jul. 1960, pp. 366-422. http://www.jstor.org/stable/2627082<br /> * Klaus Hagendorf: OpenOffice calc Solver Lösungen der Beispiele in Kantorowitschs Artikel von 1939. http://eurodos.free.fr/docu/econ/Kantorovich1939.zip<br /> * [[Wolfgang Domschke]], Andreas Drexl: ''Einführung in Operations Research.'' 8. Auflage. Springer, Berlin 2011, Kapitel 2. ISBN 978-3-642-18111-2<br /> <br /> == Weblinks ==<br /> [http://plato.asu.edu/ftp/lpfree.html Vergleich nichtkommerzieller LP-Codes] von Hans Mittelmann, Arizona State University, mit Links zu den Codes (englisch)<br /> * [http://web.archive.org/web/20100527235902/http://www-neos.mcs.anl.gov/CaseStudies/dietpy/WebForms/index.html Das Diät-Problem] (englisch)<br /> * [http://www.pnjb.de/uni/ws1011/hoehere-algorithmik.pdf Vorlesungsmitschrift mit deutschsprachiger Einführung in die lineare Optimierung] (PDF; 1,9&amp;nbsp;MB)<br /> <br /> == Belege ==<br /> &lt;references /&gt;<br /> <br /> [[Kategorie:Optimierung]]<br /> [[Kategorie:Wirtschaftsmathematik]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Prandtlsonde&diff=110713553 Prandtlsonde 2012-11-20T09:07:00Z <p>Mathmon: /* Bestimmung der Luftgeschwindigkeit */</p> <hr /> <div>[[Bild:pitot_principle.png|thumb|right|320px|Grundprinzip einer Prandtlsonde (Staurohr) an einem U-Rohr-Manometer]]<br /> Die '''Prandtlsonde''' (benannt nach [[Ludwig Prandtl]]), auch '''Prandtl'sche Staurohr''' genannt, ist ein strömungstechnisches Messinstrument zur Bestimmung des [[Staudruck]]s. Es stellt eine Kombination aus [[Pitotrohr]] und statischer Drucksonde dar. Das Prandtlrohr hat eine Öffnung in Strömungsrichtung zur Messung des Gesamtdruckes und ringförmig in einem wohlberechneten Abstand zur Spitze und zum Schaft seitliche Bohrungen für die statische Druckmessung. Die Differenz dieser beiden Drücke entspricht nach dem [[Bernoulli-Gleichung|Gesetz von Bernoulli]] dem [[Staudruck|dynamischen Druck]] (Staudruck). Der Staudruck kann durch ein [[Manometer]] direkt bestimmt werden,<br /> alternativ lässt sich über den Staudruck auch die Geschwindigkeit der die Sonde umströmenden Luft errechnen.<br /> Dies ist wichtig in der [[Luftfahrt]] zur Bestimmung der Luftgeschwindigkeit (vgl. [[True Airspeed]]). Die Prandtlsonde ist dabei meist Teil eines [[Pitot-Statik-System]]s.<br /> <br /> == Bestimmung der Luftgeschwindigkeit ==<br /> <br /> [[File:Prandtlsches Staurohr.svg|thumb|Schematische Darstellung des Staurohrs]]<br /> <br /> Zur Bestimmung der Luftgeschwindigkeit verwendet man ein Leitungssystem, in dem sich ein [[Fluid]] befindet. Auf dieses Fluid wirkt eine Kraft &lt;math&gt;F_{\textrm{P}}&lt;/math&gt;, welche durch den Unterschied zwischen statischem<br /> und Staudruck entsteht. Die Prandtlsonde wird so in eine Luftströmung eingebracht, dass die Strömung senkrecht auf die vordere Öffnung trifft. Dementsprechend herrscht dort ein Druck<br /> &lt;math&gt;P_{\textrm{Ges}} = \frac{1}{2} \rho_{\textrm{Luft}} v^2 + P_{\textrm{Stat}}&lt;/math&gt;. Dabei is &lt;math&gt;v&lt;/math&gt;<br /> die Strömungsgeschwindigkeit der Luft und &lt;math&gt;P_{\textrm{Stat}}&lt;/math&gt; der statische Druck. Eine weitere Öffnung der Sonde ist so positioniert, dass die Luft an ihr vorbeiströmt. Dadurch liegt der Druck in diesem Bereich nur bei &lt;math&gt;P_{\textrm{Stat}}&lt;/math&gt;. Es ergibt sich eine Druckdifferenz von &lt;math&gt;\Delta P = \frac{1}{2} \rho_{\textrm{Luft}} v^2&lt;/math&gt;. Entsprechend wirkt auf die Fluidsäule im Rohr eine Kraft von &lt;math&gt;F_{\textrm{P}} = \frac{\Delta P}{A} &lt;/math&gt;, wobei &lt;math&gt;A&lt;/math&gt; die Querschnittsfläche des Rohrs ist. Durch diese Kraft wird die Fluidsäule in dem Rohr heruntergedrückt. Sobald eine Höhendifferenz von &lt;math&gt;\Delta h&lt;/math&gt; erreicht ist, wirkt die<br /> [[Gravitation#Gravitation auf der Erde|Gravitationskraft]] dem Prozess entgegen: Eine Masse von<br /> &lt;math&gt;m = \Delta h A \rho_{\textrm{Fluid}} &lt;/math&gt; bewirkt eine Kraft von<br /> :&lt;math&gt;F_{\textrm{G}} = m g = \left( \Delta h A \rho_{\textrm{Fluid}} \right) g&lt;/math&gt;<br /> <br /> Es stellt sich ein [[Gleichgewicht (Physik)|Kräftegleichgewicht]] ein:<br /> <br /> :&lt;math&gt;<br /> F_{\textrm{G}} = \left( \Delta h A \rho_{\textrm{Fluid}} \right) g<br /> = \frac{1}{2 A} \rho_{\textrm{Luft}} v^2 = F_{\textrm{P}}<br /> &lt;/math&gt;<br /> <br /> Diese Gleichung lässt sich zur Bestimmung der Geschwindigkeit &lt;math&gt;v&lt;/math&gt; heranziehen:<br /> <br /> :&lt;math&gt;<br /> v = \sqrt{ \frac{2 \Delta h \rho_{\textrm{Fluid}} g}{\rho_{\textrm{Luft}}}}<br /> &lt;/math&gt;<br /> <br /> [[Kategorie:Strömungslehre]]<br /> [[Kategorie:Druckmessgerät]]<br /> [[Kategorie:Dimensionales Messgerät]]<br /> <br /> [[pl:Rurka Prandtla]]<br /> [[ru:Трубка Прандтля]]<br /> [[sv:Prandtl-rör]]<br /> [[uk:Трубка Прандтля]]<br /> [[sk:Prandtlova trubica]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Prandtlsonde&diff=110696242 Prandtlsonde 2012-11-19T19:59:20Z <p>Mathmon: Formel zur Bestimmung der Luftgeschwindigkiet hinzugefügt</p> <hr /> <div>[[Bild:pitot_principle.png|thumb|right|320px|Grundprinzip einer Prandtlsonde (Staurohr) an einem U-Rohr-Manometer]]<br /> Die '''Prandtlsonde''' (benannt nach [[Ludwig Prandtl]]), auch '''Prandtl'sche Staurohr''' genannt, ist ein strömungstechnisches Messinstrument zur Bestimmung des [[Staudruck]]s. Es stellt eine Kombination aus [[Pitotrohr]] und statischer Drucksonde dar. Das Prandtlrohr hat eine Öffnung in Strömungsrichtung zur Messung des Gesamtdruckes und ringförmig in einem wohlberechneten Abstand zur Spitze und zum Schaft seitliche Bohrungen für die statische Druckmessung. Die Differenz dieser beiden Drücke entspricht nach dem [[Bernoulli-Gleichung|Gesetz von Bernoulli]] dem [[Staudruck|dynamischen Druck]] (Staudruck). Der Staudruck kann durch ein [[Manometer]] direkt bestimmt werden,<br /> alternativ lässt sich über den Staudruck auch die Geschwindigkeit der die Sonde umströmenden Luft errechnen.<br /> Dies ist wichtig in der [[Luftfahrt]] zur Bestimmung der Luftgeschwindigkeit (vgl. [[True Airspeed]]). Die Prandtlsonde ist dabei meist Teil eines [[Pitot-Statik-System]]s.<br /> <br /> == Bestimmung der Luftgeschwindigkeit ==<br /> <br /> [[File:Prantdl.svg|thumb|Schematische Darstellung des Staurohrs]]<br /> <br /> Zur Bestimmung der Luftgeschwindigkeit verwendet man ein Leitungssystem, in dem sich ein [[Fluid]] befindet. Auf dieses Fluid wirkt eine Kraft &lt;math&gt;F_{\textrm{P}}&lt;/math&gt;, welche durch den Unterschied zwischen statischem<br /> und Staudruck entsteht. Die Prandtlsonde wird so in eine Luftströmung eingebracht, dass die Strömung senkrecht auf die vordere Öffnung trifft. Dementsprechend herrscht dort ein Druck<br /> &lt;math&gt;P_{\textrm{Ges}} = \frac{1}{2} \rho_{\textrm{Luft}} v^2 + P_{\textrm{Stat}}&lt;/math&gt;. Dabei is &lt;math&gt;v&lt;/math&gt;<br /> die Strömungsgeschwindigkeit der Luft und &lt;math&gt;P_{\textrm{Stat}}&lt;/math&gt; der statische Druck. Eine weitere Öffnung der Sonde ist so positioniert, dass die Luft an ihr vorbeiströmt. Dadurch liegt der Druck in diesem Bereich nur bei &lt;math&gt;P_{\textrm{Stat}}&lt;/math&gt;. Es ergibt sich eine Druckdifferenz von &lt;math&gt;\Delta P = \frac{1}{2} \rho_{\textrm{Luft}} v^2&lt;/math&gt;. Entsprechend wirkt auf die Fluidsäule im Rohr eine Kraft von &lt;math&gt;F_{\textrm{P}} = \frac{\Delta P}{A} &lt;/math&gt;, wobei &lt;math&gt;A&lt;/math&gt; die Querschnittsfläche des Rohrs ist. Durch diese Kraft wird die Fluidsäule in dem Rohr heruntergedrückt. Sobald eine Höhendifferenz von &lt;math&gt;\Delta h&lt;/math&gt; erreicht ist, wirkt die<br /> [[Gravitation#Gravitation auf der Erde|Gravitationskraft]] dem Prozess entgegen: Eine Masse von<br /> &lt;math&gt;m = \Delta h A \rho_{\textrm{Fluid}} &lt;/math&gt; bewirkt eine Kraft von<br /> :&lt;math&gt;F_{\textrm{G}} = m g = \left( \Delta h A \rho_{\textrm{Fluid}} \right) g&lt;/math&gt;<br /> <br /> Es stellt sich ein [[Gleichgewicht (Physik)|Kräftegleichgewicht]] ein:<br /> <br /> :&lt;math&gt;<br /> F_{\textrm{G}} = \left( \Delta h A \rho_{\textrm{Fluid}} \right) g<br /> = \frac{1}{2 A} \rho_{\textrm{Luft}} v^2 = F_{\textrm{P}}<br /> &lt;/math&gt;<br /> <br /> Diese Gleichung lässt sich zur Bestimmung der Geschwindigkeit &lt;math&gt;v&lt;/math&gt; heranziehen:<br /> <br /> :&lt;math&gt;<br /> v = \sqrt{ \frac{2 \Delta h \rho_{\textrm{Fluid}} g}{\rho_{\textrm{Luft}}}}<br /> &lt;/math&gt;<br /> <br /> [[Kategorie:Strömungslehre]]<br /> [[Kategorie:Druckmessgerät]]<br /> [[Kategorie:Dimensionales Messgerät]]<br /> <br /> [[pl:Rurka Prandtla]]<br /> [[ru:Трубка Прандтля]]<br /> [[sv:Prandtl-rör]]<br /> [[uk:Трубка Прандтля]]<br /> [[sk:Prandtlova trubica]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=110679893 Fourier-Motzkin-Elimination 2012-11-19T11:52:22Z <p>Mathmon: Kategorien sind da, Links auc, zB von Theodore Motzkin</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;, geriet jedoch in Vergessenheit und wurde schließlich 1936 in der Doktorarbeit von [[Theodore Motzkin]]<br /> erneut entdeckt &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> '''Eingabe:''' eine Matrix &lt;math&gt;A&lt;/math&gt; der Dimension &lt;math&gt;(m,n)&lt;/math&gt;, ein Vektor &lt;math&gt;b&lt;/math&gt; der Dimension &lt;math&gt;m&lt;/math&gt; und ein Index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''Ausgabe:''' eine Matrix &lt;math&gt;D&lt;/math&gt; der Dimension &lt;math&gt;(r,n)&lt;/math&gt;, sodass &lt;math&gt;D_{ij}= 0&lt;/math&gt; für alle &lt;math&gt;i=1,\ldots,r&lt;/math&gt; und ein Vektor &lt;math&gt;d&lt;/math&gt; mit &lt;math&gt;r&lt;/math&gt; Einträgen<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; eine Indizierung der Elemente in &lt;math&gt;R&lt;/math&gt;, also eine Funktion &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> &lt;/ref&gt;.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> :&lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> :&lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> :&lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> :&lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> :&lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> :&lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> Im obigen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige zu einer Variable &lt;math&gt;x_k&lt;/math&gt; gehörige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen &lt;math&gt;x_k&lt;/math&gt; in dem Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^{(1)},d^{(1)}) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^{(2)},d^{(2)}) \ \cdots \ P(D^{(n)},d^{(n)})<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^{(n)}&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^{(j)}&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> :&lt;math&gt;<br /> D^{(n)} = U \cdot A,\ d^{(n)} = U \cdot b, \; \text{wobei} \; U := U^{(n)} \cdot U^{(n-1)} \ldots U^{(1)}<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^{(n)}&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^{(j)}&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Entscheidung der Zulässigkeit ===<br /> <br /> Wir wollen entscheiden, ob der folgende konvexe Polyeder eine zulässige Lösung hat:<br /> <br /> :&lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{rrr}<br /> - x_1 &amp; - x_2 &amp; \leq -4 \\<br /> x_1 &amp; &amp; \leq 1 \\<br /> &amp; x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{rr}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^{(1)} = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^{(2)} = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U^{(2)} U^{(1)} = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von [[Lineare Optimierung|linearen Programmen]] ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{(n)}_{1,n+1} y &amp;\leq d^{(n)}_1 \\<br /> \vdots &amp; \\<br /> D^{(n)}_{l,n+1} y &amp;\leq d^{(n)}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Das resultierende Intervall &lt;math&gt;I&lt;/math&gt; beschreibt die Menge der möglichen Werte<br /> für die Variable &lt;math&gt;y&lt;/math&gt;. Es treten folgende Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;\gamma&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^* := \gamma&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Das hier vorgestellte Verfahren des ''Rückwärtseinsetzens'' lässt sich stets anwenden, um eine zulässige Lösung<br /> des Polyeders zu erhalten.<br /> &lt;/ref&gt;.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max~ &amp; x_1 \\<br /> \text{so dass } &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{rrrr}<br /> x_1 &amp; + x_2 &amp; &amp; \leq 4 \\<br /> -x_1 &amp; &amp; &amp; \leq 0 \\<br /> &amp; - x_2 &amp; &amp; \leq 0 \\<br /> -x_1 &amp; &amp; + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}{rr}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;. Diese hat natürlich auch den erwarteten<br /> Zielfunktionswert von &lt;math&gt;y^*=4&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^{(j)}&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^{(j)},d^{(j)})&lt;/math&gt; zu beschreiben.<br /> <br /> == Anmerkungen ==<br /> <br /> &lt;references group=&quot;A.&quot; /&gt;<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Literatur ==<br /> <br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> <br /> [[Kategorie:Optimierung]]<br /> [[Kategorie:Polyeder]]<br /> [[Kategorie:Geometrische Abbildung]]<br /> <br /> [[en:Fourier–Motzkin elimination]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Polytopmodell&diff=110460876 Polytopmodell 2012-11-13T15:30:24Z <p>Mathmon: Artikel gesetzt</p> <hr /> <div>Das '''Polytopmodell''' (oder allgemeiner auch '''Polyedermodell''') ist ein mathematisches Modell, das von [[Compiler]]n zur Optimierung von Schleifensätzen benutzt werden kann. Dabei werden die [[Schleife (Programmierung)|Schleifen]] im [[Quelltext|Quellprogramm]] durch [[Polytop (Geometrie)|Polytope]] beschrieben, auf die dann eine korrektheitserhaltende Transformation angewandt wird.<br /> Im letzten Schritt werden die entstandenen Polytope wieder in (Ziel-)Code übersetzt.<br /> <br /> == Aufstellen der Transformationsmatrix ==<br /> <br /> Eine Transformation besteht aus zwei Teilen, dem Schedule und der Allokation. Der Schedule legt fest, ''wann'' eine Berechnung stattfinden soll, während die Allokation festlegt, ''wo'' die Berechnung erfolgt (d.&amp;nbsp;h. auf welchem Prozessor sie ausgeführt wird).<br /> <br /> === Berechnung eines gültigen Schedules ===<br /> <br /> Ein Schedule ist gültig, wenn er alle [[Datenabhängigkeit]]en erhält.<br /> <br /> Wenn eine Iteration mit den Schleifenindices &lt;math&gt;(i_1,\ldots,i_n)&lt;/math&gt;, die Ergebnisse der Berechnung &lt;math&gt;(i'_1,\ldots,i'_n)&lt;/math&gt; benötigt, muss für den Schedule &lt;math&gt;t&lt;/math&gt; gelten: &lt;math&gt;t(i_1,\ldots,i_n) &lt; t(i'_1,\ldots,i'_n)&lt;/math&gt;. Das heißt, alle benötigten Werte müssen zu einem früheren Zeitpunkt berechnet worden sein.<br /> <br /> === Berechnung einer gültigen Allokation ===<br /> <br /> Im Gegensatz zum Schedule gibt es für die Allokation keine Beschränkungen.<br /> <br /> Grundsätzlich besteht immer die Möglichkeit, die Berechnung nur von einem Prozessor durchführen zu lassen. Allerdings verliert man damit alle Parallelität. Deshalb bietet es sich an, die Berechnung auf möglichst viele Prozessoren zu verteilen, um die Parallelität zu maximieren.<br /> Dabei muss man allerdings berücksichtigen, dass dadurch mehr Daten zwischen den Prozessoren verschickt werden müssen. Diese zusätzliche Kosten für die Kommunikation können leicht den Gewinn durch die parallele Berechnung überschreiten.<br /> <br /> == Beispiel (Automatische Parallelisierung) ==<br /> <br /> === Vom Quellprogramm zum Polytop ===<br /> <br /> Betrachten wir das folgende Programm, das aus einem perfekt verschachteltem Schleifensatz besteht. Der Rumpf der Schleife enthält ein Statement ''S''.<br /> <br /> '''for''' i:= 0 '''to''' n '''do'''<br /> '''for''' j:= 0 '''to''' i+2 '''do'''<br /> ''S'': A(i, j):= A(i-1, j) + A(i, j-1)<br /> '''end'''<br /> '''end'''<br /> <br /> Um die Schleife als Polytop darzustellen, genügt es, die oberen und unteren Schranken als Ungleichungen zu schreiben:<br /> <br /> &lt;math&gt;0 \leq i \leq n \wedge 0 \leq j \leq i+2&lt;/math&gt;<br /> <br /> oder in Matrixdarstellung (eine Zeile entspricht einer Ungleichung, Spalten: i, j, n, 1)<br /> <br /> &lt;math&gt;{\color{Blue}\begin{pmatrix}<br /> 1 &amp; 0 &amp; 0 &amp; 0 \\<br /> -1 &amp; 0 &amp; 1 &amp; 0 \\<br /> 0 &amp; 1 &amp; 0 &amp; 0 \\<br /> 1 &amp; -1 &amp; 0 &amp; 2<br /> \end{pmatrix}}<br /> \geq<br /> \begin{pmatrix}<br /> 0 \\<br /> 0 \\<br /> 0 \\<br /> 0<br /> \end{pmatrix}&lt;/math&gt;<br /> <br /> === Abhängigkeitsanalyse ===<br /> <br /> In jedem Schleifendurchlauf wird die Arrayzelle &lt;code&gt;A(i,j)&lt;/code&gt; überschrieben. Für die Berechnung von &lt;code&gt;A(i,j)&lt;/code&gt; benötigt man die Werte von &lt;code&gt;A(i-1,j)&lt;/code&gt; und &lt;code&gt;A(i,j-1)&lt;/code&gt;. Dadurch entstehen zwei Datenabhängigkeiten: Jede Iteration &lt;code&gt;(i,j)&lt;/code&gt; hängt sowohl von der Iteration &lt;code&gt;(i-1,j)&lt;/code&gt; als auch von &lt;code&gt;(i,j-1)&lt;/code&gt; ab. Beide Abhängigkeiten müssen im nächsten Schritt bei der Berechnung des Schedules berücksichtigt werden.<br /> <br /> Algorithmisch lassen sich alle Abhängigkeiten mithilfe eines Verfahrens zur [[Dependence analysis|Abhängigkeitsanalyse]] berechnen.<br /> <br /> === Aufstellen der Transformationsmatrix ===<br /> <br /> Ein korrekter Schedule, der beide Abhängigkeiten erhält, ist z.&amp;nbsp;B.<br /> &lt;math&gt;t(i,j) = i+j&lt;/math&gt;.<br /> <br /> Interpretation:<br /> * Im ersten Schritt wird &lt;code&gt;A(0,0)&lt;/code&gt; berechnet<br /> * Im zweiten Schritt wird &lt;code&gt;A(1,0)&lt;/code&gt; und &lt;code&gt;A(0,1)&lt;/code&gt; berechnet<br /> * Im dritten Schritt &lt;code&gt;A(2,0)&lt;/code&gt;, &lt;code&gt;A(1,1)&lt;/code&gt; und &lt;code&gt;A(0,2)&lt;/code&gt;<br /> * usw.<br /> <br /> Um in jedem Berechnungsschritt maximale Parallelität zu ermöglichen, wählen wir als Allokation<br /> &lt;math&gt;p(i,j) = i&lt;/math&gt;<br /> <br /> Dadurch ergibt sich folgende Transformationsmatrix:<br /> &lt;math&gt;T=<br /> \begin{pmatrix}<br /> 1 &amp; 1 \\<br /> 1 &amp; 0<br /> \end{pmatrix}&lt;/math&gt;<br /> <br /> (Erklärung: Erste Zeile = Schedule (i+j), Zweiter Zeile = Allokation (i), Erste Spalte: i, Zweite Spalte: j)<br /> <br /> === Transformiertes Polytop ===<br /> <br /> &lt;math&gt;T^{-1}=<br /> \color{Red}<br /> \begin{pmatrix}<br /> 0 &amp; 1 \\<br /> 1 &amp; -1<br /> \end{pmatrix}&lt;/math&gt;<br /> <br /> &lt;math&gt;{\color{Blue} \begin{pmatrix}<br /> 1 &amp; 0 &amp; 0 &amp; 0 \\<br /> -1 &amp; 0 &amp; 1 &amp; 0 \\<br /> 0 &amp; 1 &amp; 0 &amp; 0 \\<br /> 1 &amp; -1 &amp; 0 &amp; 2<br /> \end{pmatrix}}<br /> \begin{pmatrix}<br /> {\color{Red}0} &amp; {\color{Red}1} &amp; 0 &amp; 0 \\<br /> {\color{Red}1} &amp; {\color{Red}-1} &amp; 0 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 0 &amp; 1<br /> \end{pmatrix} =<br /> \begin{pmatrix}<br /> 0 &amp; 1 &amp; 0 &amp; 0 \\<br /> 0 &amp; -1 &amp; 1 &amp; 0 \\<br /> 1 &amp; -1 &amp; 0 &amp; 0 \\<br /> -1 &amp; 2 &amp; 0 &amp; 2<br /> \end{pmatrix}<br /> &lt;/math&gt;<br /> <br /> Die Schleifenindices werden ebenfalls durch &lt;math&gt;T^{-1}&lt;/math&gt; transformiert:<br /> &lt;math&gt;i=p&lt;/math&gt; und &lt;math&gt;j=t-p&lt;/math&gt;<br /> <br /> === Generierung des Zielprogramms ===<br /> <br /> Der letzte Schritt besteht darin, Code zu generieren, der genau die Punkte aus dem Zielpolyeder aufzählt und dabei die richtige Reihenfolge (genauer die lexikographische Ordnung) einhält. Algorithmisch wird dies von sogenannte Scanning-Algorithmen berechnet (z.&amp;nbsp;B. [[Fourier-Motzkin-Elimination]] oder dem Verfahren von [[Quillerè]]).<br /> <br /> Man erhält das folgende (synchrone) Zielprogramm:<br /> <br /> '''for''' t:= 0 '''to''' 2n+2 '''do'''<br /> '''parfor''' p:= max(0, ceil(t/2)-1) '''to''' min(t, n) '''do'''<br /> A(p, t-p):= A(p-1, t-p) + A(p, t-p-1)<br /> '''end'''<br /> '''end'''<br /> <br /> Die äußere Schleife gibt globale Zeitschritte vor, während die zweite Schleife die parallele Berechnung darstellt. Da in diesem Programm der Code für die Kommunikation zwischen den Prozessoren fehlt, ist es auf Systemen mit verteilten Speicher nicht direkt lauffähig. Allerdings lässt es sich mit gemeinsamen Speicher direkt umsetzten, z.&amp;nbsp;B. als [[OpenMP]] Programm.<br /> <br /> == Anwendung ==<br /> <br /> Zu den wichtigsten Anwendungsmöglichkeiten zählen:<br /> * [[Cache]]&lt;nowiki /&gt;optimierung<br /> * [[Loop Tiling]]<br /> * [[Schleifenparallelisierung]]<br /> <br /> [[Kategorie:Compilerbau]]<br /> <br /> [[en:Polytope model]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Theodore_Motzkin&diff=110460827 Theodore Motzkin 2012-11-13T15:28:52Z <p>Mathmon: Link auf Artikel gesetzt</p> <hr /> <div>'''Theodore Samuel Motzkin''' (* [[26. März]] [[1908]] in [[Berlin]]; † [[15. Dezember]] [[1970]] in [[Los Angeles]]) war ein Mathematiker deutsch-jüdischer Abstammung. Die [[Motzkin-Zahl|Motzkin-Zahlen]] und das [[Motzkin-Polynom]], sowie die [[Fourier-Motzkin-Elimination]] sind nach ihm benannt. <br /> <br /> Motzkin war ein äußerst belesener, flexibler und kreativer Mathematiker, der durch seine große fachliche Bandbreite scheinbar weit entfernte Fachgebiete einfallsreich verband. Seine zum Teil bahnbrechenden Arbeiten stammen aus den Feldern der linearen Programmierung, konvexen Geometrie, Kombinatorik, algebraischen Geometrie, Zahlentheorie oder Funktionentheorie.<br /> <br /> Er war der erste, der die Existenz von [[Hauptidealring]]en nachwies, die keine [[euklidischer Ring|euklidischen Ringe]] sind; &lt;math&gt;\Bbb{Z}\left[\frac{1+\sqrt{-19}}{2}\right]&lt;/math&gt; war sein ursprüngliches Beispiel.<br /> <br /> == Biographie ==<br /> Motzkins Vater, [[Leo Motzkin]], der seit 1880 in Deutschland gelebt hatte, war studierter Mathematiker und ein bedeutender Wegbereiter der [[Zionismus|zionistischen Bewegung]]. Theodore Motzkin zeigte bereits früh sein außergewöhnliches Talent für Mathematik. In Berlin besuchte er bereits mit 15 Jahren die Universität. <br /> <br /> Es folgten Studien an den Universitäten Göttingen, Paris und Berlin. In Berlin erstellte er seine Diplomarbeit über algebraische Strukturen, betreut durch [[Issai Schur]]. Zur Promotion ging Motzkin an die [[Universität Basel]], wo er 1934, betreut durch [[Alexander Markowitsch Ostrowski]], mit einer Dissertation über lineare Ungleichungen promoviert wurde.<br /> <br /> Im Jahr 1935 wurde Motzkin an die [[Hebräische Universität Jerusalem|Hebrew University]] in Jerusalem berufen. Während des [[Zweiter Weltkrieg|Zweiten Weltkrieges]] arbeitete er dort als Kryptograph für die britische Regierung. In dieser Zeit heiratete er Naomi Orenstein, ihre drei Söhne wurden in Jerusalem geboren. Er half, die mathematische Terminologie der [[Hebräische Sprache|hebräischen]] Sprache zu entwickeln.<br /> <br /> 1948 emigrierte Motzkin in die USA und verbrachte zwei Jahre an der [[Harvard University]]. <br /> Eine der ersten dort veröffentlichten Arbeiten ist der Nachweis der Existenz von [[Hauptidealring]]en, die keine [[euklidischer Ring|euklidischen Ringe]] sind.<br /> <br /> 1950 wurde Motzkin an das Institut für Numerik der [[University of California, Los Angeles]] (UCLA) berufen, zehn Jahre später wurde er dort ordentlicher Professor.<br /> <br /> == Weblinks ==<br /> * {{MacTutor Biography|id=Motzkin}}<br /> <br /> {{Normdaten|PND=119439182|LCCN=n/82/53164|VIAF=2589792}}<br /> <br /> {{SORTIERUNG:Motzkin, Theodore}}<br /> [[Kategorie:Mathematiker (20. Jahrhundert)]]<br /> [[Kategorie:US-Amerikaner]]<br /> [[Kategorie:Geboren 1908]]<br /> [[Kategorie:Gestorben 1970]]<br /> [[Kategorie:Mann]]<br /> <br /> {{Personendaten<br /> |NAME=Motzkin, Theodore<br /> |ALTERNATIVNAMEN=Motzkin, Theodore Samuel (vollständiger Name)<br /> |KURZBESCHREIBUNG=US-amerikanischer Mathematiker russischer Abstammung<br /> |GEBURTSDATUM=26. März 1908<br /> |GEBURTSORT=[[Berlin]]<br /> |STERBEDATUM=15. Dezember 1970<br /> |STERBEORT=[[Los Angeles]]<br /> }}<br /> <br /> [[en:Theodore Motzkin]]<br /> [[fr:Theodore Motzkin]]<br /> [[he:תאודור מוצקין]]<br /> [[ht:Theodore Motzkin]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Permutation&diff=110270065 Permutation 2012-11-08T19:40:06Z <p>Mathmon: Bild hinzugefügt</p> <hr /> <div>[[Datei:Permutations RGB.svg|thumb|120px|Alle 6 Permutationen dreier Kugeln]]<br /> <br /> Unter einer '''Permutation''' (von {{laS|''permutare''}} ‚(ver)tauschen‘) versteht man die Veränderung der Anordnung von (meistens verschiedenen) Objekten in einer [[Reihenfolge]] durch Vertauschen ihrer [[Element (Mathematik)|Elemente]]. In der Mathematik ist eine Permutation eine [[bijektiv]]e Selbstabbildung einer in der Regel endlichen Menge. Umgangssprachlich findet der Begriff bisweilen auch als Synonym für „(lineare bzw. der-Reihe-nach) Anordnung“ Verwendung.<br /> <br /> == Beispiele ==<br /> * „ANGSTBUDE“ entsteht aus „BUNDESTAG“ durch Permutation der Buchstaben ([[Anagramm]]).<br /> * Das Mischen der Karten eines Kartenspiels ist eine Permutation auf der Menge der Karten.<br /> * Der Stellungswechsel nach Eroberung des Aufschlagsrechts im [[Volleyball]] (Rotieren) ist eine Permutation der Spieler.<br /> * Sortieralgorithmen wie zum Beispiel der [[Bubble Sort]] arbeiten mit sukzessivem Vertauschen, d.&amp;nbsp;h. mit der Hintereinanderausführung von speziellen Permutationen, sogenannten Transpositionen (siehe unten).<br /> <br /> == Formale Definition ==<br /> Eine &lt;math&gt;n&lt;/math&gt;-stellige Permutation ist eine [[bijektiv]]e [[Funktion (Mathematik)|Abbildung]] &lt;math&gt;\sigma \colon X \rightarrow X&lt;/math&gt; einer &lt;math&gt;n&lt;/math&gt;-elementigen Menge &lt;math&gt;X&lt;/math&gt; auf sich selbst. Für eine &lt;math&gt;n&lt;/math&gt;-elementige Menge gibt es genau [[Fakultät (Mathematik)|''n''!]] mögliche Permutationen. Durch eine Permutation wird somit eine [[Ordnungsrelation#Totalordnung | Totalordnung]] zwischen den Elementen festgelegt. Da umgekehrt jede Totalordnung durch eine Permutation vermittelt wird, kann man sich bei der mathematischen Betrachtung von Permutationen stets auf die ersten n natürlichen Zahlen als Referenzmenge bei endlichen Permutationen beschränken.<br /> <br /> Die &lt;math&gt;n&lt;/math&gt;-stelligen Permutationen der ersten &lt;math&gt;n&lt;/math&gt; natürlichen Zahlen &lt;math&gt;1, 2, 3, \dotsc, n&lt;/math&gt; bilden mit der Komposition von Abbildungen als Verknüpfung die [[symmetrische Gruppe]] &lt;math&gt;S_n&lt;/math&gt; (mit &lt;math&gt;n!&lt;/math&gt; Elementen). Für die symmetrische Gruppe einer beliebigen Menge &lt;math&gt;X_n&lt;/math&gt; schreibt man allgemein &lt;math&gt;S(X_n)&lt;/math&gt;. Ihr neutrales Element ist die [[Identische Abbildung|Identität]] (abgekürzt id), also diejenige Permutation, die alle Elemente an ihrem Platz belässt. Zu jeder Permutation &lt;math&gt;\sigma&lt;/math&gt; gibt es genau eine inverse Permutation &lt;math&gt;\sigma^{-1}&lt;/math&gt; mit &lt;math&gt;\sigma \circ \sigma^{-1} = \sigma^{-1} \circ \sigma = \mathrm{id}&lt;/math&gt;.<br /> <br /> Die symmetrischen Gruppen spielen in der Mathematik eine bedeutende Rolle. Beispielsweise ist nach dem [[Satz von Cayley]] jede [[endliche Gruppe]] zu einer Untergruppe einer symmetrischen Gruppe [[Isomorphismus|isomorph]].<br /> <br /> == Mathematische Schreibweisen und Darstellungen ==<br /> Es gibt im Wesentlichen vier Arten zur Beschreibung einer &lt;math&gt;n&lt;/math&gt;-stelligen Permutation: Matrixdarstellung, Zykelschreibweise&lt;!-- nicht Zyklenschreibweise --&gt;, Tupelschreibweise und Permutationsmatrix. Im Folgenden bezeichnen wir die &lt;math&gt;n&lt;/math&gt; Elemente von &lt;math&gt;X_n&lt;/math&gt; mit &lt;math&gt;1,2,\dotsc,n&lt;/math&gt; und es sei &lt;math&gt;\sigma \in S_n&lt;/math&gt;.<br /> <br /> === Matrixdarstellung ===<br /> In der ausführlichen Darstellung der Permutation &lt;math&gt;\sigma&lt;/math&gt; schreibt man diese als &lt;math&gt;(2\times n)&lt;/math&gt;-[[Matrix (Mathematik)|Matrix]]. In der oberen Zeile stehen die Elemente von &lt;math&gt;X_n&lt;/math&gt; (in beliebiger Reihenfolge). Ist &lt;math&gt; X_n = \{1,\dotsc,n\} &lt;/math&gt;, dann schreibt man im Allgemeinen die Zahlen von &lt;math&gt;1&lt;/math&gt; bis &lt;math&gt;n&lt;/math&gt; nacheinander in die erste Zeile. Unter jedes &lt;math&gt;x\in X_n&lt;/math&gt; schreibt man in die zweite Zeile den Funktionswert &lt;math&gt;\sigma(x)&lt;/math&gt;. Auch in der zweiten Zeile steht somit jedes Element von &lt;math&gt;X_n&lt;/math&gt; genau einmal.<br /> <br /> :&lt;math&gt;\sigma = \begin{pmatrix} 1 &amp; 2 &amp; \cdots &amp; n \\ \sigma\left(1\right) &amp; \sigma\left(2\right) &amp; \cdots &amp; \sigma\left(n\right) \end{pmatrix}&lt;/math&gt;<br /> <br /> === Zykelschreibweise&lt;!-- nicht Zyklenschreibweise --&gt; ===<br /> Die Zykelschreibweise&lt;!-- nicht Zyklenschreibweise --&gt; ist kompakter und benötigt nur eine Zeile. Man beginnt mit einem beliebigen Element &lt;math&gt;a\in X_n&lt;/math&gt; und schreibt <br /> :&lt;math&gt;\left(a \; \sigma(a) \; \sigma^2(a) \; \cdots \; \sigma^{\ell_a-1}(a)\right)&lt;/math&gt;,<br /> wobei &lt;math&gt;\sigma^k&lt;/math&gt; die &lt;math&gt;k&lt;/math&gt;-fache Hintereinanderausführung von &lt;math&gt;\sigma&lt;/math&gt; bezeichnet und &lt;math&gt;\ell_a&lt;/math&gt; die kleinste natürliche Zahl mit &lt;math&gt;\sigma^{\ell_a}(a) = a&lt;/math&gt; ist. Eine solche Klammer heißt ein ''Zykel'' und &lt;math&gt;\ell_a&lt;/math&gt; ist seine Länge. Gibt es weitere Elemente in &lt;math&gt;X_n&lt;/math&gt;, die noch nicht notiert wurden, so wählt man ein solches Element &lt;math&gt;b&lt;/math&gt; und schreibt einen weiteren Zykel &lt;math&gt;(b \; \sigma(b) \; \cdots \; \sigma^{\ell_b-1}(b))&lt;/math&gt; der Länge &lt;math&gt;\ell_b&lt;/math&gt;. Man fährt so lange fort, bis jedes Element genau einmal notiert wurde. Klammern, in denen nur ein Element steht, können anschließend wieder gestrichen werden.<br /> Diese Darstellung ist nicht eindeutig: Die Reihenfolge der Zykel ist beliebig wählbar und in jedem Zykel dürfen die Elemente zyklisch vertauscht werden.<br /> Die Identität id notiert man auch als leere Klammer (), als (1) oder als &lt;math&gt;\epsilon&lt;/math&gt;. Die inverse Permutation erhält man, indem man in der Zykelschreibweise in jedem Zykel die Elemente in der umgekehrten Reihenfolge schreibt.<br /> <br /> : &lt;math&gt;\sigma = (124)(35)&lt;/math&gt; bedeutet beispielsweise, dass &lt;math&gt;\sigma&lt;/math&gt; 1 auf 2, 2 auf 4 und 4 auf 1 abbildet und zusätzlich 3 auf 5 und 5 auf 3. Es gilt &lt;math&gt;\sigma^{-1} = (421)(53) = (142)(35)&lt;/math&gt;.<br /> <br /> Eine Permutation, die &lt;math&gt;r&lt;/math&gt; Elemente zyklisch vertauscht und die übrigen Elemente fest lässt, wird in dieser Notation als ein einzelner Zykel der Länge &lt;math&gt;r&lt;/math&gt; geschrieben und &lt;math&gt;r&lt;/math&gt;-Zykel genannt. Ein 2-Zykel, also eine Vertauschung zweier Elemente, heißt auch Transposition. Jeder Zykel und damit auch jede Permutation lässt sich als Komposition von Transpositionen schreiben.<br /> <br /> === Tupelschreibweise ===<br /> Bei der Tupelschreibweise schreibt man die Funktionswerte &lt;math&gt;\sigma(x)&lt;/math&gt; in eine Zeile.<br /> :&lt;math&gt;\sigma = \left(\sigma\left(1\right),\sigma\left(2\right),\dotsc,\sigma\left(n\right)\right)&lt;/math&gt;<br /> Sie enthält somit nur noch die zweite Zeile der Matrixdarstellung. Da dadurch die Information über den &lt;math&gt;x&lt;/math&gt;-Wert zu den &lt;math&gt;\sigma(x)&lt;/math&gt; verloren geht, kann die Tupelschreibweise nur verwendet werden, wenn für die zugrundeliegende Menge eine Reihenfolge festgelegt wurde. Anhand dieser Reihenfolge lässt sich dann die erste Zeile der Matrixdarstellung rekonstruieren.<br /> <br /> Die Tupelschreibweise wird leicht mit der Zykelschreibweise verwechselt, besonders da manche Autoren die Kommata weglassen.<br /> <br /> === Permutationsmatrix ===<br /> [[Datei:Symmetric group 3; Cayley table; matrices.svg|thumb|Matrizen der Permutationen dreier Elemente]]<br /> {{Hauptartikel|Permutationsmatrix}}<br /> <br /> Diese Darstellung ist nicht zu verwechseln mit der Matrixdarstellung. Bei dieser Darstellung wird ein [[Vektor]] von links mit einer Permutationsmatrix multipliziert, wodurch die Elemente des Vektors permutiert werden.<br /> <br /> ;Definition:<br /> <br /> Sei &lt;math&gt;X_n=(x_1,x_2,\dotsc,x_n) &lt;/math&gt; das &lt;math&gt;n&lt;/math&gt;-Tupel und &lt;math&gt;P_\sigma \in \mathbb{N}^{n\times n}&lt;/math&gt; die Permutationsmatrix.<br /> <br /> Der Permutation &lt;math&gt;\sigma = \begin{pmatrix} x_1 &amp; x_2 &amp; \dotso &amp; x_n \\ \sigma\left(x_1\right) &amp; \sigma\left(x_2\right) &amp; \dotso &amp; \sigma\left(x_n\right) \end{pmatrix}&lt;/math&gt; entspricht dann die Matrix <br /> :&lt;math&gt; P_\sigma=<br /> \begin{pmatrix}<br /> p_{11} &amp; \dots &amp;p_{1n} \\<br /> \vdots &amp;\ddots &amp;\vdots \\<br /> p_{n1} &amp; \dots &amp;p_{nn}<br /> \end{pmatrix}<br /> = (p_{j,k})_{1\leq j,k \leq n} \quad\text{ mit }\quad p_{j,k}=\begin{cases} 1, &amp; \text{wenn }\sigma(x_j)=x_k\text{ gilt } \\ 0, &amp; \text{wenn } \sigma(x_j) \ne x_k\text{ gilt }\end{cases}<br /> &lt;/math&gt;<br /> <br /> Der Vektor &lt;math&gt;\overline{x} =\begin{pmatrix}x_1 \\ x_2 \\ \vdots \\ x_n \\\end{pmatrix}&lt;/math&gt; wird permutiert, indem man ihn von links mit &lt;math&gt;P_\sigma&lt;/math&gt; multipliziert:<br /> &lt;math&gt;P_\sigma \cdot \begin{pmatrix}x_1 \\ x_2 \\ \vdots \\ x_n \\\end{pmatrix} = \begin{pmatrix} \sigma(x_1) \\ \sigma(x_2) \\ \vdots \\ \sigma(x_n) \\\end{pmatrix}&lt;/math&gt;<br /> <br /> ;Bemerkung:<br /> <br /> Die [[identische Abbildung]] wird dargestellt durch die [[Einheitsmatrix]] .<br /> <br /> === Beispiele ===<br /> * Ein einfaches Beispiel in verschiedenen Schreibweisen: Es sei &lt;math&gt;\sigma_1 \colon \{a,b,c \} \rightarrow \{a,b,c \}&lt;/math&gt; durch &lt;math&gt;\sigma_1\left(a\right):=b, \sigma_1\left(b\right):=a \mbox{ und } \sigma_1\left(c\right):=c &lt;/math&gt; gegeben. Dann gilt<br /> :{|<br /> |-<br /> | '''Matrixdarstellung:'''<br /> | &lt;math&gt;\sigma_1 = \begin{pmatrix} a &amp; b &amp; c \\ b &amp; a &amp; c \end{pmatrix}&lt;/math&gt; <br /> |-<br /> | '''Zykelschreibweise:'''<br /> | &lt;math&gt;\sigma_1 = \left(a b\right)\left(c\right) = \left(a b\right)&lt;/math&gt; – &lt;math&gt;a&lt;/math&gt; und &lt;math&gt;b&lt;/math&gt; werden vertauscht, &lt;math&gt;c&lt;/math&gt; wird gehalten<br /> |-<br /> | '''Tupelschreibweise:'''<br /> | &lt;math&gt;\sigma_1 = \left(b,a,c\right)&lt;/math&gt; oder auch &lt;math&gt;\sigma_1 = \left(b\ a\ c\right)&lt;/math&gt;<br /> |-<br /> | '''Permutationsmatrix:'''<br /> | &lt;math&gt;P \cdot \overline{x}=<br /> \begin{pmatrix}<br /> 0 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{pmatrix}<br /> \cdot \begin{pmatrix}a \\ b \\ c \\\end{pmatrix}<br /> = \begin{pmatrix}b \\ a \\ c \\\end{pmatrix}&lt;/math&gt; – &lt;math&gt;a&lt;/math&gt; und &lt;math&gt;b&lt;/math&gt; werden vertauscht, &lt;math&gt;c&lt;/math&gt; wird gehalten<br /> |}<br /> <br /> * Ein weiteres Beispiel: Sei &lt;math&gt;\sigma_2 \in S_4&lt;/math&gt; durch &lt;math&gt;\sigma_2 \colon \{1, 2, 3, 4 \} \rightarrow \{1, 2, 3, 4 \}&lt;/math&gt; und &lt;math&gt;\sigma_2\left(1\right):=4, \sigma_2\left(2\right):=3, \sigma_2\left(3\right):=2 \mbox{ und } \sigma_2\left(4\right):=1 &lt;/math&gt; gegeben. Dann schreibt man<br /> :{|<br /> |-<br /> | '''Matrixdarstellung:'''<br /> | &lt;math&gt;\sigma_2 = \begin{pmatrix} 1 &amp; 2 &amp; 3 &amp; 4 \\ 4 &amp; 3 &amp; 2 &amp; 1 \end{pmatrix}&lt;/math&gt;<br /> |-<br /> | '''Zykelschreibweise:'''<br /> | &lt;math&gt;\sigma_2 = \left(1\ 4\right)\left(2\ 3\right)&lt;/math&gt;<br /> |-<br /> | '''Tupelschreibweise:'''<br /> | &lt;math&gt;\sigma_2 = \left(4,3,2,1\right)&lt;/math&gt; oder auch &lt;math&gt;\sigma_2 = \left(4\ 3\ 2\ 1\right)&lt;/math&gt;<br /> |-<br /> | '''Permutationsmatrix:'''<br /> | &lt;math&gt;P \cdot \overline{x}=<br /> \begin{pmatrix}<br /> 0 &amp; 0 &amp; 0 &amp; 1\\<br /> 0 &amp; 0 &amp; 1 &amp; 0\\<br /> 0 &amp; 1 &amp; 0 &amp; 0\\<br /> 1 &amp; 0 &amp; 0 &amp; 0\\<br /> \end{pmatrix}<br /> \cdot \begin{pmatrix}1 \\ 2 \\ 3 \\ 4 \\\end{pmatrix}<br /> = \begin{pmatrix}4 \\ 3 \\ 2 \\ 1 \\\end{pmatrix}&lt;/math&gt; <br /> |}<br /> <br /> Keine der Darstellungen ist eindeutig.<br /> <br /> == Fixpunkte ==<br /> Elemente, deren Positionen sich bei der Permutation nicht ändern, nennt man [[Fixpunkt (Mathematik)|Fixpunkte]] der Permutation. Bei der Permutation<br /> :&lt;math&gt;\begin{pmatrix} 1 &amp; 2 &amp; 3 &amp; 4 \\ 1 &amp; 3 &amp; 2 &amp; 4 \end{pmatrix}&lt;/math&gt; <br /> sind dies beispielsweise die Zahlen 1 und 4. In der Matrixdarstellung erkennt man Fixpunkte daran, dass der obere und untere Eintrag der jeweiligen Spalte gleich ist. In der Zykelschreibweise sind Fixpunkte genau die Elemente, die nicht erscheinen. Für das obige Beispiel lautet die Zykelschreibweise &lt;math&gt;(2 3)&lt;/math&gt;; die Fixpunkte 1 und 4 erscheinen hier nicht. In der Permutationsmatrix sind die den Fixpunkten zugewiesenen Einträge der Hauptdiagonale 1. In der Permutationsmatrix zum obigen Beispiel sind dies die Einträge &lt;math&gt;p_{1,1}&lt;/math&gt; und &lt;math&gt;p_{4,4}&lt;/math&gt;:<br /> :&lt;math&gt;\begin{pmatrix}<br /> 1 &amp; 0 &amp; 0 &amp; 0\\<br /> 0 &amp; 0 &amp; 1 &amp; 0\\<br /> 0 &amp; 1 &amp; 0 &amp; 0\\<br /> 0 &amp; 0 &amp; 0 &amp; 1<br /> \end{pmatrix}&lt;/math&gt;.<br /> <br /> Eine Permutation ohne Fixpunkte wird auch [[Derangement]] genannt. Ein Derangement ist also ein „totale Versetzung“, bei der kein einziges Element auf seinem Platz bleibt. Die Anzahl der Derangements einer Menge mit &lt;math&gt;n&lt;/math&gt; Elementen ist<br /> :&lt;math&gt;n! \cdot\sum_{i=0}^n {\left(-1\right)^i \over i!}.&lt;/math&gt;<br /> Diese Zahl heißt [[Subfakultät]] und wird mit &lt;math&gt;!n&lt;/math&gt; bezeichnet.<br /> <br /> Allgemeiner lässt sich die Anzahl der Permutationen mit einer gegebenen Anzahl von Fixpunkten (sog. partielle Derangements) mit Hilfe der [[Rencontres-Zahl]]en bestimmen.<br /> <br /> == Verknüpfung von Permutationen ==<br /> Zwei &lt;math&gt;n&lt;/math&gt;-stellige Permutationen lassen sich nacheinander ausführen, indem man die erste Permutation anwendet und auf deren Resultat dann die zweite Permutation. Diese Hintereinanderausführung wird auch [[Komposition (Mathematik)|Komposition]] , Verknüpfung oder Produkt zweier Permutationen genannt und ist selbst wieder eine &lt;math&gt;n&lt;/math&gt;-stellige Permutation.<br /> <br /> Eine Menge von Permutationen einer endlichen Menge ''M'', erzeugt mit der Komposition als Verknüpfung eine [[Permutationsgruppe]] auf ''M''.<br /> <br /> === Beispiele zur Komposition von Permutationen ===<br /> Beispiele zur Verknüpfung:<br /> * &lt;math&gt;\begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 \\<br /> 3 &amp; 1 &amp; 2<br /> \end{pmatrix} \circ \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 \\<br /> 1 &amp; 3 &amp; 2<br /> \end{pmatrix} = \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 \\<br /> 3 &amp; 2 &amp; 1<br /> \end{pmatrix}&lt;/math&gt;<br /> :Man beachte, dass die Verknüpfungen von rechts nach links ausgewertet werden: In der zweiten Matrix geht die 1 in die 1, in der ersten die 1 in die 3. Im Ergebnis der Verknüpfung geht also die 1 in die 3. Ebenso: zweite Matrix 2 → 3, erste Matrix 3 → 2, Ergebnis 2 → 2. Und: zweite Matrix 3 → 2, erste Matrix 2 → 1, Ergebnis 3 → 1.<br /> * &lt;math&gt;(132)\circ(23)=(1 3)&lt;/math&gt;<br /> * &lt;math&gt;(23)\circ(132)=(1 2)&lt;/math&gt;<br /> <br /> Die beiden letzten Beispiele zeigen, dass die Reihenfolge im Allgemeinen von Bedeutung ist: Die symmetrische Gruppe &lt;math&gt;S_n&lt;/math&gt; ist für &lt;math&gt;n &gt; 2&lt;/math&gt; nicht [[Abelsche Gruppe|abelsch]].<br /> Die Reihenfolge kann nur unbeachtet bleiben, wenn die miteinander verknüpften Zykel [[disjunkt]] sind, d.&amp;nbsp;h. jedes Element der Permutation kommt nur in einem Zykel vor. Beispiel:<br /> * &lt;math&gt;\begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 4 &amp; 5<br /> \end{pmatrix} \circ \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 1 &amp; 2 &amp; 3 &amp; 5 &amp; 4<br /> \end{pmatrix} = \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 5 &amp; 4<br /> \end{pmatrix} = \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 1 &amp; 2 &amp; 3 &amp; 5 &amp; 4 <br /> \end{pmatrix} \circ \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 4 &amp; 5<br /> \end{pmatrix}&lt;/math&gt;<br /> <br /> * &lt;math&gt;(132)\circ(45)= <br /> \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 5 &amp; 4<br /> \end{pmatrix} =<br /> (45) \circ(132)&lt;/math&gt;<br /> <br /> == Ordnung ==<br /> Für jede Permutation &lt;math&gt;\sigma&lt;/math&gt; gibt es eine kleinste natürliche Zahl &lt;math&gt;k&lt;/math&gt; derart, dass die &lt;math&gt;k&lt;/math&gt;-malige Hintereinanderausführung von &lt;math&gt;\sigma&lt;/math&gt; die Identität ergibt: &lt;math&gt;\sigma^k = \mbox{id}&lt;/math&gt;. Diese Zahl wird Ordnung von &lt;math&gt;\sigma&lt;/math&gt; genannt. Sie ist die [[Elementordnung]] von &lt;math&gt;\sigma&lt;/math&gt; als Gruppenelement der Symmetrischen Gruppe. Die Ordnung einer Permutation lässt sich leicht aus der Zykeldarstellung bestimmen: Sie ist das [[Kleinstes gemeinsames Vielfaches|kleinste gemeinsame Vielfache]] (kgV) der Längen der disjunkten Zykeln von &lt;math&gt;\sigma&lt;/math&gt;. Beispielsweise ist die Ordnung der Permutation &lt;math&gt;(1 2 4)(3 5)&lt;/math&gt; das kgV von 3 und 2, also 6.<br /> <br /> Eine Permutation &lt;math&gt;\sigma&lt;/math&gt; mit &lt;math&gt;\sigma^2 = \mbox{id}&lt;/math&gt;, oder äquivalent &lt;math&gt;\sigma^{-1} = \sigma&lt;/math&gt;, heißt Involution oder selbstinvers. Die Involutionen sind genau die Permutationen der Ordnung 2 sowie die Identität selbst (die einzige Permutation der Ordnung 1). Eine Permutation ist genau dann eine Involution, wenn ihre Zykeldarstellung maximal Zykel der Länge 2 (also Transpositionen) enthält.<br /> <br /> == Einige Eigenschaften von endlichen Permutationen ==<br /> Nur falls die Menge aus der die Elemente der Permutation stammen, mit einer Totalordnung versehen ist, machen folgende Begriffe einen Sinn:<br /> * „left-to-right maximum“ (Links-Rechts-Maximum, kurz: ''LR-Maximum''). Bei einer Permutation in Wortschreibweise &lt;math&gt;a = a_1 \dotso a_i \dotso a_n&lt;/math&gt; nennt man &lt;math&gt;a_i&lt;/math&gt; genau dann ein ''LR-Maximum'', wenn &lt;math&gt;a_i &gt; a_j&lt;/math&gt; mit &lt;math&gt;1 \leq j \leq i-1&lt;/math&gt;. Diese Eigenschaft ist von Nutzen, wenn man die normalisierte Zykeldarstellung ohne Klammern schreiben möchte. Man kann unter Ausnutzung der LR-Maxima zeigen, dass dann eine [[Bijektion]] zwischen der normalisierten Zykeldarstellung in eine Permutation existiert.&lt;ref&gt;Vorlesungsskript Prof. Welker: [http://www.mathematik.uni-marburg.de/~welker/vorlesung/dima07/kapitel1.pdf Kapitel 1] &amp; [http://www.mathematik.uni-marburg.de/~welker/vorlesung/dima07/kapitel3.pdf Kapitel 3] ([[Portable Document Format|PDF]])&lt;/ref&gt; Bemerkung: &lt;math&gt;a_1&lt;/math&gt; ist immer ein LR-Maximum.<br /> * ''alternierend'' nennt man eine Permutation, wenn beim durchlaufen dieser sich die Ordnungsrelation der vorgegebenen Totalordnung von nebeneinanderstehenden Elementen dauernd ändert. Formal, wenn für keinen Index i, mit &lt;math&gt;1 &lt; i &lt; n&lt;/math&gt;, weder &lt;math&gt;a_{i-1} &lt; a_i &lt; a_{i+1}&lt;/math&gt; noch &lt;math&gt;a_{i-1} &gt; a_i &gt; a_{i+1}&lt;/math&gt; ist, wobei &lt;math&gt;a_k&lt;/math&gt; das k-te Element einer n-elementigen Permutation bezeichnet.<br /> * Inversion/[[Fehlstand]]: Man nennt ein Paar &lt;math&gt; (i,j) &lt;/math&gt; von Elementen Inversion bzgl. &lt;math&gt; \sigma &lt;/math&gt;, falls gilt<br /> *: &lt;math&gt; i &lt; j &lt;/math&gt; und &lt;math&gt; \sigma\left(i\right) &gt; \sigma\left(j\right) &lt;/math&gt;. Zwei Elemente bilden also genau dann eine Inversion, wenn nach Anwenden der Permutation das größere vor dem kleineren Element steht.<br /> <br /> '''Beispiel:''' Gegeben sei die Permutation &lt;math&gt; \pi = \left(3\ 2\ 5\ 1\ 4\right) &lt;/math&gt; (in Tupelschreibweise). &lt;math&gt; 1 &lt; 2 &lt;/math&gt;, aber 2 steht hier vor 1, also sind 1, 2 eine Inversion bezüglich &lt;math&gt; \pi &lt;/math&gt;.<br /> <br /> Ordnet man in einer Tabelle jedem Element die Anzahl derjenigen Elemente zu, die nach der Permutation links von ihm stehen, obwohl sie größer sind, so erhält man die sogenannte [[Inversionstafel]] der Permutation. Umgekehrt kann man aus jeder solchen Tafel die Permutation eindeutig bestimmen.<br /> <br /> '''Beispiel:''' Gegeben sei die Permutation &lt;math&gt; \left(3\ 2\ 5\ 1\ 4\right) &lt;/math&gt; (in Tupelschreibweise). Dann haben wir als Inversionstafel:<br /> <br /> :&lt;math&gt;<br /> \begin{pmatrix}1&amp;2&amp;3&amp;4&amp;5 \\ 3 &amp; 1 &amp; 0 &amp; 1 &amp; 0 \end{pmatrix}<br /> &lt;/math&gt;<br /> <br /> * [[Signum (Mathematik)#Signum von Permutationen|Signum]]: Sei mit &lt;math&gt;i\left(\sigma\right)&lt;/math&gt; die Anzahl der Inversionen von &lt;math&gt;\sigma&lt;/math&gt; bezeichnet. Dann ist das [[Signum (Mathematik)|Signum]] von &lt;math&gt;\sigma&lt;/math&gt; gegeben durch &lt;math&gt;\mathrm{sgn}\left(\sigma\right) = \left(-1\right)^{i\left(\sigma\right)}&lt;/math&gt;.<br /> Eine Permutation hat also Signum 1, falls die Anzahl ihrer Inversionen gerade ist, ansonsten Signum −1.<br /> <br /> Das Signum lässt sich auch über folgende Formel bestimmen:<br /> : &lt;math&gt;\mathrm{sgn}(\sigma) = (-1)^{m_1+m_2+\dotsb+m_r+r},&lt;/math&gt;<br /> wobei &lt;math&gt;r&lt;/math&gt; die Anzahl der Zykel und &lt;math&gt;m_i&lt;/math&gt; die Länge des &lt;math&gt;i&lt;/math&gt;-ten Zykels sind &lt;math&gt;\left(i=1,\dotsc,r\right)&lt;/math&gt;.<br /> <br /> * Typ: Sei mit &lt;math&gt; b_i &lt;/math&gt; die Anzahl der Zykel von &lt;math&gt; \pi &lt;/math&gt; bezeichnet, welche die Länge &lt;math&gt; i &lt;/math&gt; haben. Dann ist der Typ einer Permutation der formale Ausdruck<br /> *: &lt;math&gt;1^{b_1} 2^{b_2} 3^{b_3} \dotsm n^{b_n}.&lt;/math&gt;<br /> <br /> Formal bedeutet hierbei, dass das Produkt und die Potenzen nicht tatsächlich ausgerechnet werden.<br /> <br /> * Auf weitere Eigenschaften der Permutation und der Verkettung wird bei der [[Symmetrische Gruppe|Symmetrischen Gruppe]] eingegangen.<br /> <br /> == Der Permutaeder ==<br /> [[File:Symmetric group 4; permutohedron 3D; permutations and inversion vectors.svg|thumb|Der Permutaeder &lt;math&gt;P_4&lt;/math&gt;]]<br /> Der Permutaeder &lt;math&gt;P_n&lt;/math&gt; ist ein konvexer [[Polyeder]], welcher wie folgt definiert ist: Jede Permutation<br /> &lt;math&gt;\sigma \in S_n&lt;/math&gt; wird in Tupelschreibweise geschrieben als Vektor im &lt;math&gt;\mathbb{R}^n&lt;/math&gt; interpretiert.<br /> Die [[Konvexe Hülle|konvexe Hülle]] dieser Vektoren ergibt dann &lt;math&gt;P_n&lt;/math&gt; :<br /> <br /> :&lt;math&gt;<br /> P_n := \operatorname{conv} \left\{ \sigma = (\sigma(1), \sigma(2), \ldots, \sigma(n)) \mid \sigma \in S_n \right\}<br /> &lt;/math&gt;<br /> <br /> Der Permutaeder lässt sich außerdem auch durch den Schnitt von [[Halbraum|Halbräumen]] beschreiben:<br /> <br /> :&lt;math&gt;<br /> P_n = \{ x \in \mathbb{R}^n \mid<br /> \sum_{i=1}^n x_i = { n + 1 \choose 2 } , \;<br /> \forall S \subset \{1,\ldots, n\} : \sum_{i \in S} x_i \geq { | S | + 1 \choose 2 } \}<br /> &lt;/math&gt;<br /> <br /> Die Ecken des Permutaeders sind gerade die Permutationen in Tupelschreibweise, zwei Permutationen<br /> sind genau dann durch eine Kante des Permutaeders verbunden, wenn sie sich durch eine Transposition<br /> benachbarter Elemente ineinander überführen lassen.<br /> <br /> Der Permutaeder &lt;math&gt;P_n&lt;/math&gt; liegt in der &lt;math&gt;(n-1)&lt;/math&gt;-dimensionalen Hyperebene<br /> <br /> :&lt;math&gt; H = \{ x \in \mathbb{R}^n \mid x_1 + x_2 + \ldots + x_n = {n + 1 \choose 2} \}&lt;/math&gt;<br /> <br /> [[File:Bitruncated cubic honeycomb2.png|thumb|Tesselation des Raumes durch Permutaeder]]<br /> Die Hyperebene &lt;math&gt;H&lt;/math&gt; besteht gerade aus den Punkten,<br /> deren Koordinatensumme &lt;math&gt;{n + 1 \choose 2} = \frac{n(n + 1)}{2}&lt;/math&gt; ist.<br /> Sie hat eine [[Tessellation]] durch unendlich viele [[Parallelverschiebung|parallelverschobene]] Kopien des Permutaeders. Die Symmetriegruppe dieser Tesselation ist das durch die folgenden Gleichungen gegebene &lt;math&gt;(n-1)&lt;/math&gt;-dimensionale [[Gitter (Mathematik)|Gitter]]:<br /> <br /> :&lt;math&gt;<br /> x_1 + x_2 + \ldots + x_n = 0, \; x_1 \equiv x_2 \equiv \ldots x_n \mod n<br /> &lt;/math&gt;<br /> <br /> == Siehe auch ==<br /> * [[Permutiertes Register]]<br /> * [[Fakultätsbasiertes Zahlensystem]]<br /> * [[Kombinatorik]]<br /> <br /> == Literatur ==<br /> * [[Albrecht Beutelspacher]]: ''Lineare Algebra.'' 6. durchgesehene und ergänzte Auflage. Vieweg, Wiesbaden 2003, ISBN 3-528-56508-X, Kapitel 7.2 ''Permutationen''.<br /> * [[Michael Artin]]: ''Algebra.'' Birkhäuser, Basel u. a. 1993, ISBN 3-7643-2927-0, Kapitel 1.4 ''Permutationsmatrizen''.<br /> <br /> == Weblinks ==<br /> {{Wiktionary|Permutation}}<br /> * [http://www.reiter1.com/Glossar/Kombinatorik.htm Kombinatorik: Anwendung Permutation, Kombination und Variation]<br /> <br /> == Einzelnachweise ==<br /> &lt;references /&gt;<br /> <br /> [[Kategorie:Gruppentheorie]]<br /> [[Kategorie:Kombinatorik]]<br /> [[Kategorie:Lineare Algebra]]<br /> <br /> [[am:ሰልፍ]]<br /> [[ar:تبديل (رياضيات)]]<br /> [[bg:Пермутация]]<br /> [[bn:বিন্যাস]]<br /> [[ca:Permutació]]<br /> [[cs:Permutace]]<br /> [[da:Permutation]]<br /> [[el:Μετάθεση (μαθηματικά)]]<br /> [[en:Permutation]]<br /> [[eo:Permutaĵo]]<br /> [[es:Permutación]]<br /> [[et:Permutatsioon]]<br /> [[eu:Permutazio]]<br /> [[fa:جایگشت]]<br /> [[fi:Permutaatio]]<br /> [[fr:Permutation]]<br /> [[gu:ક્રમચય]]<br /> [[he:תמורה (מתמטיקה)]]<br /> [[hi:क्रमचय]]<br /> [[hr:Permutacija]]<br /> [[hu:Permutáció]]<br /> [[id:Permutasi]]<br /> [[it:Permutazione]]<br /> [[ja:置換 (数学)]]<br /> [[kk:Алмастыру]]<br /> [[kn:ಕ್ರಮಪಲ್ಲಟನೆ]]<br /> [[ko:순열]]<br /> [[lt:Kėliniai]]<br /> [[mk:Пермутација]]<br /> [[nl:Permutatie]]<br /> [[nn:Permutasjon]]<br /> [[no:Permutasjon]]<br /> [[pl:Permutacja]]<br /> [[pt:Permutação]]<br /> [[ro:Permutare]]<br /> [[ru:Перестановка]]<br /> [[scn:Pirmutazzioni]]<br /> [[simple:Permutation]]<br /> [[sk:Permutácia (algebra)]]<br /> [[sl:Permutacija]]<br /> [[sq:Permutacioni]]<br /> [[sr:Пермутација]]<br /> [[sv:Permutation]]<br /> [[ta:வரிசைமாற்றம்]]<br /> [[te:ప్రస్తారణ]]<br /> [[th:การเรียงสับเปลี่ยน]]<br /> [[tr:Permütasyon]]<br /> [[uk:Перестановка]]<br /> [[ur:تبدل کامل]]<br /> [[vi:Hoán vị]]<br /> [[zh:置換]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Satz_von_Vizing&diff=110262796 Satz von Vizing 2012-11-08T16:06:18Z <p>Mathmon: Englische Übersetzung hinzugefügt</p> <hr /> <div>Der '''Satz von Vizing''' ist ein 1964 von [[Vadim G. Vizing]] publizierter mathematischer Lehrsatz aus der [[Graphentheorie]]. Er liefert sowohl eine Untergrenze als auch eine Obergrenze für den [[Chromatischer_Index#Chromatischer_Index|chromatischen Index]] eines Graphen.<br /> <br /> Sei G ein Multigraph, d.h. ein Graph mit Mehrfachkanten aber ohne Schlingen, mit dem chromatischen Index &lt;math&gt; \chi^{\prime}(G)&lt;/math&gt; und dem [[Glossar_Graphentheorie#Maximalgrad|maximalen Grad]] &lt;math&gt;\Delta(G)&lt;/math&gt;. Weiterhin bezeichne ''h'' die maximale Anzahl von Kanten, die zwei Ecken verbinden. Dann gilt die folgende Ungleichung:<br /> <br /> :&lt;math&gt;\Delta(G)\le\chi^{\prime}(G)\le\Delta(G)+h&lt;/math&gt;<br /> <br /> Im Falle eine schlichten Graphen, d.h. eines Graphen ohne Mehrfachkanten, vereinfacht sich die obige Ungleichung dann zu:<br /> <br /> :&lt;math&gt;\Delta(G)\le\chi^{\prime}(G)\le\Delta(G)+1&lt;/math&gt;<br /> <br /> ==Literatur==<br /> *Lutz Volkmann: ''Fundamente der Graphentheorie'', Springer (Wien) 1996, ISBN 3-211-82774-9, S. 286, 288, Satz 13.2 und Satz 13.3<br /> *Reinhard Diestel: ''Graphentheorie''. Springer 2006, ISBN 3-540-21391-0, S. 103, Theorem 5.3.2 ([http://www.math.uni-hamburg.de/home/diestel/books/graphentheorie/GraphentheorieIII.counted.pdf elektronische Online-Version])<br /> *[http://eom.springer.de/V/v120040.htm ''Vizing theorem''] in der [[Encyclopaedia of Mathematics]]<br /> <br /> ==Weblinks==<br /> *[http://planetmath.org/encyclopedia/VizingsTheorem.html Vizing's Theorem] auf [[PlanetMath]]<br /> *Lutz Volkmann: ''[http://www.math2.rwth-aachen.de/files/gt/buch/graphen_an_allen_ecken_und_kanten.pdf Graphen an allen Ecken und Kanten]'', Vorlesungsskript 2006, S. 239, 241, Satz 13.2 und Satz 13.3<br /> <br /> [[Kategorie:Satz (Graphentheorie)|Vizing, Satz von]]<br /> <br /> [[en:Vizing's theorem]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Permutation&diff=110262221 Permutation 2012-11-08T15:46:57Z <p>Mathmon: Formatierung der Formeln verbessert</p> <hr /> <div>[[Datei:Permutations RGB.svg|thumb|120px|Alle 6 Permutationen dreier Kugeln]]<br /> <br /> Unter einer '''Permutation''' (von {{laS|''permutare''}} ‚(ver)tauschen‘) versteht man die Veränderung der Anordnung von (meistens verschiedenen) Objekten in einer [[Reihenfolge]] durch Vertauschen ihrer [[Element (Mathematik)|Elemente]]. In der Mathematik ist eine Permutation eine [[bijektiv]]e Selbstabbildung einer in der Regel endlichen Menge. Umgangssprachlich findet der Begriff bisweilen auch als Synonym für „(lineare bzw. der-Reihe-nach) Anordnung“ Verwendung.<br /> <br /> == Beispiele ==<br /> * „ANGSTBUDE“ entsteht aus „BUNDESTAG“ durch Permutation der Buchstaben ([[Anagramm]]).<br /> * Das Mischen der Karten eines Kartenspiels ist eine Permutation auf der Menge der Karten.<br /> * Der Stellungswechsel nach Eroberung des Aufschlagsrechts im [[Volleyball]] (Rotieren) ist eine Permutation der Spieler.<br /> * Sortieralgorithmen wie zum Beispiel der [[Bubble Sort]] arbeiten mit sukzessivem Vertauschen, d.&amp;nbsp;h. mit der Hintereinanderausführung von speziellen Permutationen, sogenannten Transpositionen (siehe unten).<br /> <br /> == Formale Definition ==<br /> Eine &lt;math&gt;n&lt;/math&gt;-stellige Permutation ist eine [[bijektiv]]e [[Funktion (Mathematik)|Abbildung]] &lt;math&gt;\sigma \colon X \rightarrow X&lt;/math&gt; einer &lt;math&gt;n&lt;/math&gt;-elementigen Menge &lt;math&gt;X&lt;/math&gt; auf sich selbst. Für eine &lt;math&gt;n&lt;/math&gt;-elementige Menge gibt es genau [[Fakultät (Mathematik)|''n''!]] mögliche Permutationen. Durch eine Permutation wird somit eine [[Ordnungsrelation#Totalordnung | Totalordnung]] zwischen den Elementen festgelegt. Da umgekehrt jede Totalordnung durch eine Permutation vermittelt wird, kann man sich bei der mathematischen Betrachtung von Permutationen stets auf die ersten n natürlichen Zahlen als Referenzmenge bei endlichen Permutationen beschränken.<br /> <br /> Die &lt;math&gt;n&lt;/math&gt;-stelligen Permutationen der ersten &lt;math&gt;n&lt;/math&gt; natürlichen Zahlen &lt;math&gt;1, 2, 3, \dotsc, n&lt;/math&gt; bilden mit der Komposition von Abbildungen als Verknüpfung die [[symmetrische Gruppe]] &lt;math&gt;S_n&lt;/math&gt; (mit &lt;math&gt;n!&lt;/math&gt; Elementen). Für die symmetrische Gruppe einer beliebigen Menge &lt;math&gt;X_n&lt;/math&gt; schreibt man allgemein &lt;math&gt;S(X_n)&lt;/math&gt;. Ihr neutrales Element ist die [[Identische Abbildung|Identität]] (abgekürzt id), also diejenige Permutation, die alle Elemente an ihrem Platz belässt. Zu jeder Permutation &lt;math&gt;\sigma&lt;/math&gt; gibt es genau eine inverse Permutation &lt;math&gt;\sigma^{-1}&lt;/math&gt; mit &lt;math&gt;\sigma \circ \sigma^{-1} = \sigma^{-1} \circ \sigma = \mathrm{id}&lt;/math&gt;.<br /> <br /> Die symmetrischen Gruppen spielen in der Mathematik eine bedeutende Rolle. Beispielsweise ist nach dem [[Satz von Cayley]] jede [[endliche Gruppe]] zu einer Untergruppe einer symmetrischen Gruppe [[Isomorphismus|isomorph]].<br /> <br /> == Mathematische Schreibweisen und Darstellungen ==<br /> Es gibt im Wesentlichen vier Arten zur Beschreibung einer &lt;math&gt;n&lt;/math&gt;-stelligen Permutation: Matrixdarstellung, Zykelschreibweise&lt;!-- nicht Zyklenschreibweise --&gt;, Tupelschreibweise und Permutationsmatrix. Im Folgenden bezeichnen wir die &lt;math&gt;n&lt;/math&gt; Elemente von &lt;math&gt;X_n&lt;/math&gt; mit &lt;math&gt;1,2,\dotsc,n&lt;/math&gt; und es sei &lt;math&gt;\sigma \in S_n&lt;/math&gt;.<br /> <br /> === Matrixdarstellung ===<br /> In der ausführlichen Darstellung der Permutation &lt;math&gt;\sigma&lt;/math&gt; schreibt man diese als &lt;math&gt;(2\times n)&lt;/math&gt;-[[Matrix (Mathematik)|Matrix]]. In der oberen Zeile stehen die Elemente von &lt;math&gt;X_n&lt;/math&gt; (in beliebiger Reihenfolge). Ist &lt;math&gt; X_n = \{1,\dotsc,n\} &lt;/math&gt;, dann schreibt man im Allgemeinen die Zahlen von &lt;math&gt;1&lt;/math&gt; bis &lt;math&gt;n&lt;/math&gt; nacheinander in die erste Zeile. Unter jedes &lt;math&gt;x\in X_n&lt;/math&gt; schreibt man in die zweite Zeile den Funktionswert &lt;math&gt;\sigma(x)&lt;/math&gt;. Auch in der zweiten Zeile steht somit jedes Element von &lt;math&gt;X_n&lt;/math&gt; genau einmal.<br /> <br /> :&lt;math&gt;\sigma = \begin{pmatrix} 1 &amp; 2 &amp; \cdots &amp; n \\ \sigma\left(1\right) &amp; \sigma\left(2\right) &amp; \cdots &amp; \sigma\left(n\right) \end{pmatrix}&lt;/math&gt;<br /> <br /> === Zykelschreibweise&lt;!-- nicht Zyklenschreibweise --&gt; ===<br /> Die Zykelschreibweise&lt;!-- nicht Zyklenschreibweise --&gt; ist kompakter und benötigt nur eine Zeile. Man beginnt mit einem beliebigen Element &lt;math&gt;a\in X_n&lt;/math&gt; und schreibt <br /> :&lt;math&gt;\left(a \; \sigma(a) \; \sigma^2(a) \; \cdots \; \sigma^{\ell_a-1}(a)\right)&lt;/math&gt;,<br /> wobei &lt;math&gt;\sigma^k&lt;/math&gt; die &lt;math&gt;k&lt;/math&gt;-fache Hintereinanderausführung von &lt;math&gt;\sigma&lt;/math&gt; bezeichnet und &lt;math&gt;\ell_a&lt;/math&gt; die kleinste natürliche Zahl mit &lt;math&gt;\sigma^{\ell_a}(a) = a&lt;/math&gt; ist. Eine solche Klammer heißt ein ''Zykel'' und &lt;math&gt;\ell_a&lt;/math&gt; ist seine Länge. Gibt es weitere Elemente in &lt;math&gt;X_n&lt;/math&gt;, die noch nicht notiert wurden, so wählt man ein solches Element &lt;math&gt;b&lt;/math&gt; und schreibt einen weiteren Zykel &lt;math&gt;(b \; \sigma(b) \; \cdots \; \sigma^{\ell_b-1}(b))&lt;/math&gt; der Länge &lt;math&gt;\ell_b&lt;/math&gt;. Man fährt so lange fort, bis jedes Element genau einmal notiert wurde. Klammern, in denen nur ein Element steht, können anschließend wieder gestrichen werden.<br /> Diese Darstellung ist nicht eindeutig: Die Reihenfolge der Zykel ist beliebig wählbar und in jedem Zykel dürfen die Elemente zyklisch vertauscht werden.<br /> Die Identität id notiert man auch als leere Klammer (), als (1) oder als &lt;math&gt;\epsilon&lt;/math&gt;. Die inverse Permutation erhält man, indem man in der Zykelschreibweise in jedem Zykel die Elemente in der umgekehrten Reihenfolge schreibt.<br /> <br /> : &lt;math&gt;\sigma = (124)(35)&lt;/math&gt; bedeutet beispielsweise, dass &lt;math&gt;\sigma&lt;/math&gt; 1 auf 2, 2 auf 4 und 4 auf 1 abbildet und zusätzlich 3 auf 5 und 5 auf 3. Es gilt &lt;math&gt;\sigma^{-1} = (421)(53) = (142)(35)&lt;/math&gt;.<br /> <br /> Eine Permutation, die &lt;math&gt;r&lt;/math&gt; Elemente zyklisch vertauscht und die übrigen Elemente fest lässt, wird in dieser Notation als ein einzelner Zykel der Länge &lt;math&gt;r&lt;/math&gt; geschrieben und &lt;math&gt;r&lt;/math&gt;-Zykel genannt. Ein 2-Zykel, also eine Vertauschung zweier Elemente, heißt auch Transposition. Jeder Zykel und damit auch jede Permutation lässt sich als Komposition von Transpositionen schreiben.<br /> <br /> === Tupelschreibweise ===<br /> Bei der Tupelschreibweise schreibt man die Funktionswerte &lt;math&gt;\sigma(x)&lt;/math&gt; in eine Zeile.<br /> :&lt;math&gt;\sigma = \left(\sigma\left(1\right),\sigma\left(2\right),\dotsc,\sigma\left(n\right)\right)&lt;/math&gt;<br /> Sie enthält somit nur noch die zweite Zeile der Matrixdarstellung. Da dadurch die Information über den &lt;math&gt;x&lt;/math&gt;-Wert zu den &lt;math&gt;\sigma(x)&lt;/math&gt; verloren geht, kann die Tupelschreibweise nur verwendet werden, wenn für die zugrundeliegende Menge eine Reihenfolge festgelegt wurde. Anhand dieser Reihenfolge lässt sich dann die erste Zeile der Matrixdarstellung rekonstruieren.<br /> <br /> Die Tupelschreibweise wird leicht mit der Zykelschreibweise verwechselt, besonders da manche Autoren die Kommata weglassen.<br /> <br /> === Permutationsmatrix ===<br /> [[Datei:Symmetric group 3; Cayley table; matrices.svg|thumb|Matrizen der Permutationen dreier Elemente]]<br /> {{Hauptartikel|Permutationsmatrix}}<br /> <br /> Diese Darstellung ist nicht zu verwechseln mit der Matrixdarstellung. Bei dieser Darstellung wird ein [[Vektor]] von links mit einer Permutationsmatrix multipliziert, wodurch die Elemente des Vektors permutiert werden.<br /> <br /> ;Definition:<br /> <br /> Sei &lt;math&gt;X_n=(x_1,x_2,\dotsc,x_n) &lt;/math&gt; das &lt;math&gt;n&lt;/math&gt;-Tupel und &lt;math&gt;P_\sigma \in \mathbb{N}^{n\times n}&lt;/math&gt; die Permutationsmatrix.<br /> <br /> Der Permutation &lt;math&gt;\sigma = \begin{pmatrix} x_1 &amp; x_2 &amp; \dotso &amp; x_n \\ \sigma\left(x_1\right) &amp; \sigma\left(x_2\right) &amp; \dotso &amp; \sigma\left(x_n\right) \end{pmatrix}&lt;/math&gt; entspricht dann die Matrix <br /> :&lt;math&gt; P_\sigma=<br /> \begin{pmatrix}<br /> p_{11} &amp; \dots &amp;p_{1n} \\<br /> \vdots &amp;\ddots &amp;\vdots \\<br /> p_{n1} &amp; \dots &amp;p_{nn}<br /> \end{pmatrix}<br /> = (p_{j,k})_{1\leq j,k \leq n} \quad\text{ mit }\quad p_{j,k}=\begin{cases} 1, &amp; \text{wenn }\sigma(x_j)=x_k\text{ gilt } \\ 0, &amp; \text{wenn } \sigma(x_j) \ne x_k\text{ gilt }\end{cases}<br /> &lt;/math&gt;<br /> <br /> Der Vektor &lt;math&gt;\overline{x} =\begin{pmatrix}x_1 \\ x_2 \\ \vdots \\ x_n \\\end{pmatrix}&lt;/math&gt; wird permutiert, indem man ihn von links mit &lt;math&gt;P_\sigma&lt;/math&gt; multipliziert:<br /> &lt;math&gt;P_\sigma \cdot \begin{pmatrix}x_1 \\ x_2 \\ \vdots \\ x_n \\\end{pmatrix} = \begin{pmatrix} \sigma(x_1) \\ \sigma(x_2) \\ \vdots \\ \sigma(x_n) \\\end{pmatrix}&lt;/math&gt;<br /> <br /> ;Bemerkung:<br /> <br /> Die [[identische Abbildung]] wird dargestellt durch die [[Einheitsmatrix]] .<br /> <br /> === Beispiele ===<br /> * Ein einfaches Beispiel in verschiedenen Schreibweisen: Es sei &lt;math&gt;\sigma_1 \colon \{a,b,c \} \rightarrow \{a,b,c \}&lt;/math&gt; durch &lt;math&gt;\sigma_1\left(a\right):=b, \sigma_1\left(b\right):=a \mbox{ und } \sigma_1\left(c\right):=c &lt;/math&gt; gegeben. Dann gilt<br /> :{|<br /> |-<br /> | '''Matrixdarstellung:'''<br /> | &lt;math&gt;\sigma_1 = \begin{pmatrix} a &amp; b &amp; c \\ b &amp; a &amp; c \end{pmatrix}&lt;/math&gt; <br /> |-<br /> | '''Zykelschreibweise:'''<br /> | &lt;math&gt;\sigma_1 = \left(a b\right)\left(c\right) = \left(a b\right)&lt;/math&gt; – &lt;math&gt;a&lt;/math&gt; und &lt;math&gt;b&lt;/math&gt; werden vertauscht, &lt;math&gt;c&lt;/math&gt; wird gehalten<br /> |-<br /> | '''Tupelschreibweise:'''<br /> | &lt;math&gt;\sigma_1 = \left(b,a,c\right)&lt;/math&gt; oder auch &lt;math&gt;\sigma_1 = \left(b\ a\ c\right)&lt;/math&gt;<br /> |-<br /> | '''Permutationsmatrix:'''<br /> | &lt;math&gt;P \cdot \overline{x}=<br /> \begin{pmatrix}<br /> 0 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{pmatrix}<br /> \cdot \begin{pmatrix}a \\ b \\ c \\\end{pmatrix}<br /> = \begin{pmatrix}b \\ a \\ c \\\end{pmatrix}&lt;/math&gt; – &lt;math&gt;a&lt;/math&gt; und &lt;math&gt;b&lt;/math&gt; werden vertauscht, &lt;math&gt;c&lt;/math&gt; wird gehalten<br /> |}<br /> <br /> * Ein weiteres Beispiel: Sei &lt;math&gt;\sigma_2 \in S_4&lt;/math&gt; durch &lt;math&gt;\sigma_2 \colon \{1, 2, 3, 4 \} \rightarrow \{1, 2, 3, 4 \}&lt;/math&gt; und &lt;math&gt;\sigma_2\left(1\right):=4, \sigma_2\left(2\right):=3, \sigma_2\left(3\right):=2 \mbox{ und } \sigma_2\left(4\right):=1 &lt;/math&gt; gegeben. Dann schreibt man<br /> :{|<br /> |-<br /> | '''Matrixdarstellung:'''<br /> | &lt;math&gt;\sigma_2 = \begin{pmatrix} 1 &amp; 2 &amp; 3 &amp; 4 \\ 4 &amp; 3 &amp; 2 &amp; 1 \end{pmatrix}&lt;/math&gt;<br /> |-<br /> | '''Zykelschreibweise:'''<br /> | &lt;math&gt;\sigma_2 = \left(1\ 4\right)\left(2\ 3\right)&lt;/math&gt;<br /> |-<br /> | '''Tupelschreibweise:'''<br /> | &lt;math&gt;\sigma_2 = \left(4,3,2,1\right)&lt;/math&gt; oder auch &lt;math&gt;\sigma_2 = \left(4\ 3\ 2\ 1\right)&lt;/math&gt;<br /> |-<br /> | '''Permutationsmatrix:'''<br /> | &lt;math&gt;P \cdot \overline{x}=<br /> \begin{pmatrix}<br /> 0 &amp; 0 &amp; 0 &amp; 1\\<br /> 0 &amp; 0 &amp; 1 &amp; 0\\<br /> 0 &amp; 1 &amp; 0 &amp; 0\\<br /> 1 &amp; 0 &amp; 0 &amp; 0\\<br /> \end{pmatrix}<br /> \cdot \begin{pmatrix}1 \\ 2 \\ 3 \\ 4 \\\end{pmatrix}<br /> = \begin{pmatrix}4 \\ 3 \\ 2 \\ 1 \\\end{pmatrix}&lt;/math&gt; <br /> |}<br /> <br /> Keine der Darstellungen ist eindeutig.<br /> <br /> == Fixpunkte ==<br /> Elemente, deren Positionen sich bei der Permutation nicht ändern, nennt man [[Fixpunkt (Mathematik)|Fixpunkte]] der Permutation. Bei der Permutation<br /> :&lt;math&gt;\begin{pmatrix} 1 &amp; 2 &amp; 3 &amp; 4 \\ 1 &amp; 3 &amp; 2 &amp; 4 \end{pmatrix}&lt;/math&gt; <br /> sind dies beispielsweise die Zahlen 1 und 4. In der Matrixdarstellung erkennt man Fixpunkte daran, dass der obere und untere Eintrag der jeweiligen Spalte gleich ist. In der Zykelschreibweise sind Fixpunkte genau die Elemente, die nicht erscheinen. Für das obige Beispiel lautet die Zykelschreibweise &lt;math&gt;(2 3)&lt;/math&gt;; die Fixpunkte 1 und 4 erscheinen hier nicht. In der Permutationsmatrix sind die den Fixpunkten zugewiesenen Einträge der Hauptdiagonale 1. In der Permutationsmatrix zum obigen Beispiel sind dies die Einträge &lt;math&gt;p_{1,1}&lt;/math&gt; und &lt;math&gt;p_{4,4}&lt;/math&gt;:<br /> :&lt;math&gt;\begin{pmatrix}<br /> 1 &amp; 0 &amp; 0 &amp; 0\\<br /> 0 &amp; 0 &amp; 1 &amp; 0\\<br /> 0 &amp; 1 &amp; 0 &amp; 0\\<br /> 0 &amp; 0 &amp; 0 &amp; 1<br /> \end{pmatrix}&lt;/math&gt;.<br /> <br /> Eine Permutation ohne Fixpunkte wird auch [[Derangement]] genannt. Ein Derangement ist also ein „totale Versetzung“, bei der kein einziges Element auf seinem Platz bleibt. Die Anzahl der Derangements einer Menge mit &lt;math&gt;n&lt;/math&gt; Elementen ist<br /> :&lt;math&gt;n! \cdot\sum_{i=0}^n {\left(-1\right)^i \over i!}.&lt;/math&gt;<br /> Diese Zahl heißt [[Subfakultät]] und wird mit &lt;math&gt;!n&lt;/math&gt; bezeichnet.<br /> <br /> Allgemeiner lässt sich die Anzahl der Permutationen mit einer gegebenen Anzahl von Fixpunkten (sog. partielle Derangements) mit Hilfe der [[Rencontres-Zahl]]en bestimmen.<br /> <br /> == Verknüpfung von Permutationen ==<br /> Zwei &lt;math&gt;n&lt;/math&gt;-stellige Permutationen lassen sich nacheinander ausführen, indem man die erste Permutation anwendet und auf deren Resultat dann die zweite Permutation. Diese Hintereinanderausführung wird auch [[Komposition (Mathematik)|Komposition]] , Verknüpfung oder Produkt zweier Permutationen genannt und ist selbst wieder eine &lt;math&gt;n&lt;/math&gt;-stellige Permutation.<br /> <br /> Eine Menge von Permutationen einer endlichen Menge ''M'', erzeugt mit der Komposition als Verknüpfung eine [[Permutationsgruppe]] auf ''M''.<br /> <br /> === Beispiele zur Komposition von Permutationen ===<br /> Beispiele zur Verknüpfung:<br /> * &lt;math&gt;\begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 \\<br /> 3 &amp; 1 &amp; 2<br /> \end{pmatrix} \circ \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 \\<br /> 1 &amp; 3 &amp; 2<br /> \end{pmatrix} = \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 \\<br /> 3 &amp; 2 &amp; 1<br /> \end{pmatrix}&lt;/math&gt;<br /> :Man beachte, dass die Verknüpfungen von rechts nach links ausgewertet werden: In der zweiten Matrix geht die 1 in die 1, in der ersten die 1 in die 3. Im Ergebnis der Verknüpfung geht also die 1 in die 3. Ebenso: zweite Matrix 2 → 3, erste Matrix 3 → 2, Ergebnis 2 → 2. Und: zweite Matrix 3 → 2, erste Matrix 2 → 1, Ergebnis 3 → 1.<br /> * &lt;math&gt;(132)\circ(23)=(1 3)&lt;/math&gt;<br /> * &lt;math&gt;(23)\circ(132)=(1 2)&lt;/math&gt;<br /> <br /> Die beiden letzten Beispiele zeigen, dass die Reihenfolge im Allgemeinen von Bedeutung ist: Die symmetrische Gruppe &lt;math&gt;S_n&lt;/math&gt; ist für &lt;math&gt;n &gt; 2&lt;/math&gt; nicht [[Abelsche Gruppe|abelsch]].<br /> Die Reihenfolge kann nur unbeachtet bleiben, wenn die miteinander verknüpften Zykel [[disjunkt]] sind, d.&amp;nbsp;h. jedes Element der Permutation kommt nur in einem Zykel vor. Beispiel:<br /> * &lt;math&gt;\begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 4 &amp; 5<br /> \end{pmatrix} \circ \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 1 &amp; 2 &amp; 3 &amp; 5 &amp; 4<br /> \end{pmatrix} = \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 5 &amp; 4<br /> \end{pmatrix} = \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 1 &amp; 2 &amp; 3 &amp; 5 &amp; 4 <br /> \end{pmatrix} \circ \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 4 &amp; 5<br /> \end{pmatrix}&lt;/math&gt;<br /> <br /> * &lt;math&gt;(132)\circ(45)= <br /> \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 5 &amp; 4<br /> \end{pmatrix} =<br /> (45) \circ(132)&lt;/math&gt;<br /> <br /> == Ordnung ==<br /> Für jede Permutation &lt;math&gt;\sigma&lt;/math&gt; gibt es eine kleinste natürliche Zahl &lt;math&gt;k&lt;/math&gt; derart, dass die &lt;math&gt;k&lt;/math&gt;-malige Hintereinanderausführung von &lt;math&gt;\sigma&lt;/math&gt; die Identität ergibt: &lt;math&gt;\sigma^k = \mbox{id}&lt;/math&gt;. Diese Zahl wird Ordnung von &lt;math&gt;\sigma&lt;/math&gt; genannt. Sie ist die [[Elementordnung]] von &lt;math&gt;\sigma&lt;/math&gt; als Gruppenelement der Symmetrischen Gruppe. Die Ordnung einer Permutation lässt sich leicht aus der Zykeldarstellung bestimmen: Sie ist das [[Kleinstes gemeinsames Vielfaches|kleinste gemeinsame Vielfache]] (kgV) der Längen der disjunkten Zykeln von &lt;math&gt;\sigma&lt;/math&gt;. Beispielsweise ist die Ordnung der Permutation &lt;math&gt;(1 2 4)(3 5)&lt;/math&gt; das kgV von 3 und 2, also 6.<br /> <br /> Eine Permutation &lt;math&gt;\sigma&lt;/math&gt; mit &lt;math&gt;\sigma^2 = \mbox{id}&lt;/math&gt;, oder äquivalent &lt;math&gt;\sigma^{-1} = \sigma&lt;/math&gt;, heißt Involution oder selbstinvers. Die Involutionen sind genau die Permutationen der Ordnung 2 sowie die Identität selbst (die einzige Permutation der Ordnung 1). Eine Permutation ist genau dann eine Involution, wenn ihre Zykeldarstellung maximal Zykel der Länge 2 (also Transpositionen) enthält.<br /> <br /> == Einige Eigenschaften von endlichen Permutationen ==<br /> Nur falls die Menge aus der die Elemente der Permutation stammen, mit einer Totalordnung versehen ist, machen folgende Begriffe einen Sinn:<br /> * „left-to-right maximum“ (Links-Rechts-Maximum, kurz: ''LR-Maximum''). Bei einer Permutation in Wortschreibweise &lt;math&gt;a = a_1 \dotso a_i \dotso a_n&lt;/math&gt; nennt man &lt;math&gt;a_i&lt;/math&gt; genau dann ein ''LR-Maximum'', wenn &lt;math&gt;a_i &gt; a_j&lt;/math&gt; mit &lt;math&gt;1 \leq j \leq i-1&lt;/math&gt;. Diese Eigenschaft ist von Nutzen, wenn man die normalisierte Zykeldarstellung ohne Klammern schreiben möchte. Man kann unter Ausnutzung der LR-Maxima zeigen, dass dann eine [[Bijektion]] zwischen der normalisierten Zykeldarstellung in eine Permutation existiert.&lt;ref&gt;Vorlesungsskript Prof. Welker: [http://www.mathematik.uni-marburg.de/~welker/vorlesung/dima07/kapitel1.pdf Kapitel 1] &amp; [http://www.mathematik.uni-marburg.de/~welker/vorlesung/dima07/kapitel3.pdf Kapitel 3] ([[Portable Document Format|PDF]])&lt;/ref&gt; Bemerkung: &lt;math&gt;a_1&lt;/math&gt; ist immer ein LR-Maximum.<br /> * ''alternierend'' nennt man eine Permutation, wenn beim durchlaufen dieser sich die Ordnungsrelation der vorgegebenen Totalordnung von nebeneinanderstehenden Elementen dauernd ändert. Formal, wenn für keinen Index i, mit &lt;math&gt;1 &lt; i &lt; n&lt;/math&gt;, weder &lt;math&gt;a_{i-1} &lt; a_i &lt; a_{i+1}&lt;/math&gt; noch &lt;math&gt;a_{i-1} &gt; a_i &gt; a_{i+1}&lt;/math&gt; ist, wobei &lt;math&gt;a_k&lt;/math&gt; das k-te Element einer n-elementigen Permutation bezeichnet.<br /> * Inversion/[[Fehlstand]]: Man nennt ein Paar &lt;math&gt; (i,j) &lt;/math&gt; von Elementen Inversion bzgl. &lt;math&gt; \sigma &lt;/math&gt;, falls gilt<br /> *: &lt;math&gt; i &lt; j &lt;/math&gt; und &lt;math&gt; \sigma\left(i\right) &gt; \sigma\left(j\right) &lt;/math&gt;. Zwei Elemente bilden also genau dann eine Inversion, wenn nach Anwenden der Permutation das größere vor dem kleineren Element steht.<br /> <br /> '''Beispiel:''' Gegeben sei die Permutation &lt;math&gt; \pi = \left(3\ 2\ 5\ 1\ 4\right) &lt;/math&gt; (in Tupelschreibweise). &lt;math&gt; 1 &lt; 2 &lt;/math&gt;, aber 2 steht hier vor 1, also sind 1, 2 eine Inversion bezüglich &lt;math&gt; \pi &lt;/math&gt;.<br /> <br /> Ordnet man in einer Tabelle jedem Element die Anzahl derjenigen Elemente zu, die nach der Permutation links von ihm stehen, obwohl sie größer sind, so erhält man die sogenannte [[Inversionstafel]] der Permutation. Umgekehrt kann man aus jeder solchen Tafel die Permutation eindeutig bestimmen.<br /> <br /> '''Beispiel:''' Gegeben sei die Permutation &lt;math&gt; \left(3\ 2\ 5\ 1\ 4\right) &lt;/math&gt; (in Tupelschreibweise). Dann haben wir als Inversionstafel:<br /> <br /> :&lt;math&gt;<br /> \begin{pmatrix}1&amp;2&amp;3&amp;4&amp;5 \\ 3 &amp; 1 &amp; 0 &amp; 1 &amp; 0 \end{pmatrix}<br /> &lt;/math&gt;<br /> <br /> * [[Signum (Mathematik)#Signum von Permutationen|Signum]]: Sei mit &lt;math&gt;i\left(\sigma\right)&lt;/math&gt; die Anzahl der Inversionen von &lt;math&gt;\sigma&lt;/math&gt; bezeichnet. Dann ist das [[Signum (Mathematik)|Signum]] von &lt;math&gt;\sigma&lt;/math&gt; gegeben durch &lt;math&gt;\mathrm{sgn}\left(\sigma\right) = \left(-1\right)^{i\left(\sigma\right)}&lt;/math&gt;.<br /> Eine Permutation hat also Signum 1, falls die Anzahl ihrer Inversionen gerade ist, ansonsten Signum −1.<br /> <br /> Das Signum lässt sich auch über folgende Formel bestimmen:<br /> : &lt;math&gt;\mathrm{sgn}(\sigma) = (-1)^{m_1+m_2+\dotsb+m_r+r},&lt;/math&gt;<br /> wobei &lt;math&gt;r&lt;/math&gt; die Anzahl der Zykel und &lt;math&gt;m_i&lt;/math&gt; die Länge des &lt;math&gt;i&lt;/math&gt;-ten Zykels sind &lt;math&gt;\left(i=1,\dotsc,r\right)&lt;/math&gt;.<br /> <br /> * Typ: Sei mit &lt;math&gt; b_i &lt;/math&gt; die Anzahl der Zykel von &lt;math&gt; \pi &lt;/math&gt; bezeichnet, welche die Länge &lt;math&gt; i &lt;/math&gt; haben. Dann ist der Typ einer Permutation der formale Ausdruck<br /> *: &lt;math&gt;1^{b_1} 2^{b_2} 3^{b_3} \dotsm n^{b_n}.&lt;/math&gt;<br /> <br /> Formal bedeutet hierbei, dass das Produkt und die Potenzen nicht tatsächlich ausgerechnet werden.<br /> <br /> * Auf weitere Eigenschaften der Permutation und der Verkettung wird bei der [[Symmetrische Gruppe|Symmetrischen Gruppe]] eingegangen.<br /> <br /> == Der Permutaeder ==<br /> [[File:Bitruncated cubic honeycomb2.png|thumb|Tesselation des Raumes durch Permutaeder]]<br /> Der Permutaeder &lt;math&gt;P_n&lt;/math&gt; ist ein konvexer [[Polyeder]], welcher wie folgt definiert ist: Jede Permutation<br /> &lt;math&gt;\sigma \in S_n&lt;/math&gt; wird in Tupelschreibweise geschrieben als Vektor im &lt;math&gt;\mathbb{R}^n&lt;/math&gt; interpretiert.<br /> Die [[Konvexe Hülle|konvexe Hülle]] dieser Vektoren ergibt dann &lt;math&gt;P_n&lt;/math&gt; :<br /> <br /> :&lt;math&gt;<br /> P_n := \operatorname{conv} \left\{ \sigma = (\sigma(1), \sigma(2), \ldots, \sigma(n)) \mid \sigma \in S_n \right\}<br /> &lt;/math&gt;<br /> <br /> Der Permutaeder lässt sich außerdem auch durch den Schnitt von [[Halbraum|Halbräumen]] beschreiben:<br /> <br /> :&lt;math&gt;<br /> P_n = \{ x \in \mathbb{R}^n \mid<br /> \sum_{i=1}^n x_i = { n + 1 \choose 2 } , \;<br /> \forall S \subset \{1,\ldots, n\} : \sum_{i \in S} x_i \geq { | S | + 1 \choose 2 } \}<br /> &lt;/math&gt;<br /> <br /> Die Ecken des Permutaeders sind gerade die Permutationen in Tupelschreibweise, zwei Permutationen<br /> sind genau dann durch eine Kante des Permutaeders verbunden, wenn sie sich durch eine Transposition<br /> benachbarter Elemente ineinander überführen lassen.<br /> <br /> Der Permutaeder &lt;math&gt;P_n&lt;/math&gt; liegt in der &lt;math&gt;(n-1)&lt;/math&gt;-dimensionalen Hyperebene<br /> <br /> :&lt;math&gt; H = \{ x \in \mathbb{R}^n \mid x_1 + x_2 + \ldots + x_n = {n + 1 \choose 2} \}&lt;/math&gt;<br /> <br /> Die Hyperebene &lt;math&gt;H&lt;/math&gt; besteht gerade aus den Punkten,<br /> deren Koordinatensumme &lt;math&gt;{n + 1 \choose 2} = \frac{n(n + 1)}{2}&lt;/math&gt; ist.<br /> Sie hat eine [[Tessellation]] durch unendlich viele [[Parallelverschiebung|parallelverschobene]] Kopien des Permutaeders. Die Symmetriegruppe dieser Tesselation ist das durch die folgenden Gleichungen gegebene &lt;math&gt;(n-1)&lt;/math&gt;-dimensionale [[Gitter (Mathematik)|Gitter]]:<br /> <br /> :&lt;math&gt;<br /> x_1 + x_2 + \ldots + x_n = 0, \; x_1 \equiv x_2 \equiv \ldots x_n \mod n<br /> &lt;/math&gt;<br /> <br /> == Siehe auch ==<br /> * [[Permutiertes Register]]<br /> * [[Fakultätsbasiertes Zahlensystem]]<br /> * [[Kombinatorik]]<br /> <br /> == Literatur ==<br /> * [[Albrecht Beutelspacher]]: ''Lineare Algebra.'' 6. durchgesehene und ergänzte Auflage. Vieweg, Wiesbaden 2003, ISBN 3-528-56508-X, Kapitel 7.2 ''Permutationen''.<br /> * [[Michael Artin]]: ''Algebra.'' Birkhäuser, Basel u. a. 1993, ISBN 3-7643-2927-0, Kapitel 1.4 ''Permutationsmatrizen''.<br /> <br /> == Weblinks ==<br /> {{Wiktionary|Permutation}}<br /> * [http://www.reiter1.com/Glossar/Kombinatorik.htm Kombinatorik: Anwendung Permutation, Kombination und Variation]<br /> <br /> == Einzelnachweise ==<br /> &lt;references /&gt;<br /> <br /> [[Kategorie:Gruppentheorie]]<br /> [[Kategorie:Kombinatorik]]<br /> [[Kategorie:Lineare Algebra]]<br /> <br /> [[am:ሰልፍ]]<br /> [[ar:تبديل (رياضيات)]]<br /> [[bg:Пермутация]]<br /> [[bn:বিন্যাস]]<br /> [[ca:Permutació]]<br /> [[cs:Permutace]]<br /> [[da:Permutation]]<br /> [[el:Μετάθεση (μαθηματικά)]]<br /> [[en:Permutation]]<br /> [[eo:Permutaĵo]]<br /> [[es:Permutación]]<br /> [[et:Permutatsioon]]<br /> [[eu:Permutazio]]<br /> [[fa:جایگشت]]<br /> [[fi:Permutaatio]]<br /> [[fr:Permutation]]<br /> [[gu:ક્રમચય]]<br /> [[he:תמורה (מתמטיקה)]]<br /> [[hi:क्रमचय]]<br /> [[hr:Permutacija]]<br /> [[hu:Permutáció]]<br /> [[id:Permutasi]]<br /> [[it:Permutazione]]<br /> [[ja:置換 (数学)]]<br /> [[kk:Алмастыру]]<br /> [[kn:ಕ್ರಮಪಲ್ಲಟನೆ]]<br /> [[ko:순열]]<br /> [[lt:Kėliniai]]<br /> [[mk:Пермутација]]<br /> [[nl:Permutatie]]<br /> [[nn:Permutasjon]]<br /> [[no:Permutasjon]]<br /> [[pl:Permutacja]]<br /> [[pt:Permutação]]<br /> [[ro:Permutare]]<br /> [[ru:Перестановка]]<br /> [[scn:Pirmutazzioni]]<br /> [[simple:Permutation]]<br /> [[sk:Permutácia (algebra)]]<br /> [[sl:Permutacija]]<br /> [[sq:Permutacioni]]<br /> [[sr:Пермутација]]<br /> [[sv:Permutation]]<br /> [[ta:வரிசைமாற்றம்]]<br /> [[te:ప్రస్తారణ]]<br /> [[th:การเรียงสับเปลี่ยน]]<br /> [[tr:Permütasyon]]<br /> [[uk:Перестановка]]<br /> [[ur:تبدل کامل]]<br /> [[vi:Hoán vị]]<br /> [[zh:置換]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Permutation&diff=110224668 Permutation 2012-11-07T16:58:30Z <p>Mathmon: /* Der Permutaeder */</p> <hr /> <div>[[Datei:Permutations RGB.svg|thumb|120px|Alle 6 Permutationen dreier Kugeln]]<br /> <br /> Unter einer '''Permutation''' (von {{laS|''permutare''}} ‚(ver)tauschen‘) versteht man die Veränderung der Anordnung von (meistens verschiedenen) Objekten in einer [[Reihenfolge]] durch Vertauschen ihrer [[Element (Mathematik)|Elemente]]. In der Mathematik ist eine Permutation eine [[bijektiv]]e Selbstabbildung einer in der Regel endlichen Menge. Umgangssprachlich findet der Begriff bisweilen auch als Synonym für „(lineare bzw. der-Reihe-nach) Anordnung“ Verwendung.<br /> <br /> == Beispiele ==<br /> * „ANGSTBUDE“ entsteht aus „BUNDESTAG“ durch Permutation der Buchstaben ([[Anagramm]]).<br /> * Das Mischen der Karten eines Kartenspiels ist eine Permutation auf der Menge der Karten.<br /> * Der Stellungswechsel nach Eroberung des Aufschlagsrechts im [[Volleyball]] (Rotieren) ist eine Permutation der Spieler.<br /> * Sortieralgorithmen wie zum Beispiel der [[Bubble Sort]] arbeiten mit sukzessivem Vertauschen, d.&amp;nbsp;h. mit der Hintereinanderausführung von speziellen Permutationen, sogenannten Transpositionen (siehe unten).<br /> <br /> == Formale Definition ==<br /> Eine &lt;math&gt;n&lt;/math&gt;-stellige Permutation ist eine [[bijektiv]]e [[Funktion (Mathematik)|Abbildung]] &lt;math&gt;\sigma \colon X \rightarrow X&lt;/math&gt; einer &lt;math&gt;n&lt;/math&gt;-elementigen Menge &lt;math&gt;X&lt;/math&gt; auf sich selbst. Für eine &lt;math&gt;n&lt;/math&gt;-elementige Menge gibt es genau [[Fakultät (Mathematik)|''n''!]] mögliche Permutationen. Durch eine Permutation wird somit eine [[Ordnungsrelation#Totalordnung | Totalordnung]] zwischen den Elementen festgelegt. Da umgekehrt jede Totalordnung durch eine Permutation vermittelt wird, kann man sich bei der mathematischen Betrachtung von Permutationen stets auf die ersten n natürlichen Zahlen als Referenzmenge bei endlichen Permutationen beschränken.<br /> <br /> Die &lt;math&gt;n&lt;/math&gt;-stelligen Permutationen der ersten &lt;math&gt;n&lt;/math&gt; natürlichen Zahlen &lt;math&gt;1, 2, 3, \dotsc, n&lt;/math&gt; bilden mit der Komposition von Abbildungen als Verknüpfung die [[symmetrische Gruppe]] &lt;math&gt;S_n&lt;/math&gt; (mit &lt;math&gt;n!&lt;/math&gt; Elementen). Für die symmetrische Gruppe einer beliebigen Menge &lt;math&gt;X_n&lt;/math&gt; schreibt man allgemein &lt;math&gt;S(X_n)&lt;/math&gt;. Ihr neutrales Element ist die [[Identische Abbildung|Identität]] (abgekürzt id), also diejenige Permutation, die alle Elemente an ihrem Platz belässt. Zu jeder Permutation &lt;math&gt;\sigma&lt;/math&gt; gibt es genau eine inverse Permutation &lt;math&gt;\sigma^{-1}&lt;/math&gt; mit &lt;math&gt;\sigma \circ \sigma^{-1} = \sigma^{-1} \circ \sigma = \mathrm{id}&lt;/math&gt;.<br /> <br /> Die symmetrischen Gruppen spielen in der Mathematik eine bedeutende Rolle. Beispielsweise ist nach dem [[Satz von Cayley]] jede [[endliche Gruppe]] zu einer Untergruppe einer symmetrischen Gruppe [[Isomorphismus|isomorph]].<br /> <br /> == Mathematische Schreibweisen und Darstellungen ==<br /> Es gibt im Wesentlichen vier Arten zur Beschreibung einer &lt;math&gt;n&lt;/math&gt;-stelligen Permutation: Matrixdarstellung, Zykelschreibweise&lt;!-- nicht Zyklenschreibweise --&gt;, Tupelschreibweise und Permutationsmatrix. Im Folgenden bezeichnen wir die &lt;math&gt;n&lt;/math&gt; Elemente von &lt;math&gt;X_n&lt;/math&gt; mit &lt;math&gt;1,2,\dotsc,n&lt;/math&gt; und es sei &lt;math&gt;\sigma \in S_n&lt;/math&gt;.<br /> <br /> === Matrixdarstellung ===<br /> In der ausführlichen Darstellung der Permutation &lt;math&gt;\sigma&lt;/math&gt; schreibt man diese als &lt;math&gt;(2\times n)&lt;/math&gt;-[[Matrix (Mathematik)|Matrix]]. In der oberen Zeile stehen die Elemente von &lt;math&gt;X_n&lt;/math&gt; (in beliebiger Reihenfolge). Ist &lt;math&gt; X_n = \{1,\dotsc,n\} &lt;/math&gt;, dann schreibt man im Allgemeinen die Zahlen von &lt;math&gt;1&lt;/math&gt; bis &lt;math&gt;n&lt;/math&gt; nacheinander in die erste Zeile. Unter jedes &lt;math&gt;x\in X_n&lt;/math&gt; schreibt man in die zweite Zeile den Funktionswert &lt;math&gt;\sigma(x)&lt;/math&gt;. Auch in der zweiten Zeile steht somit jedes Element von &lt;math&gt;X_n&lt;/math&gt; genau einmal.<br /> <br /> :&lt;math&gt;\sigma = \begin{pmatrix} 1 &amp; 2 &amp; \cdots &amp; n \\ \sigma\left(1\right) &amp; \sigma\left(2\right) &amp; \cdots &amp; \sigma\left(n\right) \end{pmatrix}&lt;/math&gt;<br /> <br /> === Zykelschreibweise&lt;!-- nicht Zyklenschreibweise --&gt; ===<br /> Die Zykelschreibweise&lt;!-- nicht Zyklenschreibweise --&gt; ist kompakter und benötigt nur eine Zeile. Man beginnt mit einem beliebigen Element &lt;math&gt;a\in X_n&lt;/math&gt; und schreibt <br /> :&lt;math&gt;\left(a \; \sigma(a) \; \sigma^2(a) \; \cdots \; \sigma^{\ell_a-1}(a)\right)&lt;/math&gt;,<br /> wobei &lt;math&gt;\sigma^k&lt;/math&gt; die &lt;math&gt;k&lt;/math&gt;-fache Hintereinanderausführung von &lt;math&gt;\sigma&lt;/math&gt; bezeichnet und &lt;math&gt;\ell_a&lt;/math&gt; die kleinste natürliche Zahl mit &lt;math&gt;\sigma^{\ell_a}(a) = a&lt;/math&gt; ist. Eine solche Klammer heißt ein ''Zykel'' und &lt;math&gt;\ell_a&lt;/math&gt; ist seine Länge. Gibt es weitere Elemente in &lt;math&gt;X_n&lt;/math&gt;, die noch nicht notiert wurden, so wählt man ein solches Element &lt;math&gt;b&lt;/math&gt; und schreibt einen weiteren Zykel &lt;math&gt;(b \; \sigma(b) \; \cdots \; \sigma^{\ell_b-1}(b))&lt;/math&gt; der Länge &lt;math&gt;\ell_b&lt;/math&gt;. Man fährt so lange fort, bis jedes Element genau einmal notiert wurde. Klammern, in denen nur ein Element steht, können anschließend wieder gestrichen werden.<br /> Diese Darstellung ist nicht eindeutig: Die Reihenfolge der Zykel ist beliebig wählbar und in jedem Zykel dürfen die Elemente zyklisch vertauscht werden.<br /> Die Identität id notiert man auch als leere Klammer (), als (1) oder als &lt;math&gt;\epsilon&lt;/math&gt;. Die inverse Permutation erhält man, indem man in der Zykelschreibweise in jedem Zykel die Elemente in der umgekehrten Reihenfolge schreibt.<br /> <br /> : &lt;math&gt;\sigma = (124)(35)&lt;/math&gt; bedeutet beispielsweise, dass &lt;math&gt;\sigma&lt;/math&gt; 1 auf 2, 2 auf 4 und 4 auf 1 abbildet und zusätzlich 3 auf 5 und 5 auf 3. Es gilt &lt;math&gt;\sigma^{-1} = (421)(53) = (142)(35)&lt;/math&gt;.<br /> <br /> Eine Permutation, die &lt;math&gt;r&lt;/math&gt; Elemente zyklisch vertauscht und die übrigen Elemente fest lässt, wird in dieser Notation als ein einzelner Zykel der Länge &lt;math&gt;r&lt;/math&gt; geschrieben und &lt;math&gt;r&lt;/math&gt;-Zykel genannt. Ein 2-Zykel, also eine Vertauschung zweier Elemente, heißt auch Transposition. Jeder Zykel und damit auch jede Permutation lässt sich als Komposition von Transpositionen schreiben.<br /> <br /> === Tupelschreibweise ===<br /> Bei der Tupelschreibweise schreibt man die Funktionswerte &lt;math&gt;\sigma(x)&lt;/math&gt; in eine Zeile.<br /> :&lt;math&gt;\sigma = \left(\sigma\left(1\right),\sigma\left(2\right),\dotsc,\sigma\left(n\right)\right)&lt;/math&gt;<br /> Sie enthält somit nur noch die zweite Zeile der Matrixdarstellung. Da dadurch die Information über den &lt;math&gt;x&lt;/math&gt;-Wert zu den &lt;math&gt;\sigma(x)&lt;/math&gt; verloren geht, kann die Tupelschreibweise nur verwendet werden, wenn für die zugrundeliegende Menge eine Reihenfolge festgelegt wurde. Anhand dieser Reihenfolge lässt sich dann die erste Zeile der Matrixdarstellung rekonstruieren.<br /> <br /> Die Tupelschreibweise wird leicht mit der Zykelschreibweise verwechselt, besonders da manche Autoren die Kommata weglassen.<br /> <br /> === Permutationsmatrix ===<br /> [[Datei:Symmetric group 3; Cayley table; matrices.svg|thumb|Matrizen der Permutationen dreier Elemente]]<br /> {{Hauptartikel|Permutationsmatrix}}<br /> <br /> Diese Darstellung ist nicht zu verwechseln mit der Matrixdarstellung. Bei dieser Darstellung wird ein [[Vektor]] von links mit einer Permutationsmatrix multipliziert, wodurch die Elemente des Vektors permutiert werden.<br /> <br /> ;Definition:<br /> <br /> Sei &lt;math&gt;X_n=(x_1,x_2,\dotsc,x_n) &lt;/math&gt; das &lt;math&gt;n&lt;/math&gt;-Tupel und &lt;math&gt;P_\sigma \in \mathbb{N}^{n\times n}&lt;/math&gt; die Permutationsmatrix.<br /> <br /> Der Permutation &lt;math&gt;\sigma = \begin{pmatrix} x_1 &amp; x_2 &amp; \dotso &amp; x_n \\ \sigma\left(x_1\right) &amp; \sigma\left(x_2\right) &amp; \dotso &amp; \sigma\left(x_n\right) \end{pmatrix}&lt;/math&gt; entspricht dann die Matrix <br /> :&lt;math&gt; P_\sigma=<br /> \begin{pmatrix}<br /> p_{11} &amp; \dots &amp;p_{1n} \\<br /> \vdots &amp;\ddots &amp;\vdots \\<br /> p_{n1} &amp; \dots &amp;p_{nn}<br /> \end{pmatrix}<br /> = (p_{j,k})_{1\leq j,k \leq n} \quad\text{ mit }\quad p_{j,k}=\begin{cases} 1, &amp; \text{wenn }\sigma(x_j)=x_k\text{ gilt } \\ 0, &amp; \text{wenn } \sigma(x_j) \ne x_k\text{ gilt }\end{cases}<br /> &lt;/math&gt;<br /> <br /> Der Vektor &lt;math&gt;\overline{x} =\begin{pmatrix}x_1 \\ x_2 \\ \vdots \\ x_n \\\end{pmatrix}&lt;/math&gt; wird permutiert, indem man ihn von links mit &lt;math&gt;P_\sigma&lt;/math&gt; multipliziert:<br /> &lt;math&gt;P_\sigma \cdot \begin{pmatrix}x_1 \\ x_2 \\ \vdots \\ x_n \\\end{pmatrix} = \begin{pmatrix} \sigma(x_1) \\ \sigma(x_2) \\ \vdots \\ \sigma(x_n) \\\end{pmatrix}&lt;/math&gt;<br /> <br /> ;Bemerkung:<br /> <br /> Die [[identische Abbildung]] wird dargestellt durch die [[Einheitsmatrix]] .<br /> <br /> === Beispiele ===<br /> * Ein einfaches Beispiel in verschiedenen Schreibweisen: Es sei &lt;math&gt;\sigma_1 \colon \{a,b,c \} \rightarrow \{a,b,c \}&lt;/math&gt; durch &lt;math&gt;\sigma_1\left(a\right):=b, \sigma_1\left(b\right):=a \mbox{ und } \sigma_1\left(c\right):=c &lt;/math&gt; gegeben. Dann gilt<br /> :{|<br /> |-<br /> | '''Matrixdarstellung:'''<br /> | &lt;math&gt;\sigma_1 = \begin{pmatrix} a &amp; b &amp; c \\ b &amp; a &amp; c \end{pmatrix}&lt;/math&gt; <br /> |-<br /> | '''Zykelschreibweise:'''<br /> | &lt;math&gt;\sigma_1 = \left(a b\right)\left(c\right) = \left(a b\right)&lt;/math&gt; – &lt;math&gt;a&lt;/math&gt; und &lt;math&gt;b&lt;/math&gt; werden vertauscht, &lt;math&gt;c&lt;/math&gt; wird gehalten<br /> |-<br /> | '''Tupelschreibweise:'''<br /> | &lt;math&gt;\sigma_1 = \left(b,a,c\right)&lt;/math&gt; oder auch &lt;math&gt;\sigma_1 = \left(b\ a\ c\right)&lt;/math&gt;<br /> |-<br /> | '''Permutationsmatrix:'''<br /> | &lt;math&gt;P \cdot \overline{x}=<br /> \begin{pmatrix}<br /> 0 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{pmatrix}<br /> \cdot \begin{pmatrix}a \\ b \\ c \\\end{pmatrix}<br /> = \begin{pmatrix}b \\ a \\ c \\\end{pmatrix}&lt;/math&gt; – &lt;math&gt;a&lt;/math&gt; und &lt;math&gt;b&lt;/math&gt; werden vertauscht, &lt;math&gt;c&lt;/math&gt; wird gehalten<br /> |}<br /> <br /> * Ein weiteres Beispiel: Sei &lt;math&gt;\sigma_2 \in S_4&lt;/math&gt; durch &lt;math&gt;\sigma_2 \colon \{1, 2, 3, 4 \} \rightarrow \{1, 2, 3, 4 \}&lt;/math&gt; und &lt;math&gt;\sigma_2\left(1\right):=4, \sigma_2\left(2\right):=3, \sigma_2\left(3\right):=2 \mbox{ und } \sigma_2\left(4\right):=1 &lt;/math&gt; gegeben. Dann schreibt man<br /> :{|<br /> |-<br /> | '''Matrixdarstellung:'''<br /> | &lt;math&gt;\sigma_2 = \begin{pmatrix} 1 &amp; 2 &amp; 3 &amp; 4 \\ 4 &amp; 3 &amp; 2 &amp; 1 \end{pmatrix}&lt;/math&gt;<br /> |-<br /> | '''Zykelschreibweise:'''<br /> | &lt;math&gt;\sigma_2 = \left(1\ 4\right)\left(2\ 3\right)&lt;/math&gt;<br /> |-<br /> | '''Tupelschreibweise:'''<br /> | &lt;math&gt;\sigma_2 = \left(4,3,2,1\right)&lt;/math&gt; oder auch &lt;math&gt;\sigma_2 = \left(4\ 3\ 2\ 1\right)&lt;/math&gt;<br /> |-<br /> | '''Permutationsmatrix:'''<br /> | &lt;math&gt;P \cdot \overline{x}=<br /> \begin{pmatrix}<br /> 0 &amp; 0 &amp; 0 &amp; 1\\<br /> 0 &amp; 0 &amp; 1 &amp; 0\\<br /> 0 &amp; 1 &amp; 0 &amp; 0\\<br /> 1 &amp; 0 &amp; 0 &amp; 0\\<br /> \end{pmatrix}<br /> \cdot \begin{pmatrix}1 \\ 2 \\ 3 \\ 4 \\\end{pmatrix}<br /> = \begin{pmatrix}4 \\ 3 \\ 2 \\ 1 \\\end{pmatrix}&lt;/math&gt; <br /> |}<br /> <br /> Keine der Darstellungen ist eindeutig.<br /> <br /> == Fixpunkte ==<br /> Elemente, deren Positionen sich bei der Permutation nicht ändern, nennt man [[Fixpunkt (Mathematik)|Fixpunkte]] der Permutation. Bei der Permutation<br /> :&lt;math&gt;\begin{pmatrix} 1 &amp; 2 &amp; 3 &amp; 4 \\ 1 &amp; 3 &amp; 2 &amp; 4 \end{pmatrix}&lt;/math&gt; <br /> sind dies beispielsweise die Zahlen 1 und 4. In der Matrixdarstellung erkennt man Fixpunkte daran, dass der obere und untere Eintrag der jeweiligen Spalte gleich ist. In der Zykelschreibweise sind Fixpunkte genau die Elemente, die nicht erscheinen. Für das obige Beispiel lautet die Zykelschreibweise &lt;math&gt;(2 3)&lt;/math&gt;; die Fixpunkte 1 und 4 erscheinen hier nicht. In der Permutationsmatrix sind die den Fixpunkten zugewiesenen Einträge der Hauptdiagonale 1. In der Permutationsmatrix zum obigen Beispiel sind dies die Einträge &lt;math&gt;p_{1,1}&lt;/math&gt; und &lt;math&gt;p_{4,4}&lt;/math&gt;:<br /> :&lt;math&gt;\begin{pmatrix}<br /> 1 &amp; 0 &amp; 0 &amp; 0\\<br /> 0 &amp; 0 &amp; 1 &amp; 0\\<br /> 0 &amp; 1 &amp; 0 &amp; 0\\<br /> 0 &amp; 0 &amp; 0 &amp; 1<br /> \end{pmatrix}&lt;/math&gt;.<br /> <br /> Eine Permutation ohne Fixpunkte wird auch [[Derangement]] genannt. Ein Derangement ist also ein „totale Versetzung“, bei der kein einziges Element auf seinem Platz bleibt. Die Anzahl der Derangements einer Menge mit &lt;math&gt;n&lt;/math&gt; Elementen ist<br /> :&lt;math&gt;n! \cdot\sum_{i=0}^n {\left(-1\right)^i \over i!}.&lt;/math&gt;<br /> Diese Zahl heißt [[Subfakultät]] und wird mit &lt;math&gt;!n&lt;/math&gt; bezeichnet.<br /> <br /> Allgemeiner lässt sich die Anzahl der Permutationen mit einer gegebenen Anzahl von Fixpunkten (sog. partielle Derangements) mit Hilfe der [[Rencontres-Zahl]]en bestimmen.<br /> <br /> == Verknüpfung von Permutationen ==<br /> Zwei &lt;math&gt;n&lt;/math&gt;-stellige Permutationen lassen sich nacheinander ausführen, indem man die erste Permutation anwendet und auf deren Resultat dann die zweite Permutation. Diese Hintereinanderausführung wird auch [[Komposition (Mathematik)|Komposition]] , Verknüpfung oder Produkt zweier Permutationen genannt und ist selbst wieder eine &lt;math&gt;n&lt;/math&gt;-stellige Permutation.<br /> <br /> Eine Menge von Permutationen einer endlichen Menge ''M'', erzeugt mit der Komposition als Verknüpfung eine [[Permutationsgruppe]] auf ''M''.<br /> <br /> === Beispiele zur Komposition von Permutationen ===<br /> Beispiele zur Verknüpfung:<br /> * &lt;math&gt;\begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 \\<br /> 3 &amp; 1 &amp; 2<br /> \end{pmatrix} \circ \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 \\<br /> 1 &amp; 3 &amp; 2<br /> \end{pmatrix} = \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 \\<br /> 3 &amp; 2 &amp; 1<br /> \end{pmatrix}&lt;/math&gt;<br /> :Man beachte, dass die Verknüpfungen von rechts nach links ausgewertet werden: In der zweiten Matrix geht die 1 in die 1, in der ersten die 1 in die 3. Im Ergebnis der Verknüpfung geht also die 1 in die 3. Ebenso: zweite Matrix 2 → 3, erste Matrix 3 → 2, Ergebnis 2 → 2. Und: zweite Matrix 3 → 2, erste Matrix 2 → 1, Ergebnis 3 → 1.<br /> * &lt;math&gt;(132)\circ(23)=(1 3)&lt;/math&gt;<br /> * &lt;math&gt;(23)\circ(132)=(1 2)&lt;/math&gt;<br /> <br /> Die beiden letzten Beispiele zeigen, dass die Reihenfolge im Allgemeinen von Bedeutung ist: Die symmetrische Gruppe &lt;math&gt;S_n&lt;/math&gt; ist für &lt;math&gt;n &gt; 2&lt;/math&gt; nicht [[Abelsche Gruppe|abelsch]].<br /> Die Reihenfolge kann nur unbeachtet bleiben, wenn die miteinander verknüpften Zykel [[disjunkt]] sind, d.&amp;nbsp;h. jedes Element der Permutation kommt nur in einem Zykel vor. Beispiel:<br /> * &lt;math&gt;\begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 4 &amp; 5<br /> \end{pmatrix} \circ \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 1 &amp; 2 &amp; 3 &amp; 5 &amp; 4<br /> \end{pmatrix} = \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 5 &amp; 4<br /> \end{pmatrix} = \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 1 &amp; 2 &amp; 3 &amp; 5 &amp; 4 <br /> \end{pmatrix} \circ \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 4 &amp; 5<br /> \end{pmatrix}&lt;/math&gt;<br /> <br /> * &lt;math&gt;(132)\circ(45)= <br /> \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 5 &amp; 4<br /> \end{pmatrix} =<br /> (45) \circ(132)&lt;/math&gt;<br /> <br /> == Ordnung ==<br /> Für jede Permutation &lt;math&gt;\sigma&lt;/math&gt; gibt es eine kleinste natürliche Zahl &lt;math&gt;k&lt;/math&gt; derart, dass die &lt;math&gt;k&lt;/math&gt;-malige Hintereinanderausführung von &lt;math&gt;\sigma&lt;/math&gt; die Identität ergibt: &lt;math&gt;\sigma^k = \mbox{id}&lt;/math&gt;. Diese Zahl wird Ordnung von &lt;math&gt;\sigma&lt;/math&gt; genannt. Sie ist die [[Elementordnung]] von &lt;math&gt;\sigma&lt;/math&gt; als Gruppenelement der Symmetrischen Gruppe. Die Ordnung einer Permutation lässt sich leicht aus der Zykeldarstellung bestimmen: Sie ist das [[Kleinstes gemeinsames Vielfaches|kleinste gemeinsame Vielfache]] (kgV) der Längen der disjunkten Zykeln von &lt;math&gt;\sigma&lt;/math&gt;. Beispielsweise ist die Ordnung der Permutation &lt;math&gt;(1 2 4)(3 5)&lt;/math&gt; das kgV von 3 und 2, also 6.<br /> <br /> Eine Permutation &lt;math&gt;\sigma&lt;/math&gt; mit &lt;math&gt;\sigma^2 = \mbox{id}&lt;/math&gt;, oder äquivalent &lt;math&gt;\sigma^{-1} = \sigma&lt;/math&gt;, heißt Involution oder selbstinvers. Die Involutionen sind genau die Permutationen der Ordnung 2 sowie die Identität selbst (die einzige Permutation der Ordnung 1). Eine Permutation ist genau dann eine Involution, wenn ihre Zykeldarstellung maximal Zykel der Länge 2 (also Transpositionen) enthält.<br /> <br /> == Einige Eigenschaften von endlichen Permutationen ==<br /> Nur falls die Menge aus der die Elemente der Permutation stammen, mit einer Totalordnung versehen ist, machen folgende Begriffe einen Sinn:<br /> * „left-to-right maximum“ (Links-Rechts-Maximum, kurz: ''LR-Maximum''). Bei einer Permutation in Wortschreibweise &lt;math&gt;a = a_1 \dotso a_i \dotso a_n&lt;/math&gt; nennt man &lt;math&gt;a_i&lt;/math&gt; genau dann ein ''LR-Maximum'', wenn &lt;math&gt;a_i &gt; a_j&lt;/math&gt; mit &lt;math&gt;1 \leq j \leq i-1&lt;/math&gt;. Diese Eigenschaft ist von Nutzen, wenn man die normalisierte Zykeldarstellung ohne Klammern schreiben möchte. Man kann unter Ausnutzung der LR-Maxima zeigen, dass dann eine [[Bijektion]] zwischen der normalisierten Zykeldarstellung in eine Permutation existiert.&lt;ref&gt;Vorlesungsskript Prof. Welker: [http://www.mathematik.uni-marburg.de/~welker/vorlesung/dima07/kapitel1.pdf Kapitel 1] &amp; [http://www.mathematik.uni-marburg.de/~welker/vorlesung/dima07/kapitel3.pdf Kapitel 3] ([[Portable Document Format|PDF]])&lt;/ref&gt; Bemerkung: &lt;math&gt;a_1&lt;/math&gt; ist immer ein LR-Maximum.<br /> * ''alternierend'' nennt man eine Permutation, wenn beim durchlaufen dieser sich die Ordnungsrelation der vorgegebenen Totalordnung von nebeneinanderstehenden Elementen dauernd ändert. Formal, wenn für keinen Index i, mit &lt;math&gt;1 &lt; i &lt; n&lt;/math&gt;, weder &lt;math&gt;a_{i-1} &lt; a_i &lt; a_{i+1}&lt;/math&gt; noch &lt;math&gt;a_{i-1} &gt; a_i &gt; a_{i+1}&lt;/math&gt; ist, wobei &lt;math&gt;a_k&lt;/math&gt; das k-te Element einer n-elementigen Permutation bezeichnet.<br /> * Inversion/[[Fehlstand]]: Man nennt ein Paar &lt;math&gt; (i,j) &lt;/math&gt; von Elementen Inversion bzgl. &lt;math&gt; \sigma &lt;/math&gt;, falls gilt<br /> *: &lt;math&gt; i &lt; j &lt;/math&gt; und &lt;math&gt; \sigma\left(i\right) &gt; \sigma\left(j\right) &lt;/math&gt;. Zwei Elemente bilden also genau dann eine Inversion, wenn nach Anwenden der Permutation das größere vor dem kleineren Element steht.<br /> <br /> '''Beispiel:''' Gegeben sei die Permutation &lt;math&gt; \pi = \left(3\ 2\ 5\ 1\ 4\right) &lt;/math&gt; (in Tupelschreibweise). &lt;math&gt; 1 &lt; 2 &lt;/math&gt;, aber 2 steht hier vor 1, also sind 1, 2 eine Inversion bezüglich &lt;math&gt; \pi &lt;/math&gt;.<br /> <br /> Ordnet man in einer Tabelle jedem Element die Anzahl derjenigen Elemente zu, die nach der Permutation links von ihm stehen, obwohl sie größer sind, so erhält man die sogenannte [[Inversionstafel]] der Permutation. Umgekehrt kann man aus jeder solchen Tafel die Permutation eindeutig bestimmen.<br /> <br /> '''Beispiel:''' Gegeben sei die Permutation &lt;math&gt; \left(3\ 2\ 5\ 1\ 4\right) &lt;/math&gt; (in Tupelschreibweise). Dann haben wir als Inversionstafel:<br /> <br /> :&lt;math&gt;<br /> \begin{pmatrix}1&amp;2&amp;3&amp;4&amp;5 \\ 3 &amp; 1 &amp; 0 &amp; 1 &amp; 0 \end{pmatrix}<br /> &lt;/math&gt;<br /> <br /> * [[Signum (Mathematik)#Signum von Permutationen|Signum]]: Sei mit &lt;math&gt;i\left(\sigma\right)&lt;/math&gt; die Anzahl der Inversionen von &lt;math&gt;\sigma&lt;/math&gt; bezeichnet. Dann ist das [[Signum (Mathematik)|Signum]] von &lt;math&gt;\sigma&lt;/math&gt; gegeben durch &lt;math&gt;\mathrm{sgn}\left(\sigma\right) = \left(-1\right)^{i\left(\sigma\right)}&lt;/math&gt;.<br /> Eine Permutation hat also Signum 1, falls die Anzahl ihrer Inversionen gerade ist, ansonsten Signum −1.<br /> <br /> Das Signum lässt sich auch über folgende Formel bestimmen:<br /> : &lt;math&gt;\mathrm{sgn}(\sigma) = (-1)^{m_1+m_2+\dotsb+m_r+r},&lt;/math&gt;<br /> wobei &lt;math&gt;r&lt;/math&gt; die Anzahl der Zykel und &lt;math&gt;m_i&lt;/math&gt; die Länge des &lt;math&gt;i&lt;/math&gt;-ten Zykels sind &lt;math&gt;\left(i=1,\dotsc,r\right)&lt;/math&gt;.<br /> <br /> * Typ: Sei mit &lt;math&gt; b_i &lt;/math&gt; die Anzahl der Zykel von &lt;math&gt; \pi &lt;/math&gt; bezeichnet, welche die Länge &lt;math&gt; i &lt;/math&gt; haben. Dann ist der Typ einer Permutation der formale Ausdruck<br /> *: &lt;math&gt;1^{b_1} 2^{b_2} 3^{b_3} \dotsm n^{b_n}.&lt;/math&gt;<br /> <br /> Formal bedeutet hierbei, dass das Produkt und die Potenzen nicht tatsächlich ausgerechnet werden.<br /> <br /> * Auf weitere Eigenschaften der Permutation und der Verkettung wird bei der [[Symmetrische Gruppe|Symmetrischen Gruppe]] eingegangen.<br /> <br /> == Der Permutaeder ==<br /> [[File:Bitruncated cubic honeycomb2.png|thumb|Tesselation des Raumes durch Permutaeder]]<br /> Der Permutaeder &lt;math&gt;P_n&lt;/math&gt; ist ein konvexer [[Polyeder]], welcher wie folgt definiert ist: Jede Permutation<br /> &lt;math&gt;\sigma \in S_n&lt;/math&gt; wird in Tupelschreibweise geschrieben als Vektor im &lt;math&gt;\mathbb{R}^n&lt;/math&gt; interpretiert.<br /> Die [[Konvexe Hülle|konvexe Hülle]] dieser Vektoren ergibt dann &lt;math&gt;P_n&lt;/math&gt; :<br /> <br /> :&lt;math&gt;<br /> P_n := \operatorname{conv} \left\{ \sigma = (\sigma(1), \sigma(2), \ldots, \sigma(n)) | \sigma \in S_n \right\}<br /> &lt;/math&gt;<br /> <br /> Der Permutaeder lässt sich außerdem auch durch den Schnitt von [[Halbraum|Halbräumen]] beschreiben:<br /> <br /> :&lt;math&gt;<br /> P_n = \{ x \in \mathbb{R}^n \; |<br /> \; \sum_{i=1}^n x_i = { n + 1 \choose 2 } , \;<br /> \forall S \subset \{1,\ldots, n\} : \sum_{i \in S} x_i \geq { | S | + 1 \choose 2 } \}<br /> &lt;/math&gt;<br /> <br /> Die Ecken des Permutaeders sind gerade die Permutationen in Tupelschreibweise, zwei Permutationen<br /> sind genau dann durch eine Kante des Permutaeders verbunden, wenn sie sich durch eine Transposition<br /> benachbarter Elemente ineinander überführen lassen.<br /> <br /> Der Permutaeder &lt;math&gt;P_n&lt;/math&gt; liegt in der &lt;math&gt;(n-1)&lt;/math&gt;-dimensionalen Hyperebene<br /> <br /> :&lt;math&gt; H = \{ x \in \mathbb{R}^n \; | \; x_1 + x_2 + \ldots + x_n = {n + 1 \choose 2} \}&lt;/math&gt;<br /> <br /> Die Hyperebene &lt;math&gt;H&lt;/math&gt; besteht gerade aus den Punkten,<br /> deren Koordinatensumme &lt;math&gt;{n + 1 \choose 2} = \frac{n(n + 1)}{2}&lt;/math&gt; ist.<br /> &lt;math&gt;H&lt;/math&gt; besitzt außerdem eine [[Tessellation]] durch unendlich viele [[Parallelverschiebung|parallelverschobene]] Kopien des Permutaeders. Die Symmetriegruppe dieser Tesselation ist das durch die folgenden Gleichungen gegebene &lt;math&gt;(n-1)&lt;/math&gt;-dimensionale [[Gitter (Mathematik)|Gitter]]:<br /> <br /> :&lt;math&gt;<br /> x_1 + x_2 + \ldots + x_n = 0, \; x_1 \equiv x_2 \equiv \ldots x_n \mod n<br /> &lt;/math&gt;<br /> <br /> == Siehe auch ==<br /> * [[Permutiertes Register]]<br /> * [[Fakultätsbasiertes Zahlensystem]]<br /> * [[Kombinatorik]]<br /> <br /> == Literatur ==<br /> * [[Albrecht Beutelspacher]]: ''Lineare Algebra.'' 6. durchgesehene und ergänzte Auflage. Vieweg, Wiesbaden 2003, ISBN 3-528-56508-X, Kapitel 7.2 ''Permutationen''.<br /> * [[Michael Artin]]: ''Algebra.'' Birkhäuser, Basel u. a. 1993, ISBN 3-7643-2927-0, Kapitel 1.4 ''Permutationsmatrizen''.<br /> <br /> == Weblinks ==<br /> {{Wiktionary|Permutation}}<br /> * [http://www.reiter1.com/Glossar/Kombinatorik.htm Kombinatorik: Anwendung Permutation, Kombination und Variation]<br /> <br /> == Einzelnachweise ==<br /> &lt;references /&gt;<br /> <br /> [[Kategorie:Gruppentheorie]]<br /> [[Kategorie:Kombinatorik]]<br /> [[Kategorie:Lineare Algebra]]<br /> <br /> [[am:ሰልፍ]]<br /> [[ar:تبديل (رياضيات)]]<br /> [[bg:Пермутация]]<br /> [[bn:বিন্যাস]]<br /> [[ca:Permutació]]<br /> [[cs:Permutace]]<br /> [[da:Permutation]]<br /> [[el:Μετάθεση (μαθηματικά)]]<br /> [[en:Permutation]]<br /> [[eo:Permutaĵo]]<br /> [[es:Permutación]]<br /> [[et:Permutatsioon]]<br /> [[eu:Permutazio]]<br /> [[fa:جایگشت]]<br /> [[fi:Permutaatio]]<br /> [[fr:Permutation]]<br /> [[gu:ક્રમચય]]<br /> [[he:תמורה (מתמטיקה)]]<br /> [[hi:क्रमचय]]<br /> [[hr:Permutacija]]<br /> [[hu:Permutáció]]<br /> [[id:Permutasi]]<br /> [[it:Permutazione]]<br /> [[ja:置換 (数学)]]<br /> [[kk:Алмастыру]]<br /> [[kn:ಕ್ರಮಪಲ್ಲಟನೆ]]<br /> [[ko:순열]]<br /> [[lt:Kėliniai]]<br /> [[mk:Пермутација]]<br /> [[nl:Permutatie]]<br /> [[nn:Permutasjon]]<br /> [[no:Permutasjon]]<br /> [[pl:Permutacja]]<br /> [[pt:Permutação]]<br /> [[ro:Permutare]]<br /> [[ru:Перестановка]]<br /> [[scn:Pirmutazzioni]]<br /> [[simple:Permutation]]<br /> [[sk:Permutácia (algebra)]]<br /> [[sl:Permutacija]]<br /> [[sq:Permutacioni]]<br /> [[sr:Пермутација]]<br /> [[sv:Permutation]]<br /> [[ta:வரிசைமாற்றம்]]<br /> [[te:ప్రస్తారణ]]<br /> [[th:การเรียงสับเปลี่ยน]]<br /> [[tr:Permütasyon]]<br /> [[uk:Перестановка]]<br /> [[ur:تبدل کامل]]<br /> [[vi:Hoán vị]]<br /> [[zh:置換]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Permutation&diff=110187199 Permutation 2012-11-06T17:09:33Z <p>Mathmon: Sektion Permutaeder hinzugefügt</p> <hr /> <div>[[Datei:Permutations RGB.svg|thumb|120px|Alle 6 Permutationen dreier Kugeln]]<br /> <br /> Unter einer '''Permutation''' (von {{laS|''permutare''}} ‚(ver)tauschen‘) versteht man die Veränderung der Anordnung von (meistens verschiedenen) Objekten in einer [[Reihenfolge]] durch Vertauschen ihrer [[Element (Mathematik)|Elemente]]. In der Mathematik ist eine Permutation eine [[bijektiv]]e Selbstabbildung einer in der Regel endlichen Menge. Umgangssprachlich findet der Begriff bisweilen auch als Synonym für „(lineare bzw. der-Reihe-nach) Anordnung“ Verwendung.<br /> <br /> == Beispiele ==<br /> * „ANGSTBUDE“ entsteht aus „BUNDESTAG“ durch Permutation der Buchstaben ([[Anagramm]]).<br /> * Das Mischen der Karten eines Kartenspiels ist eine Permutation auf der Menge der Karten.<br /> * Der Stellungswechsel nach Eroberung des Aufschlagsrechts im [[Volleyball]] (Rotieren) ist eine Permutation der Spieler.<br /> * Sortieralgorithmen wie zum Beispiel der [[Bubble Sort]] arbeiten mit sukzessivem Vertauschen, d.&amp;nbsp;h. mit der Hintereinanderausführung von speziellen Permutationen, sogenannten Transpositionen (siehe unten).<br /> <br /> == Formale Definition ==<br /> Eine &lt;math&gt;n&lt;/math&gt;-stellige Permutation ist eine [[bijektiv]]e [[Funktion (Mathematik)|Abbildung]] &lt;math&gt;\sigma \colon X \rightarrow X&lt;/math&gt; einer &lt;math&gt;n&lt;/math&gt;-elementigen Menge &lt;math&gt;X&lt;/math&gt; auf sich selbst. Für eine &lt;math&gt;n&lt;/math&gt;-elementige Menge gibt es genau [[Fakultät (Mathematik)|''n''!]] mögliche Permutationen. Durch eine Permutation wird somit eine [[Ordnungsrelation#Totalordnung | Totalordnung]] zwischen den Elementen festgelegt. Da umgekehrt jede Totalordnung durch eine Permutation vermittelt wird, kann man sich bei der mathematischen Betrachtung von Permutationen stets auf die ersten n natürlichen Zahlen als Referenzmenge bei endlichen Permutationen beschränken.<br /> <br /> Die &lt;math&gt;n&lt;/math&gt;-stelligen Permutationen der ersten &lt;math&gt;n&lt;/math&gt; natürlichen Zahlen &lt;math&gt;1, 2, 3, \dotsc, n&lt;/math&gt; bilden mit der Komposition von Abbildungen als Verknüpfung die [[symmetrische Gruppe]] &lt;math&gt;S_n&lt;/math&gt; (mit &lt;math&gt;n!&lt;/math&gt; Elementen). Für die symmetrische Gruppe einer beliebigen Menge &lt;math&gt;X_n&lt;/math&gt; schreibt man allgemein &lt;math&gt;S(X_n)&lt;/math&gt;. Ihr neutrales Element ist die [[Identische Abbildung|Identität]] (abgekürzt id), also diejenige Permutation, die alle Elemente an ihrem Platz belässt. Zu jeder Permutation &lt;math&gt;\sigma&lt;/math&gt; gibt es genau eine inverse Permutation &lt;math&gt;\sigma^{-1}&lt;/math&gt; mit &lt;math&gt;\sigma \circ \sigma^{-1} = \sigma^{-1} \circ \sigma = \mathrm{id}&lt;/math&gt;.<br /> <br /> Die symmetrischen Gruppen spielen in der Mathematik eine bedeutende Rolle. Beispielsweise ist nach dem [[Satz von Cayley]] jede [[endliche Gruppe]] zu einer Untergruppe einer symmetrischen Gruppe [[Isomorphismus|isomorph]].<br /> <br /> == Mathematische Schreibweisen und Darstellungen ==<br /> Es gibt im Wesentlichen vier Arten zur Beschreibung einer &lt;math&gt;n&lt;/math&gt;-stelligen Permutation: Matrixdarstellung, Zykelschreibweise&lt;!-- nicht Zyklenschreibweise --&gt;, Tupelschreibweise und Permutationsmatrix. Im Folgenden bezeichnen wir die &lt;math&gt;n&lt;/math&gt; Elemente von &lt;math&gt;X_n&lt;/math&gt; mit &lt;math&gt;1,2,\dotsc,n&lt;/math&gt; und es sei &lt;math&gt;\sigma \in S_n&lt;/math&gt;.<br /> <br /> === Matrixdarstellung ===<br /> In der ausführlichen Darstellung der Permutation &lt;math&gt;\sigma&lt;/math&gt; schreibt man diese als &lt;math&gt;(2\times n)&lt;/math&gt;-[[Matrix (Mathematik)|Matrix]]. In der oberen Zeile stehen die Elemente von &lt;math&gt;X_n&lt;/math&gt; (in beliebiger Reihenfolge). Ist &lt;math&gt; X_n = \{1,\dotsc,n\} &lt;/math&gt;, dann schreibt man im Allgemeinen die Zahlen von &lt;math&gt;1&lt;/math&gt; bis &lt;math&gt;n&lt;/math&gt; nacheinander in die erste Zeile. Unter jedes &lt;math&gt;x\in X_n&lt;/math&gt; schreibt man in die zweite Zeile den Funktionswert &lt;math&gt;\sigma(x)&lt;/math&gt;. Auch in der zweiten Zeile steht somit jedes Element von &lt;math&gt;X_n&lt;/math&gt; genau einmal.<br /> <br /> :&lt;math&gt;\sigma = \begin{pmatrix} 1 &amp; 2 &amp; \cdots &amp; n \\ \sigma\left(1\right) &amp; \sigma\left(2\right) &amp; \cdots &amp; \sigma\left(n\right) \end{pmatrix}&lt;/math&gt;<br /> <br /> === Zykelschreibweise&lt;!-- nicht Zyklenschreibweise --&gt; ===<br /> Die Zykelschreibweise&lt;!-- nicht Zyklenschreibweise --&gt; ist kompakter und benötigt nur eine Zeile. Man beginnt mit einem beliebigen Element &lt;math&gt;a\in X_n&lt;/math&gt; und schreibt <br /> :&lt;math&gt;\left(a \; \sigma(a) \; \sigma^2(a) \; \cdots \; \sigma^{\ell_a-1}(a)\right)&lt;/math&gt;,<br /> wobei &lt;math&gt;\sigma^k&lt;/math&gt; die &lt;math&gt;k&lt;/math&gt;-fache Hintereinanderausführung von &lt;math&gt;\sigma&lt;/math&gt; bezeichnet und &lt;math&gt;\ell_a&lt;/math&gt; die kleinste natürliche Zahl mit &lt;math&gt;\sigma^{\ell_a}(a) = a&lt;/math&gt; ist. Eine solche Klammer heißt ein ''Zykel'' und &lt;math&gt;\ell_a&lt;/math&gt; ist seine Länge. Gibt es weitere Elemente in &lt;math&gt;X_n&lt;/math&gt;, die noch nicht notiert wurden, so wählt man ein solches Element &lt;math&gt;b&lt;/math&gt; und schreibt einen weiteren Zykel &lt;math&gt;(b \; \sigma(b) \; \cdots \; \sigma^{\ell_b-1}(b))&lt;/math&gt; der Länge &lt;math&gt;\ell_b&lt;/math&gt;. Man fährt so lange fort, bis jedes Element genau einmal notiert wurde. Klammern, in denen nur ein Element steht, können anschließend wieder gestrichen werden.<br /> Diese Darstellung ist nicht eindeutig: Die Reihenfolge der Zykel ist beliebig wählbar und in jedem Zykel dürfen die Elemente zyklisch vertauscht werden.<br /> Die Identität id notiert man auch als leere Klammer (), als (1) oder als &lt;math&gt;\epsilon&lt;/math&gt;. Die inverse Permutation erhält man, indem man in der Zykelschreibweise in jedem Zykel die Elemente in der umgekehrten Reihenfolge schreibt.<br /> <br /> : &lt;math&gt;\sigma = (124)(35)&lt;/math&gt; bedeutet beispielsweise, dass &lt;math&gt;\sigma&lt;/math&gt; 1 auf 2, 2 auf 4 und 4 auf 1 abbildet und zusätzlich 3 auf 5 und 5 auf 3. Es gilt &lt;math&gt;\sigma^{-1} = (421)(53) = (142)(35)&lt;/math&gt;.<br /> <br /> Eine Permutation, die &lt;math&gt;r&lt;/math&gt; Elemente zyklisch vertauscht und die übrigen Elemente fest lässt, wird in dieser Notation als ein einzelner Zykel der Länge &lt;math&gt;r&lt;/math&gt; geschrieben und &lt;math&gt;r&lt;/math&gt;-Zykel genannt. Ein 2-Zykel, also eine Vertauschung zweier Elemente, heißt auch Transposition. Jeder Zykel und damit auch jede Permutation lässt sich als Komposition von Transpositionen schreiben.<br /> <br /> === Tupelschreibweise ===<br /> Bei der Tupelschreibweise schreibt man die Funktionswerte &lt;math&gt;\sigma(x)&lt;/math&gt; in eine Zeile.<br /> :&lt;math&gt;\sigma = \left(\sigma\left(1\right),\sigma\left(2\right),\dotsc,\sigma\left(n\right)\right)&lt;/math&gt;<br /> Sie enthält somit nur noch die zweite Zeile der Matrixdarstellung. Da dadurch die Information über den &lt;math&gt;x&lt;/math&gt;-Wert zu den &lt;math&gt;\sigma(x)&lt;/math&gt; verloren geht, kann die Tupelschreibweise nur verwendet werden, wenn für die zugrundeliegende Menge eine Reihenfolge festgelegt wurde. Anhand dieser Reihenfolge lässt sich dann die erste Zeile der Matrixdarstellung rekonstruieren.<br /> <br /> Die Tupelschreibweise wird leicht mit der Zykelschreibweise verwechselt, besonders da manche Autoren die Kommata weglassen.<br /> <br /> === Permutationsmatrix ===<br /> [[Datei:Symmetric group 3; Cayley table; matrices.svg|thumb|Matrizen der Permutationen dreier Elemente]]<br /> {{Hauptartikel|Permutationsmatrix}}<br /> <br /> Diese Darstellung ist nicht zu verwechseln mit der Matrixdarstellung. Bei dieser Darstellung wird ein [[Vektor]] von links mit einer Permutationsmatrix multipliziert, wodurch die Elemente des Vektors permutiert werden.<br /> <br /> ;Definition:<br /> <br /> Sei &lt;math&gt;X_n=(x_1,x_2,\dotsc,x_n) &lt;/math&gt; das &lt;math&gt;n&lt;/math&gt;-Tupel und &lt;math&gt;P_\sigma \in \mathbb{N}^{n\times n}&lt;/math&gt; die Permutationsmatrix.<br /> <br /> Der Permutation &lt;math&gt;\sigma = \begin{pmatrix} x_1 &amp; x_2 &amp; \dotso &amp; x_n \\ \sigma\left(x_1\right) &amp; \sigma\left(x_2\right) &amp; \dotso &amp; \sigma\left(x_n\right) \end{pmatrix}&lt;/math&gt; entspricht dann die Matrix <br /> :&lt;math&gt; P_\sigma=<br /> \begin{pmatrix}<br /> p_{11} &amp; \dots &amp;p_{1n} \\<br /> \vdots &amp;\ddots &amp;\vdots \\<br /> p_{n1} &amp; \dots &amp;p_{nn}<br /> \end{pmatrix}<br /> = (p_{j,k})_{1\leq j,k \leq n} \quad\text{ mit }\quad p_{j,k}=\begin{cases} 1, &amp; \text{wenn }\sigma(x_j)=x_k\text{ gilt } \\ 0, &amp; \text{wenn } \sigma(x_j) \ne x_k\text{ gilt }\end{cases}<br /> &lt;/math&gt;<br /> <br /> Der Vektor &lt;math&gt;\overline{x} =\begin{pmatrix}x_1 \\ x_2 \\ \vdots \\ x_n \\\end{pmatrix}&lt;/math&gt; wird permutiert, indem man ihn von links mit &lt;math&gt;P_\sigma&lt;/math&gt; multipliziert:<br /> &lt;math&gt;P_\sigma \cdot \begin{pmatrix}x_1 \\ x_2 \\ \vdots \\ x_n \\\end{pmatrix} = \begin{pmatrix} \sigma(x_1) \\ \sigma(x_2) \\ \vdots \\ \sigma(x_n) \\\end{pmatrix}&lt;/math&gt;<br /> <br /> ;Bemerkung:<br /> <br /> Die [[identische Abbildung]] wird dargestellt durch die [[Einheitsmatrix]] .<br /> <br /> === Beispiele ===<br /> * Ein einfaches Beispiel in verschiedenen Schreibweisen: Es sei &lt;math&gt;\sigma_1 \colon \{a,b,c \} \rightarrow \{a,b,c \}&lt;/math&gt; durch &lt;math&gt;\sigma_1\left(a\right):=b, \sigma_1\left(b\right):=a \mbox{ und } \sigma_1\left(c\right):=c &lt;/math&gt; gegeben. Dann gilt<br /> :{|<br /> |-<br /> | '''Matrixdarstellung:'''<br /> | &lt;math&gt;\sigma_1 = \begin{pmatrix} a &amp; b &amp; c \\ b &amp; a &amp; c \end{pmatrix}&lt;/math&gt; <br /> |-<br /> | '''Zykelschreibweise:'''<br /> | &lt;math&gt;\sigma_1 = \left(a b\right)\left(c\right) = \left(a b\right)&lt;/math&gt; – &lt;math&gt;a&lt;/math&gt; und &lt;math&gt;b&lt;/math&gt; werden vertauscht, &lt;math&gt;c&lt;/math&gt; wird gehalten<br /> |-<br /> | '''Tupelschreibweise:'''<br /> | &lt;math&gt;\sigma_1 = \left(b,a,c\right)&lt;/math&gt; oder auch &lt;math&gt;\sigma_1 = \left(b\ a\ c\right)&lt;/math&gt;<br /> |-<br /> | '''Permutationsmatrix:'''<br /> | &lt;math&gt;P \cdot \overline{x}=<br /> \begin{pmatrix}<br /> 0 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{pmatrix}<br /> \cdot \begin{pmatrix}a \\ b \\ c \\\end{pmatrix}<br /> = \begin{pmatrix}b \\ a \\ c \\\end{pmatrix}&lt;/math&gt; – &lt;math&gt;a&lt;/math&gt; und &lt;math&gt;b&lt;/math&gt; werden vertauscht, &lt;math&gt;c&lt;/math&gt; wird gehalten<br /> |}<br /> <br /> * Ein weiteres Beispiel: Sei &lt;math&gt;\sigma_2 \in S_4&lt;/math&gt; durch &lt;math&gt;\sigma_2 \colon \{1, 2, 3, 4 \} \rightarrow \{1, 2, 3, 4 \}&lt;/math&gt; und &lt;math&gt;\sigma_2\left(1\right):=4, \sigma_2\left(2\right):=3, \sigma_2\left(3\right):=2 \mbox{ und } \sigma_2\left(4\right):=1 &lt;/math&gt; gegeben. Dann schreibt man<br /> :{|<br /> |-<br /> | '''Matrixdarstellung:'''<br /> | &lt;math&gt;\sigma_2 = \begin{pmatrix} 1 &amp; 2 &amp; 3 &amp; 4 \\ 4 &amp; 3 &amp; 2 &amp; 1 \end{pmatrix}&lt;/math&gt;<br /> |-<br /> | '''Zykelschreibweise:'''<br /> | &lt;math&gt;\sigma_2 = \left(1\ 4\right)\left(2\ 3\right)&lt;/math&gt;<br /> |-<br /> | '''Tupelschreibweise:'''<br /> | &lt;math&gt;\sigma_2 = \left(4,3,2,1\right)&lt;/math&gt; oder auch &lt;math&gt;\sigma_2 = \left(4\ 3\ 2\ 1\right)&lt;/math&gt;<br /> |-<br /> | '''Permutationsmatrix:'''<br /> | &lt;math&gt;P \cdot \overline{x}=<br /> \begin{pmatrix}<br /> 0 &amp; 0 &amp; 0 &amp; 1\\<br /> 0 &amp; 0 &amp; 1 &amp; 0\\<br /> 0 &amp; 1 &amp; 0 &amp; 0\\<br /> 1 &amp; 0 &amp; 0 &amp; 0\\<br /> \end{pmatrix}<br /> \cdot \begin{pmatrix}1 \\ 2 \\ 3 \\ 4 \\\end{pmatrix}<br /> = \begin{pmatrix}4 \\ 3 \\ 2 \\ 1 \\\end{pmatrix}&lt;/math&gt; <br /> |}<br /> <br /> Keine der Darstellungen ist eindeutig.<br /> <br /> == Fixpunkte ==<br /> Elemente, deren Positionen sich bei der Permutation nicht ändern, nennt man [[Fixpunkt (Mathematik)|Fixpunkte]] der Permutation. Bei der Permutation<br /> :&lt;math&gt;\begin{pmatrix} 1 &amp; 2 &amp; 3 &amp; 4 \\ 1 &amp; 3 &amp; 2 &amp; 4 \end{pmatrix}&lt;/math&gt; <br /> sind dies beispielsweise die Zahlen 1 und 4. In der Matrixdarstellung erkennt man Fixpunkte daran, dass der obere und untere Eintrag der jeweiligen Spalte gleich ist. In der Zykelschreibweise sind Fixpunkte genau die Elemente, die nicht erscheinen. Für das obige Beispiel lautet die Zykelschreibweise &lt;math&gt;(2 3)&lt;/math&gt;; die Fixpunkte 1 und 4 erscheinen hier nicht. In der Permutationsmatrix sind die den Fixpunkten zugewiesenen Einträge der Hauptdiagonale 1. In der Permutationsmatrix zum obigen Beispiel sind dies die Einträge &lt;math&gt;p_{1,1}&lt;/math&gt; und &lt;math&gt;p_{4,4}&lt;/math&gt;:<br /> :&lt;math&gt;\begin{pmatrix}<br /> 1 &amp; 0 &amp; 0 &amp; 0\\<br /> 0 &amp; 0 &amp; 1 &amp; 0\\<br /> 0 &amp; 1 &amp; 0 &amp; 0\\<br /> 0 &amp; 0 &amp; 0 &amp; 1<br /> \end{pmatrix}&lt;/math&gt;.<br /> <br /> Eine Permutation ohne Fixpunkte wird auch [[Derangement]] genannt. Ein Derangement ist also ein „totale Versetzung“, bei der kein einziges Element auf seinem Platz bleibt. Die Anzahl der Derangements einer Menge mit &lt;math&gt;n&lt;/math&gt; Elementen ist<br /> :&lt;math&gt;n! \cdot\sum_{i=0}^n {\left(-1\right)^i \over i!}.&lt;/math&gt;<br /> Diese Zahl heißt [[Subfakultät]] und wird mit &lt;math&gt;!n&lt;/math&gt; bezeichnet.<br /> <br /> Allgemeiner lässt sich die Anzahl der Permutationen mit einer gegebenen Anzahl von Fixpunkten (sog. partielle Derangements) mit Hilfe der [[Rencontres-Zahl]]en bestimmen.<br /> <br /> == Verknüpfung von Permutationen ==<br /> Zwei &lt;math&gt;n&lt;/math&gt;-stellige Permutationen lassen sich nacheinander ausführen, indem man die erste Permutation anwendet und auf deren Resultat dann die zweite Permutation. Diese Hintereinanderausführung wird auch [[Komposition (Mathematik)|Komposition]] , Verknüpfung oder Produkt zweier Permutationen genannt und ist selbst wieder eine &lt;math&gt;n&lt;/math&gt;-stellige Permutation.<br /> <br /> Eine Menge von Permutationen einer endlichen Menge ''M'', erzeugt mit der Komposition als Verknüpfung eine [[Permutationsgruppe]] auf ''M''.<br /> <br /> === Beispiele zur Komposition von Permutationen ===<br /> Beispiele zur Verknüpfung:<br /> * &lt;math&gt;\begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 \\<br /> 3 &amp; 1 &amp; 2<br /> \end{pmatrix} \circ \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 \\<br /> 1 &amp; 3 &amp; 2<br /> \end{pmatrix} = \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 \\<br /> 3 &amp; 2 &amp; 1<br /> \end{pmatrix}&lt;/math&gt;<br /> :Man beachte, dass die Verknüpfungen von rechts nach links ausgewertet werden: In der zweiten Matrix geht die 1 in die 1, in der ersten die 1 in die 3. Im Ergebnis der Verknüpfung geht also die 1 in die 3. Ebenso: zweite Matrix 2 → 3, erste Matrix 3 → 2, Ergebnis 2 → 2. Und: zweite Matrix 3 → 2, erste Matrix 2 → 1, Ergebnis 3 → 1.<br /> * &lt;math&gt;(132)\circ(23)=(1 3)&lt;/math&gt;<br /> * &lt;math&gt;(23)\circ(132)=(1 2)&lt;/math&gt;<br /> <br /> Die beiden letzten Beispiele zeigen, dass die Reihenfolge im Allgemeinen von Bedeutung ist: Die symmetrische Gruppe &lt;math&gt;S_n&lt;/math&gt; ist für &lt;math&gt;n &gt; 2&lt;/math&gt; nicht [[Abelsche Gruppe|abelsch]].<br /> Die Reihenfolge kann nur unbeachtet bleiben, wenn die miteinander verknüpften Zykel [[disjunkt]] sind, d.&amp;nbsp;h. jedes Element der Permutation kommt nur in einem Zykel vor. Beispiel:<br /> * &lt;math&gt;\begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 4 &amp; 5<br /> \end{pmatrix} \circ \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 1 &amp; 2 &amp; 3 &amp; 5 &amp; 4<br /> \end{pmatrix} = \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 5 &amp; 4<br /> \end{pmatrix} = \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 1 &amp; 2 &amp; 3 &amp; 5 &amp; 4 <br /> \end{pmatrix} \circ \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 4 &amp; 5<br /> \end{pmatrix}&lt;/math&gt;<br /> <br /> * &lt;math&gt;(132)\circ(45)= <br /> \begin{pmatrix}<br /> 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 \\<br /> 3 &amp; 1 &amp; 2 &amp; 5 &amp; 4<br /> \end{pmatrix} =<br /> (45) \circ(132)&lt;/math&gt;<br /> <br /> == Ordnung ==<br /> Für jede Permutation &lt;math&gt;\sigma&lt;/math&gt; gibt es eine kleinste natürliche Zahl &lt;math&gt;k&lt;/math&gt; derart, dass die &lt;math&gt;k&lt;/math&gt;-malige Hintereinanderausführung von &lt;math&gt;\sigma&lt;/math&gt; die Identität ergibt: &lt;math&gt;\sigma^k = \mbox{id}&lt;/math&gt;. Diese Zahl wird Ordnung von &lt;math&gt;\sigma&lt;/math&gt; genannt. Sie ist die [[Elementordnung]] von &lt;math&gt;\sigma&lt;/math&gt; als Gruppenelement der Symmetrischen Gruppe. Die Ordnung einer Permutation lässt sich leicht aus der Zykeldarstellung bestimmen: Sie ist das [[Kleinstes gemeinsames Vielfaches|kleinste gemeinsame Vielfache]] (kgV) der Längen der disjunkten Zykeln von &lt;math&gt;\sigma&lt;/math&gt;. Beispielsweise ist die Ordnung der Permutation &lt;math&gt;(1 2 4)(3 5)&lt;/math&gt; das kgV von 3 und 2, also 6.<br /> <br /> Eine Permutation &lt;math&gt;\sigma&lt;/math&gt; mit &lt;math&gt;\sigma^2 = \mbox{id}&lt;/math&gt;, oder äquivalent &lt;math&gt;\sigma^{-1} = \sigma&lt;/math&gt;, heißt Involution oder selbstinvers. Die Involutionen sind genau die Permutationen der Ordnung 2 sowie die Identität selbst (die einzige Permutation der Ordnung 1). Eine Permutation ist genau dann eine Involution, wenn ihre Zykeldarstellung maximal Zykel der Länge 2 (also Transpositionen) enthält.<br /> <br /> == Einige Eigenschaften von endlichen Permutationen ==<br /> Nur falls die Menge aus der die Elemente der Permutation stammen, mit einer Totalordnung versehen ist, machen folgende Begriffe einen Sinn:<br /> * „left-to-right maximum“ (Links-Rechts-Maximum, kurz: ''LR-Maximum''). Bei einer Permutation in Wortschreibweise &lt;math&gt;a = a_1 \dotso a_i \dotso a_n&lt;/math&gt; nennt man &lt;math&gt;a_i&lt;/math&gt; genau dann ein ''LR-Maximum'', wenn &lt;math&gt;a_i &gt; a_j&lt;/math&gt; mit &lt;math&gt;1 \leq j \leq i-1&lt;/math&gt;. Diese Eigenschaft ist von Nutzen, wenn man die normalisierte Zykeldarstellung ohne Klammern schreiben möchte. Man kann unter Ausnutzung der LR-Maxima zeigen, dass dann eine [[Bijektion]] zwischen der normalisierten Zykeldarstellung in eine Permutation existiert.&lt;ref&gt;Vorlesungsskript Prof. Welker: [http://www.mathematik.uni-marburg.de/~welker/vorlesung/dima07/kapitel1.pdf Kapitel 1] &amp; [http://www.mathematik.uni-marburg.de/~welker/vorlesung/dima07/kapitel3.pdf Kapitel 3] ([[Portable Document Format|PDF]])&lt;/ref&gt; Bemerkung: &lt;math&gt;a_1&lt;/math&gt; ist immer ein LR-Maximum.<br /> * ''alternierend'' nennt man eine Permutation, wenn beim durchlaufen dieser sich die Ordnungsrelation der vorgegebenen Totalordnung von nebeneinanderstehenden Elementen dauernd ändert. Formal, wenn für keinen Index i, mit &lt;math&gt;1 &lt; i &lt; n&lt;/math&gt;, weder &lt;math&gt;a_{i-1} &lt; a_i &lt; a_{i+1}&lt;/math&gt; noch &lt;math&gt;a_{i-1} &gt; a_i &gt; a_{i+1}&lt;/math&gt; ist, wobei &lt;math&gt;a_k&lt;/math&gt; das k-te Element einer n-elementigen Permutation bezeichnet.<br /> * Inversion/[[Fehlstand]]: Man nennt ein Paar &lt;math&gt; (i,j) &lt;/math&gt; von Elementen Inversion bzgl. &lt;math&gt; \sigma &lt;/math&gt;, falls gilt<br /> *: &lt;math&gt; i &lt; j &lt;/math&gt; und &lt;math&gt; \sigma\left(i\right) &gt; \sigma\left(j\right) &lt;/math&gt;. Zwei Elemente bilden also genau dann eine Inversion, wenn nach Anwenden der Permutation das größere vor dem kleineren Element steht.<br /> <br /> '''Beispiel:''' Gegeben sei die Permutation &lt;math&gt; \pi = \left(3\ 2\ 5\ 1\ 4\right) &lt;/math&gt; (in Tupelschreibweise). &lt;math&gt; 1 &lt; 2 &lt;/math&gt;, aber 2 steht hier vor 1, also sind 1, 2 eine Inversion bezüglich &lt;math&gt; \pi &lt;/math&gt;.<br /> <br /> Ordnet man in einer Tabelle jedem Element die Anzahl derjenigen Elemente zu, die nach der Permutation links von ihm stehen, obwohl sie größer sind, so erhält man die sogenannte [[Inversionstafel]] der Permutation. Umgekehrt kann man aus jeder solchen Tafel die Permutation eindeutig bestimmen.<br /> <br /> '''Beispiel:''' Gegeben sei die Permutation &lt;math&gt; \left(3\ 2\ 5\ 1\ 4\right) &lt;/math&gt; (in Tupelschreibweise). Dann haben wir als Inversionstafel:<br /> <br /> :&lt;math&gt;<br /> \begin{pmatrix}1&amp;2&amp;3&amp;4&amp;5 \\ 3 &amp; 1 &amp; 0 &amp; 1 &amp; 0 \end{pmatrix}<br /> &lt;/math&gt;<br /> <br /> * [[Signum (Mathematik)#Signum von Permutationen|Signum]]: Sei mit &lt;math&gt;i\left(\sigma\right)&lt;/math&gt; die Anzahl der Inversionen von &lt;math&gt;\sigma&lt;/math&gt; bezeichnet. Dann ist das [[Signum (Mathematik)|Signum]] von &lt;math&gt;\sigma&lt;/math&gt; gegeben durch &lt;math&gt;\mathrm{sgn}\left(\sigma\right) = \left(-1\right)^{i\left(\sigma\right)}&lt;/math&gt;.<br /> Eine Permutation hat also Signum 1, falls die Anzahl ihrer Inversionen gerade ist, ansonsten Signum −1.<br /> <br /> Das Signum lässt sich auch über folgende Formel bestimmen:<br /> : &lt;math&gt;\mathrm{sgn}(\sigma) = (-1)^{m_1+m_2+\dotsb+m_r+r},&lt;/math&gt;<br /> wobei &lt;math&gt;r&lt;/math&gt; die Anzahl der Zykel und &lt;math&gt;m_i&lt;/math&gt; die Länge des &lt;math&gt;i&lt;/math&gt;-ten Zykels sind &lt;math&gt;\left(i=1,\dotsc,r\right)&lt;/math&gt;.<br /> <br /> * Typ: Sei mit &lt;math&gt; b_i &lt;/math&gt; die Anzahl der Zykel von &lt;math&gt; \pi &lt;/math&gt; bezeichnet, welche die Länge &lt;math&gt; i &lt;/math&gt; haben. Dann ist der Typ einer Permutation der formale Ausdruck<br /> *: &lt;math&gt;1^{b_1} 2^{b_2} 3^{b_3} \dotsm n^{b_n}.&lt;/math&gt;<br /> <br /> Formal bedeutet hierbei, dass das Produkt und die Potenzen nicht tatsächlich ausgerechnet werden.<br /> <br /> * Auf weitere Eigenschaften der Permutation und der Verkettung wird bei der [[Symmetrische Gruppe|Symmetrischen Gruppe]] eingegangen.<br /> <br /> == Der Permutaeder ==<br /> <br /> Der Permutaeder &lt;math&gt;P_n&lt;/math&gt; ist ein konvexer [[Polyeder]], welcher wie folgt definiert ist: Jede Permutation<br /> &lt;math&gt;\sigma \in S_n&lt;/math&gt; wird in Tupelschreibweise geschrieben als Vektor im &lt;math&gt;\mathbb{R}^n&lt;/math&gt; interpretiert.<br /> Die [[Konvexe Hülle|konvexe Hülle]] dieser Vektoren ergibt dann &lt;math&gt;P_n&lt;/math&gt; :<br /> <br /> :&lt;math&gt;<br /> P_n := \operatorname{conv} \{ \sigma = (\sigma(1), \sigma(2), \ldots, \sigma(n)) \: | \: \sigma \in S_n \}<br /> &lt;/math&gt;<br /> <br /> Der Permutaeder lässt sich außerdem auch durch den Schnitt von [[Halbraum|Halbräumen]] beschreiben:<br /> <br /> :&lt;math&gt;<br /> P_n = \{ x \in \mathbb{R}^n \; |<br /> \; \sum_{i=1}^n x_i = { n + 1 \choose 2 } , \;<br /> \forall S \subset \{1,\ldots, n\} : \sum_{i \in S} x_i \geq { | S | + 1 \choose 2 } \}<br /> &lt;/math&gt;<br /> <br /> Die Ecken des Permutaeders sind gerade die Permutationen in Tupelschreibweise, zwei Permutationen<br /> sind genau dann durch eine Kante des Permutaeders verbunden, wenn sie sich durch eine Transposition<br /> benachbarter Elemente ineinander überführen lassen.<br /> <br /> == Siehe auch ==<br /> * [[Permutiertes Register]]<br /> * [[Fakultätsbasiertes Zahlensystem]]<br /> * [[Kombinatorik]]<br /> <br /> == Literatur ==<br /> * [[Albrecht Beutelspacher]]: ''Lineare Algebra.'' 6. durchgesehene und ergänzte Auflage. Vieweg, Wiesbaden 2003, ISBN 3-528-56508-X, Kapitel 7.2 ''Permutationen''.<br /> * [[Michael Artin]]: ''Algebra.'' Birkhäuser, Basel u. a. 1993, ISBN 3-7643-2927-0, Kapitel 1.4 ''Permutationsmatrizen''.<br /> <br /> == Weblinks ==<br /> {{Wiktionary|Permutation}}<br /> * [http://www.reiter1.com/Glossar/Kombinatorik.htm Kombinatorik: Anwendung Permutation, Kombination und Variation]<br /> <br /> == Einzelnachweise ==<br /> &lt;references /&gt;<br /> <br /> [[Kategorie:Gruppentheorie]]<br /> [[Kategorie:Kombinatorik]]<br /> [[Kategorie:Lineare Algebra]]<br /> <br /> [[am:ሰልፍ]]<br /> [[ar:تبديل (رياضيات)]]<br /> [[bg:Пермутация]]<br /> [[bn:বিন্যাস]]<br /> [[ca:Permutació]]<br /> [[cs:Permutace]]<br /> [[da:Permutation]]<br /> [[el:Μετάθεση (μαθηματικά)]]<br /> [[en:Permutation]]<br /> [[eo:Permutaĵo]]<br /> [[es:Permutación]]<br /> [[et:Permutatsioon]]<br /> [[eu:Permutazio]]<br /> [[fa:جایگشت]]<br /> [[fi:Permutaatio]]<br /> [[fr:Permutation]]<br /> [[gu:ક્રમચય]]<br /> [[he:תמורה (מתמטיקה)]]<br /> [[hi:क्रमचय]]<br /> [[hr:Permutacija]]<br /> [[hu:Permutáció]]<br /> [[id:Permutasi]]<br /> [[it:Permutazione]]<br /> [[ja:置換 (数学)]]<br /> [[kk:Алмастыру]]<br /> [[kn:ಕ್ರಮಪಲ್ಲಟನೆ]]<br /> [[ko:순열]]<br /> [[lt:Kėliniai]]<br /> [[mk:Пермутација]]<br /> [[nl:Permutatie]]<br /> [[nn:Permutasjon]]<br /> [[no:Permutasjon]]<br /> [[pl:Permutacja]]<br /> [[pt:Permutação]]<br /> [[ro:Permutare]]<br /> [[ru:Перестановка]]<br /> [[scn:Pirmutazzioni]]<br /> [[simple:Permutation]]<br /> [[sk:Permutácia (algebra)]]<br /> [[sl:Permutacija]]<br /> [[sq:Permutacioni]]<br /> [[sr:Пермутација]]<br /> [[sv:Permutation]]<br /> [[ta:வரிசைமாற்றம்]]<br /> [[te:ప్రస్తారణ]]<br /> [[th:การเรียงสับเปลี่ยน]]<br /> [[tr:Permütasyon]]<br /> [[uk:Перестановка]]<br /> [[ur:تبدل کامل]]<br /> [[vi:Hoán vị]]<br /> [[zh:置換]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109717004 Fourier-Motzkin-Elimination 2012-10-25T06:42:54Z <p>Mathmon: Kategorien hinzugefügt</p> <hr /> <div>{{QS-Antrag|25. Oktober 2012| [[WP:Wikifizieren]]: [[Wikipedia:Kategorien|Kategorien]] fehlen, verwaist -- [[Benutzer:MerlBot/AutoQS|MerlBot]] 03:03, 25. Okt. 2012 (CEST)}}<br /> Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;, geriet jedoch in Vergessenheit und wurde schließlich 1936 in der Doktorarbeit von [[Theodore Motzkin]]<br /> erneut entdeckt &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> &lt;/ref&gt;.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> Im obigen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige zu einer Variable &lt;math&gt;x_k&lt;/math&gt; gehörige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen &lt;math&gt;x_k&lt;/math&gt; in dem Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^{(1)},d^{(1)}) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^{(2)},d^{(2)}) \ \cdots \ P(D^{(n)},d^{(n)})<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^{(n)}&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^{(j)}&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^{(n)} = U \cdot A,\ d^{(n)} = U \cdot b, \; \text{wobei} \; U := U^{(n)} \cdot U^{(n-1)} \ldots U^{(1)}<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^{(n)}&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^{(j)}&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Entscheidung der Zulässigkeit ===<br /> <br /> Wir wollen entscheiden, ob der folgende konvexe Polyeder eine zulässige Lösung hat:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> - x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^{(1)} = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^{(2)} = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U^{(2)} U^{(1)} = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von [[Lineare Optimierung|linearen Programmen]] ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{(n)}_{1,n+1} y &amp;\leq d^{(n)}_1 \\<br /> \vdots &amp; \\<br /> D^{(n)}_{l,n+1} y &amp;\leq d^{(n)}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Das resultierende Intervall &lt;math&gt;I&lt;/math&gt; beschreibt die Menge der möglichen Werte<br /> für die Variable &lt;math&gt;y&lt;/math&gt;. Es treten folgende Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;\gamma&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^* := \gamma&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Das hier vorgestellte Verfahren des ''Rückwärtseinsetzens'' lässt sich stets anwenden, um eine zulässige Lösung<br /> des Polyeders zu erhalten.<br /> &lt;/ref&gt;.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{so dass } &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;. Diese hat natürlich auch den erwarteten<br /> Zielfunktionswert von &lt;math&gt;y^*=4&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^{(j)}&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^{(j)},d^{(j)})&lt;/math&gt; zu beschreiben.<br /> <br /> == Anmerkungen ==<br /> <br /> &lt;references group=&quot;A.&quot; /&gt;<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Literatur ==<br /> <br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> <br /> [[Kategorie:Optimierung]]<br /> [[Kategorie:Polyeder]]<br /> [[Kategorie:Geometrische Abbildung]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109709625 Fourier-Motzkin-Elimination 2012-10-24T21:10:00Z <p>Mathmon: Mathmon verschob Seite Benutzer:Mathmon/Fourier-Motzkin-Elimination nach Fourier-Motzkin-Elimination: Fertig geschrieben, sollte den Qualitätsansprüchen genügen</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;, geriet jedoch in Vergessenheit und wurde schließlich 1936 in der Doktorarbeit von [[Theodore Motzkin]]<br /> erneut entdeckt &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> &lt;/ref&gt;.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> Im obigen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige zu einer Variable &lt;math&gt;x_k&lt;/math&gt; gehörige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen &lt;math&gt;x_k&lt;/math&gt; in dem Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^{(1)},d^{(1)}) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^{(2)},d^{(2)}) \ \cdots \ P(D^{(n)},d^{(n)})<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^{(n)}&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^{(j)}&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^{(n)} = U \cdot A,\ d^{(n)} = U \cdot b, \; \text{wobei} \; U := U^{(n)} \cdot U^{(n-1)} \ldots U^{(1)}<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^{(n)}&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^{(j)}&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Entscheidung der Zulässigkeit ===<br /> <br /> Wir wollen entscheiden, ob der folgende konvexe Polyeder eine zulässige Lösung hat:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> - x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^{(1)} = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^{(2)} = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U^{(2)} U^{(1)} = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von [[Lineare Optimierung|linearen Programmen]] ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{(n)}_{1,n+1} y &amp;\leq d^{(n)}_1 \\<br /> \vdots &amp; \\<br /> D^{(n)}_{l,n+1} y &amp;\leq d^{(n)}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Das resultierende Intervall &lt;math&gt;I&lt;/math&gt; beschreibt die Menge der möglichen Werte<br /> für die Variable &lt;math&gt;y&lt;/math&gt;. Es treten folgende Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;\gamma&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^* := \gamma&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Das hier vorgestellte Verfahren des ''Rückwärtseinsetzens'' lässt sich stets anwenden, um eine zulässige Lösung<br /> des Polyeders zu erhalten.<br /> &lt;/ref&gt;.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{so dass } &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;. Diese hat natürlich auch den erwarteten<br /> Zielfunktionswert von &lt;math&gt;y^*=4&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^{(j)}&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^{(j)},d^{(j)})&lt;/math&gt; zu beschreiben.<br /> <br /> == Anmerkungen ==<br /> <br /> &lt;references group=&quot;A.&quot; /&gt;<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Literatur ==<br /> <br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109709583 Fourier-Motzkin-Elimination 2012-10-24T21:08:08Z <p>Mathmon: /* Beispiel zur Lösung eines linearen Programms */</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;, geriet jedoch in Vergessenheit und wurde schließlich 1936 in der Doktorarbeit von [[Theodore Motzkin]]<br /> erneut entdeckt &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> &lt;/ref&gt;.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> Im obigen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige zu einer Variable &lt;math&gt;x_k&lt;/math&gt; gehörige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen &lt;math&gt;x_k&lt;/math&gt; in dem Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^{(1)},d^{(1)}) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^{(2)},d^{(2)}) \ \cdots \ P(D^{(n)},d^{(n)})<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^{(n)}&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^{(j)}&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^{(n)} = U \cdot A,\ d^{(n)} = U \cdot b, \; \text{wobei} \; U := U^{(n)} \cdot U^{(n-1)} \ldots U^{(1)}<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^{(n)}&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^{(j)}&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Entscheidung der Zulässigkeit ===<br /> <br /> Wir wollen entscheiden, ob der folgende konvexe Polyeder eine zulässige Lösung hat:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> - x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^{(1)} = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^{(2)} = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U^{(2)} U^{(1)} = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von [[Lineare Optimierung|linearen Programmen]] ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{(n)}_{1,n+1} y &amp;\leq d^{(n)}_1 \\<br /> \vdots &amp; \\<br /> D^{(n)}_{l,n+1} y &amp;\leq d^{(n)}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Das resultierende Intervall &lt;math&gt;I&lt;/math&gt; beschreibt die Menge der möglichen Werte<br /> für die Variable &lt;math&gt;y&lt;/math&gt;. Es treten folgende Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;\gamma&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^* := \gamma&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Das hier vorgestellte Verfahren des ''Rückwärtseinsetzens'' lässt sich stets anwenden, um eine zulässige Lösung<br /> des Polyeders zu erhalten.<br /> &lt;/ref&gt;.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{so dass } &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;. Diese hat natürlich auch den erwarteten<br /> Zielfunktionswert von &lt;math&gt;y^*=4&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^{(j)}&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^{(j)},d^{(j)})&lt;/math&gt; zu beschreiben.<br /> <br /> == Anmerkungen ==<br /> <br /> &lt;references group=&quot;A.&quot; /&gt;<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Literatur ==<br /> <br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109709533 Fourier-Motzkin-Elimination 2012-10-24T21:06:47Z <p>Mathmon: </p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;, geriet jedoch in Vergessenheit und wurde schließlich 1936 in der Doktorarbeit von [[Theodore Motzkin]]<br /> erneut entdeckt &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> &lt;/ref&gt;.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> Im obigen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige zu einer Variable &lt;math&gt;x_k&lt;/math&gt; gehörige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen &lt;math&gt;x_k&lt;/math&gt; in dem Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^{(1)},d^{(1)}) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^{(2)},d^{(2)}) \ \cdots \ P(D^{(n)},d^{(n)})<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^{(n)}&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^{(j)}&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^{(n)} = U \cdot A,\ d^{(n)} = U \cdot b, \; \text{wobei} \; U := U^{(n)} \cdot U^{(n-1)} \ldots U^{(1)}<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^{(n)}&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^{(j)}&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Entscheidung der Zulässigkeit ===<br /> <br /> Wir wollen entscheiden, ob der folgende konvexe Polyeder eine zulässige Lösung hat:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> - x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^{(1)} = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^{(2)} = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U^{(2)} U^{(1)} = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von [[Lineare Optimierung|linearen Programmen]] ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{(n)}_{1,n+1} y &amp;\leq d^{(n)}_1 \\<br /> \vdots &amp; \\<br /> D^{(n)}_{l,n+1} y &amp;\leq d^{(n)}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Das resultierende Intervall &lt;math&gt;I&lt;/math&gt; beschreibt die Menge der möglichen Werte<br /> für die Variable &lt;math&gt;y&lt;/math&gt;. Es treten folgende Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;\gamma&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^* := \gamma&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Das hier vorgestellte Verfahren des ''Rückwärtseinsetzens'' lässt sich stets anwenden, um eine zulässige Lösung<br /> des Polyeders zu erhalten.<br /> &lt;/ref&gt;.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{so dass } &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^{(j)}&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^{(j)},d^{(j)})&lt;/math&gt; zu beschreiben.<br /> <br /> == Anmerkungen ==<br /> <br /> &lt;references group=&quot;A.&quot; /&gt;<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Literatur ==<br /> <br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109709351 Fourier-Motzkin-Elimination 2012-10-24T21:00:48Z <p>Mathmon: /* Lösung von linearen Programmen */</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> &lt;/ref&gt;.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> Im obigen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht Entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^{(1)},d^{(1)}) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^{(2)},d^{(2)}) \ \cdots \ P(D^{(n)},d^{(n)})<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^{(n)}&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^{(j)}&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^{(n)} = U \cdot A,\ d^{(n)} = U \cdot b, \; \text{wobei} \; U := U^{(n)} \cdot U^{(n-1)} \ldots U^{(1)}<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^{(n)}&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^{(j)}&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Entscheidung der Zulässigkeit ===<br /> <br /> Wir wollen entscheiden, ob der folgende konvexe Polyeder eine zulässige Lösung hat:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> - x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^{(1)} = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^{(2)} = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U^{(2)} U^{(1)} = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von [[Lineare Optimierung|linearen Programmen]] ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{(n)}_{1,n+1} y &amp;\leq d^{(n)}_1 \\<br /> \vdots &amp; \\<br /> D^{(n)}_{l,n+1} y &amp;\leq d^{(n)}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Das resultierende Intervall &lt;math&gt;I&lt;/math&gt; beschreibt die Menge der möglichen Werte<br /> für die Variable &lt;math&gt;y&lt;/math&gt;. Es treten folgende Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;\gamma&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^* := \gamma&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Das hier vorgestellte Verfahren des ''Rückwärtseinsetzens'' lässt sich stets anwenden, um eine zulässige Lösung<br /> des Polyeders zu erhalten.<br /> &lt;/ref&gt;.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{so dass } &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^{(j)}&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^{(j)},d^{(j)})&lt;/math&gt; zu beschreiben.<br /> <br /> == Anmerkungen ==<br /> <br /> &lt;references group=&quot;A.&quot; /&gt;<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Literatur ==<br /> <br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109709321 Fourier-Motzkin-Elimination 2012-10-24T20:59:48Z <p>Mathmon: </p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> &lt;/ref&gt;.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> Im obigen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht Entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^{(1)},d^{(1)}) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^{(2)},d^{(2)}) \ \cdots \ P(D^{(n)},d^{(n)})<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^{(n)}&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^{(j)}&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^{(n)} = U \cdot A,\ d^{(n)} = U \cdot b, \; \text{wobei} \; U := U^{(n)} \cdot U^{(n-1)} \ldots U^{(1)}<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^{(n)}&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^{(j)}&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Entscheidung der Zulässigkeit ===<br /> <br /> Wir wollen entscheiden, ob der folgende konvexe Polyeder eine zulässige Lösung hat:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> - x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^{(1)} = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^{(2)} = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U^{(2)} U^{(1)} = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von linearen Programmen ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{(n)}_{1,n+1} y &amp;\leq d^{(n)}_1 \\<br /> \vdots &amp; \\<br /> D^{(n)}_{l,n+1} y &amp;\leq d^{(n)}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Das resultierende Intervall &lt;math&gt;I&lt;/math&gt; beschreibt die Menge der möglichen Werte<br /> für die Variable &lt;math&gt;y&lt;/math&gt;. Es treten folgende Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;\gamma&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^* := \gamma&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Das hier vorgestellte Verfahren des ''Rückwärtseinsetzens'' lässt sich stets anwenden, um eine zulässige Lösung<br /> des Polyeders zu erhalten.<br /> &lt;/ref&gt;.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{so dass } &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^{(j)}&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^{(j)},d^{(j)})&lt;/math&gt; zu beschreiben.<br /> <br /> == Anmerkungen ==<br /> <br /> &lt;references group=&quot;A.&quot; /&gt;<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Literatur ==<br /> <br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109709230 Fourier-Motzkin-Elimination 2012-10-24T20:56:50Z <p>Mathmon: /* Beispiel zur Lösung eines Zulässigkeitsproblems */</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> &lt;/ref&gt;.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> Im obigen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht Entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^{(1)},d^{(1)}) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^{(2)},d^{(2)}) \ \cdots \ P(D^{(n)},d^{(n)})<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^{(n)}&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^{(j)}&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^{(n)} = U \cdot A,\ d^{(n)} = U \cdot b, \; \text{wobei} \; U := U^{(n)} \cdot U^{(n-1)} \ldots U^{(1)}<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^{(n)}&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^{(j)}&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Entscheidung der Zulässigkeit ===<br /> <br /> Wir wollen entscheiden, ob der folgende konvexe Polyeder eine zulässige Lösung hat:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> - x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^{(1)} = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^{(2)} = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U^{(2)} U^{(1)} = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von linearen Programmen ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{(n)}_{1,n+1} y &amp;\leq d^{(n)}_1 \\<br /> \vdots &amp; \\<br /> D^{(n)}_{l,n+1} y &amp;\leq d^{(n)}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Das resultierende Intervall &lt;math&gt;I&lt;/math&gt; beschreibt die Menge der möglichen Werte<br /> für die Variable &lt;math&gt;y&lt;/math&gt;. Es treten folgende Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;\gamma&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^* := \gamma&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Das hier vorgestellte Verfahren des ''Rückwärtseinsetzens'' lässt sich stets anwenden, um eine zulässige Lösung<br /> des Polyeders zu erhalten.<br /> &lt;/ref&gt;.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^{(j)}&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^{(j)},d^{(j)})&lt;/math&gt; zu beschreiben.<br /> <br /> == Anmerkungen ==<br /> <br /> &lt;references group=&quot;A.&quot; /&gt;<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Literatur ==<br /> <br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109709213 Fourier-Motzkin-Elimination 2012-10-24T20:56:14Z <p>Mathmon: </p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> &lt;/ref&gt;.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> Im obigen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht Entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^{(1)},d^{(1)}) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^{(2)},d^{(2)}) \ \cdots \ P(D^{(n)},d^{(n)})<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^{(n)}&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^{(j)}&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^{(n)} = U \cdot A,\ d^{(n)} = U \cdot b, \; \text{wobei} \; U := U^{(n)} \cdot U^{(n-1)} \ldots U^{(1)}<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^{(n)}&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^{(j)}&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Lösung eines Zulässigkeitsproblems ===<br /> <br /> Wir wollen entscheiden, ob der folgende konvexe Polyeder eine zulässige Lösung hat:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> - x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^{(1)} = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^{(2)} = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U^{(2)} U^{(1)} = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von linearen Programmen ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{(n)}_{1,n+1} y &amp;\leq d^{(n)}_1 \\<br /> \vdots &amp; \\<br /> D^{(n)}_{l,n+1} y &amp;\leq d^{(n)}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Das resultierende Intervall &lt;math&gt;I&lt;/math&gt; beschreibt die Menge der möglichen Werte<br /> für die Variable &lt;math&gt;y&lt;/math&gt;. Es treten folgende Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;\gamma&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^* := \gamma&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Das hier vorgestellte Verfahren des ''Rückwärtseinsetzens'' lässt sich stets anwenden, um eine zulässige Lösung<br /> des Polyeders zu erhalten.<br /> &lt;/ref&gt;.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^{(j)}&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^{(j)},d^{(j)})&lt;/math&gt; zu beschreiben.<br /> <br /> == Anmerkungen ==<br /> <br /> &lt;references group=&quot;A.&quot; /&gt;<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Literatur ==<br /> <br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109709065 Fourier-Motzkin-Elimination 2012-10-24T20:51:44Z <p>Mathmon: </p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> &lt;/ref&gt;.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> Im obigen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht Entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^{(1)},d^{(1)}) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^{(2)},d^{(2)}) \ \cdots \ P(D^{(n)},d^{(n)})<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^{(n)}&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^{(j)}&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^{(n)} = U \cdot A,\ d^{(n)} = U \cdot b, \; \text{wobei} \; U := U^{(n)} \cdot U^{(n-1)} \ldots U^{(1)}<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^{(n)}&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^{(j)}&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Lösung eines Zulässigkeitsproblems ===<br /> <br /> Wir wollen entscheiden, ob der folgende konvexe Polyeder eine zulässige Lösung hat:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> - x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^{(1)} = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^{(2)} = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U^{(2)} U^{(1)} = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von linearen Programmen ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{(n)}_{1,n+1} y &amp;\leq d^{(n)}_1 \\<br /> \vdots &amp; \\<br /> D^{(n)}_{l,n+1} y &amp;\leq d^{(n)}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Das resultierende Intervall &lt;math&gt;I&lt;/math&gt; beschreibt die Menge der möglichen Werte<br /> für die Variable &lt;math&gt;y&lt;/math&gt;. Es treten folgende Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;\gamma&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^* := \gamma&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;<br /> &lt;ref group=&quot;A.&quot;&gt;<br /> Das hier vorgestellte Verfahren des ''Rückwärtseinsetzens'' lässt sich stets anwenden, um eine zulässige Lösung<br /> des Polyeders zu erhalten.<br /> &lt;/ref&gt;.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^{(j)}&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^{(j)},d^{(j)})&lt;/math&gt; zu beschreiben.<br /> <br /> == Anmerkungen ==<br /> <br /> &lt;references group=&quot;A.&quot; /&gt;<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109708819 Fourier-Motzkin-Elimination 2012-10-24T20:44:03Z <p>Mathmon: /* Lösung von linearen Programmen */</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion.<br /> <br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> Im obigen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht Entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^{(1)},d^{(1)}) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^{(2)},d^{(2)}) \ \cdots \ P(D^{(n)},d^{(n)})<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^{(n)}&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^{(j)}&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^{(n)} = U \cdot A,\ d^{(n)} = U \cdot b, \; \text{wobei} \; U := U^{(n)} \cdot U^{(n-1)} \ldots U^{(1)}<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^{(n)}&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^{(j)}&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Lösung eines Zulässigkeitsproblems ===<br /> <br /> Wir wollen entscheiden, ob der folgende konvexe Polyeder eine zulässige Lösung hat:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> - x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^{(1)} = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^{(2)} = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U^{(2)} U^{(1)} = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von linearen Programmen ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{(n)}_{1,n+1} y &amp;\leq d^{(n)}_1 \\<br /> \vdots &amp; \\<br /> D^{(n)}_{l,n+1} y &amp;\leq d^{(n)}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Das resultierende Intervall &lt;math&gt;I&lt;/math&gt; beschreibt die Menge der möglichen Werte<br /> für die Variable &lt;math&gt;y&lt;/math&gt;. Es treten folgende Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;\gamma&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^* := \gamma&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^{(j)}&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^{(j)},d^{(j)})&lt;/math&gt; zu beschreiben.<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109708718 Fourier-Motzkin-Elimination 2012-10-24T20:40:46Z <p>Mathmon: /* Beispiel zur Lösung eines Zulässigkeitsproblems */</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion.<br /> <br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> Im obigen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht Entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^{(1)},d^{(1)}) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^{(2)},d^{(2)}) \ \cdots \ P(D^{(n)},d^{(n)})<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^{(n)}&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^{(j)}&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^{(n)} = U \cdot A,\ d^{(n)} = U \cdot b, \; \text{wobei} \; U := U^{(n)} \cdot U^{(n-1)} \ldots U^{(1)}<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^{(n)}&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^{(j)}&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Lösung eines Zulässigkeitsproblems ===<br /> <br /> Wir wollen entscheiden, ob der folgende konvexe Polyeder eine zulässige Lösung hat:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> - x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^{(1)} = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^{(2)} = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U^{(2)} U^{(1)} = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von linearen Programmen ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{(n)}_{1,n+1} y &amp;\leq d^{(n)}_1 \\<br /> \vdots &amp; \\<br /> D^{(n)}_{l,n+1} y &amp;\leq d^{(n)}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Diese Ungleichungen beschreiben ein [[Intervall (Mathematik)|Intervall]] möglicher Werte für<br /> die verbliebene Variable &lt;math&gt;y&lt;/math&gt;. Es treten die folgenden Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;b&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^*&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;.<br /> <br /> Es ist außerdem möglich, durch Fourier-Motzkin-Elimination simultan zusätzlich das Minimierungsproblem über den selben Polyeder zu lösen: Dazu verlangt man, dass anstelle der Ungleichung &lt;math&gt;y \leq c^T x&lt;/math&gt; die Gleichung &lt;math&gt;y = c^T x&lt;/math&gt; gilt. Damit ist &lt;math&gt;y&lt;/math&gt; auch nach unten durch den Zielfunktionswert auf dem Polyeder beschränkt; nach dem Ausführen der Projektionen ist also das minimale Element des Intervalls der gesuchte Zielfunktionswert.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^{(j)}&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^{(j)},d^{(j)})&lt;/math&gt; zu beschreiben.<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109708703 Fourier-Motzkin-Elimination 2012-10-24T20:40:00Z <p>Mathmon: </p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion.<br /> <br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> Im obigen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht Entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^{(1)},d^{(1)}) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^{(2)},d^{(2)}) \ \cdots \ P(D^{(n)},d^{(n)})<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^{(n)}&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^{(j)}&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^{(n)} = U \cdot A,\ d^{(n)} = U \cdot b, \; \text{wobei} \; U := U^{(n)} \cdot U^{(n-1)} \ldots U^{(1)}<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^{(n)}&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^{(j)}&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Lösung eines Zulässigkeitsproblems ===<br /> <br /> Wir wollen entscheiden, ob der folgende konvexe Polyeder eine zulässige Lösung hat:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> - x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^{(1)} = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^{(2)} = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U_2 U_1 = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von linearen Programmen ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{(n)}_{1,n+1} y &amp;\leq d^{(n)}_1 \\<br /> \vdots &amp; \\<br /> D^{(n)}_{l,n+1} y &amp;\leq d^{(n)}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Diese Ungleichungen beschreiben ein [[Intervall (Mathematik)|Intervall]] möglicher Werte für<br /> die verbliebene Variable &lt;math&gt;y&lt;/math&gt;. Es treten die folgenden Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;b&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^*&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;.<br /> <br /> Es ist außerdem möglich, durch Fourier-Motzkin-Elimination simultan zusätzlich das Minimierungsproblem über den selben Polyeder zu lösen: Dazu verlangt man, dass anstelle der Ungleichung &lt;math&gt;y \leq c^T x&lt;/math&gt; die Gleichung &lt;math&gt;y = c^T x&lt;/math&gt; gilt. Damit ist &lt;math&gt;y&lt;/math&gt; auch nach unten durch den Zielfunktionswert auf dem Polyeder beschränkt; nach dem Ausführen der Projektionen ist also das minimale Element des Intervalls der gesuchte Zielfunktionswert.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^{(j)}&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^{(j)},d^{(j)})&lt;/math&gt; zu beschreiben.<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109708512 Fourier-Motzkin-Elimination 2012-10-24T20:33:48Z <p>Mathmon: /* Beispiel zur Lösung eines Zulässigkeitsproblems */</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion.<br /> <br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> In dem angegebenen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht Entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^1,d^1) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^2,d^2) \ \cdots \ P(D^n,d^n)<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^n&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^j&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^n = U \cdot A,\ d^n = U \cdot b, \; \text{wobei} \; U := U^n \cdot U^{n-1} \ldots U^1<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^n&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^j&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Lösung eines Zulässigkeitsproblems ===<br /> <br /> Wir wollen entscheiden, ob der folgende konvexe Polyeder eine zulässige Lösung hat:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> - x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^1 = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^2 = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U_2 U_1 = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von linearen Programmen ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^n_{1,n+1} y &amp;\leq d^n_1 \\<br /> \vdots &amp; \\<br /> D^n_{l,n+1} y &amp;\leq d^n_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Diese Ungleichungen beschreiben ein [[Intervall (Mathematik)|Intervall]] möglicher Werte für<br /> die verbliebene Variable &lt;math&gt;y&lt;/math&gt;. Es treten die folgenden Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;b&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^*&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;.<br /> <br /> Es ist außerdem möglich, durch Fourier-Motzkin-Elimination simultan zusätzlich das Minimierungsproblem über den selben Polyeder zu lösen: Dazu verlangt man, dass anstelle der Ungleichung &lt;math&gt;y \leq c^T x&lt;/math&gt; die Gleichung &lt;math&gt;y = c^T x&lt;/math&gt; gilt. Damit ist &lt;math&gt;y&lt;/math&gt; auch nach unten durch den Zielfunktionswert auf dem Polyeder beschränkt; nach dem Ausführen der Projektionen ist also das minimale Element des Intervalls der gesuchte Zielfunktionswert.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^j&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^j,d^j)&lt;/math&gt; zu beschreiben.<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109708483 Fourier-Motzkin-Elimination 2012-10-24T20:32:56Z <p>Mathmon: /* Beispiel zur Lösung eines Zulässigkeitsproblems */</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion.<br /> <br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> In dem angegebenen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht Entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^1,d^1) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^2,d^2) \ \cdots \ P(D^n,d^n)<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^n&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^j&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^n = U \cdot A,\ d^n = U \cdot b, \; \text{wobei} \; U := U^n \cdot U^{n-1} \ldots U^1<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^n&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^j&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Lösung eines Zulässigkeitsproblems ===<br /> <br /> Zur Verdeutlichung des Verfahrens betrachten wir den Polyeder<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}{}<br /> - x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}{}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^1 = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) , \;\;<br /> U^2 = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U_2 U_1 = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von linearen Programmen ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^n_{1,n+1} y &amp;\leq d^n_1 \\<br /> \vdots &amp; \\<br /> D^n_{l,n+1} y &amp;\leq d^n_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Diese Ungleichungen beschreiben ein [[Intervall (Mathematik)|Intervall]] möglicher Werte für<br /> die verbliebene Variable &lt;math&gt;y&lt;/math&gt;. Es treten die folgenden Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;b&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^*&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;.<br /> <br /> Es ist außerdem möglich, durch Fourier-Motzkin-Elimination simultan zusätzlich das Minimierungsproblem über den selben Polyeder zu lösen: Dazu verlangt man, dass anstelle der Ungleichung &lt;math&gt;y \leq c^T x&lt;/math&gt; die Gleichung &lt;math&gt;y = c^T x&lt;/math&gt; gilt. Damit ist &lt;math&gt;y&lt;/math&gt; auch nach unten durch den Zielfunktionswert auf dem Polyeder beschränkt; nach dem Ausführen der Projektionen ist also das minimale Element des Intervalls der gesuchte Zielfunktionswert.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^j&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^j,d^j)&lt;/math&gt; zu beschreiben.<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109708227 Fourier-Motzkin-Elimination 2012-10-24T20:28:37Z <p>Mathmon: /* Beispiel zur Lösung eines Zulässigkeitsproblems */</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion.<br /> <br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> In dem angegebenen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht Entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^1,d^1) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^2,d^2) \ \cdots \ P(D^n,d^n)<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^n&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^j&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^n = U \cdot A,\ d^n = U \cdot b, \; \text{wobei} \; U := U^n \cdot U^{n-1} \ldots U^1<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^n&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^j&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Lösung eines Zulässigkeitsproblems ===<br /> <br /> Zur Verdeutlichung des Verfahrens betrachten wir den Polyeder<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ x \in \mathbb{R}^2 \ |\ x_1 + x_2 \geq 4,\ x_1 \leq 1,\ x_2 \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> Dies entspricht in der Form &lt;math&gt;Ax \leq b&lt;/math&gt; dem System<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> -x_1 - x_2 &amp; \leq -4 \\<br /> x_1 &amp; \leq 1 \\<br /> 1x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> &lt;/math&gt;<br /> <br /> Nach den einzelnen Projektionsschritten ergeben sich folgenden Systeme:<br /> <br /> :&lt;math&gt;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq -3 \\<br /> x_2 &amp; \leq 1 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq -2 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Es offenbart sich also ein Widerspruch, der Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; entspricht der leeren Menge.<br /> Die resultierenden Matrizen sind gegeben durch<br /> <br /> :&lt;math&gt;<br /> U^1 = \left(<br /> \begin{array}{rrr}<br /> 1 &amp; 1 &amp; 0 \\<br /> 0 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right) \;\;<br /> U^2 = \left(<br /> \begin{array}{rr}<br /> 1 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> Ein Zertifikat für die Nichtzulässigkeit ist also der Vektor &lt;math&gt;e_1 U_2 U_1 = (1, 1, 1)&lt;/math&gt;.<br /> <br /> === Lösung von linearen Programmen ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^n_{1,n+1} y &amp;\leq d^n_1 \\<br /> \vdots &amp; \\<br /> D^n_{l,n+1} y &amp;\leq d^n_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Diese Ungleichungen beschreiben ein [[Intervall (Mathematik)|Intervall]] möglicher Werte für<br /> die verbliebene Variable &lt;math&gt;y&lt;/math&gt;. Es treten die folgenden Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;b&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^*&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;.<br /> <br /> Es ist außerdem möglich, durch Fourier-Motzkin-Elimination simultan zusätzlich das Minimierungsproblem über den selben Polyeder zu lösen: Dazu verlangt man, dass anstelle der Ungleichung &lt;math&gt;y \leq c^T x&lt;/math&gt; die Gleichung &lt;math&gt;y = c^T x&lt;/math&gt; gilt. Damit ist &lt;math&gt;y&lt;/math&gt; auch nach unten durch den Zielfunktionswert auf dem Polyeder beschränkt; nach dem Ausführen der Projektionen ist also das minimale Element des Intervalls der gesuchte Zielfunktionswert.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^j&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^j,d^j)&lt;/math&gt; zu beschreiben.<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109707843 Fourier-Motzkin-Elimination 2012-10-24T20:17:13Z <p>Mathmon: /* Anwendungen */</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion.<br /> <br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> In dem angegebenen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht Entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^1,d^1) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^2,d^2) \ \cdots \ P(D^n,d^n)<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^n&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^j&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^n = U \cdot A,\ d^n = U \cdot b, \; \text{wobei} \; U := U^n \cdot U^{n-1} \ldots U^1<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^n&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^j&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Beispiel zur Lösung eines Zulässigkeitsproblems ===<br /> <br /> Zur Demonstration des Verfahrens betrachten wir den Polyeder<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x + y \geq 4,\ x \leq 1,\ y \leq 1 \}<br /> &lt;/math&gt;<br /> <br /> === Lösung von linearen Programmen ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^n_{1,n+1} y &amp;\leq d^n_1 \\<br /> \vdots &amp; \\<br /> D^n_{l,n+1} y &amp;\leq d^n_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Diese Ungleichungen beschreiben ein [[Intervall (Mathematik)|Intervall]] möglicher Werte für<br /> die verbliebene Variable &lt;math&gt;y&lt;/math&gt;. Es treten die folgenden Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;b&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^*&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;.<br /> <br /> Es ist außerdem möglich, durch Fourier-Motzkin-Elimination simultan zusätzlich das Minimierungsproblem über den selben Polyeder zu lösen: Dazu verlangt man, dass anstelle der Ungleichung &lt;math&gt;y \leq c^T x&lt;/math&gt; die Gleichung &lt;math&gt;y = c^T x&lt;/math&gt; gilt. Damit ist &lt;math&gt;y&lt;/math&gt; auch nach unten durch den Zielfunktionswert auf dem Polyeder beschränkt; nach dem Ausführen der Projektionen ist also das minimale Element des Intervalls der gesuchte Zielfunktionswert.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^j&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^j,d^j)&lt;/math&gt; zu beschreiben.<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109707725 Fourier-Motzkin-Elimination 2012-10-24T20:13:12Z <p>Mathmon: /* Zulässigkeitsprobleme */</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion.<br /> <br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> In dem angegebenen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht Entspricht die Projektion einem [[Intervall (Mathematik)|Intervall]] &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^1,d^1) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^2,d^2) \ \cdots \ P(D^n,d^n)<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^n&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^j&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^n = U \cdot A,\ d^n = U \cdot b, \; \text{wobei} \; U := U^n \cdot U^{n-1} \ldots U^1<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^n&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^j&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Lösen von linearen Programmen ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^n_{1,n+1} y &amp;\leq d^n_1 \\<br /> \vdots &amp; \\<br /> D^n_{l,n+1} y &amp;\leq d^n_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Diese Ungleichungen beschreiben ein [[Intervall (Mathematik)|Intervall]] möglicher Werte für<br /> die verbliebene Variable &lt;math&gt;y&lt;/math&gt;. Es treten die folgenden Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;b&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^*&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;.<br /> <br /> Es ist außerdem möglich, durch Fourier-Motzkin-Elimination simultan zusätzlich das Minimierungsproblem über den selben Polyeder zu lösen: Dazu verlangt man, dass anstelle der Ungleichung &lt;math&gt;y \leq c^T x&lt;/math&gt; die Gleichung &lt;math&gt;y = c^T x&lt;/math&gt; gilt. Damit ist &lt;math&gt;y&lt;/math&gt; auch nach unten durch den Zielfunktionswert auf dem Polyeder beschränkt; nach dem Ausführen der Projektionen ist also das minimale Element des Intervalls der gesuchte Zielfunktionswert.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^j&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^j,d^j)&lt;/math&gt; zu beschreiben.<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109707669 Fourier-Motzkin-Elimination 2012-10-24T20:11:40Z <p>Mathmon: /* Zulässigkeitsprobleme */</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion.<br /> <br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> In dem angegebenen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt; die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt; nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so entspricht Entspricht die Projektion einem Intervall &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt; gegeben<br /> <br /> <br /> Diese Erkenntnis lässt sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^1,d^1) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^2,d^2) \ \cdots \ P(D^n,d^n)<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^n&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^j&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^n = U \cdot A,\ d^n = U \cdot b, \; \text{wobei} \; U := U^n \cdot U^{n-1} \ldots U^1<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^n&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^j&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Lösen von linearen Programmen ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^n_{1,n+1} y &amp;\leq d^n_1 \\<br /> \vdots &amp; \\<br /> D^n_{l,n+1} y &amp;\leq d^n_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Diese Ungleichungen beschreiben ein [[Intervall (Mathematik)|Intervall]] möglicher Werte für<br /> die verbliebene Variable &lt;math&gt;y&lt;/math&gt;. Es treten die folgenden Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;b&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^*&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;.<br /> <br /> Es ist außerdem möglich, durch Fourier-Motzkin-Elimination simultan zusätzlich das Minimierungsproblem über den selben Polyeder zu lösen: Dazu verlangt man, dass anstelle der Ungleichung &lt;math&gt;y \leq c^T x&lt;/math&gt; die Gleichung &lt;math&gt;y = c^T x&lt;/math&gt; gilt. Damit ist &lt;math&gt;y&lt;/math&gt; auch nach unten durch den Zielfunktionswert auf dem Polyeder beschränkt; nach dem Ausführen der Projektionen ist also das minimale Element des Intervalls der gesuchte Zielfunktionswert.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^j&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^j,d^j)&lt;/math&gt; zu beschreiben.<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109707612 Fourier-Motzkin-Elimination 2012-10-24T20:10:16Z <p>Mathmon: </p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierenden neuen Ungleichungen die Variable &lt;math&gt;x_j&lt;/math&gt; nicht länger beinhalten.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion.<br /> <br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ==<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> In dem angegebenen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass das<br /> System &lt;math&gt;Ax \leq b&lt;/math&gt; eine Lösung besitzt genau dann wenn dies auch auf das<br /> System &lt;math&gt;D x \leq d&lt;/math&gt; zutrifft.<br /> <br /> Während es im allgemeinen schwierig ist, zu entscheiden, ob ein konvexer Polyeder eine zulässige<br /> Lösung besitzt, lässt sich dies in einigen Spezialfällen recht leicht bewerkstelligen:<br /> <br /> * Verbleibt keine Variable in dem resultierenden System &lt;math&gt;Dx \leq d&lt;/math&gt;, ist also &lt;math&gt;D&lt;/math&gt;<br /> die [[Nullmatrix]], so ist das System dann und nur dann lösbar, wenn die rechte Seite &lt;math&gt;d&lt;/math&gt;<br /> nicht negativ ist<br /> * Enthält nur eine einzige Spalte der Matrix &lt;math&gt;D&lt;/math&gt; von Null verschiedene Einträge, so<br /> entspricht Entspricht die Projektion einem Intervall &lt;math&gt;I&lt;/math&gt;. Ist dieses nicht leer, so ist auch das<br /> System &lt;math&gt;A x \leq b&lt;/math&gt; lösbar. Weiterhin sind die möglichen Werte der Variablen, welche zu der<br /> nicht verschwindenden Spalte von &lt;math&gt;D&lt;/math&gt; gehört, gerade durch das Intervall &lt;math&gt;I&lt;/math&gt;<br /> gegeben<br /> <br /> <br /> Diese Tatsachen lassen sich nutzen, um zu überprüfen, ob ein beliebiges Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;<br /> eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^1,d^1) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^2,d^2) \ \cdots \ P(D^n,d^n)<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^n&lt;/math&gt; ist dann die [[Nullmatrix]] und man kann entscheiden, ob<br /> &lt;math&gt;P(A,b) = \emptyset &lt;/math&gt;<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^j&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^n = U \cdot A,\ d^n = U \cdot b, \; \text{wobei} \; U := U^n \cdot U^{n-1} \ldots U^1<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^n&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^j&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Lösen von linearen Programmen ===<br /> <br /> Durch Ausnutzen der [[Lineare Optimierung#Dualität|Dualität der linearen Optimierung]] lässt sich<br /> jedes lineare Programm auf ein Zulässigkeitsproblem reduzieren, welches sich dann durch die Anwendung<br /> der Fourier-Motzkin-Elimination lösen lässt. In diesem Fall benötigt man jedoch recht viele neue<br /> Variablen und Ungleichungen, was die Anwendung des Verfahrens verlangsamt.<br /> Alternativ kann man den folgende Ansatz wählen: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^n_{1,n+1} y &amp;\leq d^n_1 \\<br /> \vdots &amp; \\<br /> D^n_{l,n+1} y &amp;\leq d^n_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Diese Ungleichungen beschreiben ein [[Intervall (Mathematik)|Intervall]] möglicher Werte für<br /> die verbliebene Variable &lt;math&gt;y&lt;/math&gt;. Es treten die folgenden Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;b&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^*&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;.<br /> <br /> Es ist außerdem möglich, durch Fourier-Motzkin-Elimination simultan zusätzlich das Minimierungsproblem über den selben Polyeder zu lösen: Dazu verlangt man, dass anstelle der Ungleichung &lt;math&gt;y \leq c^T x&lt;/math&gt; die Gleichung &lt;math&gt;y = c^T x&lt;/math&gt; gilt. Damit ist &lt;math&gt;y&lt;/math&gt; auch nach unten durch den Zielfunktionswert auf dem Polyeder beschränkt; nach dem Ausführen der Projektionen ist also das minimale Element des Intervalls der gesuchte Zielfunktionswert.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^j&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^j,d^j)&lt;/math&gt; zu beschreiben.<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109706800 Fourier-Motzkin-Elimination 2012-10-24T19:48:37Z <p>Mathmon: </p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierende neue Ungleichung einen Eintrag von &lt;math&gt;0&lt;/math&gt; an der Stelle von &lt;math&gt; x_j &lt;/math&gt; hat.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion.<br /> <br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> === Die Fourier-Motzkin-Elimination aus Sicht der linearen Algebra ===<br /> <br /> Die im Algorithmus angewandten Zeilenoperationen lassen sich durch die Multiplikation der Matrix &lt;math&gt;A&lt;/math&gt; bzw der<br /> rechten Seite &lt;math&gt;b&lt;/math&gt; mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt;<br /> darstellen, deren &lt;math&gt;i&lt;/math&gt;-te Zeile gegeben ist durch<br /> <br /> :&lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> Da die Matrix &lt;math&gt;U&lt;/math&gt; eine konische Kombination der Zeilen von &lt;math&gt;A&lt;/math&gt; beschreibt, sind alle Einträge<br /> von &lt;math&gt;U&lt;/math&gt; nicht negativ.<br /> In dem angegebenen Beispiel ist<br /> <br /> :&lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat als Projektionsverfahren die Eigenschaft, dass<br /> &lt;math&gt;P(A,b) \neq \emptyset \ \Leftrightarrow P(D,d) \neq \emptyset \&lt;/math&gt;, die Zulässigkeit bleibt also erhalten.<br /> Diese Tatsachen lassen sich nutzen, um zu überprüfen, ob ein Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> :&lt;math&gt;<br /> P(A,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^1,d^1) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^2,d^2) \ \cdots \ P(D^n,d^n)<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^n&lt;/math&gt; ist allerdings die [[Nullmatrix]]. Damit ist &lt;math&gt;P(D^n,d^n) = \emptyset &lt;/math&gt; genau dann, wenn der Vektor &lt;math&gt;d^n&lt;/math&gt; einen negativen Eintrag &lt;math&gt;d^n_k &lt; 0&lt;/math&gt; hat.<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^j&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^n = U \cdot A,\ d^n = U \cdot b, \; \text{wobei} \; U := U^n \cdot U^{n-1} \ldots U^1<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^n&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^j&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Lösen von linearen Programmen ===<br /> <br /> Da lineare Optimierungsprobleme und Zulässigkeitsprobleme über die [[Lineare_Optimierung#Dualität|Dualität]]<br /> der linearen Optimierung aufeinander reduzierbar sind, kann man mit der Fourier-Motzkin-Elimination auch<br /> beliebige lineare Programme lösen. Um eine Optimallösung von &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt;<br /> zu bestimmen, finden man ein Paar &lt;math&gt;x,y&lt;/math&gt; von zulässigen Lösungen von<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> A x &amp; \leq b \\<br /> y^T A &amp; = c^T \\<br /> y &amp; \geq 0 \\<br /> y^Tb &amp; \leq c^Tx \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Die zulässigen Lösungspaare sind genau solche &lt;math&gt;x, y&lt;/math&gt;, die in &lt;math&gt;P(\tilde{A}, \tilde{b})&lt;/math&gt;<br /> enthalten sind, wobei<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; \\<br /> &amp; A^T \\<br /> &amp; -A^T \\<br /> &amp; -I \\<br /> b^T &amp; -c^T \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{n + 3m \times m + n} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> c \\<br /> -c \\<br /> 0 \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{n + 3m}<br /> &lt;/math&gt;<br /> <br /> Dieses Verfahren hat allerdings den Nachteil, dass die Anzahl der Variablen und Ungleichungen stark anwächst,<br /> was die Berechnung erheblich verlangsamt.<br /> <br /> ==== Ein beschleunigtes Verfahren ====<br /> <br /> Eine Alternative zum obigen Verfahren ist der folgende Ansatz: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^n_{1,n+1} y &amp;\leq d^n_1 \\<br /> \vdots &amp; \\<br /> D^n_{l,n+1} y &amp;\leq d^n_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Diese Ungleichungen beschreiben ein [[Intervall (Mathematik)|Intervall]] möglicher Werte für<br /> die verbliebene Variable &lt;math&gt;y&lt;/math&gt;. Es treten die folgenden Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;b&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^*&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;.<br /> <br /> Es ist außerdem möglich, durch Fourier-Motzkin-Elimination simultan zusätzlich das Minimierungsproblem über den selben Polyeder zu lösen: Dazu verlangt man, dass anstelle der Ungleichung &lt;math&gt;y \leq c^T x&lt;/math&gt; die Gleichung &lt;math&gt;y = c^T x&lt;/math&gt; gilt. Damit ist &lt;math&gt;y&lt;/math&gt; auch nach unten durch den Zielfunktionswert auf dem Polyeder beschränkt; nach dem Ausführen der Projektionen ist also das minimale Element des Intervalls der gesuchte Zielfunktionswert.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> :&lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^j&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^j,d^j)&lt;/math&gt; zu beschreiben.<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Datei:Projection_polytop.svg&diff=109419059 Datei:Projection polytop.svg 2012-10-17T05:55:02Z <p>Mathmon: </p> <hr /> <div>== Beschreibung, Quelle ==<br /> {{Information<br /> |Beschreibung = Projektion eines Polytops auf Hyperebenen<br /> |Quelle = selbst erstellt<br /> |Urheber = [[user:Mathmon]]<br /> |Datum = <br /> |Genehmigung = <br /> |Andere Versionen = <br /> |Anmerkungen = <br /> }}<br /> == Lizenz ==<br /> {{Bild-CC-by-sa/3.0/de}}<br /> {{Bild-CC-by-sa/3.0}}<br /> {{Bild-GFDL-Neu}}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109170622 Fourier-Motzkin-Elimination 2012-10-10T18:58:51Z <p>Mathmon: /* Beispiel zur Lösung eines linearen Programms */</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierende neue Ungleichung einen Eintrag von &lt;math&gt;0&lt;/math&gt; an der Stelle von &lt;math&gt; x_j &lt;/math&gt; hat.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion.<br /> <br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat die folgende Eigenschaft: Die resultierende Matrix &lt;math&gt;D&lt;/math&gt; und die rechte Seite<br /> &lt;math&gt;d&lt;/math&gt; lassen sich aus &lt;math&gt;A&lt;/math&gt; und &lt;math&gt;b&lt;/math&gt; durch Multiplikation von links mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt; gewinnen. Die &lt;math&gt;i&lt;/math&gt;-te Zeile von &lt;math&gt;U&lt;/math&gt; ist gegeben durch<br /> <br /> &lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> In dem angegebenen Beispiel ist damit<br /> <br /> &lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> <br /> Zusätzlich hat die Fourier-Motzkin-Elimination als Projektionsverfahren natürlich die Eigenschaft, dass<br /> &lt;math&gt;P(A,b) \neq \emptyset \ \Leftrightarrow P(D,d) \neq \emptyset \&lt;/math&gt;, die Zulässigkeit bleibt also erhalten.<br /> Diese Tatsachen lassen sich nutzen, um zu überprüfen, ob ein Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> &lt;math&gt;<br /> P(a,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^1,d^1) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^2,d^2) \ \cdots \ P(D^n,d^n)<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^n&lt;/math&gt; ist allerdings die [[Nullmatrix]]. Damit ist &lt;math&gt;P(D^n,d^n) = \emptyset &lt;/math&gt; genau dann, wenn der Vektor &lt;math&gt;d^n&lt;/math&gt; einen negativen Eintrag &lt;math&gt;d^n_k &lt; 0&lt;/math&gt; hat.<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^j&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^n = U \cdot A,\ d^n = U \cdot b, \; \text{wobei} \; U := U^n \cdot U^{n-1} \ldots U^1<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^n&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^j&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Lösen von linearen Programmen ===<br /> <br /> Da lineare Optimierungsprobleme und Zulässigkeitsprobleme über die [[Lineare_Optimierung#Dualität|Dualität]]<br /> der linearen Optimierung aufeinander reduzierbar sind, kann man mit der Fourier-Motzkin-Elimination auch<br /> beliebige lineare Programme lösen. Um eine Optimallösung von &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt;<br /> zu bestimmen, finden man ein Paar &lt;math&gt;x,y&lt;/math&gt; von zulässigen Lösungen von<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> A x &amp; \leq b \\<br /> y^T A &amp; = c^T \\<br /> y &amp; \geq 0 \\<br /> y^Tb &amp; \leq c^Tx \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Die zulässigen Lösungspaare sind genau solche &lt;math&gt;x, y&lt;/math&gt;, die in &lt;math&gt;P(\tilde{A}, \tilde{b})&lt;/math&gt;<br /> enthalten sind, wobei<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; \\<br /> &amp; A^T \\<br /> &amp; -A^T \\<br /> &amp; -I \\<br /> b^T &amp; -c^T \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{n + 3m \times m + n} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> c \\<br /> -c \\<br /> 0 \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{n + 3m}<br /> &lt;/math&gt;<br /> <br /> Dieses Verfahren hat allerdings den Nachteil, dass die Anzahl der Variablen und Ungleichungen stark anwächst,<br /> was die Berechnung erheblich verlangsamt.<br /> <br /> ==== Ein beschleunigtes Verfahren ====<br /> <br /> Eine Alternative zum obigen Verfahren ist der folgende Ansatz: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> D^n_{1,n+1} y &amp;\leq d^n_1 \\<br /> \vdots &amp; \\<br /> D^n_{l,n+1} y &amp;\leq d^n_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Diese Ungleichungen beschreiben ein [[Intervall (Mathematik)|Intervall]] möglicher Werte für<br /> die verbliebene Variable &lt;math&gt;y&lt;/math&gt;. Es treten die folgenden Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;b&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^*&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;.<br /> <br /> Es ist außerdem möglich, durch Fourier-Motzkin-Elimination simultan zusätzlich das Minimierungsproblem über den selben Polyeder zu lösen: Dazu verlangt man, dass anstelle der Ungleichung &lt;math&gt;y \leq c^T x&lt;/math&gt; die Gleichung &lt;math&gt;y = c^T x&lt;/math&gt; gilt. Damit ist &lt;math&gt;y&lt;/math&gt; auch nach unten durch den Zielfunktionswert auf dem Polyeder beschränkt; nach dem Ausführen der Projektionen ist also das minimale Element des Intervalls der gesuchte Zielfunktionswert.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> &lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^j&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^j,d^j)&lt;/math&gt; zu beschreiben.<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109149577 Fourier-Motzkin-Elimination 2012-10-10T09:50:48Z <p>Mathmon: </p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut entdeckt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierende neue Ungleichung einen Eintrag von &lt;math&gt;0&lt;/math&gt; an der Stelle von &lt;math&gt; x_j &lt;/math&gt; hat.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion.<br /> <br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Anwendungen ==<br /> === Zulässigkeitsprobleme ===<br /> <br /> Die Fourier-Motzkin-Elimination hat die folgende Eigenschaft: Die resultierende Matrix &lt;math&gt;D&lt;/math&gt; und die rechte Seite<br /> &lt;math&gt;d&lt;/math&gt; lassen sich aus &lt;math&gt;A&lt;/math&gt; und &lt;math&gt;b&lt;/math&gt; durch Multiplikation von links mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt; gewinnen. Die &lt;math&gt;i&lt;/math&gt;-te Zeile von &lt;math&gt;U&lt;/math&gt; ist gegeben durch<br /> <br /> &lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> In dem angegebenen Beispiel ist damit<br /> <br /> &lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> <br /> Zusätzlich hat die Fourier-Motzkin-Elimination als Projektionsverfahren natürlich die Eigenschaft, dass<br /> &lt;math&gt;P(A,b) \neq \emptyset \ \Leftrightarrow P(D,d) \neq \emptyset \&lt;/math&gt;, die Zulässigkeit bleibt also erhalten.<br /> Diese Tatsachen lassen sich nutzen, um zu überprüfen, ob ein Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> &lt;math&gt;<br /> P(a,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^1,d^1) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^2,d^2) \ \cdots \ P(D^n,d^n)<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^n&lt;/math&gt; ist allerdings die [[Nullmatrix]]. Damit ist &lt;math&gt;P(D^n,d^n) = \emptyset &lt;/math&gt; genau dann, wenn der Vektor &lt;math&gt;d^n&lt;/math&gt; einen negativen Eintrag &lt;math&gt;d^n_k &lt; 0&lt;/math&gt; hat.<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^j&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^n = U \cdot A,\ d^n = U \cdot b, \; \text{wobei} \; U := U^n \cdot U^{n-1} \ldots U^1<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^n&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^j&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> === Lösen von linearen Programmen ===<br /> <br /> Da lineare Optimierungsprobleme und Zulässigkeitsprobleme über die [[Lineare_Optimierung#Dualität|Dualität]]<br /> der linearen Optimierung aufeinander reduzierbar sind, kann man mit der Fourier-Motzkin-Elimination auch<br /> beliebige lineare Programme lösen. Um eine Optimallösung von &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt;<br /> zu bestimmen, finden man ein Paar &lt;math&gt;x,y&lt;/math&gt; von zulässigen Lösungen von<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> A x &amp; \leq b \\<br /> y^T A &amp; = c^T \\<br /> y &amp; \geq 0 \\<br /> y^Tb &amp; \leq c^Tx \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Die zulässigen Lösungspaare sind genau solche &lt;math&gt;x, y&lt;/math&gt;, die in &lt;math&gt;P(\tilde{A}, \tilde{b})&lt;/math&gt;<br /> enthalten sind, wobei<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; \\<br /> &amp; A^T \\<br /> &amp; -A^T \\<br /> &amp; -I \\<br /> b^T &amp; -c^T \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{n + 3m \times m + n} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> c \\<br /> -c \\<br /> 0 \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{n + 3m}<br /> &lt;/math&gt;<br /> <br /> Dieses Verfahren hat allerdings den Nachteil, dass die Anzahl der Variablen und Ungleichungen stark anwächst,<br /> was die Berechnung erheblich verlangsamt.<br /> <br /> ==== Ein beschleunigtes Verfahren ====<br /> <br /> Eine Alternative zum obigen Verfahren ist der folgende Ansatz: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> :&lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> D^n_{1,n+1} y &amp;\leq d^n_1 \\<br /> \vdots &amp; \\<br /> D^n_{l,n+1} y &amp;\leq d^n_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Diese Ungleichungen beschreiben ein [[Intervall (Mathematik)|Intervall]] möglicher Werte für<br /> die verbliebene Variable &lt;math&gt;y&lt;/math&gt;. Es treten die folgenden Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;b&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^*&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;.<br /> <br /> Es ist außerdem möglich, durch Fourier-Motzkin-Elimination simultan zusätzlich das Minimierungsproblem über den selben Polyeder zu lösen: Dazu verlangt man, dass anstelle der Ungleichung &lt;math&gt;y \leq c^T x&lt;/math&gt; die Gleichung &lt;math&gt;y = c^T x&lt;/math&gt; gilt. Damit ist &lt;math&gt;y&lt;/math&gt; auch nach unten durch den Zielfunktionswert auf dem Polyeder beschränkt; nach dem Ausführen der Projektionen ist also das minimale Element des Intervalls der gesuchte Zielfunktionswert.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> &lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt uns also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^j&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies in der Regel allerdings nicht effizient erkannt werden kann,<br /> wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^j,d^j)&lt;/math&gt; zu beschreiben.<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Fourier-Motzkin-Elimination&diff=109148608 Fourier-Motzkin-Elimination 2012-10-10T09:24:44Z <p>Mathmon: /* Beispiel für die Fourier-Motzkin-Elimination */</p> <hr /> <div>Die '''Fourier-Motzkin-Elimination''' ist ein Verfahren, um einen durch ein lineares Ungleichungssystem gegebenen [[Polyeder|konvexen Polyeder]]<br /> &lt;math&gt;P(A,b) := \{x \;|\; A x \le b \}&lt;/math&gt; auf eine [[Hyperebene]] der Form<br /> &lt;math&gt; H := \{x \;|\; x_j = 0 \}&lt;/math&gt; zu [[Projektion_(Mathematik)|projizieren]]. Dabei ist &lt;math&gt;A \in \mathbb{R}^{m \times n}&lt;/math&gt; eine [[Matrix (Mathematik)|Matrix]] und &lt;math&gt;b \in \mathbb{R}^{n}&lt;/math&gt; eine passende rechte Seite.<br /> <br /> Das Verfahren wurde von [[Joseph Fourier]] im Jahr 1827 erstmals beschrieben<br /> &lt;ref&gt;J.B.J. Fourier aus dem Journal: ''Analyse des travaux de l'Académie Royale des Sciences pendant l'année 1824, Partie mathématique, 1827''<br /> &lt;/ref&gt;<br /> und 1936 in der Doktorarbeit von [[Theodore Motzkin]] erneut erwähnt<br /> &lt;ref&gt;T.S. Motzkin: ''Beiträge zur Theorie der Linearen Ungleichungen'',&lt;/ref&gt;.<br /> <br /> == Beschreibung des Verfahrens ==<br /> <br /> Der Algorithmus kombiniert die Zeilen &lt;math&gt;A_{i \cdot} \ i \in M := \{1 \ldots m\}&lt;/math&gt; der Matrix &lt;math&gt;A&lt;/math&gt; und die Einträge der rechten Seite &lt;math&gt;b&lt;/math&gt; [[Linearkombination#Positive Koeffizienten|konisch]] zu neuen Ungleichungen. Dies geschieht in einer Weise, die<br /> sicherstellt, dass die resultierende neue Ungleichung einen Eintrag von &lt;math&gt;0&lt;/math&gt; an der Stelle von &lt;math&gt; x_j &lt;/math&gt; hat.<br /> <br /> Der Algorithmus wird durch folgenden [[Pseudocode]] beschrieben:<br /> <br /> '''function''' FourierMotzkin(A, b, j) '''is'''<br /> ''' input:''' a matrix &lt;math&gt;A&lt;/math&gt; of dimension &lt;math&gt;(m,n)&lt;/math&gt;, a vector &lt;math&gt;b&lt;/math&gt; of dimension &lt;math&gt;m&lt;/math&gt; and an index ''j'' &lt;math&gt;\in \{1, \ldots, n\}&lt;/math&gt;<br /> '''output:''' a matrix &lt;math&gt;D&lt;/math&gt; of dimension &lt;math&gt;(r,n)&lt;/math&gt; such that &lt;math&gt;D_{ij}= 0&lt;/math&gt; for all &lt;math&gt;i=1,\ldots,r&lt;/math&gt; and a vector &lt;math&gt;d&lt;/math&gt; with &lt;math&gt;r&lt;/math&gt; entries<br /> <br /> &lt;math&gt;Z \leftarrow \{i \in M \;|\; a_{ij} = 0 \}&lt;/math&gt;<br /> &lt;math&gt;N \leftarrow \{i \in M \;|\; a_{ij} &lt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;P \leftarrow \{i \in M \;|\; a_{ij} &gt; 0 \}&lt;/math&gt;<br /> &lt;math&gt;R \leftarrow Z \cup (N \times P) &lt;/math&gt;<br /> &lt;math&gt;r \leftarrow | R | &lt;/math&gt;<br /> &lt;math&gt;p \leftarrow&lt;/math&gt; an indexing of the elements in &lt;math&gt;R&lt;/math&gt;, i.e. a function &lt;math&gt; p : R \rightarrow Z \cup (N \times P) &lt;/math&gt;<br /> <br /> '''for''' &lt;math&gt;i=1&lt;/math&gt; '''to''' &lt;math&gt;r&lt;/math&gt; '''do'''<br /> '''if''' &lt;math&gt; p(i) \in Z &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow A_{p(i) \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow b_{p(i)}&lt;/math&gt;<br /> '''else if''' &lt;math&gt; p(i) = (s,t) \in N \times P &lt;/math&gt; '''then'''<br /> &lt;math&gt;D_{i \cdot} \leftarrow a_{tj} A_{s \cdot} - a_{sj} A_{t \cdot}&lt;/math&gt;<br /> &lt;math&gt;d_{i}\ \leftarrow a_{tj} b_{s} - a_{sj} b_{t}&lt;/math&gt;<br /> '''endif'''<br /> '''endfor'''<br /> '''return''' &lt;math&gt;(D,d)&lt;/math&gt;<br /> <br /> Der resultierende Polyeder &lt;math&gt;P(D,d)&lt;/math&gt; beschreibt anschließend die gewünschte Projektion.<br /> <br /> Da die Menge &lt;math&gt;R&lt;/math&gt; im allgemeinen sehr groß werden kann, ist es ratsam, die Ungleichungen zunächst so zu skalieren, dass &lt;math&gt;a_{ij} \in \{ \pm 1, 0\}&lt;/math&gt; für alle &lt;math&gt;i \in \{1, \ldots m\}&lt;/math&gt;. Zur Bestimmung<br /> von &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;d&lt;/math&gt; müssen die Spalten dann nur noch voneinander subtrahiert werden.<br /> <br /> == Beispiel für die Fourier-Motzkin-Elimination ==<br /> <br /> [[Datei:Projection_polytop.svg|miniatur|Die Projektion eines Polyeders auf verschiedene (lineare) [[Hyperebene|Hyperebenen]]]]<br /> <br /> Als Beispiel wählen wir den Polyeder &lt;math&gt;P(A,b)&lt;/math&gt;, der durch das folgende Ungleichungssystem gegeben ist:<br /> <br /> &lt;math&gt;<br /> P(A,b) = \{ (x,y) \in \mathbb{R}^2 \ |\ x \geq 1,\ 2x + 4y \leq 14,\ x - 2y \leq -1 \}<br /> &lt;/math&gt;<br /> <br /> Die entsprechende Matrix und rechte Seite sind folglich<br /> <br /> &lt;math&gt;<br /> A = \left(<br /> \begin{array}{rr}<br /> -1 &amp; 0 \\<br /> 2 &amp; 4 \\<br /> 1 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> b = \left(<br /> \begin{array}{r}<br /> -1 \\<br /> 14 \\<br /> -1 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> Für die Projektion auf die Hyperebene &lt;math&gt;x=0&lt;/math&gt;, also für &lt;math&gt;j=1&lt;/math&gt;, erhalten wir die folgenden Mengen: <br /> <br /> &lt;math&gt;Z= \emptyset&lt;/math&gt;, &lt;math&gt;N=\{1\}&lt;/math&gt; und &lt;math&gt;P=\{2,3\}&lt;/math&gt;.<br /> <br /> Damit ist &lt;math&gt;r=2&lt;/math&gt; und &lt;math&gt;R=\{(1,2),\ (1,3)\}&lt;/math&gt;. Wir setzen &lt;math&gt;p(1) = (1,2),\ p(2) = (1,3)&lt;/math&gt;.<br /> <br /> Für &lt;math&gt;i = 1&lt;/math&gt; kombinieren wir die erste und zweite Ungleichung:<br /> <br /> &lt;math&gt;<br /> 2 \cdot (-x) - (-1) \cdot (2x+4y) \leq 2 \cdot (-1) - (-1) \cdot (14) \; \Longrightarrow \; 4y \leq 12<br /> &lt;/math&gt;<br /> <br /> Für &lt;math&gt;i = 2&lt;/math&gt; erhalten wir durch die Kombination der ersten und dritten Ungleichung die folgende neue Ungleichung:<br /> <br /> &lt;math&gt;<br /> 1 \cdot (-x) - (-1) \cdot (x -2y) \leq 1 \cdot (-1) - (-1) \cdot (-1) \; \Longrightarrow \; -2y \leq -2<br /> &lt;/math&gt;<br /> <br /> <br /> Das Bild der Projektion ist also gegeben durch &lt;math&gt;\{ (0,y) \in \mathbb{R}^2 \ | \ 1 \leq y \leq 3 \}&lt;/math&gt;,<br /> während die resultierende Matrix &lt;math&gt;D&lt;/math&gt; bzw.<br /> die rechte Seite &lt;math&gt;d&lt;/math&gt; die folgende Gestalt haben:<br /> <br /> &lt;math&gt;<br /> D = \left(<br /> \begin{array}{rr}<br /> 0 &amp; 4 \\<br /> 0 &amp; -2 \\<br /> \end{array}<br /> \right),\ <br /> <br /> d = \left(<br /> \begin{array}{r}<br /> 12 \\<br /> -2 \\<br /> \end{array}<br /> \right)<br /> &lt;/math&gt;<br /> <br /> == Theoretische Resultate ==<br /> <br /> Die Fourier-Motzkin-Elimination hat die folgende Eigenschaft: Die resultierende Matrix &lt;math&gt;D&lt;/math&gt; und die rechte Seite<br /> &lt;math&gt;d&lt;/math&gt; lassen sich aus &lt;math&gt;A&lt;/math&gt; und &lt;math&gt;b&lt;/math&gt; durch Multiplikation von links mit einer Matrix &lt;math&gt;U \in \mathbb{R}_+^{d \times m}&lt;/math&gt; gewinnen. Die &lt;math&gt;i&lt;/math&gt;-te Zeile von &lt;math&gt;U&lt;/math&gt; ist gegeben durch<br /> <br /> &lt;math&gt;<br /> U_{i \cdot} =<br /> \begin{cases}<br /> e_k &amp; \text{falls } p(i) = k \in Z \\<br /> a_{tj} e_s - a_{sj} e_t &amp; \text{falls } p(i) = (s,t) \in N \times P \\<br /> \end{cases}<br /> &lt;/math&gt;<br /> <br /> In dem angegebenen Beispiel ist damit<br /> <br /> &lt;math&gt;<br /> U = \left(<br /> \begin{array}{rrr}<br /> 2 &amp; 1 &amp; 0 \\<br /> 1 &amp; 0 &amp; 1 \\<br /> \end{array}<br /> \right)&lt;/math&gt;<br /> <br /> <br /> Zusätzlich hat die Fourier-Motzkin-Elimination als Projektionsverfahren natürlich die Eigenschaft, dass<br /> &lt;math&gt;P(A,b) \neq \emptyset \ \Leftrightarrow P(D,d) \neq \emptyset \&lt;/math&gt;, die Zulässigkeit bleibt also erhalten.<br /> Diese Tatsachen lassen sich nutzen, um zu überprüfen, ob ein Polyeder &lt;math&gt;P(A,b)&lt;/math&gt; eine zulässige Lösung hat oder nicht: Zunächst werden ''sämtliche'' Variablen nacheinander herausprojiziert:<br /> <br /> &lt;math&gt;<br /> P(a,b) \xrightarrow{\text{FourierMotzkin}(A,b,1)} P(D^1,d^1) \xrightarrow{\text{FourierMotzkin}(A,b,2)} P(D^2,d^2) \ \cdots \ P(D^n,d^n)<br /> &lt;/math&gt;<br /> <br /> Die resultierende Matrix &lt;math&gt;D^n&lt;/math&gt; ist allerdings die [[Nullmatrix]]. Damit ist &lt;math&gt;P(D^n,d^n) = \emptyset &lt;/math&gt; genau dann, wenn der Vektor &lt;math&gt;d^n&lt;/math&gt; einen negativen Eintrag &lt;math&gt;d^n_k &lt; 0&lt;/math&gt; hat.<br /> <br /> Da sich der &lt;math&gt;j&lt;/math&gt;-te Projektionsschritt durch eine Multiplikation mit einer nichtnegativen Matrix &lt;math&gt;U^j&lt;/math&gt; ausführen lässt, gilt außerdem:<br /> <br /> &lt;math&gt;<br /> D^n = U \cdot A,\ d^n = U \cdot b, \; \text{wobei} \; U := U^n \cdot U^{n-1} \ldots U^1<br /> &lt;/math&gt;.<br /> <br /> Wenn der &lt;math&gt;k&lt;/math&gt;-te Eintrag von &lt;math&gt;d^n&lt;/math&gt; negativ ist,<br /> so ist &lt;math&gt;u \cdot A = 0&lt;/math&gt; und &lt;math&gt;u \cdot b &lt; 0&lt;/math&gt;, wobei &lt;math&gt;u := e_k \cdot U&lt;/math&gt;. Diese Aussage entspricht dem [[Lemma von Farkas|Farkas' Lemma]]. Da sich die Matrizen &lt;math&gt;U^j&lt;/math&gt; während der Ausführung des Algorithmus aufstellen lassen, bietet die Fourier-Motzkin-Elimination damit die Möglichkeit, das Zertifikat für<br /> &lt;math&gt;P(A,b) = \emptyset&lt;/math&gt; explizit zu berechnen.<br /> <br /> Zusätzlich impliziert die Fourier-Motzkin-Elimination, dass die Projektion eines Polyeders wieder ein Polyeder ist.<br /> Dieses Resultat kann benutzt werden, um die Äquivalenz der &lt;math&gt;\mathcal{V}&lt;/math&gt;- und &lt;math&gt;\mathcal{H}&lt;/math&gt;-Darstellung von Polyedern zu zeigen.<br /> <br /> == Lösen von linearen Programmen ==<br /> <br /> Die Fourier-Motzkin-Elimination kann zusätzlich benutzt werden, um [[Lineare Optimierung|lineare Programme]] zu lösen.<br /> Man kann dazu entweder das Optimierungsproblem auf ein Zulässigkeitsproblem reduzieren, oder eine zusätzliche Variable einführen, die durch den Zielfunktionswert auf dem Polyeder beschränkt ist.<br /> <br /> === Reduktion auf ein Zulässigkeitsproblem ===<br /> Gegeben sei ein Optimierungsproblem der Form &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt;,<br /> dann sind die folgenden Aussagen sind äquivalent:<br /> <br /> # Der Vektor &lt;math&gt;x^*&lt;/math&gt; ist optimal für &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt;<br /> # Es gibt ein &lt;math&gt;y^* \in \mathbb{R}^m&lt;/math&gt;, sodass &lt;math&gt;(x^*,y^*)&lt;/math&gt; in dem Polyeder &lt;math&gt; \{ (x,y) \in \mathbb{R}^{n+m} \;|\; A x \leq b,\ y^T A = c,\ y \geq 0,\ c^T x \geq y^T b \} &lt;/math&gt; liegt.<br /> <br /> Dies folgt aus der [[Lineare_Optimierung#Dualität|Dualität]] der linearen Optimierung. Man kann also beliebige lineare Programme dadurch lösen, dass man diese zunächst in Zulässigkeitsprobleme umformt, dieses dann in die Form<br /> &lt;math&gt;\{z \;|\; \tilde{A}z \leq \tilde{b} \}&lt;/math&gt; bringt und mit der Fourier-Motzkin-Elimination löst. Man erhält damit nicht nur die Optimallösung &lt;math&gt;x^*&lt;/math&gt;, sondern auch eine zugehörige Duallösung &lt;math&gt;y^*&lt;/math&gt;.<br /> <br /> Dieses Verfahren hat allerdings den Nachteil, dass die Matrix &lt;math&gt;\tilde{A}&lt;/math&gt; eine Dimension von ungefähr<br /> &lt;math&gt;(m + n) \times (m + n)&lt;/math&gt; hat, wodurch die Berechnung stark verlängert wird.<br /> <br /> === Einführung einer neuen Variable ===<br /> <br /> Eine Alternative zum obigen Verfahren ist der folgende Ansatz: Um das Problem<br /> &lt;math&gt;\max \{ c^T x \; | \; A x \leq b \}&lt;/math&gt; zu lösen, führt man eine zusätzliche Variable &lt;math&gt;y \in \mathbb{R}&lt;/math&gt; ein, und fordert zusätzlich, dass &lt;math&gt;y \leq c^T x&lt;/math&gt;. Der Wert der Variablen &lt;math&gt;y&lt;/math&gt; ist also<br /> durch die Optimallösung des Problems beschränkt. Man erhält dadurch einen Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;<br /> mit<br /> <br /> &lt;math&gt;<br /> \tilde{A} = \left(<br /> \begin{array}{rr}<br /> A &amp; 0 \\<br /> -c^T &amp; 1 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1 \times n + 1} ,\ <br /> <br /> \tilde{b} = \left(<br /> \begin{array}{r}<br /> b \\<br /> 0 \\<br /> \end{array}<br /> \right) \in \mathbb{R}^{m + 1}<br /> &lt;/math&gt;<br /> <br /> Man projiziert anschließend die ersten &lt;math&gt;n&lt;/math&gt; Einträge heraus, sodass man schließlich ein System der Form<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> D^n_{1,n+1} y &amp;\leq d^n_1 \\<br /> \vdots &amp; \\<br /> D^n_{l,n+1} y &amp;\leq d^n_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> erhält. Diese Ungleichungen beschreiben ein [[Intervall (Mathematik)|Intervall]] möglicher Werte für<br /> die verbliebene Variable &lt;math&gt;y&lt;/math&gt;. Es treten die folgenden Fälle auf:<br /> <br /> # Das Intervall ist leer. In diesem Fall besitzt das Optimierungsproblem keine zulässige Lösung.<br /> # Das Intervall ist nicht nach oben beschränkt. Damit ist auch das Optimierungsproblem unbeschränkt.<br /> # Das Intervall ist nicht leer und besitzt ein maximales Element &lt;math&gt;b&lt;/math&gt;. Damit ist der Zielfunktionswert der Optimallösung des Problems genau &lt;math&gt;b&lt;/math&gt;.<br /> <br /> Um eine Lösung &lt;math&gt;x^*&lt;/math&gt; mit einem gegebenen Zielfunktionswert &lt;math&gt;y^*&lt;/math&gt; zu erhalten,<br /> geht man wie folgt vor:<br /> Zunächst betrachtet man das System nach der {{nowrap|&lt;math&gt;n-1&lt;/math&gt;-ten}} Iteration: Es treten nur noch die Variablen &lt;math&gt;y&lt;/math&gt; und &lt;math&gt;x_n&lt;/math&gt; auf, wobei der Wert von &lt;math&gt;y&lt;/math&gt; schon auf &lt;math&gt;y^*&lt;/math&gt; festgelegt ist:<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> D^{n-1}_{1,n} x_n + D^{n-1}_{1,n+1} y &amp;\leq d^{n-1}_1 \\<br /> \vdots &amp; \\<br /> D^{n-1}_{l,n} x_n + D^{n-1}_{l,n+1} y &amp;\leq d^{n-1}_l \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Man erhält somit ein (nicht leeres) Intervall von möglichen Lösungen für &lt;math&gt;x_n&lt;/math&gt;, von denen man eine beliebige auswählt. Diesen Prozess iteriert man für &lt;math&gt;x_{n-1}, \ldots, x_{1}&lt;/math&gt;.<br /> <br /> Es ist außerdem möglich, durch Fourier-Motzkin-Elimination simultan zusätzlich das Minimierungsproblem über den selben Polyeder zu lösen: Dazu verlangt man, dass anstelle der Ungleichung &lt;math&gt;y \leq c^T x&lt;/math&gt; die Gleichung &lt;math&gt;y = c^T x&lt;/math&gt; gilt. Damit ist &lt;math&gt;y&lt;/math&gt; auch nach unten durch den Zielfunktionswert auf dem Polyeder beschränkt; nach dem Ausführen der Projektionen ist also das minimale Element des Intervalls der gesuchte Zielfunktionswert.<br /> <br /> === Beispiel zur Lösung eines linearen Programms ===<br /> <br /> Zur Illustration des Verfahrens wählen wir das Programm<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> <br /> \max &amp; x_1 \\<br /> \text{s. t.} &amp; x_1 + x_2 \leq 4 \\<br /> &amp; x_1 \geq 0 \\<br /> &amp; x_2 \geq 0 \\<br /> \end{align}<br /> <br /> &lt;/math&gt;<br /> <br /> Um das Problem zu lösen, fügen wir die Variable &lt;math&gt;y&lt;/math&gt; zusammen mit der Ungleichung &lt;math&gt;y \leq x_1&lt;/math&gt;<br /> zu dem Problem hinzu. Die folgenden Systeme zeigen den Polyeder &lt;math&gt;P(\tilde{A},\tilde{b})&lt;/math&gt;, sowie<br /> die veränderten Systeme nach der Projektion auf &lt;math&gt;\{x_1=0\}&lt;/math&gt; und &lt;math&gt;\{x_2 = 0\}&lt;/math&gt;:<br /> <br /> &lt;math&gt;<br /> \left[<br /> \begin{array}<br /> x_1 + x_2 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_2 &amp; \leq 0 \\<br /> -x_1 + y &amp; \leq 0 \\<br /> \end{array}<br /> \right]<br /> \;\;<br /> <br /> \left[<br /> \begin{array}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 + y &amp; \leq 4 \\<br /> \end{array}<br /> \right]<br /> <br /> \;\;<br /> <br /> \left[<br /> \begin{align}<br /> 0 &amp; \leq 0 \\<br /> y &amp; \leq 4 \\<br /> \end{align}<br /> \right]<br /> &lt;/math&gt;<br /> <br /> Damit steht fest, dass die Optimallösung des Problems den Zielfunktionswert 4 hat. Um eine entsprechende Lösung<br /> zu erhalten, setzen wir &lt;math&gt;y^*=4&lt;/math&gt; und kehren zum vorletzten Schritt zurück. Es ergibt sich das System<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> -x_2 &amp; \leq 0 \\<br /> x_2 &amp; \leq 4 \\<br /> x_2 &amp; \leq 0 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Es bleibt uns also nichts anderes übrig, als &lt;math&gt;x_2^* = 0&lt;/math&gt; zu setzen. Der Wert von &lt;math&gt;x_1^*&lt;/math&gt; ergibt<br /> sich schlussendlich aus dem System<br /> <br /> &lt;math&gt;<br /> \begin{align}<br /> x_1 &amp; \leq 4 \\<br /> -x_1 &amp; \leq 0 \\<br /> -x_1 &amp; \leq -4 \\<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Damit ist die Optimallösung &lt;math&gt;(x_1^*,x_2^*) = (4,0)&lt;/math&gt;.<br /> <br /> == Laufzeit ==<br /> <br /> Obwohl die Fourier-Motzkin-Elimination zur Lösung von linearen Programmen verwendet werden kann, gibt man in der<br /> Praxis anderen Algorithmen den Vorzug. Das Problem der Fourier-Motzkin-Elimination ist, dass im ungünstigsten Fall<br /> die Anzahl der Ungleichungen bzw. die Größe der Matrizen &lt;math&gt;D^j&lt;/math&gt; in jeden Projektionsschritt<br /> von vorher &lt;math&gt;m&lt;/math&gt; auf<br /> &lt;math&gt;\left( \frac{m}{2} \right)^2&lt;/math&gt; anwächst.<br /> In diesem Fall ist die Laufzeit des Algorithmus nicht mehr [[Polynomialzeit|polynomiell]].<br /> Im allgemeinen sind außerdem die meisten der erzeugten Ungleichungen redundant.<br /> Da dies allerdings nicht effizient erkannt werden kann, wird für die Fourier-Motzkin-Elimination weit mehr Speicher<br /> gebraucht als nötig wäre, um die Polyeder &lt;math&gt;P(D^j,d^j)&lt;/math&gt; zu beschreiben.<br /> <br /> == Einzelnachweise ==<br /> <br /> &lt;references /&gt;<br /> <br /> == Weblinks ==<br /> <br /> * [http://www.zib.de/groetschel/teaching/WS0910/skriptADMII-WS0910neu.pdf Ein Vorlesungsskript zur linearen Optimierung]<br /> * {{Cite book |last=Schrijver |first=Alexander|authorlink=Alexander Schrijver |title=Theory of Linear and Integer Programming |location= |publisher=John Wiley &amp; sons |year=1998 |isbn=0-471-98232-6 |pages=155–156 }}<br /> * {{Cite journal |last=Williams |first=H. P. |title=Fourier's Method of Linear Programming and its Dual |journal=American Mathematical Monthly |volume=93 |year=1986 |issue= |pages=681–695 |doi= }}</div> Mathmon https://de.wikipedia.org/w/index.php?title=Benutzer:Mathmon/Zweite_Quantisierung&diff=109147800 Benutzer:Mathmon/Zweite Quantisierung 2012-10-10T09:03:44Z <p>Mathmon: /* Operatoren */</p> <hr /> <div>Die '''Zweite Quantisierung''' (oft auch ''Zweite Quantelung'' oder ''Feldquantisierung'' genannt) ist eine Methode zur [[Quantenmechanik|quantenmechanischen]] Behandlung von [[Vielteilchentheorie|Vielteilchenproblemen]], insbesondere auch der Prozesse, bei denen Teilchen entstehen oder vernichtet werden. Sie wurde kurz nach der Entdeckung der Quantenmechanik (siehe [[Erste Quantisierung]]) entwickelt, um auch Photonen und deren Erzeugung und Vernichtung quantenmechanisch beschreiben zu können. Die Photonen erscheinen in der Zweiten Quantisierung als die Feldquanten des quantisierten elektromagnetischen Felds, was auf den zweiten angegebenen Namen führte. Als in den 1930er Jahren entdeckt wurde, dass auch „materielle“ Teilchen erzeugt und vernichtet werden können, wurde der Anwendungsbereich der Methode auf alle Teilchen ausgedehnt. Damit war in der Physik der anschauliche Gegensatz zwischen [[Welle-Teilchen-Dualismus|Teilchen und Wellen]] in seiner früheren grundsätzlichen Bedeutung aufgehoben.<br /> <br /> Die Zweite Quantisierung wird im Bereich der [[Festkörperphysik]], der [[Quantenfeldtheorie]] und anderen Vielteilchentheorien angewandt. Sie ist häufig der angemessenste Rahmen, um physikalische Probleme theoretisch zu behandeln.<br /> <br /> == Vielteilchensysteme in der Quantenmechanik ==<br /> <br /> === Hilbertraum und Zustände ===<br /> <br /> In der Vielteilchentheorien betrachtet man &lt;math&gt;N&lt;/math&gt; verschiedene Teilchen, welche man von &lt;math&gt;1&lt;/math&gt; bis<br /> &lt;math&gt;N&lt;/math&gt; durchnummeriert. Zu jedem Teilchen gehört ein Hilbertraum &lt;math&gt;\mathcal{H}^{(i)}&lt;/math&gt;, welcher die<br /> möglichen Zustände des &lt;math&gt;i&lt;/math&gt;-ten Teilchens enthält. Der Hilbertraum des Gesamtsystems ist gegeben als das<br /> Tensorprodukt der einzelnen Hilberträume:<br /> <br /> :&lt;math&gt;<br /> \mathcal{H} = \mathcal{H}^{(1)} \otimes \mathcal{H}^{(2)} \otimes \ldots \otimes \mathcal{H}^{(N)}<br /> &lt;/math&gt;<br /> <br /> Falls &lt;math&gt;\{ \vert \alpha_i \rangle \}&lt;/math&gt; eine Basis des Raumes &lt;math&gt;\mathcal{H}^{(i)}&lt;/math&gt; ist, so lässt<br /> sich eine Basis des gesamtes Hilbertraumes konstruieren als<br /> <br /> :&lt;math&gt;<br /> \{ \vert \alpha_1 \rangle \otimes \vert \alpha_2 \rangle \otimes \ldots \otimes \vert \alpha_N \rangle<br /> =: \vert \alpha_1 \alpha_2 \ldots \alpha_N \rangle \}<br /> &lt;/math&gt;<br /> <br /> Ein beliebiger Zustand &lt;math&gt;\vert \Psi \rangle \in \mathcal{H}&lt;/math&gt; lässt sich somit schreiben als<br /> <br /> :&lt;math&gt;<br /> \vert \Psi \rangle = \sum_ {\alpha_1, \ldots, \alpha_N} c_{\alpha_1, \ldots, \alpha_N} \cdot<br /> \vert \alpha_1 \ldots \alpha_N \rangle<br /> &lt;/math&gt;<br /> <br /> Eine anschauliche Interpretation eines solchen Zustandes erhält man beispielsweise durch dessen<br /> Projektion auf den Ortsraum:<br /> <br /> :&lt;math&gt;<br /> \langle x_1 ,\ldots, x_N \vert \Psi \rangle = \Psi(x_1, \ldots, x_N)<br /> &lt;/math&gt;<br /> <br /> Ein Vielteilchenzustand im Ortsraum ist also eine Funktion, die von &lt;math&gt;N&lt;/math&gt; verschiedenen Koordinaten<br /> abhängt. Die [[Wellenfunktion#Teilcheninterpretation|Teilcheninterpretation]] ist analog zu der Interpretation<br /> im Fall &lt;math&gt;N=1&lt;/math&gt;: Die Wahrscheinlichkeit, das erste Teilchen im Volumen &lt;math&gt;V_1&lt;/math&gt; anzutreffen,<br /> das zweite in &lt;math&gt;V_2&lt;/math&gt; und so weiter ist gegeben durch<br /> <br /> :&lt;math&gt;<br /> \int_{V_1} \int_{V_2} \cdots \int_{V_N} \vert \Psi(x_1, \ldots, x_N) \vert^2 \mathrm dx_N \ldots \mathrm dx_2 \mathrm dx_1<br /> &lt;/math&gt;<br /> <br /> In diesem Fall fordert man natürlich die korrekte Normierung der Wellenfunktion:<br /> <br /> :&lt;math&gt;<br /> \int_{\mathbb{R}^d} \int_{\mathbb{R}^d} \cdots \int_{\mathbb{R}^d}<br /> \vert \Psi(x_1, \ldots, x_N) \vert^2 \mathrm dx_N \ldots \mathrm dx_2 \mathrm dx_1<br /> \,\stackrel{!}{=}\, 1<br /> &lt;/math&gt;<br /> <br /> Liegt ein Zustand der Form &lt;math&gt;\vert \alpha_1 \ldots \alpha_N \rangle&lt;/math&gt; vor, so hat die Wellenfunktion<br /> im Ortsraum die Gestalt<br /> <br /> :&lt;math&gt;<br /> \langle x_1 ,\ldots, x_N \vert \alpha_1 \ldots \alpha_N \rangle =<br /> \alpha_1(x_1) \cdot \alpha_2(x_2) \cdot \ldots \cdot \alpha_N(x_N)<br /> &lt;/math&gt;<br /> <br /> In diesem Fall vereinfacht sich die Berechnung der Aufenthaltswahrscheinlichkeit, da das Integral in ein<br /> Produkt zerfällt:<br /> <br /> :&lt;math&gt;<br /> \int_{V_1} \int_{V_2} \cdots \int_{V_N} \vert \Psi(x_1, \ldots, x_N) \vert^2 \mathrm dx_N \ldots \mathrm dx_2 \mathrm dx_1<br /> = \left( \int_{V_1} \vert \alpha_1(x_1) \vert^2 \mathrm dx_1 \right) \cdot<br /> \left( \int_{V_2} \vert \alpha_1(x_2) \vert^2 \mathrm dx_2 \right) \ldots<br /> \left( \int_{V_N} \vert \alpha_1(x_N) \vert^2 \mathrm dx_N \right)<br /> &lt;/math&gt;<br /> <br /> Einen Zustand, welcher in dieser Form vorliegt, bezeichnet man als ''reinen'' oder ''separablen'' Zustand,<br /> während ein jeglicher<br /> anderer Zustand als ''gemischt'' oder ''verschränkt'' bezeichnet wird. Bei einem reinen Zustand sind die<br /> Aufenthaltswahrscheinlichkeiten also unabhängig voneinander, während bei einem verschränkten Zustand die<br /> Aufenthaltswahrscheinlichkeit jedes Teilchens von den Aufenthaltswahrscheinlichkeiten aller anderen Teilchen<br /> abhängt.<br /> <br /> === Operatoren ===<br /> <br /> Ein Operator &lt;math&gt;\hat A&lt;/math&gt; eines Vielteilchensystems ist ein Funktional<br /> &lt;math&gt;\hat A : \mathcal{H} \mapsto \mathcal{H}&lt;/math&gt;. Eine Besonderheit sind hier Operatoren aus<br /> den einzelnen Räumen &lt;math&gt;\mathcal{H}^{(i)}&lt;/math&gt;: Diese werden durch Tensorprodukte zu Operatoren<br /> des Raumes &lt;math&gt;\mathcal{H}&lt;/math&gt; gemacht. Beispielsweise wird der Ortsoperator &lt;math&gt; \hat x_1&lt;/math&gt; zu<br /> <br /> :&lt;math&gt;<br /> \hat x_1 \otimes \mathbb{1}_2 \otimes \ldots \otimes \mathbb{1}_N<br /> &lt;/math&gt;<br /> <br /> Dabei bezeichnet &lt;math&gt;\mathbb{1}_i&lt;/math&gt; die [[Identische Abbildung|identische Abbildung]] im Raum<br /> &lt;math&gt;\mathcal{H}^{(i)}&lt;/math&gt;. Aus Gründen der Notation schreibt man die identischen Abbildungen im<br /> Allgemeinen nicht mit.<br /> <br /> Die Dynamik eines Vielteilchensystems wird weiterhin durch die [[Schrödingergleichung]] beschrieben:<br /> <br /> :&lt;math&gt;<br /> \mathrm{i} \hbar \frac{\partial}{\partial t} |\,\psi (t) \rangle<br /> = \hat{H}(\hat x_1, \ldots, \hat x_N, \hat p_1, \ldots, \hat p_N, t) |\,\psi (t) \rangle<br /> &lt;/math&gt;<br /> <br /> Der [[Hamiltonoperator]] hängt im allgemeinen Fall von sämtlichen Orts- und Impulsoperatoren sowie von der Zeit<br /> ab. Ein Beispiel für wechselwirkende Teilchen ist gegeben durch<br /> <br /> :&lt;math&gt;<br /> \hat{H} = \sum_{i=1}^{N} \frac{\hat p_i^2}{2 m_i} + \sum_{i \neq j}^N \hat V (\hat x_i, \hat x_j)<br /> &lt;/math&gt;<br /> <br /> == Grundbegriffe ==<br /> Kurze Zusammenstellung einiger der wesentlichen neuen Begriffe und ihrer unmittelbaren Folgen:<br /> * Der [[Zustand (Quantenmechanik)|Zustand]] des betrachteten Systems wird wie in der gewöhnlichen Quantenmechanik durch einen normierten Vektor in einem [[Hilbertraum]] angegeben, der aber jetzt [[Fockraum]] genannt wird, weil er Zustände mit unterschiedlichen Teilchenzahlen enthält.<br /> * Es gibt einen Zustand ohne jedes Teilchen, das absolute [[Vakuum]], Symbol &lt;math&gt;\vert O\rangle&lt;/math&gt;.<br /> :: (Der Vakuumzustand ist normiert, &lt;math&gt;\langle O\vert O\rangle=1&lt;/math&gt;, darf also nicht mit dem [[Nullvektor]] verwechselt werden.)<br /> * Es gibt für jede Teilchenart einen Erzeugungsoperator, der es in einem definierten Zustand in die Welt setzt, Symbol &lt;math&gt;a^\dagger&lt;/math&gt; (für eine andere Teilchenart &lt;math&gt;b^\dagger&lt;/math&gt; etc.). Der 1-Teilchenzustand mit einem Teilchen im Zustand ''p'' ist dann gegeben durch &lt;math&gt;a^\dagger_p \vert O \rangle&lt;/math&gt;. Der 2-Teilchenzustand mit einem zweiten Teilchen gleicher Art, aber im Zustand ''k'', ist dann gegeben durch nochmaliges Anwenden des Erzeugers: &lt;math&gt;a^\dagger_k a^\dagger_p \vert O \rangle&lt;/math&gt;. Für weitere Teilchen entsprechend weitere Erzeugungsoperatoren.<br /> * Da die „a“-Teilchen unter sich identisch sind, darf bei einer Vertauschung in der Reihenfolge der Erzeugung kein anderer Zustand herauskommen. Allenfalls muss sich das Vorzeichen ändern. Das wird gewährleistet durch die Bedingungen<br /> :: &lt;math&gt;a^\dagger_k a^\dagger_p = +a^\dagger_p a^\dagger_k&lt;/math&gt; für [[Boson]]en („vertauschbar“)<br /> :: &lt;math&gt;a^\dagger_k a^\dagger_p = -a^\dagger_p a^\dagger_k&lt;/math&gt; für [[Fermion]]en („antivertauschbar“). <br /> :Erzeuger verschiedener Teilchenarten sind immer vertauschbar. Damit ist schon früh im Formalismus zweierlei erreicht:<br /> # Die [[Ununterscheidbare Teilchen|''absolute'' Ununterscheidbarkeit]] gleicher Teilchen ist eingebaut. Die Teilchen bekommen noch nicht einmal mehr eine Nummer, um ihre Koordinaten voneinander unterscheiden zu können.<br /> # Bosonen-Zustände sind immer symmetrisch gegen Vertauschung, Fermionenzustände immer antisymmetrisch. Das [[Pauli-Prinzip]] ist automatisch berücksichtigt und die unterschiedlichen [[Quantenstatistik]]en ergeben sich zwangsläufig. <br /> * Der Operator für die Vernichtung eines Teilchens im Zustand ''p'' ist &lt;math&gt;\,a_p&lt;/math&gt;. Ein Anwendungsbeispiel: Hier lässt die Vernichtung eines existierenden Teilchens im Vakuum das leere Vakuum zurück, &lt;math&gt;a_p\,a^\dagger_p \vert O \rangle = \vert O \rangle&lt;/math&gt;. Der Vernichter ist der zum Erzeuger [[hermitescher Operator#Definitionen|hermitesch adjungierte Operator]]. Dass das so richtig ist, sieht man z.&amp;nbsp;B. beim Ausrechnen der Norm von &lt;math&gt;a^\dagger_p\vert O \rangle&lt;/math&gt;, d.h. beim Skalarprodukt mit seinem adjungierten Vektor &lt;math&gt;\langle O \vert a_p &lt;/math&gt; :<br /> :: &lt;math&gt;\vert\vert a^\dagger_p \vert O \rangle \vert\vert^2 = \langle O \vert a_p a^\dagger_p \vert O \rangle = \langle O \vert \left(a_p a^\dagger_p \vert O \rangle\right) =\langle O \vert O \rangle = 1&lt;/math&gt;<br /> :Für die Vernichtungsoperatoren gelten deshalb dieselben Vertauschungsregeln wie für die Erzeuger. Anwendung eines Vernichters auf den Vakuumzustand ergibt Null (den Nullvektor).<br /> * Der Übergang eines Teilchens vom Zustand ''p'' nach ''k'' wird durch den Operator &lt;math&gt;a^\dagger_k a_p &lt;/math&gt; bewerkstelligt. Man vernichtet das Teilchen in ''p'' und erzeugt sich ein neues in ''k'' - sie sind ja identisch. Begriffliche Vorteile: <br /> #Die für Alltagsgegenstände so unvermeidliche Frage, ob nicht jemand den „Betrug“ bemerken könnte, dass ihm mit dem bei ''k'' auftauchenden Teilchen gar nicht das originale Teilchen untergeschoben werden soll, kann gar nicht gestellt werden.<br /> #Die ebenso naheliegende Alltagsfrage, wo das Teilchen während des ''Quantensprungs'' von ''p'' nach ''k'' gewesen sei, kann auch nicht mehr gestellt werden.<br /> <br /> * Vernichter ''k'' sind mit Erzeugern ''p'' vertauschbar, außer sie beziehen sich auf denselben Zustand. Dann gilt:<br /> <br /> :: &lt;math&gt;a_p a^\dagger_p = +a^\dagger_p a_p + 1&lt;/math&gt; für Bosonen („vertauschbar“)<br /> :: &lt;math&gt;a_p a^\dagger_p = -a^\dagger_p a_p + 1&lt;/math&gt; für Fermionen („antivertauschbar“)<br /> <br /> * Der Operator, der die Anzahl der im Zustand ''p'' anwesenden Teilchen als Eigenwert angibt, ist der Teilchenzahloperator &lt;math&gt;\hat n_p = a^\dagger_p a_p&lt;/math&gt;. Er ist gleich für Fermionen und Bosonen. (Für Fermionen hat er keine Eigenwerte außer 0 und 1.)<br /> <br /> * Der Zusammenhang eines 1-Teilchenzustands &lt;math&gt;a^\dagger_p \vert O \rangle&lt;/math&gt; mit seiner „alten“ [[Wellenfunktion]] &lt;math&gt;\psi_p(\vec r)&lt;/math&gt; ergibt sich, indem man sich ein am Ort &lt;math&gt;\vec r&lt;/math&gt; lokalisiertes Teilchen erzeugt (Zustand &lt;math&gt;a^\dagger_{\vec r} \vert O \rangle&lt;/math&gt; ) und mit &lt;math&gt;a^\dagger_p \vert O \rangle&lt;/math&gt; das Skalarprodukt bildet, das ja die Amplitude des einen Zustands im anderen angibt:<br /> :: &lt;math&gt;\psi_p(\vec r) = \langle O \vert a_{\vec r} a^\dagger_p \vert O \rangle&lt;/math&gt;<br /> <br /> == Mathematische Konstruktion ==<br /> Die entscheidende Arbeit, ''Konfigurationsraum und zweite Quantelung''&lt;ref&gt;[http://www.springerlink.com/content/p210670017185u60/ Konfigurationsraum und zweite Quantelung] - vollständiges Dokument bei springerlink.com&lt;/ref&gt;, stammt von dem russischen Physiker [[Wladimir Fock]] aus dem Jahre 1932.<br /> <br /> Sei &lt;math&gt;\{ |\phi_j\rangle \}_j&lt;/math&gt; eine orthonormale Einteilchen-Basis eines quantenmechanischen Systems (, d.&amp;nbsp;h. ein Satz an [[Wellenfunktion]]en, nach denen sich jede beliebige Einteilchenwellenfunktion entwickeln lässt). Dann ist bekannt, dass sich jede fermionische (bzw. bosonische) Vielteilchen-Wellenfunktion, die ja von Natur aus antisymmetrisch (bzw. symmetrisch) ist, nach [[Determinante (Mathematik)|Determinanten]] (bzw. [[Permanente]]n) bezüglich dieser Einteilchenbasis entwickeln lässt:<br /> Sei &lt;math&gt;\Psi(x_1, \ldots, x_N)&lt;/math&gt; antisymmetrisch (&lt;math&gt;x_j = (\mathbf{r}_j, s_j)&lt;/math&gt;, z.&amp;nbsp;B. Orts- und Spinkoordinaten eines Elektrons). Dann gibt es komplexe Zahlen &lt;math&gt;c_L \in \mathbb{C}^N&lt;/math&gt; (d. h. zu jeder „Konfiguration“ &lt;math&gt;L = (l_1,\ldots,l_N)&lt;/math&gt;, worin &lt;math&gt;l_x&lt;/math&gt; Index in die Einteilchenbasis ist, gibt es ''N'' komplexe Koeffizienten) mit<br /> <br /> &lt;math&gt;\Psi(x_1,\ldots,x_N) = \sum_{L\subset \mathbb{N}, |L|=N, \textrm{ geordnet}} c_L \frac{1}{\sqrt{N}} \det<br /> \left|\left\langle x_j | \phi_{l_k}\right\rangle\right|_{(j,k)} &lt;/math&gt;&lt;math&gt;= \sum_L \frac{c_L}{\sqrt{N}} \det \begin{pmatrix} \phi_{l_1}(x_1) &amp; \cdots &amp; \phi_{l_N}(x_1) \\ \vdots &amp; \ddots &amp; \vdots \\ \phi_{l_1}(x_N) &amp; \cdots &amp; \phi_{l_N}(x_N)\end{pmatrix}&lt;/math&gt;<br /> <br /> Man kann also jede Vielteilchen-Wellenfunktion als Linearkombination solcher Determinanten-Zustände darstellen (bzw. entsprechender Permanenten-Zustände im bosonischen Fall). Diese Determinantenzustände sind neben der rein mathematischen Bedeutung als Entwicklungsbasis häufig auch von großer physikalischer Bedeutung, da sich Grundzustands-Wellenfunktionen nicht wechselwirkender Systeme als reine Determinantenzustände (bzw. Permanentenzustände) darstellen lassen.<br /> <br /> Der Determinante/Permanente zur Konfiguration &lt;math&gt;L = (l_1,\ldots,l_N)&lt;/math&gt; kann man nun die Bezeichnung<br /> <br /> &lt;math&gt;| 0, 0, \underbrace{n_1}_{\nwarrow l_1\textrm{te Stelle}}, 0, 0, 0, \underbrace{n_2}_{\nwarrow l_{1+n_1}\textrm{te Stelle}}, \ldots \rangle&lt;/math&gt;<br /> <br /> zuordnen, mit &lt;math&gt;n_1 = &lt;/math&gt; Anzahl Vorkommen des Wertes von &lt;math&gt;l_1&lt;/math&gt; in &lt;math&gt;L&lt;/math&gt;, &lt;math&gt;n_2 = &lt;/math&gt; Anzahl Vorkommen des Wertes von &lt;math&gt;l_2&lt;/math&gt; in &lt;math&gt;L&lt;/math&gt;, …. Die Werte &lt;math&gt;n_j&lt;/math&gt; nennt man ''Besetzungszahlen'' der zugehörigen Basiszustände. Die Besetzungszahlen können bei Fermionen nur 1 oder 0 sein, da sonst die Determinante verschwinden würde (zwei gleiche Spalten).<br /> <br /> In dieser Bezeichnungsweise ist also die allgemeine Darstellung eines N-Teilchen Vielteilchenzustands &lt;math&gt;|\Psi\rangle&lt;/math&gt;:<br /> <br /> &lt;math&gt;|\Psi\rangle = \sum_{n_1, n_2, \ldots = 0; n_1+n_2+\ldots=N}^{1 \textrm{\,bzw.\,}\infty}c_{n_1,\ldots,n_\infty} |n_1, n_2, \ldots, n_\infty\rangle&lt;/math&gt;<br /> <br /> die ''Besetzungszahldarstellung''. Der antisymmetrische bzw. symmetrische N-Teilchen-Hilbertraum &lt;math&gt;\mathcal H_N&lt;/math&gt; wird also durch diese Zustände &lt;math&gt;|n_1, n_2, \ldots\rangle&lt;/math&gt; mit &lt;math&gt;\sum n_j = N&lt;/math&gt; aufgespannt. Es liegt nun nahe, einen allgemeineren Raum namens Fockraum einzuführen, der durch die &lt;math&gt;|n_1, n_2, \ldots\rangle&lt;/math&gt;-Zustände mit beliebiger endlicher Teilchenzahl aufgespannt wird:<br /> <br /> &lt;math&gt;F := \textrm{clin}\{ |n_1, n_2, \ldots\rangle;\; \sum n_j\, \textrm{endl.} \} = \bigoplus_N \mathcal H_N&lt;/math&gt;.<br /> <br /> Da sich Operatoren unabhängig von der konkreten Teilchenzahl darstellen lassen (s.u.), ist diese Konstruktion sinnvoll. In diesem Raum sind Zustände unbestimmter Teilchenzahl enthalten ([[Linearkombination]] von Zuständen verschiedener bestimmter Teilchenzahlen). In ihm wird Vielteilchentheorie normalerweise betrieben.<br /> <br /> Einzelne Determinantenzustände, die wie schon gesagt z.&amp;nbsp;B. besondere Zustände eines wechselwirkungsfreien Systems sein könnten, kann man in der Form &lt;math&gt;|\Psi\rangle = |n_1, n_2, \ldots\rangle&lt;/math&gt; eindeutig angeben, wenn man dazu sagt, auf welche Einteilchenbasis man sich bezieht.<br /> <br /> Siehe dazu auch: [[Slater-Determinante]]<br /> <br /> == [[Erzeugungs- und Vernichtungsoperator|Erzeugungs-, Vernichtungs-]] und Teilchenzahloperatoren ==<br /> <br /> Man führt nun, zunächst recht willkürlich, neue Operatoren ein, die Teilchen im Basiszustand &lt;math&gt;j\equiv|\phi_j\rangle&lt;/math&gt;„erzeugen“ bzw. „vernichten“ (d.&amp;nbsp;h. die entsprechende Besetzungszahl erhöhen oder verringern):<br /> <br /> Definition (auf der Basis des Zustandsraumes, auf dem Rest durch lineare Fortsetzung):<br /> <br /> *Im bosonischen Fall<br /> <br /> &lt;math&gt;<br /> c_j^\dagger: H_N^S \rightarrow H_{N+1}^S,\quad c_j^\dagger | \ldots n_j \ldots \rangle := \sqrt{n_j+1} |\ldots n_j+1 \ldots \rangle&lt;/math&gt;<br /> <br /> &lt;math&gt;<br /> c_j: H_N^S \rightarrow H_{N-1}^S,\quad c_j | \ldots n_j \ldots \rangle := \sqrt{n_j} |\ldots n_j-1 \ldots \rangle<br /> &lt;/math&gt;<br /> <br /> *Im fermionischen Fall<br /> <br /> &lt;math&gt;<br /> c_j^\dagger: H_N^A \rightarrow H_{N+1}^A,\quad c_j^\dagger | \ldots n_j \ldots \rangle := (-1)^{\sum_{i&lt;j}n_i}\;(1-n_j) |\ldots \underbrace{n_j+1}_{=1} \ldots \rangle<br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;<br /> c_j: H_N^A \rightarrow H_{N-1}^A,\quad c_j | \ldots n_j \ldots \rangle := (-1)^{\sum_{i&lt;j}n_i}\; n_j |\ldots \underbrace{n_j-1}_{=0} \ldots \rangle<br /> &lt;/math&gt;<br /> <br /> Die Vorfaktoren sorgen dabei jeweils für das Nichtauftreten unmöglicher Zustände (z.&amp;nbsp;B. mit Besetzungszahlen &lt; 0 oder &gt; 1 bei Fermionen), für das Wegkapseln der Antisymmetrie bei Fermionen in anderen Ausdrücken und dafür, dass sich die Besetzungszahloperatoren in beiden Fällen als<br /> <br /> &lt;math&gt; \hat n_j := c_j^\dagger c_j &lt;/math&gt;<br /> <br /> ergeben. Nachrechnen zeigt, dass diese Operatoren bei Determinantenzuständen die Besetzungszahlen reproduzieren:<br /> <br /> &lt;math&gt; \hat n_j | \ldots, n_j, \ldots\rangle = n_j |\ldots, n_j,\ldots\rangle &lt;/math&gt;.<br /> <br /> === Vertauschungsrelationen ===<br /> Für die so konstruierten Operatoren gelten im fermionischen Fall die Antivertauschungsrelationen<br /> <br /> &lt;math&gt; \{c_i, c_j^\dagger\} = \delta_{ij} \qquad \{c_i, c_j\} = 0 \qquad \{c_i^\dagger, c_j^\dagger\} = 0, &lt;/math&gt;<br /> <br /> wobei &lt;math&gt;\{A,B\}:= AB+BA&lt;/math&gt; den [[Kommutator (Mathematik)#Antikommutator|Antikommutator]] bedeutet. <br /> <br /> Im bosonischen Fall gelten die Vertauschungsrelationen<br /> <br /> &lt;math&gt; [c_i, c_j^\dagger] = \delta_{ij} \qquad [c_i, c_j] = 0 \qquad [c_i^\dagger, c_j^\dagger] = 0.&lt;/math&gt;<br /> <br /> Darin ist &lt;math&gt;[A,B] := AB-BA&lt;/math&gt; der [[Kommutator (Mathematik)|Kommutator]].<br /> <br /> == Ein- und Zweiteilchenoperatoren ==<br /> Es lässt sich zeigen, dass sich sämtliche linearen Operatoren auf dem Fockraum als Linearkombination von Polynomen in den Erzeugungs/Vernichtungsoperatoren darstellen lassen. Darin liegt ein wesentlicher Aspekt ihrer Wichtigkeit. Besonders bedeutend sind dabei die sogenannten Einteilchen- bzw. Zweiteilchen-Operatoren, die ihrem Namen nach entweder [[Observable]]n einzelner Teilchen repräsentieren (z.&amp;nbsp;B. kinetische Energie, Position, Spin) oder Wechselwirkungen zwischen zwei Teilchen (z.&amp;nbsp;B. [[Coulomb-Wechselwirkung]] zwischen zwei Elektronen).<br /> <br /> Es ergeben sich dabei einfache Ausdrücke: Sei<br /> <br /> &lt;math&gt;A = \sum_\alpha h_\alpha \,&lt;/math&gt;<br /> <br /> ein Einteilchen-Operator (d.&amp;nbsp;h. jedes &lt;math&gt;h_\alpha \,&lt;/math&gt; wirkt nur auf die Koordinaten des &lt;math&gt;\alpha\,&lt;/math&gt;-ten Teilchens, von der Struktur her sind die &lt;math&gt;h_\alpha \,&lt;/math&gt;s aber alle gleich), so ergibt sich (durch Ausrechnen):<br /> <br /> &lt;math&gt;A = \sum_\alpha h_\alpha = \sum_{i,j} \langle i|h|j\rangle c_i^\dagger c_j = \sum_{i,j} \langle \phi_i|h|\phi_j\rangle c_i^\dagger c_j &lt;/math&gt;<br /> <br /> wobei &lt;math&gt;\langle i|h|j\rangle&lt;/math&gt; das Matrixelement des Einteilchenoperators ist, aus dem sich die &lt;math&gt;h_i \,&lt;/math&gt; ergeben, gebildet mit den Basiszuständen &lt;math&gt;|\phi_j\rangle&lt;/math&gt;, bezüglich denen quantisiert wurde.<br /> Für Zweiteilchenoperatoren ergibt sich analog:<br /> <br /> &lt;math&gt;A = \sum_{\alpha,\beta\neq\alpha} w(\alpha,\beta) = \sum_{i,j,k,l} \langle ij|w|lk\rangle c_i^\dagger c_j^\dagger c_k c_l &lt;/math&gt;&lt;math&gt;= \sum_{i,j,k,l} \langle \phi_i^{(1)} \phi_j^{(2)}|w(1,2)|\phi_l^{(1)}\phi_k^{(2)}\rangle c_i^\dagger c_j^\dagger c_k c_l &lt;/math&gt;.<br /> <br /> Bei den Ausdrücken handelt es sich um echte Gleichheit der Operatoren, so lange sie auf eine feste Teilchenzahl bezogen sind. Man sieht aber, dass die zweitquantisierte Form der Operatoren die Teilchenzahl nicht mehr explizit enthält. Die zweitquantisierten Operatoren nehmen in Systemen verschiedener Teilchenzahl also jeweils dieselbe Form an.<br /> <br /> === Konkrete Beispiele ===<br /> ==== Einteilchen-Operatoren ====<br /> Teilchendichte in Zweitquantisierung bezüglich Impulsbasis (diskrete Impulsbasis, endliches Volumen mit [[periodische Randbedingung|periodischen Randbedingungen]]): <br /> <br /> &lt;math&gt;\rho(r) = \sum_{\alpha=1}^N \delta(r - \hat x_\alpha)<br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad = \sum_{k,k'} \langle k| \delta(r-\hat x) | k' \rangle c^\dagger_k c_{k'} <br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad =\sum_{k,k'} \int_{x \in V} \mathrm{d}^3x\, \langle k| \delta(r-\hat x) |x\rangle\langle x |\,| k' \rangle c^\dagger_k c_{k'} <br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad =\sum_{k,k'} \int_{x \in V} \mathrm{d}^3x\, \langle k|x\rangle \delta(r-x) \langle x | k' \rangle c^\dagger_k c_{k'} <br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad =\sum_{k,k'} \int_{x \in V} \mathrm{d}^3x\, \frac{1}{V} e^{i(k'-k)x} \delta(r - x) c^\dagger_k c_{k'} <br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad =\sum_{k,k'} \frac{1}{V} e^{i (k'-k) r} c^\dagger_k c_{k'}<br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad = \frac{1}{V} \sum_{k,q} e^{iqr}c^\dagger_k c_{k + q}<br /> &lt;/math&gt;<br /> <br /> ==== Coulomb-Wechselwirkung ====<br /> In Zweitquantisierung bezüglich (diskreter) Impulsbasis.<br /> <br /> &lt;math&gt;W_\textrm{Coul.} = \frac{1}{2} \sum_{\alpha,\alpha\neq\beta} \frac{e^2}{|\mathbf{r_\alpha - r_\beta|}} =<br /> \frac{1}{2V} \sum_{q\neq 0,k_1,\sigma_1,k_2,\sigma_2} \frac{4\pi e^2}{q^2} c^\dagger_{k_1,\sigma_1} c^\dagger_{k_2,\sigma_2} c_{k_2-q,\sigma_2} c_{k_1+q,\sigma_1}<br /> &lt;/math&gt;<br /> ====Supraleitung====<br /> Die Zweite Quantisierung ermöglicht mit der Fock-Darstellung auch die explizite Berücksichtigung von Zuständen, die ''keine''&amp;nbsp; Eigenzustände des Teichenzahloperators &lt;math&gt;\hat N=\sum_{k,\sigma} c_{k,\sigma}^\dagger c_{k,\sigma}&lt;/math&gt; sind. Solche Zustände spielen in der Theorie der [[Supraleitung]] eine große Rolle.<br /> <br /> == Transformation zwischen Einteilchenbasen ==<br /> Erzeugungs- und Vernichtungsoperatoren bezüglich einer gegebenen Einteilchenbasis &lt;math&gt;|i\rangle&lt;/math&gt; lassen sich durch entsprechende Operatoren bezüglich einer anderen Einteilchenbasis &lt;math&gt;|\alpha\rangle&lt;/math&gt; ausdrücken:<br /> <br /> &lt;math&gt;c_i^\dagger = \sum_\alpha \langle \alpha|i \rangle c^\dagger_\alpha&lt;/math&gt;<br /> <br /> &lt;math&gt;c_i = \sum_\alpha \langle i|\alpha \rangle c_\alpha.&lt;/math&gt;<br /> <br /> Durch diese Beziehungen ist es möglich, einen [[Basiswechsel]] im Fockraum durchzuführen und somit gegebene Ausdrücke auf für die gerade anliegende Situation besser geeignete Formen zu transformieren. Auf ähnliche Art werden aus den Erzeugungs-/Vernichtungs-Operatoren für diskrete Einteilchenbasen auch [[Feldoperator]]en bezüglich kontinuierlicher Orts- bzw. Impulsbasen erzeugt, wie sie vor allem in den [[Quantenfeldtheorie]]n verwendet werden.<br /> <br /> == Verallgemeinerung: Relativistische Quantenfeldtheorien ==<br /> Als Verallgemeinerung entstehen, wie in der Fußnote &lt;ref name=&quot;relativistische QFT&quot;&gt;Man kann die ''Zweite Quantisierung'' auch als ''[[Quantenfeldtheorie#Feldquantisierung|Feldquantisierung]]'' eines bestimmten, mit der Schrödingergleichung kompatiblen klassischen Feldes, des sog. „Schrödinger-Feldes“, formulieren. Statt der Schrödingergleichung kann man auch ''relativistische'' klassische, zur Quantentheorie kompatible Gleichungen bzw. deren Feldtheorien behandeln. Die resultierenden Gleichungen wären z.&amp;nbsp;B. in der Struktur analog zu denen der [[Maxwellsche Gleichungen|Maxwellschen Theorie]] und müssen in den Spezialfällen des Schrödingerfeldes oder der sog. [[Quantenelektrodynamik|QED]] oder [[Quantenchromodynamik|QCD]] u.a. die Maxwellsche Feldenergie als Beitrag zur Potentiellen Energie der Elektronen enthalten, in deren kinetischer Energie aber auch die [[Plancksche Konstante]] ''h'' als Feldparameter. Es entstehen so anstelle der nicht-relativistischen [[Vielteilchentheorie]] relativistische [[Quantenfeldtheorie]]n.&lt;/ref&gt; angedeutet, anstelle der nicht-relativistischen [[Vielteilchentheorie]] relativistische [[Quantenfeldtheorie]]n.<br /> <br /> == Literatur ==<br /> * Alexander Altland, Ben Simons: ''Condensed matter field theory'', Cambridge Univ. Press, 2009, ISBN 978-0-521-84508-3<br /> * Eugen Fick: ''Einführung in die Grundlagen der Quantentheorie'', Wiesbaden, 1988, ISBN 3-89104-472-0<br /> * Wolfgang Nolting: ''Grundkurs theoretische Physik'', Band 7: ''Vielteilchenphysik'', Berlin u.a., 2009, ISBN 978-3-642-01605-9<br /> * Franz Schwabl: ''Quantenmechanik für Fortgeschrittene (QM II)'', Berlin u.a., 2008, ISBN 978-3-540-85075-5<br /> <br /> == Einzelnachweise und Fußnoten ==<br /> &lt;references /&gt;<br /> <br /> [[Kategorie:Quantenfeldtheorie]]<br /> [[Kategorie:Statistische Physik]]<br /> [[Kategorie:Festkörperphysik]]<br /> <br /> [[en:Canonical quantization]]<br /> [[es:Segunda cuantización]]<br /> [[fr:Seconde quantification]]<br /> [[it:Seconda quantizzazione]]<br /> [[ja:第二量子化]]<br /> [[ko:정준 양자화]]<br /> [[ru:Вторичное квантование]]<br /> [[uk:Вторинне квантування ферміонів]]<br /> [[zh:正則量子化]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Benutzer:Mathmon/Zweite_Quantisierung&diff=109147689 Benutzer:Mathmon/Zweite Quantisierung 2012-10-10T09:00:48Z <p>Mathmon: /* Hilbertraum und Zustände */</p> <hr /> <div>Die '''Zweite Quantisierung''' (oft auch ''Zweite Quantelung'' oder ''Feldquantisierung'' genannt) ist eine Methode zur [[Quantenmechanik|quantenmechanischen]] Behandlung von [[Vielteilchentheorie|Vielteilchenproblemen]], insbesondere auch der Prozesse, bei denen Teilchen entstehen oder vernichtet werden. Sie wurde kurz nach der Entdeckung der Quantenmechanik (siehe [[Erste Quantisierung]]) entwickelt, um auch Photonen und deren Erzeugung und Vernichtung quantenmechanisch beschreiben zu können. Die Photonen erscheinen in der Zweiten Quantisierung als die Feldquanten des quantisierten elektromagnetischen Felds, was auf den zweiten angegebenen Namen führte. Als in den 1930er Jahren entdeckt wurde, dass auch „materielle“ Teilchen erzeugt und vernichtet werden können, wurde der Anwendungsbereich der Methode auf alle Teilchen ausgedehnt. Damit war in der Physik der anschauliche Gegensatz zwischen [[Welle-Teilchen-Dualismus|Teilchen und Wellen]] in seiner früheren grundsätzlichen Bedeutung aufgehoben.<br /> <br /> Die Zweite Quantisierung wird im Bereich der [[Festkörperphysik]], der [[Quantenfeldtheorie]] und anderen Vielteilchentheorien angewandt. Sie ist häufig der angemessenste Rahmen, um physikalische Probleme theoretisch zu behandeln.<br /> <br /> == Vielteilchensysteme in der Quantenmechanik ==<br /> <br /> === Hilbertraum und Zustände ===<br /> <br /> In der Vielteilchentheorien betrachtet man &lt;math&gt;N&lt;/math&gt; verschiedene Teilchen, welche man von &lt;math&gt;1&lt;/math&gt; bis<br /> &lt;math&gt;N&lt;/math&gt; durchnummeriert. Zu jedem Teilchen gehört ein Hilbertraum &lt;math&gt;\mathcal{H}^{(i)}&lt;/math&gt;, welcher die<br /> möglichen Zustände des &lt;math&gt;i&lt;/math&gt;-ten Teilchens enthält. Der Hilbertraum des Gesamtsystems ist gegeben als das<br /> Tensorprodukt der einzelnen Hilberträume:<br /> <br /> :&lt;math&gt;<br /> \mathcal{H} = \mathcal{H}^{(1)} \otimes \mathcal{H}^{(2)} \otimes \ldots \otimes \mathcal{H}^{(N)}<br /> &lt;/math&gt;<br /> <br /> Falls &lt;math&gt;\{ \vert \alpha_i \rangle \}&lt;/math&gt; eine Basis des Raumes &lt;math&gt;\mathcal{H}^{(i)}&lt;/math&gt; ist, so lässt<br /> sich eine Basis des gesamtes Hilbertraumes konstruieren als<br /> <br /> :&lt;math&gt;<br /> \{ \vert \alpha_1 \rangle \otimes \vert \alpha_2 \rangle \otimes \ldots \otimes \vert \alpha_N \rangle<br /> =: \vert \alpha_1 \alpha_2 \ldots \alpha_N \rangle \}<br /> &lt;/math&gt;<br /> <br /> Ein beliebiger Zustand &lt;math&gt;\vert \Psi \rangle \in \mathcal{H}&lt;/math&gt; lässt sich somit schreiben als<br /> <br /> :&lt;math&gt;<br /> \vert \Psi \rangle = \sum_ {\alpha_1, \ldots, \alpha_N} c_{\alpha_1, \ldots, \alpha_N} \cdot<br /> \vert \alpha_1 \ldots \alpha_N \rangle<br /> &lt;/math&gt;<br /> <br /> Eine anschauliche Interpretation eines solchen Zustandes erhält man beispielsweise durch dessen<br /> Projektion auf den Ortsraum:<br /> <br /> :&lt;math&gt;<br /> \langle x_1 ,\ldots, x_N \vert \Psi \rangle = \Psi(x_1, \ldots, x_N)<br /> &lt;/math&gt;<br /> <br /> Ein Vielteilchenzustand im Ortsraum ist also eine Funktion, die von &lt;math&gt;N&lt;/math&gt; verschiedenen Koordinaten<br /> abhängt. Die [[Wellenfunktion#Teilcheninterpretation|Teilcheninterpretation]] ist analog zu der Interpretation<br /> im Fall &lt;math&gt;N=1&lt;/math&gt;: Die Wahrscheinlichkeit, das erste Teilchen im Volumen &lt;math&gt;V_1&lt;/math&gt; anzutreffen,<br /> das zweite in &lt;math&gt;V_2&lt;/math&gt; und so weiter ist gegeben durch<br /> <br /> :&lt;math&gt;<br /> \int_{V_1} \int_{V_2} \cdots \int_{V_N} \vert \Psi(x_1, \ldots, x_N) \vert^2 \mathrm dx_N \ldots \mathrm dx_2 \mathrm dx_1<br /> &lt;/math&gt;<br /> <br /> In diesem Fall fordert man natürlich die korrekte Normierung der Wellenfunktion:<br /> <br /> :&lt;math&gt;<br /> \int_{\mathbb{R}^d} \int_{\mathbb{R}^d} \cdots \int_{\mathbb{R}^d}<br /> \vert \Psi(x_1, \ldots, x_N) \vert^2 \mathrm dx_N \ldots \mathrm dx_2 \mathrm dx_1<br /> \,\stackrel{!}{=}\, 1<br /> &lt;/math&gt;<br /> <br /> Liegt ein Zustand der Form &lt;math&gt;\vert \alpha_1 \ldots \alpha_N \rangle&lt;/math&gt; vor, so hat die Wellenfunktion<br /> im Ortsraum die Gestalt<br /> <br /> :&lt;math&gt;<br /> \langle x_1 ,\ldots, x_N \vert \alpha_1 \ldots \alpha_N \rangle =<br /> \alpha_1(x_1) \cdot \alpha_2(x_2) \cdot \ldots \cdot \alpha_N(x_N)<br /> &lt;/math&gt;<br /> <br /> In diesem Fall vereinfacht sich die Berechnung der Aufenthaltswahrscheinlichkeit, da das Integral in ein<br /> Produkt zerfällt:<br /> <br /> :&lt;math&gt;<br /> \int_{V_1} \int_{V_2} \cdots \int_{V_N} \vert \Psi(x_1, \ldots, x_N) \vert^2 \mathrm dx_N \ldots \mathrm dx_2 \mathrm dx_1<br /> = \left( \int_{V_1} \vert \alpha_1(x_1) \vert^2 \mathrm dx_1 \right) \cdot<br /> \left( \int_{V_2} \vert \alpha_1(x_2) \vert^2 \mathrm dx_2 \right) \ldots<br /> \left( \int_{V_N} \vert \alpha_1(x_N) \vert^2 \mathrm dx_N \right)<br /> &lt;/math&gt;<br /> <br /> Einen Zustand, welcher in dieser Form vorliegt, bezeichnet man als ''reinen'' oder ''separablen'' Zustand,<br /> während ein jeglicher<br /> anderer Zustand als ''gemischt'' oder ''verschränkt'' bezeichnet wird. Bei einem reinen Zustand sind die<br /> Aufenthaltswahrscheinlichkeiten also unabhängig voneinander, während bei einem verschränkten Zustand die<br /> Aufenthaltswahrscheinlichkeit jedes Teilchens von den Aufenthaltswahrscheinlichkeiten aller anderen Teilchen<br /> abhängt.<br /> <br /> === Operatoren ===<br /> <br /> Ein Operator &lt;math&gt;\hat A&lt;/math&gt; eines Vielteilchensystems ist ein Funktional<br /> &lt;math&gt;\hat A : \mathcal{H} \mapsto \mathcal{H}&lt;/math&gt;. Eine Besonderheit sind hier Operatoren aus<br /> den einzelnen Räumen &lt;math&gt;\mathcal{H}^{(i)}&lt;/math&gt;: Diese werden durch Tensorprodukte zu Operatoren<br /> des Raumes &lt;math&gt;\mathcal{H}&lt;/math&gt; gemacht. Beispielsweise wird der Ortsoperator &lt;math&gt; \hat x_1&lt;/math&gt; zu<br /> <br /> :&lt;math&gt;<br /> \hat x_1 \otimes \mathbb{1}_2 \otimes \ldots \otimes \mathbb{1}_N<br /> &lt;/math&gt;<br /> <br /> Dabei bezeichnet &lt;math&gt;\mathbb{1}_i&lt;/math&gt; die [[Identische Abbildung|identische Abbildung]] im Raum<br /> &lt;math&gt;\mathcal{H}^{(i)}&lt;/math&gt;. Aus Gründen der Notation schreibt man die identischen Abbildungen im<br /> Allgemeinen nicht mit.<br /> <br /> Die Dynamik eines Vielteilchensystems wird weiterhin durch die [[Schrödingergleichung]] beschrieben:<br /> <br /> :&lt;math&gt;<br /> \mathrm{i} \hbar \frac{\partial}{\partial t} |\,\psi (t) \rangle<br /> = \hat{H}(\hat x_1, \ldots, \hat x_N, \hat p_1, \ldots, \hat p_N, t) |\,\psi (t) \rangle<br /> &lt;/math&gt;<br /> <br /> Der [[Hamiltonoperator]] hängt im allgemeinen Fall von sämtlichen Orts- und Impulsoperatoren sowie von der Zeit<br /> ab. Ein Beispiel für wechselwirkende Teilchen ist gegeben durch<br /> <br /> :&lt;math&gt;<br /> \hat{H} = \sum_{i=1}^{N} \frac{\hat p_i^2}{2 m_i} + \sum_{i \neq j}^N \hat V (\hat x_i, \hat x_j, t)<br /> &lt;/math&gt;<br /> <br /> == Grundbegriffe ==<br /> Kurze Zusammenstellung einiger der wesentlichen neuen Begriffe und ihrer unmittelbaren Folgen:<br /> * Der [[Zustand (Quantenmechanik)|Zustand]] des betrachteten Systems wird wie in der gewöhnlichen Quantenmechanik durch einen normierten Vektor in einem [[Hilbertraum]] angegeben, der aber jetzt [[Fockraum]] genannt wird, weil er Zustände mit unterschiedlichen Teilchenzahlen enthält.<br /> * Es gibt einen Zustand ohne jedes Teilchen, das absolute [[Vakuum]], Symbol &lt;math&gt;\vert O\rangle&lt;/math&gt;.<br /> :: (Der Vakuumzustand ist normiert, &lt;math&gt;\langle O\vert O\rangle=1&lt;/math&gt;, darf also nicht mit dem [[Nullvektor]] verwechselt werden.)<br /> * Es gibt für jede Teilchenart einen Erzeugungsoperator, der es in einem definierten Zustand in die Welt setzt, Symbol &lt;math&gt;a^\dagger&lt;/math&gt; (für eine andere Teilchenart &lt;math&gt;b^\dagger&lt;/math&gt; etc.). Der 1-Teilchenzustand mit einem Teilchen im Zustand ''p'' ist dann gegeben durch &lt;math&gt;a^\dagger_p \vert O \rangle&lt;/math&gt;. Der 2-Teilchenzustand mit einem zweiten Teilchen gleicher Art, aber im Zustand ''k'', ist dann gegeben durch nochmaliges Anwenden des Erzeugers: &lt;math&gt;a^\dagger_k a^\dagger_p \vert O \rangle&lt;/math&gt;. Für weitere Teilchen entsprechend weitere Erzeugungsoperatoren.<br /> * Da die „a“-Teilchen unter sich identisch sind, darf bei einer Vertauschung in der Reihenfolge der Erzeugung kein anderer Zustand herauskommen. Allenfalls muss sich das Vorzeichen ändern. Das wird gewährleistet durch die Bedingungen<br /> :: &lt;math&gt;a^\dagger_k a^\dagger_p = +a^\dagger_p a^\dagger_k&lt;/math&gt; für [[Boson]]en („vertauschbar“)<br /> :: &lt;math&gt;a^\dagger_k a^\dagger_p = -a^\dagger_p a^\dagger_k&lt;/math&gt; für [[Fermion]]en („antivertauschbar“). <br /> :Erzeuger verschiedener Teilchenarten sind immer vertauschbar. Damit ist schon früh im Formalismus zweierlei erreicht:<br /> # Die [[Ununterscheidbare Teilchen|''absolute'' Ununterscheidbarkeit]] gleicher Teilchen ist eingebaut. Die Teilchen bekommen noch nicht einmal mehr eine Nummer, um ihre Koordinaten voneinander unterscheiden zu können.<br /> # Bosonen-Zustände sind immer symmetrisch gegen Vertauschung, Fermionenzustände immer antisymmetrisch. Das [[Pauli-Prinzip]] ist automatisch berücksichtigt und die unterschiedlichen [[Quantenstatistik]]en ergeben sich zwangsläufig. <br /> * Der Operator für die Vernichtung eines Teilchens im Zustand ''p'' ist &lt;math&gt;\,a_p&lt;/math&gt;. Ein Anwendungsbeispiel: Hier lässt die Vernichtung eines existierenden Teilchens im Vakuum das leere Vakuum zurück, &lt;math&gt;a_p\,a^\dagger_p \vert O \rangle = \vert O \rangle&lt;/math&gt;. Der Vernichter ist der zum Erzeuger [[hermitescher Operator#Definitionen|hermitesch adjungierte Operator]]. Dass das so richtig ist, sieht man z.&amp;nbsp;B. beim Ausrechnen der Norm von &lt;math&gt;a^\dagger_p\vert O \rangle&lt;/math&gt;, d.h. beim Skalarprodukt mit seinem adjungierten Vektor &lt;math&gt;\langle O \vert a_p &lt;/math&gt; :<br /> :: &lt;math&gt;\vert\vert a^\dagger_p \vert O \rangle \vert\vert^2 = \langle O \vert a_p a^\dagger_p \vert O \rangle = \langle O \vert \left(a_p a^\dagger_p \vert O \rangle\right) =\langle O \vert O \rangle = 1&lt;/math&gt;<br /> :Für die Vernichtungsoperatoren gelten deshalb dieselben Vertauschungsregeln wie für die Erzeuger. Anwendung eines Vernichters auf den Vakuumzustand ergibt Null (den Nullvektor).<br /> * Der Übergang eines Teilchens vom Zustand ''p'' nach ''k'' wird durch den Operator &lt;math&gt;a^\dagger_k a_p &lt;/math&gt; bewerkstelligt. Man vernichtet das Teilchen in ''p'' und erzeugt sich ein neues in ''k'' - sie sind ja identisch. Begriffliche Vorteile: <br /> #Die für Alltagsgegenstände so unvermeidliche Frage, ob nicht jemand den „Betrug“ bemerken könnte, dass ihm mit dem bei ''k'' auftauchenden Teilchen gar nicht das originale Teilchen untergeschoben werden soll, kann gar nicht gestellt werden.<br /> #Die ebenso naheliegende Alltagsfrage, wo das Teilchen während des ''Quantensprungs'' von ''p'' nach ''k'' gewesen sei, kann auch nicht mehr gestellt werden.<br /> <br /> * Vernichter ''k'' sind mit Erzeugern ''p'' vertauschbar, außer sie beziehen sich auf denselben Zustand. Dann gilt:<br /> <br /> :: &lt;math&gt;a_p a^\dagger_p = +a^\dagger_p a_p + 1&lt;/math&gt; für Bosonen („vertauschbar“)<br /> :: &lt;math&gt;a_p a^\dagger_p = -a^\dagger_p a_p + 1&lt;/math&gt; für Fermionen („antivertauschbar“)<br /> <br /> * Der Operator, der die Anzahl der im Zustand ''p'' anwesenden Teilchen als Eigenwert angibt, ist der Teilchenzahloperator &lt;math&gt;\hat n_p = a^\dagger_p a_p&lt;/math&gt;. Er ist gleich für Fermionen und Bosonen. (Für Fermionen hat er keine Eigenwerte außer 0 und 1.)<br /> <br /> * Der Zusammenhang eines 1-Teilchenzustands &lt;math&gt;a^\dagger_p \vert O \rangle&lt;/math&gt; mit seiner „alten“ [[Wellenfunktion]] &lt;math&gt;\psi_p(\vec r)&lt;/math&gt; ergibt sich, indem man sich ein am Ort &lt;math&gt;\vec r&lt;/math&gt; lokalisiertes Teilchen erzeugt (Zustand &lt;math&gt;a^\dagger_{\vec r} \vert O \rangle&lt;/math&gt; ) und mit &lt;math&gt;a^\dagger_p \vert O \rangle&lt;/math&gt; das Skalarprodukt bildet, das ja die Amplitude des einen Zustands im anderen angibt:<br /> :: &lt;math&gt;\psi_p(\vec r) = \langle O \vert a_{\vec r} a^\dagger_p \vert O \rangle&lt;/math&gt;<br /> <br /> == Mathematische Konstruktion ==<br /> Die entscheidende Arbeit, ''Konfigurationsraum und zweite Quantelung''&lt;ref&gt;[http://www.springerlink.com/content/p210670017185u60/ Konfigurationsraum und zweite Quantelung] - vollständiges Dokument bei springerlink.com&lt;/ref&gt;, stammt von dem russischen Physiker [[Wladimir Fock]] aus dem Jahre 1932.<br /> <br /> Sei &lt;math&gt;\{ |\phi_j\rangle \}_j&lt;/math&gt; eine orthonormale Einteilchen-Basis eines quantenmechanischen Systems (, d.&amp;nbsp;h. ein Satz an [[Wellenfunktion]]en, nach denen sich jede beliebige Einteilchenwellenfunktion entwickeln lässt). Dann ist bekannt, dass sich jede fermionische (bzw. bosonische) Vielteilchen-Wellenfunktion, die ja von Natur aus antisymmetrisch (bzw. symmetrisch) ist, nach [[Determinante (Mathematik)|Determinanten]] (bzw. [[Permanente]]n) bezüglich dieser Einteilchenbasis entwickeln lässt:<br /> Sei &lt;math&gt;\Psi(x_1, \ldots, x_N)&lt;/math&gt; antisymmetrisch (&lt;math&gt;x_j = (\mathbf{r}_j, s_j)&lt;/math&gt;, z.&amp;nbsp;B. Orts- und Spinkoordinaten eines Elektrons). Dann gibt es komplexe Zahlen &lt;math&gt;c_L \in \mathbb{C}^N&lt;/math&gt; (d. h. zu jeder „Konfiguration“ &lt;math&gt;L = (l_1,\ldots,l_N)&lt;/math&gt;, worin &lt;math&gt;l_x&lt;/math&gt; Index in die Einteilchenbasis ist, gibt es ''N'' komplexe Koeffizienten) mit<br /> <br /> &lt;math&gt;\Psi(x_1,\ldots,x_N) = \sum_{L\subset \mathbb{N}, |L|=N, \textrm{ geordnet}} c_L \frac{1}{\sqrt{N}} \det<br /> \left|\left\langle x_j | \phi_{l_k}\right\rangle\right|_{(j,k)} &lt;/math&gt;&lt;math&gt;= \sum_L \frac{c_L}{\sqrt{N}} \det \begin{pmatrix} \phi_{l_1}(x_1) &amp; \cdots &amp; \phi_{l_N}(x_1) \\ \vdots &amp; \ddots &amp; \vdots \\ \phi_{l_1}(x_N) &amp; \cdots &amp; \phi_{l_N}(x_N)\end{pmatrix}&lt;/math&gt;<br /> <br /> Man kann also jede Vielteilchen-Wellenfunktion als Linearkombination solcher Determinanten-Zustände darstellen (bzw. entsprechender Permanenten-Zustände im bosonischen Fall). Diese Determinantenzustände sind neben der rein mathematischen Bedeutung als Entwicklungsbasis häufig auch von großer physikalischer Bedeutung, da sich Grundzustands-Wellenfunktionen nicht wechselwirkender Systeme als reine Determinantenzustände (bzw. Permanentenzustände) darstellen lassen.<br /> <br /> Der Determinante/Permanente zur Konfiguration &lt;math&gt;L = (l_1,\ldots,l_N)&lt;/math&gt; kann man nun die Bezeichnung<br /> <br /> &lt;math&gt;| 0, 0, \underbrace{n_1}_{\nwarrow l_1\textrm{te Stelle}}, 0, 0, 0, \underbrace{n_2}_{\nwarrow l_{1+n_1}\textrm{te Stelle}}, \ldots \rangle&lt;/math&gt;<br /> <br /> zuordnen, mit &lt;math&gt;n_1 = &lt;/math&gt; Anzahl Vorkommen des Wertes von &lt;math&gt;l_1&lt;/math&gt; in &lt;math&gt;L&lt;/math&gt;, &lt;math&gt;n_2 = &lt;/math&gt; Anzahl Vorkommen des Wertes von &lt;math&gt;l_2&lt;/math&gt; in &lt;math&gt;L&lt;/math&gt;, …. Die Werte &lt;math&gt;n_j&lt;/math&gt; nennt man ''Besetzungszahlen'' der zugehörigen Basiszustände. Die Besetzungszahlen können bei Fermionen nur 1 oder 0 sein, da sonst die Determinante verschwinden würde (zwei gleiche Spalten).<br /> <br /> In dieser Bezeichnungsweise ist also die allgemeine Darstellung eines N-Teilchen Vielteilchenzustands &lt;math&gt;|\Psi\rangle&lt;/math&gt;:<br /> <br /> &lt;math&gt;|\Psi\rangle = \sum_{n_1, n_2, \ldots = 0; n_1+n_2+\ldots=N}^{1 \textrm{\,bzw.\,}\infty}c_{n_1,\ldots,n_\infty} |n_1, n_2, \ldots, n_\infty\rangle&lt;/math&gt;<br /> <br /> die ''Besetzungszahldarstellung''. Der antisymmetrische bzw. symmetrische N-Teilchen-Hilbertraum &lt;math&gt;\mathcal H_N&lt;/math&gt; wird also durch diese Zustände &lt;math&gt;|n_1, n_2, \ldots\rangle&lt;/math&gt; mit &lt;math&gt;\sum n_j = N&lt;/math&gt; aufgespannt. Es liegt nun nahe, einen allgemeineren Raum namens Fockraum einzuführen, der durch die &lt;math&gt;|n_1, n_2, \ldots\rangle&lt;/math&gt;-Zustände mit beliebiger endlicher Teilchenzahl aufgespannt wird:<br /> <br /> &lt;math&gt;F := \textrm{clin}\{ |n_1, n_2, \ldots\rangle;\; \sum n_j\, \textrm{endl.} \} = \bigoplus_N \mathcal H_N&lt;/math&gt;.<br /> <br /> Da sich Operatoren unabhängig von der konkreten Teilchenzahl darstellen lassen (s.u.), ist diese Konstruktion sinnvoll. In diesem Raum sind Zustände unbestimmter Teilchenzahl enthalten ([[Linearkombination]] von Zuständen verschiedener bestimmter Teilchenzahlen). In ihm wird Vielteilchentheorie normalerweise betrieben.<br /> <br /> Einzelne Determinantenzustände, die wie schon gesagt z.&amp;nbsp;B. besondere Zustände eines wechselwirkungsfreien Systems sein könnten, kann man in der Form &lt;math&gt;|\Psi\rangle = |n_1, n_2, \ldots\rangle&lt;/math&gt; eindeutig angeben, wenn man dazu sagt, auf welche Einteilchenbasis man sich bezieht.<br /> <br /> Siehe dazu auch: [[Slater-Determinante]]<br /> <br /> == [[Erzeugungs- und Vernichtungsoperator|Erzeugungs-, Vernichtungs-]] und Teilchenzahloperatoren ==<br /> <br /> Man führt nun, zunächst recht willkürlich, neue Operatoren ein, die Teilchen im Basiszustand &lt;math&gt;j\equiv|\phi_j\rangle&lt;/math&gt;„erzeugen“ bzw. „vernichten“ (d.&amp;nbsp;h. die entsprechende Besetzungszahl erhöhen oder verringern):<br /> <br /> Definition (auf der Basis des Zustandsraumes, auf dem Rest durch lineare Fortsetzung):<br /> <br /> *Im bosonischen Fall<br /> <br /> &lt;math&gt;<br /> c_j^\dagger: H_N^S \rightarrow H_{N+1}^S,\quad c_j^\dagger | \ldots n_j \ldots \rangle := \sqrt{n_j+1} |\ldots n_j+1 \ldots \rangle&lt;/math&gt;<br /> <br /> &lt;math&gt;<br /> c_j: H_N^S \rightarrow H_{N-1}^S,\quad c_j | \ldots n_j \ldots \rangle := \sqrt{n_j} |\ldots n_j-1 \ldots \rangle<br /> &lt;/math&gt;<br /> <br /> *Im fermionischen Fall<br /> <br /> &lt;math&gt;<br /> c_j^\dagger: H_N^A \rightarrow H_{N+1}^A,\quad c_j^\dagger | \ldots n_j \ldots \rangle := (-1)^{\sum_{i&lt;j}n_i}\;(1-n_j) |\ldots \underbrace{n_j+1}_{=1} \ldots \rangle<br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;<br /> c_j: H_N^A \rightarrow H_{N-1}^A,\quad c_j | \ldots n_j \ldots \rangle := (-1)^{\sum_{i&lt;j}n_i}\; n_j |\ldots \underbrace{n_j-1}_{=0} \ldots \rangle<br /> &lt;/math&gt;<br /> <br /> Die Vorfaktoren sorgen dabei jeweils für das Nichtauftreten unmöglicher Zustände (z.&amp;nbsp;B. mit Besetzungszahlen &lt; 0 oder &gt; 1 bei Fermionen), für das Wegkapseln der Antisymmetrie bei Fermionen in anderen Ausdrücken und dafür, dass sich die Besetzungszahloperatoren in beiden Fällen als<br /> <br /> &lt;math&gt; \hat n_j := c_j^\dagger c_j &lt;/math&gt;<br /> <br /> ergeben. Nachrechnen zeigt, dass diese Operatoren bei Determinantenzuständen die Besetzungszahlen reproduzieren:<br /> <br /> &lt;math&gt; \hat n_j | \ldots, n_j, \ldots\rangle = n_j |\ldots, n_j,\ldots\rangle &lt;/math&gt;.<br /> <br /> === Vertauschungsrelationen ===<br /> Für die so konstruierten Operatoren gelten im fermionischen Fall die Antivertauschungsrelationen<br /> <br /> &lt;math&gt; \{c_i, c_j^\dagger\} = \delta_{ij} \qquad \{c_i, c_j\} = 0 \qquad \{c_i^\dagger, c_j^\dagger\} = 0, &lt;/math&gt;<br /> <br /> wobei &lt;math&gt;\{A,B\}:= AB+BA&lt;/math&gt; den [[Kommutator (Mathematik)#Antikommutator|Antikommutator]] bedeutet. <br /> <br /> Im bosonischen Fall gelten die Vertauschungsrelationen<br /> <br /> &lt;math&gt; [c_i, c_j^\dagger] = \delta_{ij} \qquad [c_i, c_j] = 0 \qquad [c_i^\dagger, c_j^\dagger] = 0.&lt;/math&gt;<br /> <br /> Darin ist &lt;math&gt;[A,B] := AB-BA&lt;/math&gt; der [[Kommutator (Mathematik)|Kommutator]].<br /> <br /> == Ein- und Zweiteilchenoperatoren ==<br /> Es lässt sich zeigen, dass sich sämtliche linearen Operatoren auf dem Fockraum als Linearkombination von Polynomen in den Erzeugungs/Vernichtungsoperatoren darstellen lassen. Darin liegt ein wesentlicher Aspekt ihrer Wichtigkeit. Besonders bedeutend sind dabei die sogenannten Einteilchen- bzw. Zweiteilchen-Operatoren, die ihrem Namen nach entweder [[Observable]]n einzelner Teilchen repräsentieren (z.&amp;nbsp;B. kinetische Energie, Position, Spin) oder Wechselwirkungen zwischen zwei Teilchen (z.&amp;nbsp;B. [[Coulomb-Wechselwirkung]] zwischen zwei Elektronen).<br /> <br /> Es ergeben sich dabei einfache Ausdrücke: Sei<br /> <br /> &lt;math&gt;A = \sum_\alpha h_\alpha \,&lt;/math&gt;<br /> <br /> ein Einteilchen-Operator (d.&amp;nbsp;h. jedes &lt;math&gt;h_\alpha \,&lt;/math&gt; wirkt nur auf die Koordinaten des &lt;math&gt;\alpha\,&lt;/math&gt;-ten Teilchens, von der Struktur her sind die &lt;math&gt;h_\alpha \,&lt;/math&gt;s aber alle gleich), so ergibt sich (durch Ausrechnen):<br /> <br /> &lt;math&gt;A = \sum_\alpha h_\alpha = \sum_{i,j} \langle i|h|j\rangle c_i^\dagger c_j = \sum_{i,j} \langle \phi_i|h|\phi_j\rangle c_i^\dagger c_j &lt;/math&gt;<br /> <br /> wobei &lt;math&gt;\langle i|h|j\rangle&lt;/math&gt; das Matrixelement des Einteilchenoperators ist, aus dem sich die &lt;math&gt;h_i \,&lt;/math&gt; ergeben, gebildet mit den Basiszuständen &lt;math&gt;|\phi_j\rangle&lt;/math&gt;, bezüglich denen quantisiert wurde.<br /> Für Zweiteilchenoperatoren ergibt sich analog:<br /> <br /> &lt;math&gt;A = \sum_{\alpha,\beta\neq\alpha} w(\alpha,\beta) = \sum_{i,j,k,l} \langle ij|w|lk\rangle c_i^\dagger c_j^\dagger c_k c_l &lt;/math&gt;&lt;math&gt;= \sum_{i,j,k,l} \langle \phi_i^{(1)} \phi_j^{(2)}|w(1,2)|\phi_l^{(1)}\phi_k^{(2)}\rangle c_i^\dagger c_j^\dagger c_k c_l &lt;/math&gt;.<br /> <br /> Bei den Ausdrücken handelt es sich um echte Gleichheit der Operatoren, so lange sie auf eine feste Teilchenzahl bezogen sind. Man sieht aber, dass die zweitquantisierte Form der Operatoren die Teilchenzahl nicht mehr explizit enthält. Die zweitquantisierten Operatoren nehmen in Systemen verschiedener Teilchenzahl also jeweils dieselbe Form an.<br /> <br /> === Konkrete Beispiele ===<br /> ==== Einteilchen-Operatoren ====<br /> Teilchendichte in Zweitquantisierung bezüglich Impulsbasis (diskrete Impulsbasis, endliches Volumen mit [[periodische Randbedingung|periodischen Randbedingungen]]): <br /> <br /> &lt;math&gt;\rho(r) = \sum_{\alpha=1}^N \delta(r - \hat x_\alpha)<br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad = \sum_{k,k'} \langle k| \delta(r-\hat x) | k' \rangle c^\dagger_k c_{k'} <br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad =\sum_{k,k'} \int_{x \in V} \mathrm{d}^3x\, \langle k| \delta(r-\hat x) |x\rangle\langle x |\,| k' \rangle c^\dagger_k c_{k'} <br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad =\sum_{k,k'} \int_{x \in V} \mathrm{d}^3x\, \langle k|x\rangle \delta(r-x) \langle x | k' \rangle c^\dagger_k c_{k'} <br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad =\sum_{k,k'} \int_{x \in V} \mathrm{d}^3x\, \frac{1}{V} e^{i(k'-k)x} \delta(r - x) c^\dagger_k c_{k'} <br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad =\sum_{k,k'} \frac{1}{V} e^{i (k'-k) r} c^\dagger_k c_{k'}<br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad = \frac{1}{V} \sum_{k,q} e^{iqr}c^\dagger_k c_{k + q}<br /> &lt;/math&gt;<br /> <br /> ==== Coulomb-Wechselwirkung ====<br /> In Zweitquantisierung bezüglich (diskreter) Impulsbasis.<br /> <br /> &lt;math&gt;W_\textrm{Coul.} = \frac{1}{2} \sum_{\alpha,\alpha\neq\beta} \frac{e^2}{|\mathbf{r_\alpha - r_\beta|}} =<br /> \frac{1}{2V} \sum_{q\neq 0,k_1,\sigma_1,k_2,\sigma_2} \frac{4\pi e^2}{q^2} c^\dagger_{k_1,\sigma_1} c^\dagger_{k_2,\sigma_2} c_{k_2-q,\sigma_2} c_{k_1+q,\sigma_1}<br /> &lt;/math&gt;<br /> ====Supraleitung====<br /> Die Zweite Quantisierung ermöglicht mit der Fock-Darstellung auch die explizite Berücksichtigung von Zuständen, die ''keine''&amp;nbsp; Eigenzustände des Teichenzahloperators &lt;math&gt;\hat N=\sum_{k,\sigma} c_{k,\sigma}^\dagger c_{k,\sigma}&lt;/math&gt; sind. Solche Zustände spielen in der Theorie der [[Supraleitung]] eine große Rolle.<br /> <br /> == Transformation zwischen Einteilchenbasen ==<br /> Erzeugungs- und Vernichtungsoperatoren bezüglich einer gegebenen Einteilchenbasis &lt;math&gt;|i\rangle&lt;/math&gt; lassen sich durch entsprechende Operatoren bezüglich einer anderen Einteilchenbasis &lt;math&gt;|\alpha\rangle&lt;/math&gt; ausdrücken:<br /> <br /> &lt;math&gt;c_i^\dagger = \sum_\alpha \langle \alpha|i \rangle c^\dagger_\alpha&lt;/math&gt;<br /> <br /> &lt;math&gt;c_i = \sum_\alpha \langle i|\alpha \rangle c_\alpha.&lt;/math&gt;<br /> <br /> Durch diese Beziehungen ist es möglich, einen [[Basiswechsel]] im Fockraum durchzuführen und somit gegebene Ausdrücke auf für die gerade anliegende Situation besser geeignete Formen zu transformieren. Auf ähnliche Art werden aus den Erzeugungs-/Vernichtungs-Operatoren für diskrete Einteilchenbasen auch [[Feldoperator]]en bezüglich kontinuierlicher Orts- bzw. Impulsbasen erzeugt, wie sie vor allem in den [[Quantenfeldtheorie]]n verwendet werden.<br /> <br /> == Verallgemeinerung: Relativistische Quantenfeldtheorien ==<br /> Als Verallgemeinerung entstehen, wie in der Fußnote &lt;ref name=&quot;relativistische QFT&quot;&gt;Man kann die ''Zweite Quantisierung'' auch als ''[[Quantenfeldtheorie#Feldquantisierung|Feldquantisierung]]'' eines bestimmten, mit der Schrödingergleichung kompatiblen klassischen Feldes, des sog. „Schrödinger-Feldes“, formulieren. Statt der Schrödingergleichung kann man auch ''relativistische'' klassische, zur Quantentheorie kompatible Gleichungen bzw. deren Feldtheorien behandeln. Die resultierenden Gleichungen wären z.&amp;nbsp;B. in der Struktur analog zu denen der [[Maxwellsche Gleichungen|Maxwellschen Theorie]] und müssen in den Spezialfällen des Schrödingerfeldes oder der sog. [[Quantenelektrodynamik|QED]] oder [[Quantenchromodynamik|QCD]] u.a. die Maxwellsche Feldenergie als Beitrag zur Potentiellen Energie der Elektronen enthalten, in deren kinetischer Energie aber auch die [[Plancksche Konstante]] ''h'' als Feldparameter. Es entstehen so anstelle der nicht-relativistischen [[Vielteilchentheorie]] relativistische [[Quantenfeldtheorie]]n.&lt;/ref&gt; angedeutet, anstelle der nicht-relativistischen [[Vielteilchentheorie]] relativistische [[Quantenfeldtheorie]]n.<br /> <br /> == Literatur ==<br /> * Alexander Altland, Ben Simons: ''Condensed matter field theory'', Cambridge Univ. Press, 2009, ISBN 978-0-521-84508-3<br /> * Eugen Fick: ''Einführung in die Grundlagen der Quantentheorie'', Wiesbaden, 1988, ISBN 3-89104-472-0<br /> * Wolfgang Nolting: ''Grundkurs theoretische Physik'', Band 7: ''Vielteilchenphysik'', Berlin u.a., 2009, ISBN 978-3-642-01605-9<br /> * Franz Schwabl: ''Quantenmechanik für Fortgeschrittene (QM II)'', Berlin u.a., 2008, ISBN 978-3-540-85075-5<br /> <br /> == Einzelnachweise und Fußnoten ==<br /> &lt;references /&gt;<br /> <br /> [[Kategorie:Quantenfeldtheorie]]<br /> [[Kategorie:Statistische Physik]]<br /> [[Kategorie:Festkörperphysik]]<br /> <br /> [[en:Canonical quantization]]<br /> [[es:Segunda cuantización]]<br /> [[fr:Seconde quantification]]<br /> [[it:Seconda quantizzazione]]<br /> [[ja:第二量子化]]<br /> [[ko:정준 양자화]]<br /> [[ru:Вторичное квантование]]<br /> [[uk:Вторинне квантування ферміонів]]<br /> [[zh:正則量子化]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=Benutzer:Mathmon/Zweite_Quantisierung&diff=109116319 Benutzer:Mathmon/Zweite Quantisierung 2012-10-09T12:52:02Z <p>Mathmon: AZ: Die Seite wurde neu angelegt: Die &#039;&#039;&#039;Zweite Quantisierung&#039;&#039;&#039; (oft auch &#039;&#039;Zweite Quantelung&#039;&#039; oder &#039;&#039;Feldquantisierung&#039;&#039; genannt) ist…</p> <hr /> <div>Die '''Zweite Quantisierung''' (oft auch ''Zweite Quantelung'' oder ''Feldquantisierung'' genannt) ist eine Methode zur [[Quantenmechanik|quantenmechanischen]] Behandlung von [[Vielteilchentheorie|Vielteilchenproblemen]], insbesondere auch der Prozesse, bei denen Teilchen entstehen oder vernichtet werden. Sie wurde kurz nach der Entdeckung der Quantenmechanik (siehe [[Erste Quantisierung]]) entwickelt, um auch Photonen und deren Erzeugung und Vernichtung quantenmechanisch beschreiben zu können. Die Photonen erscheinen in der Zweiten Quantisierung als die Feldquanten des quantisierten elektromagnetischen Felds, was auf den zweiten angegebenen Namen führte. Als in den 1930er Jahren entdeckt wurde, dass auch „materielle“ Teilchen erzeugt und vernichtet werden können, wurde der Anwendungsbereich der Methode auf alle Teilchen ausgedehnt. Damit war in der Physik der anschauliche Gegensatz zwischen [[Welle-Teilchen-Dualismus|Teilchen und Wellen]] in seiner früheren grundsätzlichen Bedeutung aufgehoben.<br /> <br /> Die Zweite Quantisierung wird im Bereich der [[Festkörperphysik]], der [[Quantenfeldtheorie]] und anderen Vielteilchentheorien angewandt. Sie ist häufig der angemessenste Rahmen, um physikalische Probleme theoretisch zu behandeln.<br /> <br /> == Vielteilchensysteme in der Quantenmechanik ==<br /> <br /> === Hilbertraum und Zustände ===<br /> <br /> In der Vielteilchentheorien betrachtet man &lt;math&gt;N&lt;/math&gt; verschiedene Teilchen, welche man von &lt;math&gt;1&lt;/math&gt; bis<br /> &lt;math&gt;N&lt;/math&gt; durchnummeriert. Zu jedem Teilchen gehört ein Hilbertraum &lt;math&gt;\mathcal{H}^{(i)}&lt;/math&gt;, welcher die<br /> möglichen Zustände des &lt;math&gt;i&lt;/math&gt;-ten Teilchens enthält. Der Hilbertraum des Gesamtsystems ist gegeben als das<br /> Tensorprodukt der einzelnen Hilberträume:<br /> <br /> :&lt;math&gt;<br /> \mathcal{H} = \mathcal{H}^{(1)} \otimes \mathcal{H}^{(2)} \otimes \ldots \otimes \mathcal{H}^{(N)}<br /> &lt;/math&gt;<br /> <br /> Falls &lt;math&gt;\{ \vert \alpha_i \rangle \}&lt;/math&gt; eine Basis des Raumes &lt;math&gt;\mathcal{H}^{(i)}&lt;/math&gt; ist, so lässt<br /> sich eine Basis des gesamtes Hilbertraumes konstruieren als<br /> <br /> :&lt;math&gt;<br /> \{ \vert \alpha_1 \rangle \otimes \vert \alpha_2 \rangle \otimes \ldots \otimes \vert \alpha_N \rangle \}<br /> =: \vert \alpha_1 \alpha_2 \ldots \alpha_N \rangle<br /> &lt;/math&gt;<br /> <br /> Ein beliebiger Zustand &lt;math&gt;\vert \Psi \rangle \in \mathcal{H}&lt;/math&gt; lässt sich somit schreiben als<br /> <br /> :&lt;math&gt;<br /> \vert \Psi \rangle = \sum_ {\alpha_1, \ldots, \alpha_N} c_{\alpha_1, \ldots, \alpha_N} \cdot<br /> \vert \alpha_1 \ldots \alpha_N \rangle<br /> &lt;/math&gt;<br /> <br /> Eine anschauliche Interpretation eines solchen Zustandes erhält man beispielsweise durch dessen<br /> Projektion auf den Ortsraum:<br /> <br /> :&lt;math&gt;<br /> \langle x_1 ,\ldots, x_N \vert \Psi \rangle = \Psi(x_1, \ldots, x_N)<br /> &lt;/math&gt;<br /> <br /> Ein Vielteilchenzustand im Ortsraum ist also eine Funktion, die von &lt;math&gt;N&lt;/math&gt; verschiedenen Koordinaten<br /> abhängt. Die [[Wellenfunktion#Teilcheninterpretation|Teilcheninterpretation]] ist analog zu der Interpretation<br /> im Fall &lt;math&gt;N=1&lt;/math&gt;: Die Wahrscheinlichkeit, das erste Teilchen im Volumen &lt;math&gt;V_1&lt;/math&gt; anzutreffen,<br /> das zweite in &lt;math&gt;V_2&lt;/math&gt; und so weiter ist gegeben durch<br /> <br /> :&lt;math&gt;<br /> \int_{V_1} \int_{V_2} \cdots \int_{V_N} \vert \Psi(x_1, \ldots, x_N) \vert^2 \mathrm dx_N \ldots \mathrm dx_2 \mathrm dx_1<br /> &lt;/math&gt;<br /> <br /> In diesem Fall fordert man natürlich die korrekte Normierung der Wellenfunktion:<br /> <br /> :&lt;math&gt;<br /> \int_{\mathbb{R}^d} \int_{\mathbb{R}^d} \cdots \int_{\mathbb{R}^d}<br /> \vert \Psi(x_1, \ldots, x_N) \vert^2 \mathrm dx_N \ldots \mathrm dx_2 \mathrm dx_1<br /> \,\stackrel{!}{=}\, 1<br /> &lt;/math&gt;<br /> <br /> Liegt ein Zustand der Form &lt;math&gt;\vert \alpha_1 \ldots \alpha_N \rangle&lt;/math&gt; vor, so hat die Wellenfunktion<br /> im Ortsraum die Gestalt<br /> <br /> :&lt;math&gt;<br /> \langle x_1 ,\ldots, x_N \vert \alpha_1 \ldots \alpha_N \rangle =<br /> \alpha_1(x_1) \cdot \alpha_2(x_2) \cdot \ldots \cdot \alpha_N(x_N)<br /> &lt;/math&gt;<br /> <br /> In diesem Fall vereinfacht sich die Berechnung der Aufenthaltswahrscheinlichkeit, da das Integral in ein<br /> Produkt zerfällt:<br /> <br /> :&lt;math&gt;<br /> \int_{V_1} \int_{V_2} \cdots \int_{V_N} \vert \Psi(x_1, \ldots, x_N) \vert^2 \mathrm dx_N \ldots \mathrm dx_2 \mathrm dx_1<br /> = \left( \int_{V_1} \vert \alpha_1(x_1) \vert^2 \mathrm dx_1 \right) \cdot<br /> \left( \int_{V_2} \vert \alpha_1(x_2) \vert^2 \mathrm dx_2 \right) \ldots<br /> \left( \int_{V_N} \vert \alpha_1(x_N) \vert^2 \mathrm dx_N \right)<br /> &lt;/math&gt;<br /> <br /> Einen Zustand, welcher in dieser Form vorliegt, bezeichnet man als ''reinen'' oder ''separablen'' Zustand,<br /> während ein jeglicher<br /> anderer Zustand als ''gemischt'' oder ''verschränkt'' bezeichnet wird. Bei einem reinen Zustand sind die<br /> Aufenthaltswahrscheinlichkeiten also unabhängig voneinander, während bei einem verschränkten Zustand die<br /> Aufenthaltswahrscheinlichkeit jedes Teilchens von den Aufenthaltswahrscheinlichkeiten aller anderen Teilchen<br /> abhängt.<br /> <br /> === Operatoren ===<br /> <br /> Ein Operator &lt;math&gt;\hat A&lt;/math&gt; eines Vielteilchensystems ist ein Funktional<br /> &lt;math&gt;\hat A : \mathcal{H} \mapsto \mathcal{H}&lt;/math&gt;. Eine Besonderheit sind hier Operatoren aus<br /> den einzelnen Räumen &lt;math&gt;\mathcal{H}^{(i)}&lt;/math&gt;: Diese werden durch Tensorprodukte zu Operatoren<br /> des Raumes &lt;math&gt;\mathcal{H}&lt;/math&gt; gemacht. Beispielsweise wird der Ortsoperator &lt;math&gt; \hat x_1&lt;/math&gt; zu<br /> <br /> :&lt;math&gt;<br /> \hat x_1 \otimes \mathbb{1}_2 \otimes \ldots \otimes \mathbb{1}_N<br /> &lt;/math&gt;<br /> <br /> Dabei bezeichnet &lt;math&gt;\mathbb{1}_i&lt;/math&gt; die [[Identische Abbildung|identische Abbildung]] im Raum<br /> &lt;math&gt;\mathcal{H}^{(i)}&lt;/math&gt;. Aus Gründen der Notation schreibt man die identischen Abbildungen im<br /> Allgemeinen nicht mit.<br /> <br /> Die Dynamik eines Vielteilchensystems wird weiterhin durch die [[Schrödingergleichung]] beschrieben:<br /> <br /> :&lt;math&gt;<br /> \mathrm{i} \hbar \frac{\partial}{\partial t} |\,\psi (t) \rangle<br /> = \hat{H}(\hat x_1, \ldots, \hat x_N, \hat p_1, \ldots, \hat p_N, t) |\,\psi (t) \rangle<br /> &lt;/math&gt;<br /> <br /> Der [[Hamiltonoperator]] hängt im allgemeinen Fall von sämtlichen Orts- und Impulsoperatoren sowie von der Zeit<br /> ab. Ein Beispiel für wechselwirkende Teilchen ist gegeben durch<br /> <br /> :&lt;math&gt;<br /> \hat{H} = \sum_{i=1}^{N} \frac{\hat p_i^2}{2 m_i} + \sum_{i \neq j}^N \hat V (\hat x_i, \hat x_j, t)<br /> &lt;/math&gt;<br /> <br /> == Grundbegriffe ==<br /> Kurze Zusammenstellung einiger der wesentlichen neuen Begriffe und ihrer unmittelbaren Folgen:<br /> * Der [[Zustand (Quantenmechanik)|Zustand]] des betrachteten Systems wird wie in der gewöhnlichen Quantenmechanik durch einen normierten Vektor in einem [[Hilbertraum]] angegeben, der aber jetzt [[Fockraum]] genannt wird, weil er Zustände mit unterschiedlichen Teilchenzahlen enthält.<br /> * Es gibt einen Zustand ohne jedes Teilchen, das absolute [[Vakuum]], Symbol &lt;math&gt;\vert O\rangle&lt;/math&gt;.<br /> :: (Der Vakuumzustand ist normiert, &lt;math&gt;\langle O\vert O\rangle=1&lt;/math&gt;, darf also nicht mit dem [[Nullvektor]] verwechselt werden.)<br /> * Es gibt für jede Teilchenart einen Erzeugungsoperator, der es in einem definierten Zustand in die Welt setzt, Symbol &lt;math&gt;a^\dagger&lt;/math&gt; (für eine andere Teilchenart &lt;math&gt;b^\dagger&lt;/math&gt; etc.). Der 1-Teilchenzustand mit einem Teilchen im Zustand ''p'' ist dann gegeben durch &lt;math&gt;a^\dagger_p \vert O \rangle&lt;/math&gt;. Der 2-Teilchenzustand mit einem zweiten Teilchen gleicher Art, aber im Zustand ''k'', ist dann gegeben durch nochmaliges Anwenden des Erzeugers: &lt;math&gt;a^\dagger_k a^\dagger_p \vert O \rangle&lt;/math&gt;. Für weitere Teilchen entsprechend weitere Erzeugungsoperatoren.<br /> * Da die „a“-Teilchen unter sich identisch sind, darf bei einer Vertauschung in der Reihenfolge der Erzeugung kein anderer Zustand herauskommen. Allenfalls muss sich das Vorzeichen ändern. Das wird gewährleistet durch die Bedingungen<br /> :: &lt;math&gt;a^\dagger_k a^\dagger_p = +a^\dagger_p a^\dagger_k&lt;/math&gt; für [[Boson]]en („vertauschbar“)<br /> :: &lt;math&gt;a^\dagger_k a^\dagger_p = -a^\dagger_p a^\dagger_k&lt;/math&gt; für [[Fermion]]en („antivertauschbar“). <br /> :Erzeuger verschiedener Teilchenarten sind immer vertauschbar. Damit ist schon früh im Formalismus zweierlei erreicht:<br /> # Die [[Ununterscheidbare Teilchen|''absolute'' Ununterscheidbarkeit]] gleicher Teilchen ist eingebaut. Die Teilchen bekommen noch nicht einmal mehr eine Nummer, um ihre Koordinaten voneinander unterscheiden zu können.<br /> # Bosonen-Zustände sind immer symmetrisch gegen Vertauschung, Fermionenzustände immer antisymmetrisch. Das [[Pauli-Prinzip]] ist automatisch berücksichtigt und die unterschiedlichen [[Quantenstatistik]]en ergeben sich zwangsläufig. <br /> * Der Operator für die Vernichtung eines Teilchens im Zustand ''p'' ist &lt;math&gt;\,a_p&lt;/math&gt;. Ein Anwendungsbeispiel: Hier lässt die Vernichtung eines existierenden Teilchens im Vakuum das leere Vakuum zurück, &lt;math&gt;a_p\,a^\dagger_p \vert O \rangle = \vert O \rangle&lt;/math&gt;. Der Vernichter ist der zum Erzeuger [[hermitescher Operator#Definitionen|hermitesch adjungierte Operator]]. Dass das so richtig ist, sieht man z.&amp;nbsp;B. beim Ausrechnen der Norm von &lt;math&gt;a^\dagger_p\vert O \rangle&lt;/math&gt;, d.h. beim Skalarprodukt mit seinem adjungierten Vektor &lt;math&gt;\langle O \vert a_p &lt;/math&gt; :<br /> :: &lt;math&gt;\vert\vert a^\dagger_p \vert O \rangle \vert\vert^2 = \langle O \vert a_p a^\dagger_p \vert O \rangle = \langle O \vert \left(a_p a^\dagger_p \vert O \rangle\right) =\langle O \vert O \rangle = 1&lt;/math&gt;<br /> :Für die Vernichtungsoperatoren gelten deshalb dieselben Vertauschungsregeln wie für die Erzeuger. Anwendung eines Vernichters auf den Vakuumzustand ergibt Null (den Nullvektor).<br /> * Der Übergang eines Teilchens vom Zustand ''p'' nach ''k'' wird durch den Operator &lt;math&gt;a^\dagger_k a_p &lt;/math&gt; bewerkstelligt. Man vernichtet das Teilchen in ''p'' und erzeugt sich ein neues in ''k'' - sie sind ja identisch. Begriffliche Vorteile: <br /> #Die für Alltagsgegenstände so unvermeidliche Frage, ob nicht jemand den „Betrug“ bemerken könnte, dass ihm mit dem bei ''k'' auftauchenden Teilchen gar nicht das originale Teilchen untergeschoben werden soll, kann gar nicht gestellt werden.<br /> #Die ebenso naheliegende Alltagsfrage, wo das Teilchen während des ''Quantensprungs'' von ''p'' nach ''k'' gewesen sei, kann auch nicht mehr gestellt werden.<br /> <br /> * Vernichter ''k'' sind mit Erzeugern ''p'' vertauschbar, außer sie beziehen sich auf denselben Zustand. Dann gilt:<br /> <br /> :: &lt;math&gt;a_p a^\dagger_p = +a^\dagger_p a_p + 1&lt;/math&gt; für Bosonen („vertauschbar“)<br /> :: &lt;math&gt;a_p a^\dagger_p = -a^\dagger_p a_p + 1&lt;/math&gt; für Fermionen („antivertauschbar“)<br /> <br /> * Der Operator, der die Anzahl der im Zustand ''p'' anwesenden Teilchen als Eigenwert angibt, ist der Teilchenzahloperator &lt;math&gt;\hat n_p = a^\dagger_p a_p&lt;/math&gt;. Er ist gleich für Fermionen und Bosonen. (Für Fermionen hat er keine Eigenwerte außer 0 und 1.)<br /> <br /> * Der Zusammenhang eines 1-Teilchenzustands &lt;math&gt;a^\dagger_p \vert O \rangle&lt;/math&gt; mit seiner „alten“ [[Wellenfunktion]] &lt;math&gt;\psi_p(\vec r)&lt;/math&gt; ergibt sich, indem man sich ein am Ort &lt;math&gt;\vec r&lt;/math&gt; lokalisiertes Teilchen erzeugt (Zustand &lt;math&gt;a^\dagger_{\vec r} \vert O \rangle&lt;/math&gt; ) und mit &lt;math&gt;a^\dagger_p \vert O \rangle&lt;/math&gt; das Skalarprodukt bildet, das ja die Amplitude des einen Zustands im anderen angibt:<br /> :: &lt;math&gt;\psi_p(\vec r) = \langle O \vert a_{\vec r} a^\dagger_p \vert O \rangle&lt;/math&gt;<br /> <br /> == Mathematische Konstruktion ==<br /> Die entscheidende Arbeit, ''Konfigurationsraum und zweite Quantelung''&lt;ref&gt;[http://www.springerlink.com/content/p210670017185u60/ Konfigurationsraum und zweite Quantelung] - vollständiges Dokument bei springerlink.com&lt;/ref&gt;, stammt von dem russischen Physiker [[Wladimir Fock]] aus dem Jahre 1932.<br /> <br /> Sei &lt;math&gt;\{ |\phi_j\rangle \}_j&lt;/math&gt; eine orthonormale Einteilchen-Basis eines quantenmechanischen Systems (, d.&amp;nbsp;h. ein Satz an [[Wellenfunktion]]en, nach denen sich jede beliebige Einteilchenwellenfunktion entwickeln lässt). Dann ist bekannt, dass sich jede fermionische (bzw. bosonische) Vielteilchen-Wellenfunktion, die ja von Natur aus antisymmetrisch (bzw. symmetrisch) ist, nach [[Determinante (Mathematik)|Determinanten]] (bzw. [[Permanente]]n) bezüglich dieser Einteilchenbasis entwickeln lässt:<br /> Sei &lt;math&gt;\Psi(x_1, \ldots, x_N)&lt;/math&gt; antisymmetrisch (&lt;math&gt;x_j = (\mathbf{r}_j, s_j)&lt;/math&gt;, z.&amp;nbsp;B. Orts- und Spinkoordinaten eines Elektrons). Dann gibt es komplexe Zahlen &lt;math&gt;c_L \in \mathbb{C}^N&lt;/math&gt; (d. h. zu jeder „Konfiguration“ &lt;math&gt;L = (l_1,\ldots,l_N)&lt;/math&gt;, worin &lt;math&gt;l_x&lt;/math&gt; Index in die Einteilchenbasis ist, gibt es ''N'' komplexe Koeffizienten) mit<br /> <br /> &lt;math&gt;\Psi(x_1,\ldots,x_N) = \sum_{L\subset \mathbb{N}, |L|=N, \textrm{ geordnet}} c_L \frac{1}{\sqrt{N}} \det<br /> \left|\left\langle x_j | \phi_{l_k}\right\rangle\right|_{(j,k)} &lt;/math&gt;&lt;math&gt;= \sum_L \frac{c_L}{\sqrt{N}} \det \begin{pmatrix} \phi_{l_1}(x_1) &amp; \cdots &amp; \phi_{l_N}(x_1) \\ \vdots &amp; \ddots &amp; \vdots \\ \phi_{l_1}(x_N) &amp; \cdots &amp; \phi_{l_N}(x_N)\end{pmatrix}&lt;/math&gt;<br /> <br /> Man kann also jede Vielteilchen-Wellenfunktion als Linearkombination solcher Determinanten-Zustände darstellen (bzw. entsprechender Permanenten-Zustände im bosonischen Fall). Diese Determinantenzustände sind neben der rein mathematischen Bedeutung als Entwicklungsbasis häufig auch von großer physikalischer Bedeutung, da sich Grundzustands-Wellenfunktionen nicht wechselwirkender Systeme als reine Determinantenzustände (bzw. Permanentenzustände) darstellen lassen.<br /> <br /> Der Determinante/Permanente zur Konfiguration &lt;math&gt;L = (l_1,\ldots,l_N)&lt;/math&gt; kann man nun die Bezeichnung<br /> <br /> &lt;math&gt;| 0, 0, \underbrace{n_1}_{\nwarrow l_1\textrm{te Stelle}}, 0, 0, 0, \underbrace{n_2}_{\nwarrow l_{1+n_1}\textrm{te Stelle}}, \ldots \rangle&lt;/math&gt;<br /> <br /> zuordnen, mit &lt;math&gt;n_1 = &lt;/math&gt; Anzahl Vorkommen des Wertes von &lt;math&gt;l_1&lt;/math&gt; in &lt;math&gt;L&lt;/math&gt;, &lt;math&gt;n_2 = &lt;/math&gt; Anzahl Vorkommen des Wertes von &lt;math&gt;l_2&lt;/math&gt; in &lt;math&gt;L&lt;/math&gt;, …. Die Werte &lt;math&gt;n_j&lt;/math&gt; nennt man ''Besetzungszahlen'' der zugehörigen Basiszustände. Die Besetzungszahlen können bei Fermionen nur 1 oder 0 sein, da sonst die Determinante verschwinden würde (zwei gleiche Spalten).<br /> <br /> In dieser Bezeichnungsweise ist also die allgemeine Darstellung eines N-Teilchen Vielteilchenzustands &lt;math&gt;|\Psi\rangle&lt;/math&gt;:<br /> <br /> &lt;math&gt;|\Psi\rangle = \sum_{n_1, n_2, \ldots = 0; n_1+n_2+\ldots=N}^{1 \textrm{\,bzw.\,}\infty}c_{n_1,\ldots,n_\infty} |n_1, n_2, \ldots, n_\infty\rangle&lt;/math&gt;<br /> <br /> die ''Besetzungszahldarstellung''. Der antisymmetrische bzw. symmetrische N-Teilchen-Hilbertraum &lt;math&gt;\mathcal H_N&lt;/math&gt; wird also durch diese Zustände &lt;math&gt;|n_1, n_2, \ldots\rangle&lt;/math&gt; mit &lt;math&gt;\sum n_j = N&lt;/math&gt; aufgespannt. Es liegt nun nahe, einen allgemeineren Raum namens Fockraum einzuführen, der durch die &lt;math&gt;|n_1, n_2, \ldots\rangle&lt;/math&gt;-Zustände mit beliebiger endlicher Teilchenzahl aufgespannt wird:<br /> <br /> &lt;math&gt;F := \textrm{clin}\{ |n_1, n_2, \ldots\rangle;\; \sum n_j\, \textrm{endl.} \} = \bigoplus_N \mathcal H_N&lt;/math&gt;.<br /> <br /> Da sich Operatoren unabhängig von der konkreten Teilchenzahl darstellen lassen (s.u.), ist diese Konstruktion sinnvoll. In diesem Raum sind Zustände unbestimmter Teilchenzahl enthalten ([[Linearkombination]] von Zuständen verschiedener bestimmter Teilchenzahlen). In ihm wird Vielteilchentheorie normalerweise betrieben.<br /> <br /> Einzelne Determinantenzustände, die wie schon gesagt z.&amp;nbsp;B. besondere Zustände eines wechselwirkungsfreien Systems sein könnten, kann man in der Form &lt;math&gt;|\Psi\rangle = |n_1, n_2, \ldots\rangle&lt;/math&gt; eindeutig angeben, wenn man dazu sagt, auf welche Einteilchenbasis man sich bezieht.<br /> <br /> Siehe dazu auch: [[Slater-Determinante]]<br /> <br /> == [[Erzeugungs- und Vernichtungsoperator|Erzeugungs-, Vernichtungs-]] und Teilchenzahloperatoren ==<br /> <br /> Man führt nun, zunächst recht willkürlich, neue Operatoren ein, die Teilchen im Basiszustand &lt;math&gt;j\equiv|\phi_j\rangle&lt;/math&gt;„erzeugen“ bzw. „vernichten“ (d.&amp;nbsp;h. die entsprechende Besetzungszahl erhöhen oder verringern):<br /> <br /> Definition (auf der Basis des Zustandsraumes, auf dem Rest durch lineare Fortsetzung):<br /> <br /> *Im bosonischen Fall<br /> <br /> &lt;math&gt;<br /> c_j^\dagger: H_N^S \rightarrow H_{N+1}^S,\quad c_j^\dagger | \ldots n_j \ldots \rangle := \sqrt{n_j+1} |\ldots n_j+1 \ldots \rangle&lt;/math&gt;<br /> <br /> &lt;math&gt;<br /> c_j: H_N^S \rightarrow H_{N-1}^S,\quad c_j | \ldots n_j \ldots \rangle := \sqrt{n_j} |\ldots n_j-1 \ldots \rangle<br /> &lt;/math&gt;<br /> <br /> *Im fermionischen Fall<br /> <br /> &lt;math&gt;<br /> c_j^\dagger: H_N^A \rightarrow H_{N+1}^A,\quad c_j^\dagger | \ldots n_j \ldots \rangle := (-1)^{\sum_{i&lt;j}n_i}\;(1-n_j) |\ldots \underbrace{n_j+1}_{=1} \ldots \rangle<br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;<br /> c_j: H_N^A \rightarrow H_{N-1}^A,\quad c_j | \ldots n_j \ldots \rangle := (-1)^{\sum_{i&lt;j}n_i}\; n_j |\ldots \underbrace{n_j-1}_{=0} \ldots \rangle<br /> &lt;/math&gt;<br /> <br /> Die Vorfaktoren sorgen dabei jeweils für das Nichtauftreten unmöglicher Zustände (z.&amp;nbsp;B. mit Besetzungszahlen &lt; 0 oder &gt; 1 bei Fermionen), für das Wegkapseln der Antisymmetrie bei Fermionen in anderen Ausdrücken und dafür, dass sich die Besetzungszahloperatoren in beiden Fällen als<br /> <br /> &lt;math&gt; \hat n_j := c_j^\dagger c_j &lt;/math&gt;<br /> <br /> ergeben. Nachrechnen zeigt, dass diese Operatoren bei Determinantenzuständen die Besetzungszahlen reproduzieren:<br /> <br /> &lt;math&gt; \hat n_j | \ldots, n_j, \ldots\rangle = n_j |\ldots, n_j,\ldots\rangle &lt;/math&gt;.<br /> <br /> === Vertauschungsrelationen ===<br /> Für die so konstruierten Operatoren gelten im fermionischen Fall die Antivertauschungsrelationen<br /> <br /> &lt;math&gt; \{c_i, c_j^\dagger\} = \delta_{ij} \qquad \{c_i, c_j\} = 0 \qquad \{c_i^\dagger, c_j^\dagger\} = 0, &lt;/math&gt;<br /> <br /> wobei &lt;math&gt;\{A,B\}:= AB+BA&lt;/math&gt; den [[Kommutator (Mathematik)#Antikommutator|Antikommutator]] bedeutet. <br /> <br /> Im bosonischen Fall gelten die Vertauschungsrelationen<br /> <br /> &lt;math&gt; [c_i, c_j^\dagger] = \delta_{ij} \qquad [c_i, c_j] = 0 \qquad [c_i^\dagger, c_j^\dagger] = 0.&lt;/math&gt;<br /> <br /> Darin ist &lt;math&gt;[A,B] := AB-BA&lt;/math&gt; der [[Kommutator (Mathematik)|Kommutator]].<br /> <br /> == Ein- und Zweiteilchenoperatoren ==<br /> Es lässt sich zeigen, dass sich sämtliche linearen Operatoren auf dem Fockraum als Linearkombination von Polynomen in den Erzeugungs/Vernichtungsoperatoren darstellen lassen. Darin liegt ein wesentlicher Aspekt ihrer Wichtigkeit. Besonders bedeutend sind dabei die sogenannten Einteilchen- bzw. Zweiteilchen-Operatoren, die ihrem Namen nach entweder [[Observable]]n einzelner Teilchen repräsentieren (z.&amp;nbsp;B. kinetische Energie, Position, Spin) oder Wechselwirkungen zwischen zwei Teilchen (z.&amp;nbsp;B. [[Coulomb-Wechselwirkung]] zwischen zwei Elektronen).<br /> <br /> Es ergeben sich dabei einfache Ausdrücke: Sei<br /> <br /> &lt;math&gt;A = \sum_\alpha h_\alpha \,&lt;/math&gt;<br /> <br /> ein Einteilchen-Operator (d.&amp;nbsp;h. jedes &lt;math&gt;h_\alpha \,&lt;/math&gt; wirkt nur auf die Koordinaten des &lt;math&gt;\alpha\,&lt;/math&gt;-ten Teilchens, von der Struktur her sind die &lt;math&gt;h_\alpha \,&lt;/math&gt;s aber alle gleich), so ergibt sich (durch Ausrechnen):<br /> <br /> &lt;math&gt;A = \sum_\alpha h_\alpha = \sum_{i,j} \langle i|h|j\rangle c_i^\dagger c_j = \sum_{i,j} \langle \phi_i|h|\phi_j\rangle c_i^\dagger c_j &lt;/math&gt;<br /> <br /> wobei &lt;math&gt;\langle i|h|j\rangle&lt;/math&gt; das Matrixelement des Einteilchenoperators ist, aus dem sich die &lt;math&gt;h_i \,&lt;/math&gt; ergeben, gebildet mit den Basiszuständen &lt;math&gt;|\phi_j\rangle&lt;/math&gt;, bezüglich denen quantisiert wurde.<br /> Für Zweiteilchenoperatoren ergibt sich analog:<br /> <br /> &lt;math&gt;A = \sum_{\alpha,\beta\neq\alpha} w(\alpha,\beta) = \sum_{i,j,k,l} \langle ij|w|lk\rangle c_i^\dagger c_j^\dagger c_k c_l &lt;/math&gt;&lt;math&gt;= \sum_{i,j,k,l} \langle \phi_i^{(1)} \phi_j^{(2)}|w(1,2)|\phi_l^{(1)}\phi_k^{(2)}\rangle c_i^\dagger c_j^\dagger c_k c_l &lt;/math&gt;.<br /> <br /> Bei den Ausdrücken handelt es sich um echte Gleichheit der Operatoren, so lange sie auf eine feste Teilchenzahl bezogen sind. Man sieht aber, dass die zweitquantisierte Form der Operatoren die Teilchenzahl nicht mehr explizit enthält. Die zweitquantisierten Operatoren nehmen in Systemen verschiedener Teilchenzahl also jeweils dieselbe Form an.<br /> <br /> === Konkrete Beispiele ===<br /> ==== Einteilchen-Operatoren ====<br /> Teilchendichte in Zweitquantisierung bezüglich Impulsbasis (diskrete Impulsbasis, endliches Volumen mit [[periodische Randbedingung|periodischen Randbedingungen]]): <br /> <br /> &lt;math&gt;\rho(r) = \sum_{\alpha=1}^N \delta(r - \hat x_\alpha)<br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad = \sum_{k,k'} \langle k| \delta(r-\hat x) | k' \rangle c^\dagger_k c_{k'} <br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad =\sum_{k,k'} \int_{x \in V} \mathrm{d}^3x\, \langle k| \delta(r-\hat x) |x\rangle\langle x |\,| k' \rangle c^\dagger_k c_{k'} <br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad =\sum_{k,k'} \int_{x \in V} \mathrm{d}^3x\, \langle k|x\rangle \delta(r-x) \langle x | k' \rangle c^\dagger_k c_{k'} <br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad =\sum_{k,k'} \int_{x \in V} \mathrm{d}^3x\, \frac{1}{V} e^{i(k'-k)x} \delta(r - x) c^\dagger_k c_{k'} <br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad =\sum_{k,k'} \frac{1}{V} e^{i (k'-k) r} c^\dagger_k c_{k'}<br /> &lt;/math&gt;<br /> <br /> &lt;math&gt;\qquad = \frac{1}{V} \sum_{k,q} e^{iqr}c^\dagger_k c_{k + q}<br /> &lt;/math&gt;<br /> <br /> ==== Coulomb-Wechselwirkung ====<br /> In Zweitquantisierung bezüglich (diskreter) Impulsbasis.<br /> <br /> &lt;math&gt;W_\textrm{Coul.} = \frac{1}{2} \sum_{\alpha,\alpha\neq\beta} \frac{e^2}{|\mathbf{r_\alpha - r_\beta|}} =<br /> \frac{1}{2V} \sum_{q\neq 0,k_1,\sigma_1,k_2,\sigma_2} \frac{4\pi e^2}{q^2} c^\dagger_{k_1,\sigma_1} c^\dagger_{k_2,\sigma_2} c_{k_2-q,\sigma_2} c_{k_1+q,\sigma_1}<br /> &lt;/math&gt;<br /> ====Supraleitung====<br /> Die Zweite Quantisierung ermöglicht mit der Fock-Darstellung auch die explizite Berücksichtigung von Zuständen, die ''keine''&amp;nbsp; Eigenzustände des Teichenzahloperators &lt;math&gt;\hat N=\sum_{k,\sigma} c_{k,\sigma}^\dagger c_{k,\sigma}&lt;/math&gt; sind. Solche Zustände spielen in der Theorie der [[Supraleitung]] eine große Rolle.<br /> <br /> == Transformation zwischen Einteilchenbasen ==<br /> Erzeugungs- und Vernichtungsoperatoren bezüglich einer gegebenen Einteilchenbasis &lt;math&gt;|i\rangle&lt;/math&gt; lassen sich durch entsprechende Operatoren bezüglich einer anderen Einteilchenbasis &lt;math&gt;|\alpha\rangle&lt;/math&gt; ausdrücken:<br /> <br /> &lt;math&gt;c_i^\dagger = \sum_\alpha \langle \alpha|i \rangle c^\dagger_\alpha&lt;/math&gt;<br /> <br /> &lt;math&gt;c_i = \sum_\alpha \langle i|\alpha \rangle c_\alpha.&lt;/math&gt;<br /> <br /> Durch diese Beziehungen ist es möglich, einen [[Basiswechsel]] im Fockraum durchzuführen und somit gegebene Ausdrücke auf für die gerade anliegende Situation besser geeignete Formen zu transformieren. Auf ähnliche Art werden aus den Erzeugungs-/Vernichtungs-Operatoren für diskrete Einteilchenbasen auch [[Feldoperator]]en bezüglich kontinuierlicher Orts- bzw. Impulsbasen erzeugt, wie sie vor allem in den [[Quantenfeldtheorie]]n verwendet werden.<br /> <br /> == Verallgemeinerung: Relativistische Quantenfeldtheorien ==<br /> Als Verallgemeinerung entstehen, wie in der Fußnote &lt;ref name=&quot;relativistische QFT&quot;&gt;Man kann die ''Zweite Quantisierung'' auch als ''[[Quantenfeldtheorie#Feldquantisierung|Feldquantisierung]]'' eines bestimmten, mit der Schrödingergleichung kompatiblen klassischen Feldes, des sog. „Schrödinger-Feldes“, formulieren. Statt der Schrödingergleichung kann man auch ''relativistische'' klassische, zur Quantentheorie kompatible Gleichungen bzw. deren Feldtheorien behandeln. Die resultierenden Gleichungen wären z.&amp;nbsp;B. in der Struktur analog zu denen der [[Maxwellsche Gleichungen|Maxwellschen Theorie]] und müssen in den Spezialfällen des Schrödingerfeldes oder der sog. [[Quantenelektrodynamik|QED]] oder [[Quantenchromodynamik|QCD]] u.a. die Maxwellsche Feldenergie als Beitrag zur Potentiellen Energie der Elektronen enthalten, in deren kinetischer Energie aber auch die [[Plancksche Konstante]] ''h'' als Feldparameter. Es entstehen so anstelle der nicht-relativistischen [[Vielteilchentheorie]] relativistische [[Quantenfeldtheorie]]n.&lt;/ref&gt; angedeutet, anstelle der nicht-relativistischen [[Vielteilchentheorie]] relativistische [[Quantenfeldtheorie]]n.<br /> <br /> == Literatur ==<br /> * Alexander Altland, Ben Simons: ''Condensed matter field theory'', Cambridge Univ. Press, 2009, ISBN 978-0-521-84508-3<br /> * Eugen Fick: ''Einführung in die Grundlagen der Quantentheorie'', Wiesbaden, 1988, ISBN 3-89104-472-0<br /> * Wolfgang Nolting: ''Grundkurs theoretische Physik'', Band 7: ''Vielteilchenphysik'', Berlin u.a., 2009, ISBN 978-3-642-01605-9<br /> * Franz Schwabl: ''Quantenmechanik für Fortgeschrittene (QM II)'', Berlin u.a., 2008, ISBN 978-3-540-85075-5<br /> <br /> == Einzelnachweise und Fußnoten ==<br /> &lt;references /&gt;<br /> <br /> [[Kategorie:Quantenfeldtheorie]]<br /> [[Kategorie:Statistische Physik]]<br /> [[Kategorie:Festkörperphysik]]<br /> <br /> [[en:Canonical quantization]]<br /> [[es:Segunda cuantización]]<br /> [[fr:Seconde quantification]]<br /> [[it:Seconda quantizzazione]]<br /> [[ja:第二量子化]]<br /> [[ko:정준 양자화]]<br /> [[ru:Вторичное квантование]]<br /> [[uk:Вторинне квантування ферміонів]]<br /> [[zh:正則量子化]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=K%C3%BCrzester_Pfad&diff=109031182 Kürzester Pfad 2012-10-07T19:12:05Z <p>Mathmon: /* Formulierung als lineares Programm */</p> <hr /> <div>Ein '''kürzester Pfad''' ist in der [[Graphentheorie]] ein [[Wege, Pfade, Zyklen und Kreise in Graphen|Pfad]] zwischen zwei unterschiedlichen [[Knoten (Graphentheorie)|Knoten]] &lt;math&gt;s,t \in V&lt;/math&gt;<br /> eines [[Graph (Graphentheorie)|Graphen]], welcher minimale Länge bezüglich einer<br /> [[Kantengewicht|Gewichtsfunktion]] &lt;math&gt;c : E \to \mathbb{R}&lt;/math&gt; hat.<br /> Haben die [[Kante (Graphentheorie)|Kanten]]<br /> im [[Graph (Graphentheorie)|Graphen]] alle das Gewicht 1, ist also &lt;math&gt;c_e \equiv 1 \; \forall e \in E&lt;/math&gt;,<br /> so ist der kürzeste Pfad ein &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;t&lt;/math&gt;-Pfad mit der geringstmöglichen<br /> Anzahl von Kanten zwischen &lt;math&gt;s&lt;/math&gt; und &lt;math&gt;t&lt;/math&gt;.<br /> <br /> In der Literatur&lt;ref&gt;[[Bernhard Korte]], [[Jens Vygen]]: ''Combinatorial Optimization. Theory and Algorithms.'' 4th edition. Springer, Berlin u. a. 2008, ISBN 978-3-540-71844-4 (''Algorithms and Combinatorics'' 21)&lt;/ref&gt; wird das Problem oft als ''Shortest Path Problem'' bezeichnet.<br /> <br /> == Komplexität ==<br /> Im Allgemeinen ist die Bestimmung eines kürzesten Pfades ein [[NP-Schwere|schweres]] Problem: Das Entscheidungsproblem<br /> <br /> „Hat ein Graph einen &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;t&lt;/math&gt;-Pfad der Länge &lt;math&gt;\leq C&lt;/math&gt;?“<br /> <br /> ist [[NP-Vollständigkeit|NP-vollständig]],<br /> dementsprechend kann im Allgemeinen auch ein kürzester Pfad [[P-NP-Problem|vermutlich]] nicht in [[Polynomialzeit]]<br /> gefunden werden.<br /> Hat ein Graph einen [[Hamiltonpfadproblem| Hamiltonpfad]], so ist dies ein kürzester &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;t&lt;/math&gt;-Pfad<br /> bezüglich der Gewichtsfunktion &lt;math&gt;c(e) = -1 \; \forall e \in E&lt;/math&gt;.<br /> Auch hier ist schon die Frage nach der Existenz eines solchen Pfades ein {{nowrap|NP-vollständiges}}<br /> Problem.<br /> <br /> In vielen Spezialfällen ist die Bestimmung kürzester Pfade in Polynomialzeit trotz der Komplexität des Problems<br /> möglich. Die wichtigste Einschränkung betrifft hier die Gewichtsfunktion:<br /> <br /> ; konservative Gewichtsfunktion<br /> : Eine Gewichtsfunktion heißt ''konservativ'' für den Graphen &lt;math&gt;G&lt;/math&gt;, wenn &lt;math&gt;c(C) = \sum_{e \in C} c(e) \geq 0&lt;/math&gt; für alle [[Zyklus (Graphentheorie)|Zyklen]] &lt;math&gt;C&lt;/math&gt; von &lt;math&gt;G&lt;/math&gt;.<br /> <br /> Für konservative Gewichtsfunktionen lassen sich kürzeste Wege in Polynomialzeit bestimmen, hierzu kann zum Beispiel<br /> der [[Bellman-Ford-Algorithmus]] verwendet werden.<br /> <br /> Wenn man weiterhin von der Zielfunktion zusätzlich sogar Nichtnegativität verlangt, also<br /> &lt;math&gt;c(e) \geq 0 \; \forall e \in E&lt;/math&gt; fordert, so lässt sich das Problem mit dem [[A*-Algorithmus]]<br /> oder dem [[Dijkstra-Algorithmus|Algorithmus von Dijkstra]] noch weitaus schneller lösen.<br /> <br /> == Variationen des Problems ==<br /> Abgesehen von der Bestimmung des kürzesten &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;t&lt;/math&gt;-Pfades gibt es noch einige weitere, jedoch<br /> sehr ähnliche Probleme:<br /> <br /> === Single-source shortest path (SSSP) ===<br /> Diese Variante des Problems der kürzesten Pfade befasst sich mit der Problemstellung wie man die kürzesten Wege zwischen einem gegebenen Startknoten und allen übrigen Knoten eines Graphen berechnet.<br /> Für nichtnegative Gewichtsfunktionen lassen sich der Dijkstra-Algorithmus bzw der A*-Algorithmus leicht so anpassen,<br /> dass die kürzesten Wege zu allen Knoten des Graphs zu berechnen.<br /> Für beliebige konservative Gewichtsfunktionen berechnet der Bellman-Ford-Algorithmus andererseits stets auch die<br /> kürzesten Pfade zu allen anderen Knoten.<br /> <br /> === Single-destination shortest path ===<br /> Ziel ist hier die Bestimmung des kürzesten Pfads zwischen einem Endknoten und allen anderen Knoten des Graphen.<br /> Dieses Problem kann durch eine Umkehrung der Kantenrichtungen als SSSP beschrieben werden.<br /> <br /> === All-pairs shortest path (APSP) ===<br /> In dieser Variante des Problems geht es um die Bestimmung der kürzesten Pfade zwischen allen<br /> Knotenpaaren eines Graphen zu berechnen. Natürlich kann man in diesem Fall für jeden Knoten nacheinander<br /> das SSSP lösen, jedoch sind spezialisierte Verfahren, wie etwa der [[Floyd-Warshall-Algorithmus]] oder<br /> der [[Min-Plus-Matrixmultiplikations-Algorithmus]] erheblich schneller<br /> <br /> == Beispiel ==<br /> [[Datei:Prim Algorithm 0.png|200px|thumb|Beispielgraph]]<br /> Im nebenstehend gegebenen Graphen ist ein kürzester Pfad zwischen den Knoten &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;C&lt;/math&gt; der Pfad, welcher in &lt;math&gt;D&lt;/math&gt; startet, und über &lt;math&gt;B&lt;/math&gt; nach &lt;math&gt;C&lt;/math&gt; geht. Die Pfadkosten betragen hierbei &lt;math&gt;9+8=17&lt;/math&gt;.<br /> Will man jedoch einen Pfad von &lt;math&gt;D&lt;/math&gt; nach &lt;math&gt;E&lt;/math&gt; finden, so ist der direkte Weg mit Kosten von &lt;math&gt;15&lt;/math&gt; nicht der kürzestmögliche Pfad, da der Weg von &lt;math&gt;D&lt;/math&gt; über &lt;math&gt;F&lt;/math&gt; nach &lt;math&gt;E&lt;/math&gt; nur Kosten von &lt;math&gt;14=8+6&lt;/math&gt; hat.<br /> <br /> == Formulierung als lineares Programm ==<br /> Zur Bestimmung eines kürzesten Pfades lässt sich außerdem ein<br /> [[Lineare Optimierung|lineares Programm]] heranziehen. Man interpretiert in diesem Fall den Pfad als<br /> [[Flüsse und Schnitte in Netzwerken|Fluss]] mit einem Flusswert von 1<br /> auf den Kanten des Graphen. Die Bestimmung des kürzesten Pfades<br /> ist dann ein Spezialfall des Min-cost-flow-Problems. Die entsprechende Formulierung lautet:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> \min &amp; \sum_{e \in E} c_e x_e \\<br /> \text{so dass } &amp; \forall \; v \in V\colon\; <br /> \sum_{e \in \operatorname{\delta^-}(v)} x_e - \sum_{e \in \operatorname{\delta^+}(v)} x_e<br /> = <br /> \begin{cases}<br /> -1,&amp; \text{falls } v = s \\<br /> 1,&amp; \text{falls } v = t \\<br /> 0,&amp; \text{sonst }<br /> \end{cases} \\<br /> &amp; \forall \; e \in E\colon\; x_e \geq 0 \\<br /> <br /> <br /> <br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Falls ein &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;t&lt;/math&gt;-Pfad im gegebenen Graphen existiert, so hat das Programm eine [[Lineare Optimierung#Lösbarkeit aus theoretischer Sicht|zulässige]] Lösung.<br /> Das Programm ist allerdings unbeschränkt, wenn die Gewichtsfunktion nicht konservativ ist. In diesem Fall kann der Fluss nämlich entlang eines Zykels mit negativen Kosten<br /> beliebig weit erhöht werden. Andernfalls hat das Problem eine Optimallösung &lt;math&gt;x&lt;/math&gt;, welche einem &lt;math&gt;0/1&lt;/math&gt;-Vektor mit &lt;math&gt;|E|&lt;/math&gt; Einträgen entspricht.<br /> Die Menge &lt;math&gt;\{e \in E \,:\, x_e = 1 \}&lt;/math&gt; beschreibt dann einen kürzesten &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;t&lt;/math&gt;-Pfad, der Zielfunktionswert des Programms entspricht<br /> der Länge des Pfades.<br /> <br /> == Knotenpotentiale ==<br /> <br /> Es stellt sich heraus, dass die [[Lineare Optimierung#Dualität|Dualisierung]] des obigen linearen Programms eine anschauliche Interpretation hat. Das duale Programm ist gegeben durch<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> \max &amp; y_t - y_s \\<br /> \text{so dass } &amp; \forall \; e=(u,v) \in E\colon\; y_v - y_u \leq c_e \;\;<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Eine Lösung &lt;math&gt;y&lt;/math&gt; des dualen Programms nennt man ein ''Knotenpotential''. Man sieht leicht, dass für jede Lösung &lt;math&gt;(y_v)_{v \in V}&lt;/math&gt; der Vektor &lt;math&gt;(y_v + \delta)_{v \in V}&lt;/math&gt;<br /> ebenfalls eine Lösung ist, wobei man &lt;math&gt;\delta \in \mathbb{R}&lt;/math&gt; beliebig wählen kann. Man setzt in der Regel den Wert von &lt;math&gt;\delta&lt;/math&gt; so, dass &lt;math&gt;y_s = 0&lt;/math&gt;.<br /> Die Zielfunktion ist dann gegeben durch &lt;math&gt;\max \; y_t&lt;/math&gt;.<br /> <br /> Ist &lt;math&gt;P&lt;/math&gt; ein beliebiger Pfad zwischen &lt;math&gt;s&lt;/math&gt; und einem Knoten &lt;math&gt;w \neq s&lt;/math&gt;, so lässt sich die Länge des Pfades wie folgt abschätzen:<br /> <br /> :&lt;math&gt;<br /> c(P) = \sum_{e \in P} c_e \geq \sum_{e=(u,v) \in P} y_v - y_u = y_w<br /> &lt;/math&gt;<br /> <br /> Das Potential eines jeden Knotens ist also eine untere Schranke für die Länge eines Pfades. Eine Optimallösung des dualen Programms findet man, wenn man das Potential eines Knotens &lt;math&gt;w \neq s&lt;/math&gt;<br /> als die Länge des kürzesten &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;w&lt;/math&gt;-Pfades bezüglich der Zielfunktion &lt;math&gt;c&lt;/math&gt; setzt.<br /> <br /> == Anwendungen ==<br /> {{Siehe auch|Pathfinding}}<br /> <br /> Algorithmen, die einen kürzesten Pfad berechnen, finden häufig Anwendung in der Berechnung von Reiserouten. So kann zum Beispiel die Entfernung zwischen zwei Städten berechnet werden. Dabei sind die Städte die Knoten des Graphen und die Straßen die Kanten.<br /> <br /> == Kürzeste Wege mit Nebenbedingungen ==<br /> Eine Varallgemeinerung des Problems erhält man, wenn man nur &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;t&lt;/math&gt;-Pfade<br /> &lt;math&gt;P&lt;/math&gt; betrachtet, die der zusätzlichen Ungleichung &lt;math&gt;\sum_{e \in P} u_e \leq U&lt;/math&gt; gehorchen. Dabei ist<br /> &lt;math&gt;u : E \to \mathbb{R}_+ &lt;/math&gt; eine weitere Gewichtsfunktion und &lt;math&gt;U&lt;/math&gt; eine reelle Zahl.<br /> <br /> Das resultierende ''Constrained Shortest Path Problem'' ist dann auch für konservative bzw. nichtnegative<br /> Zielfunktionen NP-schwer, siehe &lt;ref&gt;H. C. Joksch (1966)&lt;/ref&gt;.<br /> <br /> == Literatur ==<br /> * {{BibISBN|0262032937}}<br /> * Thomas H. Cormen, [[Charles E. Leiserson]], [[Ronald L. Rivest]], Clifford Stein: ''Algorithmen - Eine Einführung''. 2. Auflage. 2007. ISBN 978-3-486-58262-8<br /> * H. C. Joksch (1966). ''The shortest route problem with constraints''. J. Math. Anal. Appl. 14, Seite 191-197<br /> <br /> == Einzelnachweise ==<br /> &lt;references /&gt;<br /> <br /> {{SORTIERUNG:Kurzester Pfad}}<br /> <br /> [[Kategorie:Graphentheorie]]<br /> [[Kategorie:Reise- und Routenplanung]]<br /> <br /> [[ca:Problema del camí més curt]]<br /> [[en:Shortest path problem]]<br /> [[es:Problema del camino más corto]]<br /> [[fa:مسئله یافتن کوتاهترین مسیر]]<br /> [[fr:Problèmes de cheminement]]<br /> [[it:Shortest path]]<br /> [[ja:最短経路問題]]<br /> [[ko:최단 경로 문제]]<br /> [[lt:Trumpiausio kelio problema]]<br /> [[pl:Problem najkrótszej ścieżki]]<br /> [[pt:Problema do caminho mínimo]]<br /> [[th:ปัญหาวิถีสั้นสุด]]<br /> [[uk:Задача про найкоротший шлях]]<br /> [[ur:کمترین رستہ الخوارزم]]<br /> [[vi:Bài toán đường đi ngắn nhất]]<br /> [[zh:最短路问题]]</div> Mathmon https://de.wikipedia.org/w/index.php?title=K%C3%BCrzester_Pfad&diff=108911281 Kürzester Pfad 2012-10-05T09:21:03Z <p>Mathmon: /* Knotenpotentiale */</p> <hr /> <div>Ein '''kürzester Pfad''' ist in der [[Graphentheorie]] ein [[Wege, Pfade, Zyklen und Kreise in Graphen|Pfad]] zwischen zwei unterschiedlichen [[Knoten (Graphentheorie)|Knoten]] &lt;math&gt;s,t \in V&lt;/math&gt;<br /> eines [[Graph (Graphentheorie)|Graphen]], welcher minimale Länge bezüglich einer<br /> [[Kantengewicht|Gewichtsfunktion]] &lt;math&gt;c : E \to \mathbb{R}&lt;/math&gt; hat.<br /> Haben die [[Kante (Graphentheorie)|Kanten]]<br /> im [[Graph (Graphentheorie)|Graphen]] alle das Gewicht 1, ist also &lt;math&gt;c_e \equiv 1 \; \forall e \in E&lt;/math&gt;,<br /> so ist der kürzeste Pfad ein &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;t&lt;/math&gt;-Pfad mit der geringstmöglichen<br /> Anzahl von Kanten zwischen &lt;math&gt;s&lt;/math&gt; und &lt;math&gt;t&lt;/math&gt;.<br /> <br /> In der Literatur&lt;ref&gt;[[Bernhard Korte]], [[Jens Vygen]]: ''Combinatorial Optimization. Theory and Algorithms.'' 4th edition. Springer, Berlin u. a. 2008, ISBN 978-3-540-71844-4 (''Algorithms and Combinatorics'' 21)&lt;/ref&gt; wird das Problem oft als ''Shortest Path Problem'' bezeichnet.<br /> <br /> == Komplexität ==<br /> Im allgemeinen ist die Bestimmung eines kürzesten Pfades ein [[NP-Schwere|schweres]] Problem: Das Entscheidungsproblem<br /> <br /> „Hat ein Graph einen &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;t&lt;/math&gt;-Pfad der Länge &lt;math&gt;\leq C&lt;/math&gt;?“<br /> <br /> ist [[NP-Vollständigkeit|NP-vollständig]],<br /> dementsprechend kann im allgemeinen auch ein kürzester Pfad [[P-NP-Problem|vermutlich]] nicht in [[Polynomialzeit]]<br /> gefunden werden.<br /> Hat ein Graph einen [[Hamiltonpfadproblem| Hamiltonpfad]], so ist dies ein kürzester &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;t&lt;/math&gt;-Pfad<br /> bezüglich der Gewichtsfunktion &lt;math&gt;c(e) = -1 \; \forall e \in E&lt;/math&gt;.<br /> Auch hier ist schon die Frage nach der Existenz eines solchen Pfades ein {{nowrap|NP-vollständiges}}<br /> Problem.<br /> <br /> In vielen Spezialfällen ist die Bestimmung kürzester Pfade in Polynomialzeit trotz der Komplexität des Problems<br /> möglich. Die wichtigste Einschränkung betrifft hier die Gewichtsfunktion:<br /> <br /> ; konservative Gewichtsfunktion<br /> : Eine Gewichtsfunktion heißt ''konservativ'' für den Graphen &lt;math&gt;G&lt;/math&gt;, wenn &lt;math&gt;c(C) = \sum_{e \in C} c(e) \geq 0&lt;/math&gt; für alle [[Zyklus (Graphentheorie)|Zyklen]] &lt;math&gt;C&lt;/math&gt; von &lt;math&gt;G&lt;/math&gt;.<br /> <br /> Für konservative Gewichtsfunktionen lassen sich kürzeste Wege in Polynomialzeit bestimmen, hierzu kann zum Beispiel<br /> der [[Bellman-Ford-Algorithmus]] verwendet werden.<br /> <br /> Wenn man weiterhin von der Zielfunktion zusätzlich sogar Nichtnegativität verlangt, also<br /> &lt;math&gt;c(e) \geq 0 \; \forall e \in E&lt;/math&gt; fordert, so lässt sich das Problem mit dem [[A*-Algorithmus]]<br /> oder dem [[Dijkstra-Algorithmus|Algorithmus von Dijkstra]] noch weitaus schneller lösen.<br /> <br /> == Variationen des Problems ==<br /> Abgesehen von der Bestimmung des kürzesten &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;t&lt;/math&gt;-Pfades gibt es noch einige weitere, jedoch<br /> sehr ähnliche Probleme:<br /> <br /> === Single-source shortest path (SSSP) ===<br /> Diese Variante des Problems der kürzesten Pfade befasst sich mit der Problemstellung wie man die kürzesten Wege zwischen einem gegebenen Startknoten und allen übrigen Knoten eines Graphen berechnet.<br /> Für nichtnegative Gewichtsfunktionen lassen sich der Dijkstra-Algorithmus bzw der A*-Algorithmus leicht so anpassen,<br /> dass die kürzesten Wege zu allen Knoten des Graphs zu berechnen.<br /> Für beliebige konservative Gewichtsfunktionen berechnet der Bellman-Ford-Algorithmus andererseits stets auch die<br /> kürzesten Pfade zu allen anderen Knoten.<br /> <br /> === Single-destination shortest path ===<br /> Ziel ist hier die Bestimmung des kürzesten Pfads zwischen einem Endknoten und allen anderen Knoten des Graphen.<br /> Dieses Problem kann durch eine Umkehrung der Kantenrichtungen als SSSP beschrieben werden.<br /> <br /> === All-pairs shortest path (APSP) ===<br /> In dieser Variante des Problems geht es um die Bestimmung der kürzesten Pfade zwischen allen<br /> Knotenpaaren eines Graphen zu berechnen. Natürlich kann man in diesem Fall für jeden Knoten nacheinander<br /> das SSSP lösen, jedoch sind spezialisierte Verfahren, wie etwa der [[Floyd-Warshall-Algorithmus]] oder<br /> der [[Min-Plus-Matrixmultiplikations-Algorithmus]] erheblich schneller<br /> <br /> == Beispiel ==<br /> [[Datei:Prim Algorithm 0.png|200px|thumb|Beispielgraph]]<br /> Im nebenstehend gegebenen Graphen ist ein kürzester Pfad zwischen den Knoten &lt;math&gt;D&lt;/math&gt; und &lt;math&gt;C&lt;/math&gt; der Pfad, welcher in &lt;math&gt;D&lt;/math&gt; startet, und über &lt;math&gt;B&lt;/math&gt; nach &lt;math&gt;C&lt;/math&gt; geht. Die Pfadkosten betragen hierbei &lt;math&gt;9+8=17&lt;/math&gt;.<br /> Will man jedoch einen Pfad von &lt;math&gt;D&lt;/math&gt; nach &lt;math&gt;E&lt;/math&gt; finden, so ist der direkte Weg mit Kosten von &lt;math&gt;15&lt;/math&gt; nicht der kürzestmögliche Pfad, da der Weg von &lt;math&gt;D&lt;/math&gt; über &lt;math&gt;F&lt;/math&gt; nach &lt;math&gt;E&lt;/math&gt; nur Kosten von &lt;math&gt;14=8+6&lt;/math&gt; hat.<br /> <br /> == Formulierung als lineares Programm ==<br /> Zur Bestimmung eines kürzesten Pfades lässt sich außerdem ein<br /> [[Lineare Optimierung|lineares Programm]] heranziehen. Man interpretiert in diesem Fall den Pfad als<br /> [[Flüsse und Schnitte in Netzwerken|Fluss]] mit einem Flusswert von 1<br /> auf den Kanten des Graphen. Die Bestimmung des kürzesten Pfades<br /> ist dann ein Spezialfall des Min-cost-flow-Problems. Die entsprechende Formulierung lautet:<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> \min &amp; \sum_{e \in E} c_e x_e \\<br /> \text{so dass } &amp; \forall \; v \in V\colon\; <br /> \sum_{e \in \operatorname{\delta^-}(s)} x_e - \sum_{e \in \operatorname{\delta^+}(s)} x_e<br /> = <br /> \begin{cases}<br /> -1,&amp; \text{falls } v = s \\<br /> 1,&amp; \text{falls } v = t \\<br /> 0,&amp; \text{sonst }<br /> \end{cases} \\<br /> &amp; \forall \; e \in E\colon\; x_e \geq 0 \\<br /> <br /> <br /> <br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Falls ein &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;t&lt;/math&gt;-Pfad im gegebenen Graphen existiert, so hat das Programm eine [[Lineare Optimierung#Lösbarkeit aus theoretischer Sicht|zulässige]] Lösung.<br /> Das Programm ist allerdings unbeschränkt, wenn die Gewichtsfunktion nicht konservativ ist. In diesem Fall kann der Fluss nämlich entlang eines Zykels mit negativen Kosten<br /> beliebig weit erhöht werden. Andernfalls hat das Problem eine Optimallösung &lt;math&gt;x&lt;/math&gt;, welche einem &lt;math&gt;0/1&lt;/math&gt;-Vektor mit &lt;math&gt;|E|&lt;/math&gt; Einträgen entspricht.<br /> Die Menge &lt;math&gt;\{e \in E \,:\, x_e = 1 \}&lt;/math&gt; beschreibt dann einen kürzesten &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;t&lt;/math&gt;-Pfad, der Zielfunktionswert des Programms entspricht<br /> der Länge des Pfades.<br /> <br /> == Knotenpotentiale ==<br /> <br /> Es stellt sich heraus, dass die [[Lineare Optimierung#Dualität|Dualisierung]] des obigen linearen Programms eine anschauliche Interpretation hat. Das duale Programm ist gegeben durch<br /> <br /> :&lt;math&gt;<br /> \begin{align}<br /> \max &amp; y_t - y_s \\<br /> \text{so dass } &amp; \forall \; e=(u,v) \in E\colon\; y_v - y_u \leq c_e \;\;<br /> \end{align}<br /> &lt;/math&gt;<br /> <br /> Eine Lösung &lt;math&gt;y&lt;/math&gt; des dualen Programms nennt man ein ''Knotenpotential''. Man sieht leicht, dass für jede Lösung &lt;math&gt;(y_v)_{v \in V}&lt;/math&gt; der Vektor &lt;math&gt;(y_v + \delta)_{v \in V}&lt;/math&gt;<br /> ebenfalls eine Lösung ist, wobei man &lt;math&gt;\delta \in \mathbb{R}&lt;/math&gt; beliebig wählen kann. Man setzt in der Regel den Wert von &lt;math&gt;\delta&lt;/math&gt; so, dass &lt;math&gt;y_s = 0&lt;/math&gt;.<br /> Die Zielfunktion ist dann gegeben durch &lt;math&gt;\max \; y_t&lt;/math&gt;.<br /> <br /> Ist &lt;math&gt;P&lt;/math&gt; ein beliebiger Pfad zwischen &lt;math&gt;s&lt;/math&gt; und einem Knoten &lt;math&gt;w \neq s&lt;/math&gt;, so lässt sich die Länge des Pfades wie folgt abschätzen:<br /> <br /> :&lt;math&gt;<br /> c(P) = \sum_{e \in P} c_e \geq \sum_{e=(u,v) \in P} y_v - y_u = y_w<br /> &lt;/math&gt;<br /> <br /> Das Potential eines jeden Knotens ist also eine untere Schranke für die Länge eines Pfades. Eine Optimallösung des dualen Programms findet man, wenn man das Potential eines Knotens &lt;math&gt;w \neq s&lt;/math&gt;<br /> als die Länge des kürzesten &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;w&lt;/math&gt;-Pfades bezüglich der Zielfunktion &lt;math&gt;c&lt;/math&gt; setzt.<br /> <br /> == Anwendungen ==<br /> {{Siehe auch|Pathfinding}}<br /> <br /> Algorithmen, die einen kürzesten Pfad berechnen, finden häufig Anwendung in der Berechnung von Reiserouten. So kann zum Beispiel die Entfernung zwischen zwei Städten berechnet werden. Dabei sind die Städte die Knoten des Graphen und die Straßen die Kanten.<br /> <br /> == Kürzeste Wege mit Nebenbedingungen ==<br /> Eine Varallgemeinerung des Problems erhält man, wenn man nur &lt;math&gt;s&lt;/math&gt;-&lt;math&gt;t&lt;/math&gt;-Pfade<br /> &lt;math&gt;P&lt;/math&gt; betrachtet, die der zusätzlichen Ungleichung &lt;math&gt;\sum_{e \in P} u_e \leq U&lt;/math&gt; gehorchen. Dabei ist<br /> &lt;math&gt;u : E \to \mathbb{R}_+ &lt;/math&gt; eine weitere Gewichtsfunktion und &lt;math&gt;U&lt;/math&gt; eine reelle Zahl.<br /> <br /> Das resultierende ''Constrained Shortest Path Problem'' ist dann auch für konservative bzw. nichtnegative<br /> Zielfunktionen NP-schwer, siehe &lt;ref&gt;H. C. Joksch (1966)&lt;/ref&gt;.<br /> <br /> == Literatur ==<br /> * {{BibISBN|0262032937}}<br /> * Thomas H. Cormen, [[Charles E. Leiserson]], [[Ronald L. Rivest]], Clifford Stein: ''Algorithmen - Eine Einführung''. 2. Auflage. 2007. ISBN 978-3-486-58262-8<br /> * H. C. Joksch (1966). ''The shortest route problem with constraints''. J. Math. Anal. Appl. 14, Seite 191-197<br /> <br /> == Einzelnachweise ==<br /> &lt;references /&gt;<br /> <br /> {{SORTIERUNG:Kurzester Pfad}}<br /> <br /> [[Kategorie:Graphentheorie]]<br /> [[Kategorie:Reise- und Routenplanung]]<br /> <br /> [[ca:Problema del camí més curt]]<br /> [[en:Shortest path problem]]<br /> [[es:Problema del camino más corto]]<br /> [[fa:مسئله یافتن کوتاهترین مسیر]]<br /> [[fr:Problèmes de cheminement]]<br /> [[it:Shortest path]]<br /> [[ja:最短経路問題]]<br /> [[ko:최단 경로 문제]]<br /> [[lt:Trumpiausio kelio problema]]<br /> [[pl:Problem najkrótszej ścieżki]]<br /> [[pt:Problema do caminho mínimo]]<br /> [[th:ปัญหาวิถีสั้นสุด]]<br /> [[uk:Задача про найкоротший шлях]]<br /> [[ur:کمترین رستہ الخوارزم]]<br /> [[vi:Bài toán đường đi ngắn nhất]]<br /> [[zh:最短路问题]]</div> Mathmon