La fermeture transitive d’un graphe génère un graphe auquel on à rajouté des arcs reliant le sommet i au sommet j s’il existe un chemin reliant le sommet i au sommet j ou si .
Exemple
Soit le graphe orienté suivant :
Et sa matrice booléenne :
La matrice booléenne correspondant à la fermeture transitive du graphe G est :
Cela signifie qu’à partir du sommet 1 on peut accéder aux sommets 2, 3, 4, 5 et 6 du graphe et qu’à partir du sommet 6 on ne peut accéder à aucun sommet du graphe.
Conclusion : La fermeture transitive d’un graphe permet de répondre à la question : "existe t’il un chemin de x à y pour tout couple de sommet du graphe ?"
Algorithme de Warshall
Warshall est parti de l’observation suivante : S’il existe un moyen d’aller du sommet x vers le sommet y ET un moyen d’aller du sommet y vers le sommet z alors il existe un moyen d’aller du sommet x vers le sommet z.\\
Algorithme :
M' = M Pour i allant de 1 à N faire M'[i][i] = 1 Fin Pour Pour k allant de 1 à N faire Pour i allant de 1 à N faire Pour j allant de 1 à N faire M'[i][j] = M'[i][j] OU (M'[i][k] ET M'[k][j]) Fin Pour Fin Pour Fin Pour
L’idée de l’algorithme est de déterminer les chemins passant par le sommet 1, le sommet 2, le sommet 3,... le sommet N. Ce qui se fait en calculant M pour , , ..., [1]br>
Méthode matricielle
Voir la figure Exemple de graphe orienté pour réaliser la fermeture transitive
Et M sa matrice booléenne :
On a vu précédemment qu’on pouvait élever la matrice M au carré, au cube, ..., à la puissance k pour déterminer le nombre de chemis de longueur 2, 3, ..., k.
On se propose ici d’élever la matrice M au carré, au cube, ..., à la puissance k en adoptant des lois de composition logique pour la multiplication et l’addition.
On note les matrices obtenues à partir des lois de composition , , pour les différencier des matrices booléennes calculées à partir des lois de composition usuelles. Ces matrices nous permettent de savoir s’il existe au moins un chemin de longueur 2, 3, ..., k dans le graphe.
Calcul de
La présence d’un 1 à l’intersection de la ligne i et de la colonne j de indique qu’il existe au moins un chemin de longueur k entre les sommets i et j
De la même façon on peut calculer les matrices , , et si l’on procède à la somme booléenne on obtient une matrice P dans laquelle la présence d’un 1 à l’intersection de la ligne i et de la colonne j indique qu’il existe au moins un chemin de longueur inférieure ou égale à 5 entre les sommets i et j.
On s’aperçoit que la matrice P ne donne pas la fermeture transitive du graphe car elle n’est pas composée de 1 sur la diagonale, il faut donc rajouter à l’expression la matrice identité I composée de 1 sur la diagonale et de 0 partout ailleurs. On obtient donc l’expression suivante donnant la fermeture transitive :
Plus généralement, dans un graphe de N sommets, la somme booléenne suivante donne la fermeture transitive du graphe :
[1] La matrice obtenue pour donne la fermeture transitive du graphe