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 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 ). 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) Prinzip von im GI Bereich uche nach einer optimalen Verbindung von einem tart- zu einem Zielpunkt unter einer bestimmten Kostenfunktion /-modell Kürzester Weg chnellste Verbindung Behindertengerechte Route Andere Ziel- / Kostenfunktionen in einem Graphen bestehend aus Knoten und Kanten, wobei die Kanten mit einem Gewicht (z.b. trecke, Zeit ) versehen sind
Routing Verfahren (Auswahl) Benannt nach seinem Erfinder Edsger W. Dijkstra tandardalgorithmus für Routing A* Algorithmus Informative uche, der Algorithmus greift auf eine Heuristik zurück Zielgerichtete uche, mit Punkten, die am wahrscheinlichsten 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
Kürzester Weg von A nach B in einem Graphen Geg.: Gerichteter Graph G, dessen Kanten mit Kosten attributiert sind (z.b. trecke oder Zeit) Aufgabe: Berechnung des kürzesten Weges von einem tartknoten 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 tartpunkt zu allen anderen Punkten des Graphen
Beispiel: Kürzester Weg von Do nach Du tartpunkt: Do 0 Do Ha W 0 0 Du Du Beispiel: Kürzester Weg von Do nach Du tartpunkt: Do 0 Do Ha W X 0 0 Du Du Neue kürzeste Verbindung nach Du über W und Ha längerer Weg
ein Beispiel Grüne Knoten: in Arbeit /bearbeitet Rote Knoten: Rand des jeweiligen TG Grüne Kanten: Kürzeste Wege ein Beispiel Grüne Knoten: in Arbeit /bearbeitet Rote Knoten: Rand des jeweiligen TG Grüne Kanten: Kürzeste Wege
ein Beispiel Grüne Knoten: in Arbeit /bearbeitet Rote Knoten: Rand des jeweiligen TG Grüne Kanten: Kürzeste Wege ein Beispiel Grüne Knoten: in Arbeit /bearbeitet Rote Knoten: Rand des jeweiligen TG Grüne Kanten: Kürzeste Wege
ein Beispiel Grüne Knoten: in Arbeit /bearbeitet Rote Knoten: Rand des jeweiligen TG Grüne Kanten: Kürzeste Wege ein Beispiel Grüne Knoten: in Arbeit /bearbeitet Rote Knoten: Rand des jeweiligen TG Grüne Kanten: Kürzeste Wege
ein Beispiel Grüne Knoten: in Arbeit /bearbeitet Rote Knoten: Rand des jeweiligen TG Grüne Kanten: Kürzeste Wege ein Beispiel Grüne Knoten: in Arbeit /bearbeitet Rote Knoten: Rand des jeweiligen TG Grüne Kanten: Kürzeste Wege
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 chritt 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) 0
Offene Fragen Algorithmus ist korrekt (Beweis-> Literatur) 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 für den Graphen (mit Kosten) Variante : Adjazenzmatrix Variante : 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() 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 0 0 Du 0 0 Ha 0 W 0 0 0 0 D 0 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 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 0 0 0 Du 0 0 Ha 0 W 0 0 0 0 D 0 K 0 Do Du Ha W D K Du 0 Ha 0 Erweiterung Dijkstra zur Behandlung von realen traßennetzen Reale Netze stellen besondere Anforderungen Größe des Netzwerkes (Effizienz) Dijkstra mit Geometrie traßenverkehrsordnung (Abbiege- und Wendeverbote) Abbildung realer traß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 tartknoten 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 der Richtung zum Ziel (Heuristik) Zielgerichtete uche Findet optimale Lösung, wenn Kantenkosten = Weglänge Umsetzung dieses Ansatzes = A* Algorithmus Anwendung in realen Netzen Abbiegeverbot Änderung des Algorithmus Änderung des Graphen Transformation des Graphen mit Abbiegeverbot in einen Graphen ohne Abbiegeverbot Anschließend Anwendung von tandard Dijkstra Einbahnstraßen Gleiches Prinzip wie oben tandardalgorithmus für Routing