5 Entwurfsmethoden für Algorithmen
5 Entwurfsmethoden für Algorithmen
5 Entwurfsmethoden für Algorithmen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Diese Überlegungen führen zu dem in Algorithmus 66 angegebenen Verfahren, welches die<br />
Kosten einer kürzesten Rundreise bestimmt. Hierzu werden die Werte Cost(W,v) zunächst <strong>für</strong><br />
alle einelementigen KnotenmengenW ⊆V \{s}, dann <strong>für</strong> alle zweielementigen Knotenmengen,<br />
dann <strong>für</strong> alle dreielementigen Knotenmengen, usw. berechnet. In der letzten Iteration erhält man<br />
die Werte Cost(V \{s},v) <strong>für</strong> alle Knoten v ∈ V \{s}, aus denen sich der gesuchte Wert mincost<br />
mit der oben genannten Formel ergibt.<br />
Algorithmus 66 Algorithmus <strong>für</strong> das TSP (dynamisches Programmieren)<br />
(* s ist ein fest gewählter Startknoten, in dem die Rundreise beginnt. *)<br />
FOR ALL Knoten v DO<br />
Cost({v},v) := δ(s,v)<br />
OD<br />
FOR ALL ℓ = 2,...,|V| − 1 DO<br />
FOR ALL ℓ-elementige Teilmengen W von V \ {s} DO<br />
FOR ALL v ∈ W DO<br />
Cost(W,v) := min (Cost(W \ {v},w)+δ(w,v)); (* siehe Lemma 5.5.12 *)<br />
w∈W\{v}<br />
OD<br />
OD<br />
OD<br />
mincost := min (Cost(V \ {s},v)+δ(v,s)); (* Kosten einer kürzesten Rundreise *)<br />
v∈V \{s}<br />
Berechnung einer kürzesten Rundreise. Algorithmus 66 wurde so formuliert, dass nur die<br />
Kosten einer kürzesten Rundreise ermittelt werden, nicht aber eine kürzeste Rundreise selbst.<br />
Zur Berechnung einer kürzesten Rundreise kann wie folgt verfahren werden. Für jedes Paar<br />
(W,v) bestehend aus einer Teilmenge W von V \ {s} und einem Knoten v ∈ W bestimmen wir<br />
einen Knoten Last(W,v) = w, <strong>für</strong> den (w,v) die letzte Kante eines kürzesten Pfads<br />
π(W,v) ∈ Paths(W,v)<br />
ist. Ist also Last(W,v) = w, so gibt es eine kürzeste Reise π(W,v) ∈ Paths(W,v) von der Form<br />
π(W,v) = s,...,w,v. Die Berechnung derartiger Knoten Last(W,v) kann wie folgt in Algorithmus<br />
66 eingebaut werden:<br />
• Ist W = {v} einelementig, dann ist Last({v},v) = s.<br />
• Ist W mindestens zweielementig, dann kann man Last(W,v) = w setzen, wobei w ein<br />
Knoten in W \ {v} ein Knoten ist, <strong>für</strong> den Cost(W,v) = Cost(W \ {v},w)+δ(w,v) gilt.<br />
254