---
title: Transitive Hülle
date: 2018-11-07
---

Gegeben eine endliche Menge $V$ und eine Relation $R$ auf $V$, d.h. $R
\subseteq V \times V$.

Zwei Elemente $u,v \in V$ stehen in Relation, falls $(u, v) \in R$.


**Frage**: Wie findet man die kleinste transitive Hülle von $R^+$ mit $R
\subseteq R^+$?

$R^+$ heißt transitive Hülle von $R$.

Als Graphenproblem:

Wir modellieren "in relation stehen" durch Kanten


# Definition (Transitive Hülle)

Sei $G=(V,E)$ ein gerichteter Graph. Der Graph $G^+ = (V,E^+)$ mit $E^+ = \{
(v,b) | u,v \in V, (u \rightsquigarrow v) \in G \}$ heißt **transitive Hülle**
von $G$.


**Beispiel**: ![Graph](20181107_1-dg.png)

![Transitive Hülle](20181107_2-trans_closure.png) ist die transitive Hülle von
obigem Graph.


# Algorithmus (Berechnen der Transitiven Hülle; Warshall)

Für einen gerichteten Graphen $G=(V,E)$ mit $V=\{1,...,n\}$ betrachte die
Adjazenzmatrix von $G$ definiert als $A[i,j] = \begin{cases}
1 & (i,j) \in E \\
0 & (i,j) \notin E
\end{cases}$

**Bemerkung**: $A$ ist im allgemeinen nicht mehr symmetrisch (anders als bei
ungerichteten Graphen).

**Idee**: Ausgehend von $A$ schrittweise die Adjazenzmatrix der transitiven
Hülle zu berechnen.

Für $k \in \{0, ..., n\}$ definieren wir Matrizen $T_k$ rekursiv als
$T_k[i,j] = \begin{cases}
1 & \text{falls es einen $i$-$j$-Pfad mit Zwischenknoten aus } \{1, ...,
k\} \text{ gibt} \\
0 & \text{sonst}
\end{cases}$.

Dann gilt $T_0 = A$ (Adjazenzmatrix) und $T_n$ ist die Adjazenzmatrix der
transitiven Hülle

Wir wollen $T_k$ rekursiv aus $T_{k-1}$ berechnen (für $k \geq 1$). Es gilt
$T_k[i,j] = max \{ T_{k-1}[i,j], T_{k-1}[i,k] \cdot T_{k-1}[k,j] \}$, d.h.
$T_k[i,j] = 1$ genau dann, wenn $T_{k-1}[i,j] = 1$ oder $T_{k-1}[i,k] = 1$ und
$T_{k-1}[k,j] = 1$.

Die $i$-$j$-Pfade mit Zwischenknoten aus $\{1,...,k\}$ zerfallen in 2 Fälle:

i) $i$-$j$-Pfade mit Zwischenknoten aus $\{1,...,k-1\}$
i) $i$-$j$-Pfade, die den Knoten $k$ als Zwischenknoten enthalten


Pfade im Fall

i) gibt es, falls $T_{k-1}[i,j] = 1$
i) gibt es, falls $T_{k-1}[i,k] = 1$ und $T_{k-1}[k,j] = 1$


## Algorithmus im Pseudocode

**Eingabe**: Adjazenzmatrix $A$ von $G=(V,E)$ (gerichteter Graph)

**Ausgabe**: Adjazenzmatrix der transitiven Hülle

i) $W = A$
i) `for` $k$ `in` $\{1,...,n\}$ `do`

    `for` $i$ `in` $\{1,...,n\}$ `do`

    `for` $j$ `in` $\{1,...,n\}$ `do`

    $W[i,j] = max \{ W[i,j], W[i,k] \cdot W[k,j] \}$
    
i) Ausgabe $W$


**Laufzeit**: $O(n^3)$

**Korrektheit**: Basiert auf Rekusionsformel von oben und der Bemerkung
$T_{k-1}[i,k] = T_k[i,k]$ und $T_{k-1}[k,j] = T_k[k,j]$.

Dies gilt, da Pfade mit Startknoten $i$ und Endknoten $k$ und Zwischenknoten
aus $\{1, ..., k-1\}$ sind (in Pfaden gibt es keine Kotenwiederholungen).

Algorithmus ist Beispiel für dynamische Programmierung, dazu später mehr.
