lösungsTyp dac(problemTyp P) {
if (istTrivial(P)) return trivialLösung(P);
else return kombiniere(dac(Teil1(P)), dac(Teil2(P)));
}
n
eine Lösung zu finden, werden alle für das Problem relevanten Teilprobleme der Größe
1, 2, ..., n - 1
gelöst und diese Lösungen in einer Tabelle untergebracht.
Um jeweils eine nächstgrößere Teillösung berechnen zu können,
muss auf die bisher berechneten Tabelleneinträge zugegriffen werden.
n
im Inneren aus optimalen Teillösungen kleinerer Größe zusammengesetzt ist
(Bellmannsches Optimalitätsprinzip).
n = 1, 2, 3, ...
tabellarisch optimale Teillösungen
— und deren zugeordnete Werte —
gefunden werden.
Beim Finden einer bestimmten optimalen Teillösung der Größe
k > 1
hilft hierbei, dass bereits alle optimalen Teillösungen der Größe
< k
bereitstehen.
w,
die die
„Güte”
einer Lösung
(auch einer Teillösung)
misst.
Es soll eine Lösung mit maximalem w-Wert konstruiert werden.
Wir starten mit der leeren Lösung.
Schrittweise wird die bisher konstruierte Teillösung erweitert.
Wenn zur Erweiterung dieser Teillösung
k
Erweiterungsmöglichkeiten zur Verfügung stehen, die auf die vergrößerten Teillösungen
l1, l2, ..., lk
führen, so wird diejenige Teillösung
li
mit
w(li)
maximal ausgewählt.