Der Johnson-Algorithmus ist ein Algorithmus zur Bestimmung der optimalen Reihenfolge mehrerer Aufträge an 2 Maschinen, damit die gesamte Bearbeitungszeit möglichst gering ist.

Idee

  • Als erstes: Auftrag mit der kürzesten Belegung der ersten Maschine
  • Als letztes: Auftrag mit der kürzesten Belegung der letzten Maschine

Algorithmus

Gegeben sind Aufträge mit Bearbeitungszeiten und an den Maschinen, z.B.:

125
231
386
447
595
  1. Teile die Aufträge in 2 Gruppen:
    • Ordne Aufträge mit der Gruppe zu
    • Der Rest (Aufträge mit ) wird Gruppe zugeordnet
  2. Sortiere die Aufträge innerhalb der Gruppen:
    • wird nach aufsteigend sortiert
    • wird nach absteigend sortiert
  3. Verkette beide Gruppen und erhalte die optimale Reihenfolge.

Das Beispiel von oben ergibt nach Aufteilung und Sortierung folgende Reihenfolge:

:

125
447

:

386
595
231

Daraus folgt die optimale Reihenfolge .