Routing Algorithmen Begriffe, Definitionen • Routing (aus der Informatik) • Wegewahl oder Verkehrslenkung bezeichnet in der Telekommunikation das Festlegen von Wegen für Nachrichtenströme bei der Nachrichtenübermittlung über p vermaschte Nachrichtennetze. Insbesondere in paketvermittelten Datennetzen ist hierbei strenggenommen zwischen den beiden verschiedenen Prozessen Routing und Forwarding zu unterscheiden. • Das D R Routing ti bestimmt b ti t den d gesamten t W Weg eines i Nachrichtenstroms durch das Netzwerk; das Forwarding beschreibt hingegen den Entscheidungsprozess eines einzelnen Netzknotens, über welchen seiner Nachbarn er eine vorliegende Nachricht weiterleiten soll. • Häufig werden jedoch Routing und Forwarding unter dem Begriff „„Routing“ g miteinander vermengt; g ; in diesem Fall bezeichnet Routing ganz allgemein die Übermittlung von Nachrichten über vermaschte Nachrichtennetze. Routing Algorithmen Begriffe, Definitionen • Graph • Ein Graph p ist in der Graphentheorie p ein Gebilde aus Knoten ((auch Ecken oder Punkte), die durch Kanten verbunden sein können. • Ein Graph G ist ein geordnetes Paar zweier Mengen: G = (V,E) • Dabei bezeichnet V die Menge der im Graph enthaltenen Knoten und E die Menge der Kanten des Graphen. Die Bezeichnungen der Mengen entstammen dem Englischen: V für vertex (engl. für „Knoten“) und E für edge (engl. für „Kante“). E V • Gerichteter Graph • Ein Graph G = (V,E) heißt gerichtet, wenn zu jedem e є E das durch eine definierte Abbildung Ψ zugeordnete Paar (v,v') - geordnet ist (v,v' є V). Anschaulich bedeutet ein gerichteter Graph, dass sich die Kante von einem Knoten zu einem Knoten durch einen Pfeil darstellen lässt. (Quelle: www.wikipedia.de) Routing Algorithmen Prinzip von Routing Algorithmen im GIS Bereich • Suche nach einer optimalen Verbindung von einem Start- zu einem S i Zielpunkt Zi l k unter einer i bestimmten b i Kostenfunktion /-modell • • • • Kürzester Weg Schnellste Verbindung Behindertengerechte g Route Andere Ziel- / Kostenfunktionen in einem Graphen bestehend aus Knoten und Kanten, wobei die Kanten mit einem Gewicht (z.B. Strecke, Zeit …) versehen sind Routing Algorithmen Routing Verfahren (Auswahl) • Dijkstra Algorithmus • Benannt nach seinem Erfinder Edsger W. W Dijkstra • Standardalgorithmus für Routing • A* Algorithmus Al ith • Informative Suche, der Algorithmus greift auf eine Heuristik zurück • Zielgerichtete Zi l i ht t Suche, S h mit it Punkten, P kt die di am wahrscheinlichsten h h i li h t zum Ziel führen • Findet einen kürzesten Weg, nicht den kürzesten Weg • Floyd Algorithmus • Berechnung der kürzesten Wege zwischen allen Paaren von Punkten • Geg.: Gerichteter Graph G, dessen Kanten alle mit Kosten (z.B. Entfernung, g Fahrtzeit) versehen sind Routing Algorithmen Dijkstra Algorithmus • Kürzester Weg von A nach B in einem Graphen Routing Algorithmen Dijkstra Algorithmus • Geg.: Gerichteter Graph G, dessen Kanten mit Kosten attributiert sind (z (z.B. B Strecke oder Zeit) • Aufgabe: Berechnung des kürzesten Weges von einem Startknoten s zu einem Zielknoten z • Einfachste Idee: alle Wege g berechnen und den Kürzesten auswählen • Feststellung: wenn der kürzeste Weg von s nach z über y geht, sind die Teilstücke auch immer der kürzeste Weg zwischen den beiden Punkten • Dijkstra: Berechnung der kürzesten Wege von einem beliebigen Startpunkt zu allen anderen Punkten des Graphen Routing Algorithmen Dijkstra Algorithmus • Beispiel: Kürzester Weg von Do nach Du Startpunkt: Do Do 20 X 80 Du Ha 15 W 30 Du Neue kürzeste Verbindung nach Du über W und Ha „längerer längerer“ Weg Routing Algorithmen Dijkstra Algorithmus – ein Beispiel S Grüne Knoten: in Arbeit /bearbeitet g TG Rote Knoten: Rand des jjeweiligen 2 1 1 2 Grüne Kanten: Kürzeste Wege 7 3 6 8 9 4 5 Routing Algorithmen Dijkstra Algorithmus • Beschreibung des Algorithmus • Bildung eines Teilgraphen TG in G G, ausgehend von s TG beschreibt den erkundeten Teil von G, bestehend aus: Allen Knoten die mit s verbunden sind, dabei bedeuten: Grüne Knoten: In Arbeit / bearbeitet Rote Knoten: Rand vom TG Markierung der Kanten innerhalb des TG Grüne Kanten: Bilden kürzeste Wege Rote Kanten: „längere (eliminierte)“ Wege In jedem Knoten wird der Abstand zu s verwaltet TG wächst, wächst indem in jedem Schritt der Randknoten mit minimalen Abstand von s ins Innere von TG übernommen wird „„Nachfolger“ g übernommener Knoten werden Randknoten Kürzeste Pfade zu grünen Knoten, die erneut erreicht werden, sind ggf. zu korrigieren Routing Algorithmen Dijkstra Algorithmus Knoten: Blau -> Rot (Beispiel) Routing Algorithmen Dijkstra Algorithmus • Offene Fragen • Algorithmus Al ith ist i t korrekt k kt (Beweis-> (B i Lit t ) Literatur) • Wie finden wir schnell Alle Nachfolger eines Knoten? Aktive Knoten? • Wir benötigen : Datenstrukturen für den Graphen Datenstruktur D k fü für di die aktiven ki Knoten K und d verbindungen bi d Routing Algorithmen Dijkstra Algorithmus • Datenstrukturen • Datenstruktur D t t kt fü für d den G Graphen h ((mit it K Kosten) t ) Variante 1: Adjazenzmatrix Variante 2: Adjazenzliste • Datenstruktur für die Menge der aktiven Knoten: Heap auf Heap wird in dieser Vorlesung als Datenstruktur nicht weiter eingegangen Routing Algorithmen Dijkstra Algorithmus • Adjazenzmatrix • Definition: Knoten, die durch eine Kante verbunden sind, heißen benachbart oder adjazent • Definition: Die n x n Matrix A = {aij} heißt Adjazenzmatrix mit aij = true , falls vi und vj adjazent, sonst false. Routing Algorithmen Dijkstra Algorithmus • Adjazenzmatrix mit Kosten • Bei gewichteten Graphen lassen sich die Kosten k direkt in die Adjazenzmatrix eintragen: aij = k , falls vi und vj adjazent, sonst ∞. • Beachte: alle Diagonalelemente sind Null. • Vorteil: Möglichkeit, in der Laufzeit O(1) festzustellen, ob eine Kante von vi nach vj existiert. • Nachteil: hoher Platzbedarf O(n²) Routing Algorithmen Dijkstra Algorithmus • Beispiel zur Adjazenzmatrix Do Du Ha W D K Do 0 80 20 ∞ ∞ ∞ Du ∞ 0 ∞ ∞ 20 ∞ H Ha ∞ ∞ 0 15 ∞ ∞ W ∞ 30 ∞ 0 150 80 D ∞ ∞ ∞ ∞ 0 15 K ∞ ∞ ∞ ∞ ∞ 0 Routing Algorithmen Dijkstra Algorithmus • Adjazenzliste • Für jeden Knoten wird eine Liste seiner (Nachfolger-) Nachbarknoten abgespeichert. • Der Zugriff auf die Listen erfolgt über ein Array der Länge n (n = Anzahl der Knoten) • Vorteil: geringer Platzbedarf: O(n+e) (e Anzahl der Kanten) alle m Nachfolger eines Knotens sind in der Zeit O(m) erreichbar i hb • Nachteil: Um zu prüfen, ob vi und vj benachbart sind, muss die Adjazenzliste von vi durchlaufen und nach vj gesucht werden • Aber: Für Dijkstra ist eine Adjazenzliste ideal Routing Algorithmen Dijkstra Algorithmus • Beispiel zur Adjazenzliste Do Du Ha W D K Do 0 80 20 ∞ ∞ ∞ Du ∞ 0 ∞ ∞ 20 ∞ Ha ∞ ∞ 0 15 ∞ ∞ W ∞ 30 ∞ 0 150 80 D ∞ ∞ ∞ ∞ 0 15 K ∞ ∞ ∞ ∞ ∞ 0 Do Du Ha W D K Routing Algorithmen Du 80 Ha 20 Dijkstra Algorithmus • Erweiterung Dijkstra zur Behandlung von realen Straßennetzen • Reale Netze stellen besondere Anforderungen Größe des Netzwerkes (Effizienz) ( ) Dijkstra mit Geometrie Straßenverkehrsordnung (Abbiege- und Wendeverbote) Abbildung realer Straßennetze auf Graphen Ansätze: Modifikation des Graphen Modifikation von Dijkstra Routing Algorithmen Dijkstra Algorithmus • Dijkstra Erweiterung • Dijkstra nutzt die Geometrie der Knoten/Kannten nicht aus • Richtungslos: Dijkstra berücksichtigt nicht die Richtung von Startknoten zum Zielknoten • Erweiterung: Dijkstra mit Geometrie Routing Algorithmen Dijkstra Algorithmus • Idee: • kürzeste Verbindung g von K nach HH gesucht • Dijkstra nutzt zunächst nicht die GeoMetrie-Information, sondern berechnet auch die Verbindung nach BN Routing Algorithmen Dijkstra Algorithmus • Resümee: Dijkstra mit Geometrie • Erweiterung E it von Dijkstra Dijk t d durch h Ei Einbeziehung b i h d der Ri Richtung ht zum Ziel (Heuristik) • Zielgerichtete Suche • Findet optimale Lösung, wenn Kantenkosten = Weglänge • Umsetzung dieses Ansatzes = A A* Algorithmus Routing Algorithmen Dijkstra Algorithmus • Anwendung in realen Netzen • Abbiegeverbot Abbi b t Änderung des Algorithmus Änderung des Graphen Transformation des Graphen mit Abbiegeverbot in einen Graphen ohne Abbiegeverbot Anschließend Anwendung von Standard Dijkstra • Einbahnstraßen Gleiches Prinzip wie oben Standardalgorithmus für Routing Routing Algorithmen