Vorlesung über gerichtete und gewichtete Graphen

Jul 8, 2024

Einführung in Dynamische Datenstrukturen - Gerichtete und Gewichtete Grafen

Gerichtete Grafen

  • In gerichtetem Graphen sind Kanten nur in eine Richtung nutzbar.
  • Beispiel: Knoten 6 kann zu 4 anderen Knoten, aber nicht über denselben Weg zurück.
  • Knoten können unterschiedliche Anzeilen von eingehenden und ausgehenden Kanten haben.
  • Wichtig: Zyklen bzw. Kreise -> Pfade, die zum Ausgangspunkt zurückführen.
  • Zyklusfreiheit ist wichtig, um Endlos-Iterationen bei Algorithmen zu verhindern.

Beispiele für gerichtetet Grafen

  • Transportwesen: Knoten = Kreuzungen, Kanten = Straßen.
  • Web: Knoten = Webseiten, Kanten = Hyperlinks.
  • Finanzsektor: Knoten = Banken, Kanten = Transaktionen.

Fragestellungen in gewichteten Grafen

  • Existiert ein Weg zwischen zwei Knoten?
  • Was ist der kürzeste Pfad zwischen zwei Knoten?
  • Kürzester Pfad: Bezüglich Anzahl Zwischenknoten, Kosten, etc.
  • Zyklusfreiheit und Konnektivität (Verbindung alle Knoten durch minimalste Kantenanzahl).

Anwendungen von Graphenmodellen im Web

  • Webcrawler erstellen durch das Folgen von Links eine Graphenstruktur des Webs.
  • Suchmaschinen bewerten Links basierend auf Verlinkungen.

Grafbibliothek in Java: JGraphT

  • JGraphT erlaubt das Definieren und Arbeiten mit Knoten und Kanten.

Spezielle Probleme: Minimale Spanning Trees (MST)

  • MST: Verbunden, zyklusfrei, alle Knoten enthalten.
  • Anwendung in gewichteten Graphen: Fokus auf die kostengünstigste Verbindung.
  • Beispiel: Straßen mit unterschiedlichen Mautkosten als Kanten.

Algorithms für MST

Kruskal-Algorithmus

  • Sucht den MST durch Auswahl der günstigsten Kanten in jedem Schritt.
  • Verwendet eine Liste der Kanten, sortiert nach Kosten.
  • Verwendet eine disjunkte Menge der Knoten
  • Prüft kontinuierlich auf Zyklusfreiheit.
  • Schnelle, aber nicht immer global optimale Lösungen.

Prim-Algorithmus

  • Beginnt bei einem Startknoten und erweitert den MST durch Hinzufügen der günstigsten Kanten.
  • Hat nur begrenzte Kenntnis über den Gesamtkrafen.
  • Berücksichtigt nur sichtbar Kanten vom aktuellen Knoten.
  • Zyklusfreiheit wird durch Hinzufügen der Knoten und Auswahl der günstigsten Kanten gewährleistet.
  • Ähnlich zum Webcrawler-Ansatz.

Dijkstra-Algorithmus

  • Findet den kürzesten Pfad bzw. MST in gewichteten Graphen.
  • Nutzt kontinuierliche Bewertung der Kosten, um global optimale Pfade zu finden.
  • Beispiel aus Oldenburg Universität: Startknoten 1, Aktualisierung der erreichbaren Knoten und ihrer Distanzen.
  • Der Pfad verbessert sich kontinuierlich durch Hinzufügen der günstigsten Optionen.

Vergleich der Algorithmen

  • Kruskal: Sicht auf gesamten Grafen, arbeitet mit kompletter Kantenliste, schnell, nicht immer optimal.
  • Prim: Sicht nur vom Startknoten und erweitert, garantierte zyklusfreiheit, schnell, nicht immer global optimal.
  • Dijkstra: Global optimal durch kontinuierliche Kostenbewertung, aufwendiger.

Fazit

  • Verständnis und Implementierung dieser Algorithmen ist entscheidend.
  • Empfehlenswert: Nutzung und Testen der Algorithmen auf Papier und in Implementationen.
  • Schwerpunkt in Kursen zu Algorithmen und Datenstrukturen.

Vielen Dank für die Aufmerksamkeit!