Fortgeschritten ~17 Min. Mathematik & Logik

Graphentheorie — Netzwerke, Wege und Optimierung

Lernziele

  • Graphen als abstrakte Modelle beschreiben
  • Knoten, Kanten, Grad, Wege und Kreise definieren
  • den Euler-Weg am Königsberger Brückenproblem erklären
  • den Dijkstra-Algorithmus schrittweise anwenden
  • Adjazenzmatrizen lesen und schreiben

Einführung

Wie findet Google Maps den schnellsten Weg? Wie analysiert Facebook Freundschaftsbeziehungen? Wie optimiert ein Paketdienst seine Lieferrouten? All diese Probleme haben eine gemeinsame mathematische Struktur: Sie lassen sich als Graph modellieren. Die Graphentheorie ist eine der anwendungsreichsten Gebiete der modernen Mathematik — und wurde 1736 von Euler mit einer Frage über Brücken in Königsberg begründet.

Grundidee

Ein Graph ist ein abstraktes Modell für Verbindungen. Man stellt sich Objekte als Punkte (Knoten) vor und Verbindungen zwischen ihnen als Linien (Kanten). Ein Straßennetz, ein soziales Netzwerk, ein Schaltkreis, ein Stundenplan — all das ist ein Graph, sobald man abstrahiert.

Erklärung

Grundbegriffe

Ein Graph G=(V,E)G = (V, E) besteht aus:

  • einer Menge VV von Knoten (engl. vertices)
  • einer Menge EE von Kanten (engl. edges) — Paare von Knoten

Beispiel: V={A,B,C,D}V = \{A, B, C, D\}, E={AB,BC,CD,AD,BD}E = \{AB, BC, CD, AD, BD\}

A ─── B
│  ╲  │
│   ╲ │
D ─── C

Grad eines Knotens: Anzahl der Kanten, die an ihm hängen. Im Beispiel: deg(B)=3\text{deg}(B) = 3.

Handschlaglemma: Die Summe aller Knotengrade ist immer gerade (jede Kante zählt zweimal): vVdeg(v)=2E\sum_{v \in V} \text{deg}(v) = 2|E|

Gerichtete und ungerichtete Graphen

In einem ungerichteten Graphen sind Kanten ohne Pfeilrichtung — Verbindungen gelten in beide Richtungen (z. B. Freundschaften auf Facebook).

In einem gerichteten Graphen (Digraph) haben Kanten eine Richtung — Pfeile statt Linien (z. B. Twitter-Follows, Einbahnstraßen). Eine Kante von AA nach BB bedeutet nicht, dass es auch eine von BB nach AA gibt.

Gewichteter Graph: Kanten tragen zusätzlich ein Gewicht (z. B. Entfernung, Kosten, Zeit).

Wege und Kreise

Ein Weg ist eine Folge von Knoten, bei der aufeinanderfolgende Knoten durch eine Kante verbunden sind, ohne Kante zu wiederholen. Ein Pfad wiederholt auch keinen Knoten.

Ein Kreis (Zyklus) ist ein Weg, der beim Startknoten endet.

Ein Graph ohne Kreise heißt azyklisch.

Euler-Wege — Das Königsberger Brückenproblem

1736 fragte Euler: Kann man alle sieben Brücken Königsbergs genau einmal überqueren und zum Startpunkt zurückkehren?

Ein Euler-Weg überquert jede Kante genau einmal. Ein Euler-Kreis ist ein Euler-Weg, der wieder zum Start zurückführt.

Eulers Satz:

  • Ein Euler-Kreis existiert genau dann, wenn alle Knoten geraden Grad haben.
  • Ein Euler-Weg (ohne Rückkehr) existiert genau dann, wenn genau 2 Knoten ungeraden Grad haben (Start und Ende).

Im Königsberger Problem hatten alle 4 Knoten ungeraden Grad — also war weder Euler-Weg noch Euler-Kreis möglich.

Bäume

Ein Baum ist ein zusammenhängender, kreisfreier Graph. Er hat genau V1|V| - 1 Kanten.

Bäume sind überall: Verzeichnisstrukturen, Stammbaum, Entscheidungsbaum, Syntaxbaum. Ein Wald ist eine Sammlung disjunkter Bäume.

Adjazenzmatrix

Die Adjazenzmatrix AA eines Graphen mit nn Knoten ist eine n×nn \times n-Matrix:

Aij={1falls Kante zwischen Knoten i und j0sonstA_{ij} = \begin{cases} 1 & \text{falls Kante zwischen Knoten } i \text{ und } j \\ 0 & \text{sonst} \end{cases}

Für den Graphen V={1,2,3}V = \{1, 2, 3\}, E={12,13,23}E = \{12, 13, 23\} (vollständiger Graph K3K_3):

A=(011101110)A = \begin{pmatrix} 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \end{pmatrix}

Für ungerichtete Graphen ist AA symmetrisch. Das Matrizenprodukt A2A^2 verrät, wie viele Wege der Länge 2 zwischen je zwei Knoten existieren.

Dijkstra-Algorithmus

Dijkstra findet den kürzesten Weg von einem Startknoten zu allen anderen Knoten in einem nicht-negativ gewichteten Graphen.

Idee: Halte für jeden Knoten den aktuell bekannten kürzesten Abstand zum Startknoten. Erweitere immer den Knoten mit dem kleinsten bekannten Abstand.

Beispiel: Finde den kürzesten Weg von SS aus:

    2      3
S ──── A ──── C
│      │      │
│4     │1     │2
│      │      │
└──── B ──── D
       5
SchrittBesuchter KnotenAbstände
StartSS=0, A=∞, B=∞, C=∞, D=∞
1SA=2, B=4
2AB=3 (via A), C=5
3BD=8
4CD=7 (via C)
5Dfertig
Merke dir

Graphentheorie abstrahiert beliebige Netzwerke auf dasselbe Modell: Knoten und Kanten. Ob Straßen, Gene oder soziale Kontakte — wenn man eine Verbindungsstruktur hat, ist Graphentheorie das richtige Werkzeug.

Beispiel aus dem Alltag

Google Maps: Das Straßennetz ist ein gewichteter gerichteter Graph (Einbahnstraßen!). Kreuzungen sind Knoten, Straßenabschnitte sind gewichtete Kanten (Gewicht = Fahrtzeit). Dijkstra oder verwandte Algorithmen wie A* finden den schnellsten Weg.

Soziale Netzwerke: Auf Facebook ist jeder Nutzer ein Knoten, jede Freundschaft eine Kante. Algorithmen analysieren, wer die einflussreichsten Knoten sind (hoher Grad = viele Verbindungen), und empfehlen neue Freunde über kurze Wege.

Lieferketten: Ein Logistikunternehmen modelliert Lager und Kunden als Knoten, Transportrouten als Kanten mit Kosten. Das Traveling-Salesman-Problem (jeden Knoten genau einmal besuchen, Kosten minimieren) ist eines der berühmtesten ungelösten Optimierungsprobleme.

Anwendung

Aufgabe: Prüfe für den folgenden Graphen, ob ein Euler-Kreis oder Euler-Weg existiert:

V={A,B,C,D,E}V = \{A, B, C, D, E\}, E={AB,AC,BC,BD,CD,DE}E = \{AB, AC, BC, BD, CD, DE\}

Lösung:

  • deg(A)=2\text{deg}(A) = 2 (AB, AC) — gerade
  • deg(B)=3\text{deg}(B) = 3 (AB, BC, BD) — ungerade
  • deg(C)=3\text{deg}(C) = 3 (AC, BC, CD) — ungerade
  • deg(D)=3\text{deg}(D) = 3 (BD, CD, DE) — ungerade
  • deg(E)=1\text{deg}(E) = 1 (DE) — ungerade

Es gibt 4 Knoten mit ungeradem Grad. Weder Euler-Kreis (braucht 0 ungerade Knoten) noch Euler-Weg (braucht genau 2) ist möglich.

Typische Fehler

Weg vs. Pfad vs. Euler-Weg verwechseln: Ein Weg darf Knoten wiederholen (aber keine Kante), ein Pfad darf weder Kante noch Knoten wiederholen, ein Euler-Weg besucht jede Kante genau einmal (Knoten dürfen wiederholt werden).

Häufiger Irrtum

Adjazenzmatrix für gerichtete Graphen: Bei gerichteten Graphen ist die Adjazenzmatrix nicht mehr symmetrisch. Aij=1A_{ij} = 1 bedeutet: Kante von Knoten ii nach Knoten jj.

Zusammenfassung

Merke dir:

  • Graph G=(V,E)G = (V, E): Knoten VV und Kanten EE — abstrakt für jede Verbindungsstruktur
  • Grad eines Knotens = Anzahl angrenzender Kanten; Summe aller Grade = 2E2|E|
  • Euler-Kreis: alle Grade gerade; Euler-Weg: genau 2 Knoten mit ungeradem Grad
  • Baum: zusammenhängend, kreisfrei, V1|V|-1 Kanten
  • Adjazenzmatrix: kompakte Darstellung für Algorithmen
  • Dijkstra: kürzester Weg bei nicht-negativen Gewichten — Grundlage von Navigationssystemen

Quiz

Frage 1: Ein Graph hat 5 Knoten mit den Graden 3, 3, 2, 2, 2. Wie viele Kanten hat er?

Frage 2: Ist ein Euler-Kreis im vollständigen Graphen K4K_4 (4 Knoten, alle Paare verbunden) möglich?

Frage 3: Zeichne die Adjazenzmatrix für den Graphen V={1,2,3,4}V = \{1, 2, 3, 4\}, E={12,23,34,14}E = \{12, 23, 34, 14\} (ein Viereck).

Frage 4: Warum ist Dijkstra nicht anwendbar, wenn ein Graph negative Kantengewichte hat?

Schlüsselwörter

graphknotenkantegerichteter-graphwegkreisbaumadjazenzmatrixdijkstraeulerweg