aboutsummaryrefslogtreecommitdiffstats
path: root/buch/papers/munkres/teil3.tex
diff options
context:
space:
mode:
Diffstat (limited to 'buch/papers/munkres/teil3.tex')
-rw-r--r--buch/papers/munkres/teil3.tex133
1 files changed, 102 insertions, 31 deletions
diff --git a/buch/papers/munkres/teil3.tex b/buch/papers/munkres/teil3.tex
index b67ad74..0d2c86e 100644
--- a/buch/papers/munkres/teil3.tex
+++ b/buch/papers/munkres/teil3.tex
@@ -3,38 +3,109 @@
%
% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil
%
-\section{Teil 3
+\section{Der Munkres-Algorithmus (Ungarische Methode)
\label{munkres:section:teil3}}
-\rhead{Teil 3}
-Sed ut perspiciatis unde omnis iste natus error sit voluptatem
-accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
-quae ab illo inventore veritatis et quasi architecto beatae vitae
-dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit
-aspernatur aut odit aut fugit, sed quia consequuntur magni dolores
-eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam
-est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
-velit, sed quia non numquam eius modi tempora incidunt ut labore
-et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima
-veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam,
-nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure
-reprehenderit qui in ea voluptate velit esse quam nihil molestiae
-consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
-pariatur?
-
-\subsection{De finibus bonorum et malorum
+\rhead{Der Munkres-Algorithmus (Ungarische Methode)}
+
+Mit der ungarischen Methode können also Optimierungsprobleme gelöst
+werden, die bei gewichteten Zuordnungen in bipartiten Graphen entstehen.
+Mit ihr kann die eindeutige Zuordnung von Objekten aus zwei Gruppen so
+optimiert werden, dass die Gesamtkosten minimiert werden bzw.~der
+Gesamtgewinn maximiert werden kann.
+
+\subsection{Geschichte
+\label{munkres:subsection:malorum}}
+Die Ungarische Methode wurde 1955 von Harold Kuhn entwickelt und veröffentlicht.
+Der Name ``Ungarische Methode'' ergab sich, weil der Algorithmus
+weitestgehend auf den früheren Arbeiten zweier ungarischer Mathematiker
+basierte: Dénes Kőnig und Jenő Egerváry.
+James Munkres überprüfte den Algorithmus im Jahr 1957 und stellte fest,
+dass der Algorithmus (stark) polynomiell ist.
+Seitdem ist der Algorithmus auch als Kuhn-Munkres oder
+Munkres-Zuordnungsalgorithmus bekannt.
+Die Zeitkomplexität des ursprünglichen Algorithmus war $O(n^4)$,
+später wurde zudem festgestellt, dass er modifiziert werden kann,
+um eine $O(n^3)$-Laufzeit zu erreichen.
+
+\subsection{Besondere Leistung der Ungarischen Methode
+\label{munkres:subsection:malorum}}
+Die Ungarische Methode ist ein kombinatorischer Optimierungsalgorithmus, der das Zuordnungsproblem
+in polynomieller Zeit löst.
+Der Begriff polynomielle Laufzeit bedeutet, dass die Laufzeit des Programms
+wie $n^2$, $n^3$, $n^4$, etc.~wächst und vernünftig skaliert. $n$ ist hierbei die "Grösse" des Problems.
+
+\subsection{Unterschiedliche Anzahl von Quellen und Zielen
+\label{munkres:subsection:malorum}}
+Es gibt Fälle, in welchen das Ausgangsproblem keine quadratische Form besitzt. Das ist z.B. dann der Fall, wenn drei Mitarbeiter vier verschiedene Eignungstests absolvieren müssen. In diesem Fall wird in der Ungarischen Methode die Matrix künstlich mittels einer Dummy Position quadratisch ergänzt. Dummy-Positionen werden dann mit der größten vorhandenen Zahl aus der Matrix besetzt. Beispielsweise wird eine $3\times 4$ zu einer $4\times 4$-Matrix.
+
+\subsection{Beispiel eines händischen Verfahrens
+\label{munkres:subsection:malorum}}
+
+Die ungarische Methode kann in einem einfachen händischen Beispiel erläutert werden. Es gibt eine Ausgangsmatrix. Diese Matrix wird in mehreren Schritten immer weiter reduziert. Anschließend erfolgen mehrere Zuordnungen. Hierbei ist zu beachten, dass jede Zeile und jede Spalte immer genau eine eindeutige Zuordnung ergibt. Die optimale Lösung ist erreicht, wenn genau $n$ Zuordnungen gefunden sind. Das Vorgehen wird in den nachfolgenden Schritten 1-16 beschrieben und auch in der Abbildung 21.5 dargestellt.
+
+\begin{enumerate}
+\item Pro Zeile eruiert man die kleinste Zahl. Diese kleinste Zahl wird bei
+allen anderen Ziffern in der jeweiligen Zeile subtrahiert. Mit dieser Subtraktion zieht man die unvermeidbaren Kosten ab.
+
+\item Auch in diesem Schritt werden die unvermeidbaren Kosten abgezogen. Man zieht die kleinste Zahl in jeder Spalte von allen Zahlen in der Spalte ab.
+
+\item Bei den nachfolgenden Schritten bleiben dann nur noch die Kosten übrig, die man hat, wenn man eine andere Zuordnung wählt. Hierbei sollen möglichst viele Nullen markiert werden, welche freistehend sind.
+(Freistehend bedeutet, sowohl in der jeweiligen Zeile und Spalte nur
+eine markierte Null zu haben)
+
+\item Weiter werden die jeweiligen Zeilen eruiert, bei welchen keine markierte Null vorhanden sind. Diese kennzeichnet man.
+
+\item In der vorherigen Zeile die 0 eruieren und die Spalte ebenfalls
+kennzeichnen (*2)
+
+\item Im der selben Spalte die Markierte Null eruieren und die dazugehörige
+Zeile kennzeichnen (*3)
+
+\item Alle Zeilen durchstreichen, welche KEINE Kennzeichnungen (*) haben
+
+\item Alle Spalten durchstreichen, welche EINE Kennzeichnung besitzt! (hier, *2)
+
+\item Kleinste Ziffer auswählen, welche nicht schon durchgestrichen sind.
+(Im Beispiel ist es die Zahl 1. (Egal welche 1)
+
+\item Die eruierte kleinste Ziffer, wird von den nicht durchgestrichenen Ziffern
+subtrahiert. Danach muss die Matrix wieder komplettiert werden. (inkl. Unterstreichen)
+
+\item Jeweilige Zahlen eruieren, welche vorgängig doppelt durchgestrichen wurden.
+
+\item Kleinste eruierte Ziffer von vorhin auf die zwei markierten Ziffern addieren.
+
+\item Es sollen wiederum von neuem möglichst viele Nullen markiert werden,
+welche freistehend sind. In diesem Schritt werden nur die markierten Nullen betrachtet.
+
+\item Aus allen markierten Nullen in eine eins umwandeln.
+
+\item Die restlichen Ziffern, durch eine Null ersetzen.
+
+\item Zu guter letzt soll überall wo eine 1 steht, in der Ausgangsmatrix die
+dazugehörige Ziffer ausgewählt werden. Nach Einsetzen und Eruieren der Zahlen ergeben sich nach Summieren der Zahlen der minimalste Transportweg. Im erwähnten Beispiel sind es total 13 Kilometer.
+\end{enumerate}
+
+\begin{figure}
+\centering
+\includegraphics[width=14cm]{papers/munkres/figures/Ungarische_Methode_Beispiel.png}
+\caption{Händisches Beispiel des Munkres Algorithmus, minimalster Transportweg.}
+\label{munkres:Vr2}
+\end{figure}
+
+\subsection{Zuordnung der Kräne
\label{munkres:subsection:malorum}}
-At vero eos et accusamus et iusto odio dignissimos ducimus qui
-blanditiis praesentium voluptatum deleniti atque corrupti quos
-dolores et quas molestias excepturi sint occaecati cupiditate non
-provident, similique sunt in culpa qui officia deserunt mollitia
-animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis
-est et expedita distinctio. Nam libero tempore, cum soluta nobis
-est eligendi optio cumque nihil impedit quo minus id quod maxime
-placeat facere possimus, omnis voluptas assumenda est, omnis dolor
-repellendus. Temporibus autem quibusdam et aut officiis debitis aut
-rerum necessitatibus saepe eveniet ut et voluptates repudiandae
-sint et molestiae non recusandae. Itaque earum rerum hic tenetur a
-sapiente delectus, ut aut reiciendis voluptatibus maiores alias
-consequatur aut perferendis doloribus asperiores repellat.
+\begin{itemize}
+\item Der Kran von Baustelle A1 soll zur Baustelle B2.
+\item Der Kran von Baustelle A2 soll zur Baustelle B3.
+\item Der Kran von Baustelle A3 soll zur Baustelle B4.
+\item Der Kran von Baustelle A4 soll zur Baustelle B1.
+\end{itemize}
+\begin{figure}
+\centering
+\includegraphics[width=3cm]{papers/munkres/figures/Ungarische_Methode_Beispiel_Zuw.png}
+\caption{Händisches Beispiel des Munkres Algorithmus, Zuweisung der Kräne }
+\label{munkres:Vr2}
+\end{figure} Somit konnte danke der Ungarischen Methode sowohl der minimalste Transportweg als auch die optimalste Zuweisung der Kräne auf die neuen Standorte ermittelt werden. \ No newline at end of file