Das Lastverteilungsproblem (englisch: Load Balancing Problem) beschäftigt sich mit den theoretischen Aspekten der Lastverteilung. Es wird dazu angenommen, dass jeder Job von jeder Maschine erfüllt werden kann, und dass alle Jobs und Maschinen bereits im Voraus bekannt sind. So kann eine optimale Verteilung der Jobs berechnet werden, wobei die Höchstlaufzeit aller Maschinen möglichst gering bleibt.
Es stehen m Maschinen zur Verfügung. Auf diese Maschinen sollen n Jobs verteilt werden, wobei die Länge eines Jobs j mit bezeichnet wird.
Das Ziel ist eine Verteilung der Jobs auf die Maschinen, so dass die Gesamtlaufzeit möglichst gering wird; es ist also die Laufzeit der am längsten arbeitenden Maschine zu minimieren, denn sie ist für die Gesamtlaufzeit ausschlaggebend.
Das entsprechende Entscheidungsproblem fragt: Gibt es eine Lastverteilung, so dass die Gesamtlaufzeit höchstens T ist?
Formal: , wobei eine Verteilung der Jobs ist.
Um zu zeigen, dass L NP-vollständig ist, sind zwei Punkte zu beweisen:
Der nächste Job wird genau der Maschine zugewiesen, die bis jetzt die geringste Laufzeit hatte.
Es kann leicht ein Beispiel dafür gefunden werden, dass dieser Algorithmus nicht die optimale Lösung liefert – jedoch wird eine 2-Approximation erreicht:
Sei die Maschine, die den zuletzt verteilten Job j erhalten hat. Dann galt für diese Maschine vorher, dass sie die bisher kleinste Laufzeit hatte, das heißt insbesondere, dass ihre Laufzeit kleiner als die durchschnittliche Laufzeit aller Maschinen war.
Diesen Durchschnitt kann man angeben als .
Sei nun bei optimaler Verteilung der Jobs T* die bestmögliche Gesamtlaufzeit. Ohne dass man etwas Genaues über T* weiß, kann man trotzdem die beiden Abschätzungen treffen:
Kombiniert man diese Abschätzungen, so erhält man für die greedy ermittelte Lösung T:
.
Sortiert man die Jobs im Vorfeld und verteilt sie absteigend nach Länge auf die Maschinen, so gilt außerdem für den zuletzt hinzugefügten Job j:
In diesem Fall kann also die Abschätzung verbessern auf:
.