1 Licence d’informatique Algorithmique des graphes Cours 3 deuxième partie : Opérations et relations entre graphes. Composition, puissances. 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.
2 Opérations entre graphes G (X) = ensemble des graphes construits sur l’ensemble de sommets X G G2
3 Relation d’ordre : graphe partiel G1 G1 G2 G2
4 Elément MINIMAL : (X, ) Elément MAXIMAL : (X, X 2 ) Relation d’ordre : graphe partiel
5 G1 G2 = (X, 1 2) G1 G2Union G1 G
6 G1 G2 = ( X, 1 2 ) G1 G1 G G2Composition
7 z : 1 z n : G1.validarc(x,z) et G2.validarc(z,y) Formellement, on a donc : (x, y) 1 2
8 EVALUATION DE z : 1 z n : G1.validarc(x,z) et G2.validarc(z,y) z : 1 z n : P(z) INVARIANT 1kk+1n 1 k n et b= z : 1 z k : P(z) si b alors « succès » sinon {non b et k=n } « échec » ARRET z b kk+1n1 OU k = n 1
9 EVALUATION DE z : 1 z n : G1.validarc(x,z) et G2.validarc(z,y) z : 1 z n : P(z) INVARIANT 1kk+1n 1 k n et b= z : 1 z k : P(z) b ou k = n si b alors « succès » sinon {non b et k=n } « échec » ARRET PROGRESSION {non b et k<n} k+1n1k k
10 EVALUATION DE z : 1 z n : G1.validarc(x,z) et G2.validarc(z,y) z : 1 z n : P(z) INVARIANT 1kk+1n 1 k n et b= z : 1 z k : P(z) k := k+1 ; b := P(k) b ou k = n si b alors « succès » sinon {non b et k=n } « échec » ARRET PROGRESSION {non b et k<n} k+1n1k k ?
11 EVALUATION DE z : 1 z n : G1.validarc(x,z) et G2.validarc(z,y) z : 1 z n : P(z) INVARIANT 1kk+1n 1 k n et b= z : 1 z k : P(z) PROGRESSION {non b et k<n}k := k+1 ; b := P(k) b ou k = n si b alors « succès » sinon {non b et k=n } « échec » ARRET k := 1 ; b := P(1) INIT 1k=0n
12 GRAPHE composer (GRAPHE G1, G2) pré égal (G1.lst_som, G2.lst_som) local SOMMET x, y, k ; BOOLEAN b debut Result.inivide ; pourtout x de G1.lst_som pourtout y de G2.lst_som depuis k := 1 ; b := G1.validarc(x, 1) et G2.validarc(1, y) jusqu’à b ou k = G1.nb_som faire k := k+1 ; b := G1.validarc(x, k) et G2.validarc(k, y) fait ; si b alors Result.ajoutarc(x,y) fsi fpourtout fin
13 pourtout x de G1.sommets > n étapes pourtout y de G1.sommets > n étapes depuis k := 0 ; b := faux jusqu’à b ou k = G1.nb_sommets > au pire n étapes faire k := k+1 ; b := G1.valid_arc(x, k) et G2.valid_arc(k, y) 2 accès n 3 fait ; si b alors Result.ajout_arc(x,y) fsi 1 accès n 2 COMPLEXITE Soit un algorithme en O(n 3 )
14 3F 3H 2F 3H 2F 2H 1F 3H 3F 3H 1F 1H 2F 1F 0 Gv Gr 3F 3H 2F 3H 2F 2H 1F 3H 3F 3H 1F 1H 2F 1F 0 GvGr
15 3F 3H 2F 3H 2F 2H 1F 3H 3F 3H 1F 1H 2F 1F 0 3F 3H 2F 3H 2F 2H 1F 3H 3F 3H 1F 1H 2F 1F 0 Union Graphe partiel de Gv aboutissant à 0
16 Puissances d’un graphe p 2 : G [p] = G [p-1] G G [1] = G Interprétation concrète : p 1 : (x, y) [p] I l existe un chemin de longueur p allant de x à y
17 IIl existe z, il existe un chemin de longueur p allant de x à z et un arc (z, y) (Hypothèse de récurrence) Démonstration : Par récurrence sur p Cas de base : p = 1 (x, y) [1] Il existe un chemin de longueur 1 allant de x à y Vrai, puisque [1] et les chemins de longueur 1 sont les arcs I nduction : vrai pour p vrai pour p+1 xzy p1 p+1 Il existe z, (x, z) [p] et (z, y) (Définition de ) (x, y) [p+1] (x, y) [p] Il existe un chemin de longueur p+1 allant de x à y