Zum Inhalt springen

„Min-Plus-Matrixmultiplikations-Algorithmus“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Algorithmus: + Laufzeit
 
(8 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Der '''Min-Plus-Matrixmultiplikations-Algorithmus''' ist ein [[Algorithmus]] der [[Graphentheorie]], der die [[Kürzester Pfad|kürzesten Pfade]] eines [[Graph (Graphentheorie)|Graphen]] berechnet. Er läuft mit einer speziellen Matrizenoperation und hat zudem den Vorteil, dass bei jedem Berechnungsschritt automatisch alle Informationen über erreichbare Wege innerhalb der bisher angegebenen Anzahl der Berechnungsschritte verfügbar sind. Er ist allerdings sehr rechenintensiv und daher langsam.
Der '''Min-Plus-Matrixmultiplikations-Algorithmus''' ist ein [[Algorithmus]] der [[Graphentheorie]], der die [[Kürzester Pfad|kürzesten Pfade]] eines [[Graph (Graphentheorie)|Graphen]] berechnet. Er läuft mit einer speziellen [[Matrizenmultiplikation]] und hat zudem den Vorteil, dass bei jedem Berechnungsschritt automatisch alle Informationen über erreichbare Wege innerhalb der bisher angegebenen Anzahl der Berechnungsschritte verfügbar sind. Er ist allerdings sehr rechenintensiv und daher langsam.


== Definitionen ==
== Definitionen ==
Zeile 23: Zeile 23:


Statt <math>K \oplus K</math> schreiben wir kurz <math>K^{[2]}</math>.
Statt <math>K \oplus K</math> schreiben wir kurz <math>K^{[2]}</math>.
:<math>K^{[n+1]}=K^{[n]} \oplus K</math>
:<math>K^{[i+1]}=K^{[i]} \oplus K</math>


== Zusammenhang mit Kürzesten Pfaden ==
== Zusammenhang mit Kürzesten Pfaden ==
Für einen gerichteten Graph <math>G = (V,E)</math> mit positiven Kantengewichten <math>c_{i,j}</math> (oder mit [[Kürzester Pfad#Komplexität|konservativer Gewichtsfunktion]]) gilt:
Für einen gerichteten Graph <math>G = (V,E)</math> mit positiven Kantengewichten <math>c_{i,j}</math> (oder mit [[Kürzester Pfad#Komplexität|konservativer Gewichtsfunktion]]) gilt:
* Die Matrix <math>K^{[p]} =(k^{[p]}_{i,j})</math> gibt die Länge der kürzesten Pfade mit maximal <math>p</math> Kanten an. Der Eintrag <math>k^{[p]}_{i,j}</math> gibt dabei die Länges des kürzesten Pfad (mit maximal <math>p</math> Kanten) von Knoten <math>i</math> zu Knoten <math>j</math> an.
* Die Matrix <math>K^{[p]} =(k^{[p]}_{i,j})</math> gibt die Länge der kürzesten Pfade mit maximal <math>p</math> Kanten an. Der Eintrag <math>k^{[p]}_{i,j}</math> gibt dabei die Länges des kürzesten Pfad (mit maximal <math>p</math> Kanten) von Knoten <math>i</math> zu Knoten <math>j</math> an.
* Wenn <math>n</math> die Anzahl der Knoten ist dann gibt <math>K^{[n-1]} =(k^{[n-1]}_{i,j})</math> die Länge der kürzesten Pfade an. Der Eintrag <math>k^{[n-1]}_{i,j}</math> gibt dabei die Länges des kürzesten Pfad von Knoten <math>i</math> zu Knoten <math>j</math> an.
* Wenn <math>n</math> die Anzahl der Knoten ist dann gilt <math>K^{[p]} = D</math> für alle <math>p\geq n-1</math>.
* Wenn <math>n</math> die Anzahl der Knoten ist dann gilt <math>K^{[n-1]} = K^{[m]}</math> für alle <math>m\geq n</math>.
* Wenn <math>K^{[p+1]} = K^{[p]}</math> dann auch <math>K^{[p]} = D</math>.
* Wenn <math>K^{[p+1]} = K^{[p]}</math> dann auch <math>K^{[p]} = K^{[n-1]}</math>.


== Algorithmus ==
== Algorithmus ==
Zeile 42: Zeile 41:
Im Folgenden verwenden wir die [[Landau-Notation]], um das asymptotische Verhalten der Laufzeit anzugeben.
Im Folgenden verwenden wir die [[Landau-Notation]], um das asymptotische Verhalten der Laufzeit anzugeben.
Im ''worst case'' benötigt Variante 1 <math>\Theta\left(n\right)</math> Matrixmultiplikationen während Variante 2 nur <math>\Theta\left( \log n\right)</math> Matrixmultiplikationen benötigt.
Im ''worst case'' benötigt Variante 1 <math>\Theta\left(n\right)</math> Matrixmultiplikationen während Variante 2 nur <math>\Theta\left( \log n\right)</math> Matrixmultiplikationen benötigt.
Die Laufzeit mit der naiven Implementiertung der Min-Plus-Matrixmultiplikation ist dann in <math>\Theta\left( n^4 \right)</math> für Variante 1 und in <math>\Theta\left( n^3 \cdot \log n \right)</math> für Variante 2.
Die Laufzeit mit der naiven Implementierung der Min-Plus-Matrixmultiplikation ist dann in <math>\Theta\left( n^4 \right)</math> für Variante 1 und in <math>\Theta\left( n^3 \cdot \log n \right)</math> für Variante 2.
Damit hat der Algorithmus eine schlechtere Laufzeit als der vergleichabre [[Algorithmus von Floyd und Warshall]] dessen Laufzeit in <math> \mathcal{O}(n^3) </math> ist.
Damit hat der Algorithmus eine schlechtere Laufzeit als der vergleichbare [[Algorithmus von Floyd und Warshall]] dessen Laufzeit in <math> \mathcal{O}(n^3) </math> ist.


Die Laufzeit kann jedoch durch kompliziertere Implementiertungen der Min-Plus-Matrixmultiplikation verbessert werden.
Die Laufzeit kann jedoch durch kompliziertere Implementierungen der Min-Plus-Matrixmultiplikation verbessert werden.


== Siehe auch ==
== Siehe auch ==
Zeile 51: Zeile 50:


== Quellen ==
== Quellen ==
* Thomas H. Cormen, [[Charles Leiserson]], [[Ronald L. Rivest]], Clifford Stein: ''Introduction to Algorithms.'' 2. Auflage. MIT Press, 2001, ISBN 0-262-53196-8, S. 622−627
* Thomas H. Cormen, [[Charles Leiserson]], [[Ronald L. Rivest]], Clifford Stein: ''Introduction to Algorithms.'' 2. Auflage. MIT Press, 2001, ISBN 0-262-53196-8, S. 622–627


[[Kategorie:Algorithmus (Graphentheorie)]]
[[Kategorie:Algorithmus (Graphentheorie)]]

Aktuelle Version vom 20. Januar 2017, 14:02 Uhr

Der Min-Plus-Matrixmultiplikations-Algorithmus ist ein Algorithmus der Graphentheorie, der die kürzesten Pfade eines Graphen berechnet. Er läuft mit einer speziellen Matrizenmultiplikation und hat zudem den Vorteil, dass bei jedem Berechnungsschritt automatisch alle Informationen über erreichbare Wege innerhalb der bisher angegebenen Anzahl der Berechnungsschritte verfügbar sind. Er ist allerdings sehr rechenintensiv und daher langsam.

Gegeben seien ein gerichteter Graph und eine Matrix mit Gewichten , wobei die Indizes und über die Menge laufen.

Bewertungsmatrix

[Bearbeiten | Quelltext bearbeiten]

Die Kostenmatrix oder Bewertungsmatrix ist dann wie folgt definiert:

Entfernungsmatrix

[Bearbeiten | Quelltext bearbeiten]

Die Entfernungsmatrix ist wie folgt definiert

Matrizenoperation ⊕

[Bearbeiten | Quelltext bearbeiten]

seien zwei -Matrizen. Die Matrix berechnet sich wie folgt:

wobei gelten soll .

ist also die Multiplikation von Matrizen über einem Halbring mit .

Statt schreiben wir kurz .

Zusammenhang mit Kürzesten Pfaden

[Bearbeiten | Quelltext bearbeiten]

Für einen gerichteten Graph mit positiven Kantengewichten (oder mit konservativer Gewichtsfunktion) gilt:

  • Die Matrix gibt die Länge der kürzesten Pfade mit maximal Kanten an. Der Eintrag gibt dabei die Länges des kürzesten Pfad (mit maximal Kanten) von Knoten zu Knoten an.
  • Wenn die Anzahl der Knoten ist dann gilt für alle .
  • Wenn dann auch .

Der Min-Plus-Matrixmultiplikations-Algorithmus berechnet nun ausgehend von der Kostenmatrix des Graph sodass .

Variante 1: Berechnet bis . Dabei wird in jedem Schritt das Ergebnis des letzten Schrittes mit der Matrix multipliziert.

Variante 2: Berechnet bis . Dabei wird in jedem Schritt das Ergebnis des letzten Schrittes quadriert.

Im Folgenden verwenden wir die Landau-Notation, um das asymptotische Verhalten der Laufzeit anzugeben. Im worst case benötigt Variante 1 Matrixmultiplikationen während Variante 2 nur Matrixmultiplikationen benötigt. Die Laufzeit mit der naiven Implementierung der Min-Plus-Matrixmultiplikation ist dann in für Variante 1 und in für Variante 2. Damit hat der Algorithmus eine schlechtere Laufzeit als der vergleichbare Algorithmus von Floyd und Warshall dessen Laufzeit in ist.

Die Laufzeit kann jedoch durch kompliziertere Implementierungen der Min-Plus-Matrixmultiplikation verbessert werden.