Wie in der vorherigen Antwort gezeigt, kann dieses Problem als Planungsproblem mit Release- und Fälligkeitsterminen modelliert werden. Schrages Heuristik funktioniert jedoch nur für den Fall (alle Verarbeitungszeiten sind ) oder wenn Release- und Fälligkeitstermine übereinstimmen (dh es gibt eine Reihenfolge, in der und ).pj=11r1≤⋯≤rnd1≤⋯≤dn
Für den Fall Polynomalgorithmen von Simons (1978) , Carlier (1981) und Garey et al. (1981) , laufend in der Zeit , bzw. .pj=pO(n2logn)O(n2logn)O(nlogn)
Der Algorithmus von Garey et al. Plant Zeiteinheitenaufgaben, ermöglicht jedoch eine willkürliche Freigabe und Fälligkeitstermine. Das obige Problem kann auf diese Einstellung reduziert werden, indem alle Daten und Verarbeitungszeiten durch . Die Hauptidee des Algorithmus besteht darin, eine Reihe verbotener Regionen zu finden, in denen keine Aufgabe gestartet werden darf. Sie zeigen, dass Schrages Heuristik unter Berücksichtigung verbotener Regionen einen realisierbaren Zeitplan mit minimaler Makespan findet. Bei der Konstruktion der verbotenen Regionen kann ihr Algorithmus auch Unmöglichkeit erkennen.p
Um zu sehen, wie der Algorithmus funktioniert, schauen Sie sich zunächst ein einfacheres Problem an: Planen Sie Zeiteinheitenaufgaben zwischen einem Veröffentlichungsdatum und einer Frist verbotenen Regionen , wobei jede Region ist ein offenes Intervall. (Beachten Sie, dass wir uns hier nicht mit der Veröffentlichung und den Fälligkeitsterminen einzelner Aufgaben befassen.)nrdF=⋃i(ai,bi)(ai,bi)
Dieses Problem kann durch Backscheduling gelöst werden : Definieren Sie eine Sentinel-Startzeit , und setzen Sie für die Startzeit auf die späteste Zeit spätestens das ist nicht verboten.sn+1=di=n,n−1,…,1sisi+1−1
Schreiben Sie für eine Anwendung von Backscheduling für die obigen Eingaben und definieren Sie den Rückgabewert als , das spätestmögliche Startdatum für die Planung der Aufgaben. Wenn nun gibt es keinen realisierbaren Zeitplan für die Aufgaben. WennB(r,d,n,F)s1nB(r,d,n,F)<rnr≤B(r,d,n,F)<r+1 Keine andere Aufgabe kann beginnen (B(r,d,n,F)−1,r) da sonst gibt es wieder keinen realisierbaren zeitplan für die n Aufgaben und damit (B(r,d,n,F)−1,r) kann als verbotene Region deklariert werden.
Es stellt sich heraus, dass diese Logik ausreicht, um alle verbotenen Regionen zu finden, die für Schrages heuristische Arbeit erforderlich sind. Angenommen, die Aufgaben sind so angeordnet, dassr1≤r2≤⋯≤rn und schreibe n(r,d) für die Anzahl der Aufgaben, die im geschlossenen Intervall freigegeben und fällig sind [r,d].
- einstellen F=∅
- für Aufgaben i=n,n−1,…,1::
- c=min{B(ri,dj,n(ri,dj),F)∣∀j:dj≥di}
- wenn : "kein realisierbarer Zeitplan" zurückgebenc<ri
- sonst wenn : setzeri≤c<ri+1F=F∪{(c−1,ri)}
Eine einfache Implementierung wie oben würde Zeit . Garey et al. zeigen (neben Korrektheit), die die Zeiten von Backscheduling erhalten durch Aktualisierung, Füge- verbotene Bereiche überlappen, und macht „verboten“ Abfragen Zeit gebracht werden kann , und durch die Verwendung noch bessere Datenstrukturen zu .O(n4)O(1)O(n2)O(nlogn)