| |
| |
wir helfen Joe
|
Wir kommen jetzt zum Abstandsproblem. Dazu betrachten wir die Aufgabe
Finde den Abstand aller Knoten von einem gegebenen Knoten v und die zugehörige Wege.
Joe weiß dann nicht nur, wieviele Grenzen er bis nach PA überqueren muss,
sondern auch bis nach NY und nach TX und nach FA und ... und ... und ... .
|
| |
|
Und das geht einfach mit Breitensuche!
|
| |
 Breitensuche: Schnappschüsse |
|
| |
|
Wir ergänzen also die Breitensuche so, dass der Abstand d(w) zwischen jedem Knoten w und v ausgerechnet wird. Außerdem merken wir uns jeweils den
Vorgänger vorg(w) im zugehörigen Kantenzug. Auf diese Weise werden die Kantenzüge mit konstruiert. Es ergibt sich der
Algorithmus von Moore (1959).
|
| |
Abstände |
Algorithmus von Moore:
Eingabe: Graph G, Knoten v dieses Graphen
Ausgabe: Abstand d(w) aller Knoten w von v und Vorgängerknoten vorg(w) im zugehörigen
Kantenzug. Knoten mit d(v) =
sind nicht mit v verbindbar
und haben keinen Vorgänger.
für alle Knoten w
setze d(w) = , vorg(w) = { }
füge v in eine (zunächst leere) Queue D ein
setze d(v) = 0
solange D nicht leer ist
entnehme einen Knoten w aus D
für alle Kanten {w,u}
falls d(u) =
setze d(u) = d(w)+1, vorg(u) = w
füge u in D ein
|
| |
 |
|
| |
 Moore |
Hier kannst du den Algorithmus von Moore ausführen. Es gibt diesmal zwei interaktive Modi.
- Im ersten Modus sollst du nur jeweils den richtigen Knoten auswählen.
- Im zweiten Modus sollst du auch noch die aktuellen Entfernungen berechnen und
eintragen.
Unsere Empfehlung: Modus 'interaktiv 2'.
|
| |
 im eigenen Interesse:
gut nachdenken! |
|
| |
Beweis? |
Wir haben den Algorithmus von Moore anschaulich eingeführt und motiviert. Eine mathematisch
strenge Begründung für seine Richtigkeit erfordert wieder einen
Korrektheitsbeweis.
|
| |