1
0
mirror of https://github.com/2martens/uni.git synced 2026-05-06 11:26:25 +02:00
This commit is contained in:
tronje
2013-12-03 23:11:19 +01:00
parent 8743f36082
commit 542da545e2

View File

@ -268,16 +268,34 @@ Jim Martens (6420323)}
\subsection{} %a \subsection{} %a
% Senken finden (alle Senken infiltrieren, dadurch werden alle Module eliminiert) % Senken finden (alle Senken infiltrieren, dadurch werden alle Module eliminiert)
% Algorithmus aus Vorlesung benutzen % Algorithmus aus Vorlesung benutzen
Es müssen alle Module (oder Knoten) ohne eingehende Kanten eliminiert (bzw. markiert) werden, da diese andernfalls nie erreicht werden können. Zu allen anderen Knoten muss es gerichtete Pfade von einem dieser Knoten geben. Es müssen alle Module (oder Knoten) ohne eingehende Kanten eliminiert (bzw. markiert) werden, da diese andernfalls nie erreicht werden können. Zu allen anderen Knoten muss es gerichtete Pfade von einem dieser Knoten geben. Ausnahmen können starke Zusammenhangskomponenten bilden. In jeder starken Zusammenhangskomponente wird daher ebenfalls ein Knoten eliminiert.
\newpage
\begin{verbatim} \begin{verbatim}
function eliminiereMCP() { function eliminiereMCP() {
int zaehler = 0
list infiltrierteKnoten list infiltrierteKnoten
// füge alle Knoten ohne Vorgänger hinzu:
for-all v in Knotenmenge: for-all v in Knotenmenge:
if v.eingehendeKanten == 0: if v.eingehendeKanten == 0:
infiltriere(v) infiltriere(v)
infiltrierteKnoten.add(v) infiltrierteKnoten.add(v)
end if end if
end for-all end for-all
// füge einen Knoten aus jeder
// starken Zusammenhangskomponente hinzu:
list starkZusammenhaengend = findeStarkeZusammenhangskomponenten()
for-all elemente in starkZusammenhaengend:
for i = 0; i < elemente.length; i++
if infiltrierteKnoten.contains(elemente[i]):
zaehler++
end if
if zaehler == 0:
infiltriere(elemente[0])
infiltrierteKnoten.add(elemente[0])
end if
end for
end for-all
eliminiere(infiltrierteKnoten) eliminiere(infiltrierteKnoten)
} }
\end{verbatim} \end{verbatim}