Relationen und Matrizen

 Sei R eine Relation auf der endlichen Menge M = { 1, …, n }. Visualisieren wir die Beziehungen a R b für alle a, b  ∈  M durch einen Pfeil von a nach b, so ist folgende Frage natürlich:

Gibt es für einen Startpunkt s  ∈  M und ein Ziel z  ∈  M einen R-Zug von s nach z?

Dabei ist ein R-Zug der Länge k ≥ 1 von s nach z eine Folge a0, …, ak in M mit a0 = a, ak = z und ai R ai + 1 für alle i < k.

 Zur Untersuchung der Frage definieren wir für zwei Relationen S1 und S2 auf M ihre Verknüpfung S1 ∘ S2 durch:

S1  ∘  S2 =  { (a, c) | es gibt ein b  ∈  M mit a S1 b und b S2 c }.

Nun definieren wir rekursiv für alle k ≥ 1:

R1  =  R,  Rk + 1  =  Rk ∘ R  für alle k.

Eine Induktion nach k ≥ 1 zeigt, dass für alle a, b  ∈  M und alle k ≥ 1 gilt:

a Rk b  gdw  „es gibt einen R-Zug der Länge k von a nach b“.

 Gibt es einen R-Zug von a nach b, so gibt es auch einen R-Zug von a nach b, dessen Länge kleinergleich der Anzahl n der Elemente von M ist (Herausschneiden von Schleifen). Damit lautet unsere Frage:

Gibt es ein k ≤ n mit s Rk z?

Ist R reflexiv, so gilt, wie man leicht einsieht, R = R1 ⊆ … ⊆ Rn, und dann vereinfacht sich unsere Frage zu:

Gilt s Rn z?

 Die transitive Hülle R* von R ist definiert als die kleinste transitive Relation, die R als Teilmenge enthält. Nach unseren Überlegungen gilt also R* = Rn, falls R reflexiv ist, und R* = ⋃1 ≤ k ≤ n Rk in jedem Fall (siehe Übungen).

 Für eine effektive Berechnung der transitiven Hülle von R sind 0-1-Matrizen nützlich.

Definition (darstellende Matrix von R)

Die darstellende Matrix AR = (ai j)i j von R ist definiert durch

aij=1falls iRj,0sonst.

 So stellt zum Beispiel die Matrix auf der linken Seite die auf der rechten Seite visualisierte Relation R auf { 1, …, 5 } dar:

grundbegriffe-AbbID41

 Wir führen nun eine neue „logische“ Multiplikation für 0-1-Matrizen ein, die die Verknüpfung S1 ∘ S2 von Relationen beschreibt. Hierzu definieren wir eine Addition auf { 0, 1 } durch:

0 + 0  =  0,  0 + 1  =  1 + 0  =  1 + 1  =  1. (logische 0-1-Addition)

Diese Addition entspricht der Wahrheitswertfunktion des Junktors „oder“. Die übliche Multiplikation auf { 0, 1 } entspricht bereits der Wahrheitswertfunktion des Junktors „und“. Im folgenden bedeutet + immer die logische Addition. So ist z. B. (0, 1, 1, 0) + (1, 1, 0, 0) = (1, 1, 1, 0), usw.

 Mit diesen Operationen definieren wir nun:

Definition (logische Matrizenmultiplikation)

Seien A, B (n × n)-Matrizen mit 0-1-Einträgen. Dann ist das logische Produkt A ∗ B von A und B die (n × n)-Matrix C = (ci j)i j mit

ci j  =  1 ≤ k ≤ n ai k bk j  =  ai 1 · b1 j  +  …  +  ai n · bn j  für alle 1 ≤ i, j ≤ n.

 Diese Matrizenmultiplikation folgt also wieder der Regel „Zeile mal Spalte“, lediglich die Arithmetik der Addition ist modifiziert.

 Es gilt wieder A · (B · C) = (A · B) · C für alle 0-1-Matrizen A, B, C, wie man leicht nachrechnet. Die Assoziativität folgt aber auch aus dem folgenden Satz, der den Zusammenhang mit der Verknüpfung von Relationen herstellt.

Satz (Verknüpfung von Relationen und logische Matrizenmultiplikation)

Seien S1, S2 Relationen auf M = { 1, …, n }. Dann gilt

AS1  ∘  S2  =  AS1 ∗ AS2.

Beweis

Seien AS1 = (ai j)i j, AS2 = (bi j)i j, AS1 ∗ AS2 = (ci j)i j.

Dann gilt für alle i, j:

ci j  =  1 gdw
1 ≤ k ≤ n ai k bk j  =  1 gdw
es gibt ein 1 ≤ k ≤ n mit ai k bk j = 1 gdw
es gibt ein 1 ≤ k ≤ n mit ai k = 1 und bk j = 1 gdw
es gibt ein 1 ≤ k ≤ n mit (i, k)  ∈  S1 und (k, j)  ∈  S2gdw

(i, j)  ∈  S1 ∘ S2.

Korollar

Es gilt ARk  =  (AR)k  für alle k ≥ 1.

 Wir können also die transitive Hülle R* von R berechnen, indem wir für A = AR der Reihe nach die Produkte

A ∗ A = A2,  A2 ∗ A = A3,  …,  An

berechnen. Ist R reflexiv, so ist An die darstellende Matrix AR* von R*. Allgemein ist AR* die punktweise logische Addition der Matrizen A1, …, An. Diese Berechnung von R* benötigt aber unnötig viele Rechenschritte, und wir wollen deswegen noch einen effizienteren Algorithmus vorstellen.

Der Warshall-Algorithmus

 Sei wieder R eine Relation auf M = { 1, …, n }. Wir definieren für alle k ≤ n eine Relation R(k) auf M durch:

i R(k) j  falls  „es gibt einen R-Zug i = a0, …, am = j mit 1 ≤ a1, …, am − 1 ≤ k“

für alle i, j  ∈  M. Offenbar gilt:

R  =  R(0)  ⊆  R(1)  ⊆  …  ⊆  R(n)  =  „die transitive Hülle von R“.

 Bei diesen Relationen steht der obere Index also nicht für die Länge eines R-Zuges, sondern für die Menge { 1, …, k } der Elemente von M, die für einen R-Zug verwendet werden dürfen.

 Der sog. Algorithmus von Warshall berechnet nun in effektiver Weise die darstellenden Matrizen der Relationen R(k). Wir formulieren das Verfahren vorab und beweisen dann, was es leistet.

Algorithmus von Warshall

Sei A eine (n × n)-Matrix mit 0-1-Einträgen. Wir definieren rekursiv (n × n)-Matrizen A(k) mit 0-1-Einträgen für alle k ≤ n. Das Ergebnis der Berechnung ist die Matrix A(n).

Zunächst setzen wir A(0) = A. Sei nun A(k) definiert für ein k < n. Für alle 1 ≤ i ≤ n mit A(k)(i, k + 1) = 1 sei die i-te Zeile von A(k + 1) die punktweise logische Summe der i-ten und (k + 1)-ten Zeile von A(k). Die anderen Zeilen von A(k + 1) übernehmen wir unverändert aus der Matrix A(k).

 Ist die Matrix A(k) berechnet, so ist die (k + 1)-te Spalte die „aktive“ Spalte und die (k + 1)-te Zeile die „aktive“ Zeile. Die Einsen der aktiven Spalte markieren genau diejenigen Zeilen, auf die wir die aktive Zeile logisch addieren. Die aktive Spalte und Zeile bleiben dabei, wie man leicht sieht, unverändert.

 Wir zeigen nun:

Satz (Korrektheit des Warshall-Algorithmus)

Sei A = AR die darstellende Matrix von R, und seien A(0), …, A(n) die durch den Warshall-Algorithmus berechneten Matrizen. Dann gilt für alle k ≤ n:

A(k) ist die darstellende Matrix AR(k) der Relation R(k).

Beweis

Wir zeigen die Behauptung durch Induktion nach k ≤ n.

Induktionsanfang k  =  0:

Es gilt A(0) = A = AR = AR(0).

Induktionsschritt von k nach k + 1 für k < n:

Für alle 1 ≤ i, j ≤ n gilt:

A(k + 1)(i, j)  =  1 gdw
A(k)(i, j)  =  1 oderA(k)(i, k + 1)  = 1  und  A(k)(k + 1, j)  = 1 gdwI. V.
(i, j)  ∈  R(k) oder(i, k + 1)  ∈  R(k) und (k + 1, j)  ∈  R(k) gdw
(i, j)  ∈  R(k) oderes gibt 1 ≤ a1, …, am, b1, …, bm′ ≤ k mit i, a1, …, am, k + 1, b1, …, bm′, j ist ein R-Zug gdw

(i, j)  ∈  R(k + 1),

wobei wir für die letzte Rückrichtung die Existenz von R-Zügen verwenden, die kein Element von M mehrfach durchlaufen.

 Damit ist also das Ergebnis A(n) des Warshall-Algorithmus die darstellende Matrix der transitiven Hülle von R.

 Wir beobachten noch, dass wir uns die Matrizen A(i) während der Berechnung nicht merken müssen. Es genügt somit ein „Speicherplatz“ für eine 0-1-Matrix.