Was ist graf?
Graf (Graph)
Ein Graf ist eine abstrakte Datenstruktur, die aus einer Menge von Knoten (auch Eckpunkte oder Vertices genannt) und einer Menge von Kanten (auch Edges oder Verbindungen genannt) besteht. Die Kanten verbinden Knoten miteinander und stellen Beziehungen zwischen ihnen dar.
-
Definition: Ein Graf G wird definiert als G = (V, E), wobei V die Menge der Knoten und E die Menge der Kanten ist.
-
Arten von Graphen:
- Ungerichteter Graf: Die Kanten haben keine Richtung, d.h., die Verbindung zwischen zwei Knoten ist in beide Richtungen gleichwertig. Beispiel: Eine Freundschaftsbeziehung.
- Gerichteter Graf: Die Kanten haben eine Richtung, d.h., die Verbindung zwischen zwei Knoten ist nur in einer Richtung gültig. Beispiel: Eine Twitter-Follower-Beziehung.
- Gewichteter Graf: Jede Kante hat ein Gewicht oder eine Kosten zugeordnet. Beispiel: Die Distanz zwischen Städten.
- Ungewichteter Graf: Alle Kanten haben das gleiche Gewicht (implizit oft 1).
-
Darstellung von Graphen:
- Adjazenzmatrix: Eine Matrix, die angibt, ob eine Kante zwischen zwei Knoten existiert. Geeignet für dichte Graphen.
- Adjazenzliste: Eine Liste, die für jeden Knoten die Liste seiner Nachbarn speichert. Geeignet für dünne Graphen.
-
Anwendungen:
Graphen werden in einer Vielzahl von Bereichen eingesetzt, darunter:
- Soziale Netzwerke: Darstellung von Beziehungen zwischen Benutzern.
- Routenplanung: Finden des kürzesten Weges zwischen zwei Orten.
- Netzwerkdesign: Optimierung der Netzwerkstruktur.
- Empfehlungssysteme: Vorschläge basierend auf Verbindungen und Ähnlichkeiten.
-
Wichtige Konzepte:
- Pfad: Eine Folge von Knoten, die durch Kanten verbunden sind. Siehe auch Pfadsuche.
- Zyklus: Ein Pfad, der zum Ausgangsknoten zurückkehrt.
- Zusammenhangskomponente: Eine Menge von Knoten, die alle miteinander durch Pfade verbunden sind.
- Grad eines Knotens: Die Anzahl der Kanten, die mit einem Knoten verbunden sind. Siehe auch Knotengrad.
-
Algorithmen:
Es gibt viele Algorithmen zur Bearbeitung von Graphen, wie z.B.:
- Breitensuche (BFS): Durchsucht den Graphen schichtweise. Siehe auch Breitensuche.
- Tiefensuche (DFS): Durchsucht den Graphen, indem sie so tief wie möglich in jeden Zweig eintaucht. Siehe auch Tiefensuche.
- Dijkstras Algorithmus: Findet den kürzesten Pfad von einem Startknoten zu allen anderen Knoten in einem gewichteten Graphen. Siehe auch Dijkstra%27s%20Algorithmus.
- Minimaler Spannbaum (MST): Findet einen Baum, der alle Knoten eines Graphen verbindet und die Summe der Kantengewichte minimiert.