1 Licence d’informatique Algorithmique des graphes Utilisation de ce document strictement réservée aux étudiants de l ’IFSIC dans le cadre de leur formation. Reproduction ou diffusion en dehors de l ’IFSIC strictement interdite sauf autorisation expresse de l’ auteur. Cours numéro 4 : Fermeture transitive. Algorithmes des puissances et de ROY-WARSHALL
2 Existence de chemins (Fermeture transitive) Le problème posé : Donnée : un graphe G = (X, ) Résultat : le graphe de la relation « il existe un chemin de x à y »
3 Pourquoi « Fermeture transitive »? a b c dGraphe non-transitif
4 Pourquoi « Fermeture transitive »? a b c d Graphe non-transitif Fermeture du chemin [a, b, c] a b c d
5 Pourquoi « Fermeture transitive »? a b c d Graphe non-transitif Fermeture du chemin [a, b, c] Fermeture du chemin [b, c, d] a b c d
6 Pourquoi « Fermeture transitive »? a b c d Graphe non-transitif G Fermeture du chemin [a, b, c] Fermeture du chemin [b, c, d] Fermeture du chemin [a, b, c, d] Graphe transitif G + a b c d
7 Pourquoi « Fermeture transitive »? a b c d G + est le « plus petit » graphe transitif contenant G : a b c d
8 Existence de chemins (Fermeture transitive) Donnée : un graphe G = (X, ) Résultat : Propriété : Le problème posé :
9 Calcul de la fermeture transitive: puissances Propriété :
10 Propriété : (p est égal à la plus grande longueur des chemins élémentaires de G) On a alors
11 Algorithme Évaluation efficace de connaissant et G Car la composition est distributive sur l’union
12 Algorithme INVARIANT ARRET INIT PROGRESSION
13 Texte de l ’algorithme GRAPHE Fermeture_transitive_puissance(GRAPHE G) local GRAPHE H debut depuis Result <- G ; H.créer jusqua egal(Result, H) faire H <- Result ; Result <- G (G o H) fait fin Complexité : Occupation mémoire: 3 graphes.
14 Calcul de la fermeture transitive: ROY-WARSHALL Remarque : opération de fermeture locale x prédécesseurssuccesseurs z y x : relie chaque prédécesseur de x à chaque successeur de x x : ferme les chemins de longueur 2 passant par x
15 Calcul de la fermeture transitive: ROY-WARSHALL Remarque : opération de fermeture locale x prédécesseurssuccesseurs z y Formellement :
16 Calcul de la fermeture transitive: ROY-WARSHALL Formellement : La propriété de ROY-WARSHALL stipule que la composition des opérations x la composition des opérations x appliquée à a pour résultat la fermeture transitive
17 Exemple : Notation : (x, y) V i il existe un chemin élémentaire de x à y, de longueur 1 ou passant par les sommets intermédiaires de numéro i
18 Notation : (x, y) V i il existe un chemin élémentaire de x à y, de longueur 1 ou passant par les sommets intermédiaires de numéro i Propriété : Démonstration : récurrence sur i Cas de base : i=1.
19 Réduction élémentaire sommets i sommets i+1 i+1 y z { Induction : vrai pour i implique vrai pour i+1.
20
21 Réciproquement : y z sommets i+1 y z sommets i y z i+1 ou
22 Réciproquement : y z sommets i+1
23 Réciproquement : y z sommets i+1
24
25 Propriété : Corollaire : Notation : (x, y) V i il existe un chemin élémentaire de x à y, de longueur 1 ou passant par les sommets intermédiaires de numéro i
26 Texte de l ’algorithme GRAPHE Roy_Warshall(GRAPHE G) debut Result <- G ; pour tout x de G.lst_som -- opération theta(x) pour tout y de G.lst_som si Result.valid_arc(y,x)-- y prédécesseur de x alors pour tout z de G.lst_som si Result.valid_arc(x,z)-- z successeur de x alors Result.ajout_arc(y,z) fsi fpour -- z fsi fpour -- y fpour -- x fin
27 Roy_Warshall(G: GRAPHE) : GRAPHE c ’est debut Result <- G ; pour tout x de G.lst_som -- opération theta(x) pour tout y de G.lst_som si Result.valid_arc(y,x)-- y prédécesseur de x alors pour tout z de G.lst_som si Result.valid_arc(x,z)-- z successeur de x alors Result.ajout_arc(y,z) fsi fpour -- z fsi fpour -- y fpour -- x fin Complexité : Occupation mémoire: 1 graphe.
X X X XX X X X X X XX
X X X XX X X X X X XX FERMETURE TRANSITIVE
X X X XX X X X X X XX Opération 1
X X X XX X X X X X XX Opération 1
X X X XX X X X X X XX Opération 1
X X X XX X X X X X XX X Opération 1
X X X XX X X X X X XX X X Opération 1
X X X XX X X X X X XX 1 1 Opération 2
X X X XX X X X X X XX 1 1 XXX Opération 3
X X X XX X X X X X XX XXX Opération 4
X X X XX X X X X X XX X 1 Opération 5
X X X XX X X X X X XX X 1 Opération 5
X X X XX X X X X X XX Opération 6
X X X XX X X X X X XX Opération 6
X X X XX X X X X X XX Opération 6
X X X XX X X X X X XX Opération 6
X X X XX X X X X X XX Opération 7
X X X XX X X X X X XX Opération 7
X X X XX X X X X X XX Opération 7
X X X XX X X X X X XX Opération 7
X X X XX X X X X X XX Opération 7
X X X XX X X X X X XX Opération 7
X X X XX X X X X X XX Opération 7
X X X XX X X X X X XX Opération 7
X X X XX X X X X X XX Opération 8
X X X XX X X X X X XX FERMETURE TRANSITIVE
54 Exemple de tracé de chemin CHEMIN DE 1 à X X XX X X X X XX X ==> 8 ==> 2 X
55 Exemple de tracé de chemin CHEMIN DE 1 à X X XX X X X X XX X ==> 8 ==> 2 1 ==> 7 ==> 8 ==> 3 ==> 2 X
56 Exemple de tracé de chemin CHEMIN DE 1 à X X XX X X X X XX X ==> 8 ==> 2 1 ==> 7 ==> 8 ==> 3 ==> > 6 ==> 7 --> 8 --> 3 --> 2 X
57 Exemple de tracé de chemin CHEMIN DE 1 à X X XX X X X X XX X ==> 8 ==> 2 1 ==> 7 ==> 8 ==> 3 ==> > 6 ==> 7 --> 8 --> 3 --> 2 X 1 ---> 6 ==> 5 ==>7 --> 8 --> 3 --> 2
58 Exemple de tracé de chemin CHEMIN DE 1 à X X XX X X X X XX X ==> 8 ==> 2 1 ==> 7 ==> 8 ==> 3 ==> > 6 ==> 7 --> 8 --> 3 --> 2 X 1 ---> 6 ==> 5 ==>7 --> 8 --> 3 --> > 6 ==> 4 ==> 5 -->7 --> 8 --> 3 --> 2
59 Exemple de tracé de chemin CHEMIN DE 1 à X X XX X X X X XX X ==> 8 ==> 2 1 ==> 7 ==> 8 ==> 3 ==> > 6 ==> 7 --> 8 --> 3 --> 2 X 1 ---> 6 ==> 5 ==>7 --> 8 --> 3 --> > 6 ==> 4 ==> 5 -->7 --> 8 --> 3 --> > 6 --> 4 --> 5 -->7 --> 8 --> 3 --> 2