Zyklus (Graphentheorie)

Zyklischer Graph mit Kreis (b,c,d,e,b)

Ein Zyklus ist in der Graphentheorie ein Kantenzug mit unterschiedlichen Kanten in einem Graphen, bei dem Start- und Endknoten gleich sind. Ein zyklischer Graph ist ein Graph mit mindestens einem Zyklus. Algorithmisch lassen sich Zyklen in einem Graphen durch modifizierte Tiefensuche finden, etwa durch modifizierte topologische Sortierung.

## Definitionen

[Bearbeiten | Quelltext bearbeiten]

### Zyklus

[Bearbeiten | Quelltext bearbeiten]

Ist  G = ( V , E ) {\displaystyle G=(V,E)} ein Graph, dann heißt ein Kantenzug v 1 , e 1 , v 2 , e 2 , … , e n − 1 , v n {\displaystyle v_{1},e_{1},v_{2},e_{2},\dotsc ,e_{n-1},v_{n}} mit  v i ∈ V {\displaystyle v_{i}\in V} für  i = 1 , … , n {\displaystyle i=1,\ldots ,n} und  e i ∈ E {\displaystyle e_{i}\in E} mit  i = 1 , … , n − 1 {\displaystyle i=1,\ldots ,n-1} Zyklus (engl. circuit), wenn gilt:

v 1 = v n {\displaystyle v_{1}=v_{n}} (wenn der Kantenzug also geschlossen ist) und
e j ≠ e k {\displaystyle e_{j}\neq e_{k}} für  j ≠ k {\displaystyle j\neq k} und  j , k ∈ { 1 , … , n − 1 } {\displaystyle j,k\in \\{1,\ldots ,n-1\\}}

Knoten dürfen in dem Kantenzug also mehrfach vorkommen, Kanten jedoch nur einmal. Auch der durch  V ′ = { v 1 , … , v n − 1 } , E ′ = { e 1 , … , e n − 1 } {\displaystyle V'=\\{v_{1},\ldots ,v_{n-1}\\},E'=\\{e_{1},\ldots ,e_{n-1}\\}} gegebene Subgraph G ′ = ( V ′ , E ′ ) {\displaystyle G'=(V',E')} von G wird manchmal Zyklus genannt.[1] Ein Zyklus in einem gerichteten Graphen heißt gerichteter Zyklus und in einem ungerichteten Graphen ungerichteter Zyklus.

### Kreis

[Bearbeiten | Quelltext bearbeiten]

Entsprechend dazu heißt ein Zyklus  v 1 , e 1 , v 2 , e 2 , … , e n − 1 , v n {\displaystyle v_{1},e_{1},v_{2},e_{2},\dotsc ,e_{n-1},v_{n}} in einem Graphen Kreis (engl. cycle), wenn  v 1 , … , v n − 1 {\displaystyle v_{1},\ldots ,v_{n-1}} ein Weg ist. Ein Kreis ist damit ein Zyklus, in dem nur Start- und Endknoten gleich sind, also zusätzlich gilt:  v i ≠ v j {\displaystyle v_{i}\neq v_{j}} für  i , j ∈ { 1 , … , n − 1 } {\displaystyle i,j\in \\{1,\ldots ,n-1\\}} mit  i ≠ j {\displaystyle i\neq j} .[1]

Aus einem Weg erhält man also einen Kreis, indem die Endknoten  v 1 {\displaystyle v_{1}} und  v n − 1 {\displaystyle v_{n-1}} durch eine zusätzliche Kante  { x n − 1 , x 1 } {\displaystyle \\{x_{n-1},x_{1}\\}} verbunden werden.[2] Ein Kreis in einem gerichteten Graphen heißt gerichteter Kreis und in einem ungerichteten Graphen ungerichteter Kreis. Eine Kante, die zwei Knoten eines Kreises verbindet, selbst jedoch nicht Teil des Kreises ist, heißt Sehne des Kreises.

### Länge

[Bearbeiten | Quelltext bearbeiten]

In Graphen ohne Kantengewichte ist  n − 1 {\displaystyle n-1} die Länge eines Zyklus oder Kreises  ( v 1 , … , v n − 1 ) {\displaystyle (v_{1},\ldots ,v_{n-1})} . Anschaulich zählt man also die Anzahl zugehöriger Kanten e 1 = { v 1 , v 2 } , e 2 = { v 2 , v 3 } , … , e n − 1 = { v n − 1 , v 1 } {\displaystyle e_{1}=\\{v_{1},v_{2}\\},e_{2}=\\{v_{2},v_{3}\\},\dotsc ,e_{n-1}=\\{v_{n-1},v_{1}\\}} . In einem kantengewichteten Graphen ist die Länge eines Zyklus oder Kreises die Summe der Kantengewichte aller zugehörigen Kanten.

## Spezielle Graphen

[Bearbeiten | Quelltext bearbeiten]

### Zyklischer Graph

[Bearbeiten | Quelltext bearbeiten]

Ein Graph mit mindestens einem Zyklus heißt zyklisch. Graphen ohne Zyklen werden azyklisch oder Wald genannt. Ein Zyklus oder Kreis heißt trivial, wenn er weniger als drei Knoten enthält. Triviale Kreise oder Zyklen werden bei der Analyse von Graphen meist nicht betrachtet. Ein Kreis, der genau drei Knoten enthält, wird Dreieck genannt. Einen Graphen ohne Dreieck nennt man dann dreiecksfrei. Als Taillenweite eines Graphen bezeichnet man die Länge eines kürzesten nicht trivialen Kreises. Falls der Graph keinen Kreis besitzt, so setzt man die Taillenweite auf unendlich. Die einfachsten zyklischen Graphen sind die Kreisgraphen.

### Panzyklischer Graph

[Bearbeiten | Quelltext bearbeiten]

Ein Graph heißt kantenpanzyklisch, falls jede Kante auf einem Kreis der Länge  p {\displaystyle p} für alle  p ∈ { 1 , 2 , … , | V ( G ) | } {\displaystyle p\in \\{1,2,\ldots ,|V(G)|\\}} liegt. Ein Graph heißt knotenpanzyklisch, wenn jeder Knoten auf einem Kreis der Länge  p {\displaystyle p} für alle  p ∈ { 1 , 2 , … , | V ( G ) | } {\displaystyle p\in \\{1,2,\ldots ,|V(G)|\\}} liegt. Ein Graph heißt panzyklisch, wenn er für alle  p ∈ { 3 , 4 , … , | V ( G ) | } {\displaystyle p\in \\{3,4,\ldots ,|V(G)|\\}} einen Kreis der Länge  p {\displaystyle p} besitzt. Kantenpanzyklische Graphen sind damit auch knotenpanzyklisch und knotenpanzyklische Graphen auch panzyklisch. Panzyklische Graphen sind insbesondere hamiltonsch.

## Zyklenraum

[Bearbeiten | Quelltext bearbeiten]

Zu einer beliebig vorgegebenen Nummerierung der Kanten  A = { a 1 , a 2 , … , a m } {\displaystyle A=\\{a_{1},a_{2},\ldots ,a_{m}\\}} heißt ein Element  x = ( x i ) ∈ R m {\displaystyle x=(x_{i})\in \mathbb {R} ^{m}} Inzidenzvektor zur Kantenmenge  M {\displaystyle M} , falls

x i = { 0 , falls  a i ∉ M ∧ a i − 1 ∉ M 1 , falls  a i ∈ M − 1 , falls  a i − 1 ∈ M {\displaystyle x_{i}={\begin{cases}0&{\mbox{, falls }}a_{i}\notin M\land {a_{i}}^{-1}\notin M\\\1&{\mbox{, falls }}a_{i}\in M\\\\-1&{\mbox{, falls }}{a_{i}}^{-1}\in M\\\\\end{cases}}}

gilt. Haben die Kanten zudem ein nichtnegatives Gewicht, werden die Einträge des Vektors mit diesem Gewicht multipliziert. Die Menge aller so beschriebenen Kreise bilden den Zyklenraum, einen Untervektorraum des  F 2 m {\displaystyle \mathbb {F} _{2}^{m}} . Eine Basis des Zyklenraums sind die Fundamentalkreise. Jeder Fundamentalkreis entsteht durch Hinzufügen einer Kante zu einem aufspannenden Baum.

Der Kozyklenraum ist der Vektorraum aller durch Schnitte erzeugten Inzidenzvektoren. Er ist ebenfalls ein Untervektorraum des  F 2 m {\displaystyle \mathbb {F} _{2}^{m}} und ergibt in direkter Summe mit dem Zyklenraum den ganzen Raum. Eine Basis des Kozyklenraums sind die Fundamentalschnitte. Jeder Fundamentalschnitt entsteht durch Weglassen einer Kante eines aufspannenden Baums als Zusammenhangskomponente.

## Algorithmus

[Bearbeiten | Quelltext bearbeiten]

Für jeden Knoten v: visited(v) = false, finished(v) = false
Für jeden Knoten v:
DFS(v)

DFS(v):
if finished(v)
return
if visited(v)
"Zyklus gefunden" und Abbruch
visited(v) = true
für jeden Nachfolger w
DFS(w)
finished(v) = true

Nachfolger bedeutet sowohl für gerichtete als auch ungerichtete Graphen alle mit v verbundenen Knoten, bis auf den, der DFS(v) aufgerufen hat. Dies verhindert, dass der Algorithmus auch die trivialen Zyklen erfasst, was in jedem ungerichteten Graphen mit nichtleerer Kantenmenge stets der Fall ist.

## Literatur

[Bearbeiten | Quelltext bearbeiten]

* R. Diestel: Graphentheorie. 3\. Auflage. Springer, Heidelberg 2005. ISBN 3-540-67656-2

## Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]

1. ↑ a b Edward A. Bender, S. Gill Williamson: Lists, Decisions and Graphs. 2010, S. 164–165 (ucsd.edu).
2. ↑ Reinhard Diestel: Graphentheorie. 3., neu bearb. und erw Auflage. Springer, Berlin, 2006, ISBN 3-540-21391-0, S. 7 ff. (englisch, diestel-graph-theory.com).