03.11.2013 Aufrufe

SMALLTALK K1ex127-.45ex51275ahler/Bothner

SMALLTALK K1ex127-.45ex51275ahler/Bothner

SMALLTALK K1ex127-.45ex51275ahler/Bothner

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

15.1 Prüfung von Direktverbindungen 323<br />

Aus dem aktuellen Minimal-Sammler ist abzulesen, daß “722” die Gesamtentfernung<br />

vom Abfahrtsort “Ful” zum Ankunftsort “Ber” ist. Aus dem Minimal-Sammler<br />

können wir ferner erkennen, daß die Station “Ham” die Vorgänger-Station von “Ber”<br />

ist. Mit dieser Station können wir dann anschließend – durch “Zurückhangeln”<br />

innerhalb des Geprüft-Sammlers – die Zwischenstationen bestimmen, die auf der<br />

ermittelten IC-Verbindung zum Abfahrtsort “Ful” hin vorliegen. Dabei zeigt sich,<br />

daß die Vorgänger-Station von “Ham” identisch mit dem Abfahrtsort “Ful” ist.<br />

Somit ist “Ham” die einzige Zwischenstation auf der kürzesten IC-Verbindung von<br />

“Ful” nach “Ber”.<br />

Lösung von PROB-12<br />

Das oben angegebene Vorgehen bei der Bestwegsuche läßt sich durch die folgenden<br />

Struktogramme beschreiben:<br />

verbindungBest:<br />

Richte den Geprüft−Sammler als leeren Sammler und den Erreicht−Sammler mit "(#(abfahrtsort 0 abfahrtsort))" ein<br />

Richte den Knoten−Sammler ein und trage sämtliche Stationen ein<br />

true<br />

ver:bindung:best:rek:<br />

ver:bindung:best:rek:<br />

"keine<br />

IC−<br />

Verb"<br />

Erreicht−Sammler ist leer?<br />

Bestimme aus dem Erreicht−Sammler den Minimal−Sammler<br />

true<br />

Ermittle die Stationen<br />

durch Ausführen von:<br />

erstellen:pfadDic:<br />

erstellenPfadSammler:<br />

Zeige die Gesamtent−<br />

fernung, den Text<br />

"IC−Verb existiert"<br />

und die Stationen an<br />

Ist der minimale Knoten gleich<br />

dem Ankunftsort?<br />

true<br />

Hat der minimale Knoten keine Nachfolger oder<br />

ist er nicht im Knoten−Sammler<br />

enthalten?<br />

Streiche den alten Minimal−<br />

Sammler aus dem Erreicht−<br />

Sammler und trage ihn in<br />

den Geprüft−Sammler ein<br />

Entferne den minimalen<br />

Knoten aus dem Knoten−<br />

Sammler, falls er noch im<br />

Knoten−Sammler enthalten<br />

ist<br />

Trage den alten Minimal−Sammler in den Geprüft−<br />

Sammler ein und füge dem Erreicht−Sammler die<br />

Gesamtheit der potentiellen Minimal−Sammler an.<br />

Lösche den Minimal−Sammler<br />

false<br />

false<br />

false<br />

Baue aus den Nachfolgern potentielle Minimal−Sammler<br />

auf, indem als Vorgänger der minimale Knoten und als<br />

Entfernung die Summe der Entfernungen vom Abfahrts−<br />

ort zum minimalen Knoten und der Länge der Direktver−<br />

bindung vom minimalen Knoten zum jeweiligen<br />

Nachfolger eingetragen wird, durch Ausführen von:<br />

aufbauenPotMinimalSammler:<br />

Lösche aus dem Erreicht−Sammler alle Unter−Sammler<br />

deren 1. Sammler−Objekt eine Station ist, die bereits im<br />

Geprüft−Sammler enthalten ist, durch Ausführen von:<br />

abgleichenErreicht:geprueft:<br />

Entferne den minimalen Knoten aus dem Knoten−<br />

Sammler, falls er noch im Knoten−Sammler enthalten ist<br />

ver: geSammler bindung: erSammler best: knSammler rek: ankunft<br />

Abbildung 15.13: Struktogramme für die Bestwegsuche<br />

Auf dieser Basis vereinbaren wir Methoden innerhalb der Klasse “Suchverfahren”.<br />

Für die Methode “verbindungBest:” definieren wir:

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!