Graphenskript

Page 25

9. Februar 2006

Hougardy: Graphen und Algorithmen 1, WS2005/2006

21

Beweis. Da der Algorithmus Abst¨ande gegen¨uber BFS lediglich konstant viel zus¨atzlichen Aufwand pro Schritt ben¨otigt, hat er ebenfalls lineare Laufzeit. Es bleibt zu zeigen, dass der Wert y.Abstand bei Beendigung des Algorithmus tats¨achlich f¨ur jeden Knoten y ∈ V (G) den Abstand zum Knoten x enth¨alt. Dazu zeigen wir zun¨achst, dass b.Abstand ≥ a.Abstand gilt, falls b nach a in die Warteschlange Q aufgenommen wurde und dass der erste und letzte Knoten in Q sich zu jedem Zeitpunkt um h¨ochstens 1 in ihrem Abstandswert unterscheiden. Dies gilt sicherlich zu Beginn des Algorithmus und auch dann, wenn der erste Knoten aus Q entfernt wird. Wird ein Knoten an Q angef¨ugt, so ist sein Abstandswert um genau 1 gr¨oßer als der des soeben entfernten Knotens, woraus die Behauptung folgt. Wir zeigen nun durch Induktion u¨ ber dist(x, y), dass y.Abstand= dist(x, y) gilt. Falls dist(x, y) = 0 ist, so muss x = y gelten und somit dist(x, x) = x.Abstand= 0. Gelte nun die Aussage f¨ur alle Knoten, deren Abstand zu x kleiner ist als der von y. Betrachte einen k¨urzesten x, y-Pfad. F¨ur den Nachbarn z von y auf diesem Pfad gilt nach Annahme dist(x, z) = z.Abstand und dist(x, z) = dist(x, y)−1. Da bei Zuweisung des Wertes .Abstand f¨ur einen Knoten y auch ein x-y-Weg der entsprechenden L¨ange existiern muss, gilt y.Abstand ≥ dist(x, y) > z.Abstand. Somit wird nach oben gezeigtem der Knoten z vor dem Knoten y in Q eingef¨ugt und somit auch vor y aus Q entfernt. Falls y zu diesem Zeitpunkt bereits in Q ist, so muss y.Abstand ≤ z.Abstand+1 gelten. Ansonsten wird y als Nachbar von z mit dem Wert y.Abstand= z.Abstand+1 in Q aufgenommen. Es gilt also y.Abstand≤ z.Abstand+1 = dist(x, z) + 1 = dist(x, y). t u

Die beiden Algorithmen DFS und BFS unterscheiden sich lediglich in der Reihenfolge, in der sie die Knoten und Kanten durchlaufen. F¨ur viele Anwendungen ist diese Reihenfolge irrelevant. F¨ur einige Anwendungen jedoch sehr wichtig. Wie z.B. bei der Berechnung von Abst¨anden. Hat man jedoch die freie Wahl, ob man Tiefensuche oder Breitensuche verwenden kann, so ist im Allgemeinen Tiefensuche der Vorzug zu geben. F¨ur den Algorithmus Breitensuche ben¨otigt man eine Datenstruktur f¨ur Queues, die normalerweise ineffizienter ist, als der vom Compiler bereitgestellte Stack-Mechanismus der f¨ur die rekursiven Aufrufe von DFS benutzt wird.


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.