Adjazenzliste
In der Graphentheorie sind Adjazenzlisten (oder auch Nachbarschaftslisten) eine Möglichkeit, Graphen zu repräsentieren. Dabei wird für jeden Knoten eine Liste, die Adjazenzliste, aller seiner Nachbarn (in ungerichteten Graphen) bzw. Nachfolger (in gerichteten Graphen) angegeben. Oft basieren Datenstrukturen für Graphen auf Adjazenzlisten. Im einfachsten Fall wird in einem Array für jeden Knoten eine einfach verkettete Liste aller Nachbarn gespeichert.
Definition
Bei einem ungerichteten Graphen versteht man unter einer Adjazenzliste für einen Knoten eine Liste aller Nachbarn von , d.h. eine Liste der Knoten .
Bei einem gerichteten Graphen versteht man unter einer Adjazenzliste für einen Knoten eine Liste aller Nachfolger von , d.h. eine Liste der Knoten .
In beiden Fällen ist die Reihenfolge der Knoten in der Adjazenzliste beliebig. Eine Adjazenzlisten-Repräsentation eines Graphen erhält man indem man für jeden Knoten eine Adjazenzliste angibt.
Beispiel 1
Ein ungerichteter Graph mit Knoten und Kanten , und seine Repräsentation mit Hilfe von Adjazenzlisten.
Graph | Adjazenzlisten |
---|---|
a: d, b, d, e b: c, a c: b, d d: a, a, c e: a |
Beispiel 2
Ein gerichteter Graph mit Knoten und Kanten , und seine Repräsentation mit Hilfe von Adjazenzlisten.
Graph | Adjazenzlisten |
---|---|
a: b, d, e b: c c: d d: a e: |
Adjazenzlisten als Datenstrukturen
Die Adjazenzlisten-Repräsentation von Graphen dient oft als Basis von Datenstrukturen für Graphen. Es gibt unterschiedliche Varianten diese Adjazenzlisten-Repräsentation in einer Datenstruktur umzusetzen, die auch unterschiedliche Verhalten der Datenstrukturen verursachen.
Einige Varianten:
- Knoten-Array mit Adjazenzlisten als verkettete Listen: Hier wird ein mit Knotenidentifikatoren indiziertes Array gespeichert wobei in jedem Element des Arrays ein Zeiger auf die entsprechende Adjazenzliste gespeichert wird. Die Adjazenzlisten selbst werden als verkettete Listen gespeichert.
- Verketteten Liste von Knoten mit Adjazenzlisten als verkettete Listen: Die Knoten werden als verkettete Liste gespeichert und jeder Knoten enthält einen Zeiger auf die entsprechende Adjazenzliste. Die Adjazenzlisten selbst werden auch als verkettete Listen gespeichert.
Beispiele
Knoten-Array mit Adjazenzlisten als einfach verkettete Listen
Graph | Adjazenzlisten | Datenstruktur |
---|---|---|
a: d, b, d, e b: c, a c: b, d d: a, a, c e: a |
||
a: b, d, e b: c c: d d: a e: |
Knoten-Array mit Adjazenzlisten als doppelt verkettete Listen
Graph | Adjazenzlisten | Datenstruktur |
---|---|---|
a: d, b, d, e b: c, a c: b, d d: a, a, c e: a |
||
a: b, d, e b: c c: d d: a e: |
Verketteten Liste von Knoten mit Adjazenzlisten als einfach verkettete Listen
Graph | Adjazenzlisten | Datenstruktur |
---|---|---|
a: d, b, d, e b: c, a c: b, d d: a, a, c e: a |
||
a: b, d, e b: c c: d d: a e: |
Siehe auch
Basierend auf einem Artikel in: Wikipedia.de Seite zurück© biancahoegel.de
Datum der letzten Änderung: Jena, den: 17.05. 2020