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 vermaschte Nachrichtennetze. Insbesondere in paketvermittelten Datennetzen ist hierbei strenggenommen zwischen den beiden verschiedenen Prozessen Routing und Forwarding zu unterscheiden. Das Routing bestimmt t den gesamten Weg eines 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 miteinander vermengt; in diesem Fall bezeichnet Routing ganz allgemein die Übermittlung von Nachrichten über vermaschte Nachrichtennetze.
Begriffe, Definitionen Graph Ein Graph ist in der Graphentheorie 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 ). Gerichteter Graph Ein Graph G =(V,E) heißt gerichtet, wenn zu jedem e є Edasdurcheine 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) V E Prinzip von im GIS Bereich Suche nach einer optimalen Verbindung von einem Start- zu einem Zielpunkt unter einer bestimmten Kostenfunktion /-modell Kürzester Weg Schnellste Verbindung Behindertengerechte 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 Verfahren (Auswahl) Benannt nach seinem Erfinder Edsger W. Dijkstra Standardalgorithmus für Routing A* Algorithmus Informative Suche, der Algorithmus greift auf eine Heuristik zurück Zielgerichtete i t Suche, mit Punkten, die am wahrscheinlichsten h h 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, Fahrtzeit) versehen sind Kürzester Weg von A nach B in einem Graphen
Geg.: Gerichteter Graph G, dessen Kanten mit Kosten attributiert sind (z.b. Strecke oder Zeit) Aufgabe: Berechnung des kürzesten Weges von einem Startknoten s zu einem Zielknoten z Einfachste Idee: alle Wege 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 Beispiel: Kürzester Weg von Do nach Du Startpunkt: Do 20 15 Do Ha W X X80 30 Du Du Neue kürzeste Verbindung nach Du über W und Ha längerer längerer Weg
ein Beispiel S 1 2 Grüne Knoten: in Arbeit /bearbeitet 2 Rote Knoten: Rand des jeweiligen TG 2 7 Grüne Kanten: Kürzeste Wege 3 6 8 9 4 5 Beschreibung des Algorithmus Bildung eines Teilgraphen TG in 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, indem in jedem Schritt der Randknoten mit minimalen Abstand von s ins Innere von TG übernommen wird Nachfolger übernommener Knoten werden Randknoten Kürzeste Pfade zu grünen Knoten, die erneut erreicht werden, sind ggf. zu korrigieren
Knoten: Blau -> Rot (Beispiel) Offene Fragen Algorithmus ist korrekt kt (Beweis-> Literatur) t Wie finden wir schnell Alle Nachfolger eines Knoten? Aktive Knoten? Wir benötigen : Datenstrukturen für den Graphen Datenstruktur für die aktiven Knoten und verbindungen
Datenstrukturen Datenstruktur t für den Graphen (mit Kosten) 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 Adjazenzmatrix Definition: Knoten, die durch eine Kante verbunden sind, heißen benachbart oder adjazent Definition: Die n x n Matrix A = {a ij } heißt Adjazenzmatrix mit a ij = true, falls v i und v j adjazent, sonst false.
Adjazenzmatrix mit Kosten Bei gewichteten Graphen lassen sich die Kosten k direkt in die Adjazenzmatrix eintragen: a ij = k, falls v i und v j adjazent, sonst. Beachte: alle Diagonalelemente sind Null. Vorteil: Möglichkeit, in der Laufzeit O(1) festzustellen, ob eine Kante von v i nach v j existiert. Nachteil: hoher Platzbedarf O(n²) Beispiel zur Adjazenzmatrix 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
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 ihb Nachteil: Um zu prüfen, ob v i und v j benachbart sind, muss die Adjazenzliste von v i durchlaufen und nach v j gesucht werden Aber: Für Dijkstra ist eine Adjazenzliste ideal Beispiel zur Adjazenzliste Do Du Ha W D K Do Du 80 Ha 20 Do 0 80 20 Du 0 20 Ha 0 15 W 30 0 150 80 D 0 15 Du Ha W D K 0 K
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 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
Idee: kürzeste Verbindung von K nach HH gesucht Dijkstra nutzt zunächst nicht die Geo- Metrie-Information, sondern berechnet auch die Verbindung nach BN Resümee: Dijkstra mit Geometrie Erweiterung von Dijkstra durch Einbeziehung i der Richtung zum Ziel (Heuristik) Zielgerichtete Suche Findet optimale Lösung, wenn Kantenkosten = Weglänge Umsetzung dieses Ansatzes = A* Algorithmus
Anwendung in realen Netzen Abbiegeverbotb Ä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