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 | Quelltext bearbeiten]

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

Ein ungerichteter Graph mit Knoten und Kanten , und seine Repräsentation mit Hilfe von Adjazenzlisten.

Graph Adjazenzlisten
Ein ungerichteter Graph
 a: d, b, d, e
 b: c, a
 c: b, d 
 d: a, a, c
 e: a

Beispiel 2[Bearbeiten | Quelltext bearbeiten]

Ein gerichteter Graph mit Knoten und Kanten , und seine Repräsentation mit Hilfe von Adjazenzlisten.

Graph Adjazenzlisten
Ein gerichteter Graph
 a: b, d, e
 b: c
 c: d 
 d: a
 e: 

Adjazenzlisten als Datenstrukturen[Bearbeiten | Quelltext 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 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[Bearbeiten | Quelltext bearbeiten]

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

Graph Adjazenzlisten 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 | Quelltext bearbeiten]

Graph Adjazenzlisten 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 | Quelltext bearbeiten]

Graph Adjazenzlisten 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

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Literatur[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]