Adjazenzliste

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

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[Bearbeiten]

Bei einen ungerichteten Graphen G =\left(V, E \right) versteht man unter einer Adjazenzliste für einen Knoten v \in V eine Liste aller Nachbarn von v, d.h. eine Liste der Knoten \left\{ v' \in V: \{v, v'\} \in E \right\}.

Bei einen gerichteten Graphen G =\left(V, E \right) versteht man unter einer Adjazenzliste für einen Knoten v \in V eine Liste aller Nachfolger von v, d.h. eine Liste der Knoten \left\{ v' \in V: (v, v') \in E \right\}.

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[Bearbeiten]

Ein ungerichteter Graph mit Knoten V=\{a,b,c,d,e\} und Kanten \{a,b\}, \{a,d\}, \{a,d\}, \{a,e\}, \{b,c\}, \{c,d\}, und seine Repräsentation mit Hilfe von Adjazenzlisten.

Graph Adjazenz Listen
Ein ungerichteter Graph
 a: d, b, d, e
 b: c, a
 c: b, d 
 d: a, a, c
 e: a

Beispiel 2[Bearbeiten]

Ein gerichteter Graph mit Knoten V=\{a,b,c,d,e\} und Kanten (a,b), (a,d), (a,e), (a,b), (b,c), (c,d), (d,a), und seine Repräsentation mit Hilfe von Adjazenzlisten.

Graph Adjazenz Listen
Ein gerichteter Graph
 a: b, d, e
 b: c
 c: d 
 d: a
 e: 

Adjazenzlisten als Datenstrukturen[Bearbeiten]

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 gespeichern 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[Bearbeiten]

Knoten-Array mit Adjazenzlisten als einfach verkettete Listen[Bearbeiten]

Graph Adjazenz Listen Datenstruktur
Ein ungerichteter Graph
 a: d, b, d, e
 b: c, a
 c: b, d 
 d: a, a, c
 e: a
Adjacencylist array of linkedlists undirectedgraph.svg
Ein gerichteter Graph
 a: b, d, e
 b: c
 c: d 
 d: a
 e: 
Adjacencylist array of linkedlists directedgraph.svg

Knoten-Array mit Adjazenzlisten als doppelt verkettete Listen[Bearbeiten]

Graph Adjazenz Listen Datenstruktur
Ein ungerichteter Graph
 a: d, b, d, e
 b: c, a
 c: b, d 
 d: a, a, c
 e: a
Adjacencylist array of doublelinkedlists undirectedgraph.svg
Ein gerichteter Graph
 a: b, d, e
 b: c
 c: d 
 d: a
 e: 
Adjacencylist array of doublelinkedlists directedgraph.svg

Verketteten Liste von Knoten mit Adjazenzlisten als einfach verkettete Listen[Bearbeiten]

Graph Adjazenz Listen Datenstruktur
Ein ungerichteter Graph
 a: d, b, d, e
 b: c, a
 c: b, d 
 d: a, a, c
 e: a
Adjacencylist linkedlistof linkedlists undirectedgraph.svg
Ein gerichteter Graph
 a: b, d, e
 b: c
 c: d 
 d: a
 e: 
Adjacencylist linkedlistof linkedlists directedgraph.svg

Literatur[Bearbeiten]

Weblinks[Bearbeiten]