% % teil2.tex -- Beispiel-File für teil2 % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % \section{Das Zuordnungsproblem \label{munkres:section:teil2}} \rhead{Das Zuordnungsproblem} Das (lineare) Zuordnungsproblem ist ein diskretes Optimierungsproblem aus der Graphentheorie. Es handelt sich um einen Spezialfall eines maximalen Matchings minimalen Gewichtes in einem bipartiten, gewichteten Graphen Vereinfacht gesagt sind Zuordnungsprobleme spezielle Transportprobleme. Der Unterschied zu klassischen Transportproblemen liegen darin, dass hier nicht Mengen möglichst kostenminimal von einem zum anderen Ort transportiert werden sollen, sondern es geht um die kostenminimale Zuordnung von z.~B.~Personen, oder Bau-Materialien auf bestimmte Orte, Stellen oder Aufgaben. Dabei sind alle Angebots- und Bedarfsmenge gleich 1 \begin{equation} a_{i}=b_{j}=1 \end{equation} \subsection{Zuordnungsproblem in Netzwerkdarstellung \label{munkres:subsection:bonorum}} \begin{figure} \centering \includegraphics[width=5cm]{papers/munkres/figures/Netzwerkdarstellung} \caption{Typische Netzwerkdarstellung eines Zuordnungsproblems.} \label{munkres:Vr2} \end{figure} \subsection{Matrix Formulierung \label{munkres:subsection:bonorum}} In der Matrixformulierung ist eine nicht-negative $n\times n$-Matrix gegeben, wobei das Element in der $i$-ten Zeile und $j$-ten Spalte die Kosten für die Zuweisung des $j$-ten Jobs an den $i$-ten Arbeiter darstellt. Wir müssen eine Zuordnung der Jobs zu den Arbeitern finden, so dass jeder Job einem Arbeiter zugewiesen wird und jeder Arbeiter einen Job zugewiesen bekommt, so dass die Gesamtkosten der Zuordnung minimal sind. Dies kann als Permutation der Zeilen und Spalten einer Kostenmatrix $C$ ausgedrückt werden, um die Spur einer Matrix zu minimieren: \begin{equation} \min(L,R)Tr (LCR) \end{equation} wobei $L$ und $R$ Permutationsmatrizen sind. Wenn das Ziel ist, die Zuordnung zu finden, die die maximalen Kosten ergibt, kann das Problem durch Negieren der Kostenmatrix $C$ gelöst werden. \subsection{Suche der optimalen Lösung \label{munkres:subsection:bonorum}} Ist eine maximale Zuordnung (maximales Matching) gefunden, so steht in jeder Zeile und jeder Spalte der Matrix genau ein Element, das zur optimalen Lösung gehört, eine solche Gruppe von Positionen wird auch als Transversale der Matrix bezeichnet. Deshalb kann die Problemstellung auch anders formuliert werden: Man ordne die Zeilen- oder die Spaltenvektoren so um, dass die Summe der Elemente in der Hauptdiagonale maximal wird. Hieraus wird sofort ersichtlich, dass es in einer $n\times n$-Matrix genau so viele Möglichkeiten gibt, die Zeilen- bzw.~Spaltenvektoren zu ordnen, wie es Permutationen von $n$ Elementen gibt, also $n!$. Außer bei kleinen Matrizen ist es nahezu aussichtslos, die optimale Lösung durch Berechnung aller Möglichkeiten zu finden. Schon bei einer $10\times 10$-Matrix gibt es nahezu 3,63 Millionen (3.628.800) zu berücksichtigender Permutationen. \subsection{Formulierung Bipartiter Graph \label{munkres:subsection:bonorum}} Der Algorithmus ist einfacher zu beschreiben, wenn wir das Problem anhand eines bipartiten Graphen formulieren. Wir haben einen vollständigen zweistufigen Graphen $G=(S,T;E)$ mit $n$ Arbeiter-Eckpunkten ($S$) und $n$ Job-Scheitelpunkte ($T$), und jede Kante hat einen nichtnegativen Preis $c(i,j)$. Wir wollen ein perfektes Matching mit minimalen Gesamtkosten finden. \begin{figure} \centering \includegraphics[width=5cm]{papers/munkres/figures/bipartiter_graph} \caption{$K_{3,3}$ vollständig bipartiter Graph mit 3 Knoten pro Teilmenge.} \label{munkres:Vr2} \end{figure}