Interaktives Graphentheorie-Lernen
Interaktives Graphentheorie-Lernen
Guest User
Using app without sign in
Lernmaterialien zur Graphentheorie
Sofortiger Download · Lebenslanger Zugriff
Lieber persönliche Unterstützung?
Einzelsitzungen zu Methode des kritischen Pfades (CPM) für Studium, Vorstellungsgespräch oder ein Optimierungsprojekt.
Rechner für den kritischen Pfad
Identifiziert die längste Folge von abhängigen Aufgaben in einem Projektplan und bestimmt die kürzestmögliche Zeit zur Fertigstellung.
Wählen Sie einen Algorithmus und generieren Sie Schritte, um die Visualisierung zu beginnen
Die Methode des kritischen Pfades (CPM) findet die längste Kette abhängiger Vorgänge in einem Projektnetz, die die minimale Projektdauer bestimmt. Vorgänge auf diesem kritischen Pfad haben keinen Puffer: jede Verzögerung bei ihnen verzögert das ganze Projekt.
Das Projekt wird als gerichteter azyklischer Graph von Vorgängen mit Dauern modelliert. Ein Vorwärtsdurchlauf in topologischer Reihenfolge berechnet den frühesten Start und Abschluss jedes Vorgangs; ein Rückwärtsdurchlauf berechnet die spätesten Zeiten, die das Projekt nicht verzögern. Die Differenz zwischen spätestem und frühestem Start ist der Puffer des Vorgangs, und Vorgänge mit null Puffer bilden den kritischen Pfad. Beide Durchläufe laufen in O(V + E).
CPM plant Bauprojekte, Software-Releases, Rüstwechsel in der Fertigung und Veranstaltungsplanung. Projektmanagement-Werkzeuge wie Primavera und Microsoft Project berechnen kritische Pfade fortlaufend. Es ist auch eine Lehrbuchanwendung längster Pfade in DAGs und der topologischen Sortierung.
Zwei Durchläufe über das Vorgangsnetz in topologischer Ordnung: vorwärts für den frühestmöglichen Zeitpunkt jedes Vorgangs, rückwärts für den spätesten, ohne das Projekt zu verzögern.
CPM(vorgänge, abhängigkeiten):
ordnung = topologischeSortierung(vorgänge)
// Vorwärtsdurchlauf: frühester Start und frühestes Ende
für jeden Vorgang a in ordnung:
FA[a] = max(FE[p] für p Vorgänger von a), sonst 0
FE[a] = FA[a] + dauer[a]
T = max(FE[a] über alle a) // Projektdauer
// Rückwärtsdurchlauf: spätester Start und spätestes Ende
für jeden Vorgang a in umgekehrt(ordnung):
SE[a] = min(SA[s] für s Nachfolger von a), sonst T
SA[a] = SE[a] - dauer[a]
puffer[a] = SA[a] - FA[a]
kritischer Pfad = Vorgänge mit Puffer 0Der kritische Pfad ist der längste Weg durch das Netz, nicht der kürzeste, was daraus ein Maximierungsproblem auf einem DAG macht und kein Kürzeste-Wege-Problem. Da das Netz azyklisch ist, sind beide Durchläufe schlicht dynamische Programmierung in topologischer Ordnung, eine Prioritätswarteschlange wird nicht gebraucht. Puffer null bedeutet, dass der Vorgang keinerlei Spielraum hat: verzögere ihn um einen Tag und das gesamte Projekt verschiebt sich um einen Tag.
Plane ein Projekt aus vier Vorgängen, bei dem zwei Aufgaben parallel laufen können, aber beide fertig sein müssen, bevor die dritte beginnt.
Beispielgraph: Vorgänge mit Dauern A (3 Tage), B (2 Tage), C (4 Tage) und D (2 Tage). Abhängigkeiten: A und B müssen C vorausgehen, und C geht D voraus.
Das Projekt dauert 9 Tage und der kritische Pfad lautet A nach C nach D. B besitzt einen Tag Puffer, kann also einen Tag später beginnen oder einen Tag überziehen, ohne den Endtermin zu berühren. Das ist der praktische Nutzen: es sagt einer Projektleitung genau, wo sie ihre Aufmerksamkeit bündeln muss. B zu verkürzen bringt nichts, während das Verkürzen von A, C oder D das gesamte Projekt verkürzt, jedenfalls bis der kritische Pfad wechselt und stattdessen über B verläuft.
Zeit: O(V + E) · Speicher: O(V)
Eine topologische Sortierung kostet O(V + E), und jeder der beiden Durchläufe besucht jeden Vorgang einmal und jede Abhängigkeitskante einmal, ist also ebenfalls O(V + E). Der Speicher besteht aus vier Zahlen je Vorgang, frühester und spätester Start und frühestes und spätestes Ende, mithin O(V). Das gesamte Verfahren ist linear, weshalb es auf Projektnetze mit Hunderttausenden Vorgängen skaliert. Das Abhängigkeitsnetz muss ein gerichteter azyklischer Graph sein: eine zirkuläre Abhängigkeit besitzt keine topologische Ordnung und entsprechend keinen gültigen Terminplan, die Zyklenerkennung ist also eine echte Voraussetzung und keine Formalität.
CPM setzt bekannte Dauern und unbegrenzte Ressourcen voraus. Lockert man eine der beiden Annahmen, ändert sich das Problem.
| Alternative | Vorzuziehen, wenn | Kosten |
|---|---|---|
| PERT | Die Dauern sind unsicher. Nutzt Dreipunktschätzungen für eine erwartete Dauer und eine Wahrscheinlichkeitsverteilung. | O(V + E) |
| RCPSP | Die Ressourcen sind begrenzt, Vorgänge konkurrieren also, statt frei parallel zu laufen. NP-schwer. | exponentiell |
| Topologische Sortierung | Du brauchst nur eine gültige Ausführungsreihenfolge, keine Zeiten und keinen Puffer. | O(V + E) |
| Längster Weg im DAG | Dieselbe Rechnung in Graphensprache. CPM ist genau das mit Vorgangsdauern als Gewichten. | O(V + E) |
| Crashing-Analyse | Du willst das Projekt verkürzen und brauchst die billigste Menge zu beschleunigender Vorgänge. | lineare Programmierung |
Den ganzen Artikel lesen: Graph Theory in Project Management
Den ganzen Artikel lesen: Operations Research and Graph Theory
Verwandte Algorithmen: PERT (Program Evaluation and Review Technique), RCPSP (Ressourcenbeschränkte Projektplanung), Topologische Sortierung