1
Licence d’informatiqueAlgorithmique 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 graphesOpérations entre graphes
G(X) = ensemble des graphes construits sur l’ensemble de sommets X
1
9 2
3
4
8
6 57
G1
1
9 2
3
4
8
6 57
G2
3
Relation d’ordre : graphe partielRelation d’ordre : graphe partiel
1
9 2
3
4
8
6 57
G1
G1 G2
1
9 2
3
4
8
6 57
G2
4
Elément MINIMAL : (X,) Elément MAXIMAL : (X, X2)
19
2
3
4
8
6
5
7
19
2
3
4
8
6
5
7
Relation d’ordre : graphe partielRelation d’ordre : graphe partiel
5
G1 G2 = (X, 1 2)
G1 G2
UnionUnion
1
9 2
3
4
8
6 57
G1 G2
1
9 2
3
4
8
6 57
1
9 2
3
4
8
6 57
1
9 2
3
4
8
6 57
6
G1 G2 = ( X, 1 2 )
1
9 2
3
4
8
G1
G1 G2
1
9 2
3
4
8
1
9 2
3
4
8
G2
CompositionComposition
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
1 k k+1 n
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
k k+1 n1OU
k = n1 k=n
9
EVALUATION DE z : 1 z n : G1.validarc(x,z) et G2.validarc(z,y)
z : 1 z n : P(z)
INVARIANT
1 k k+1 n
1 k n et b= z : 1 z k : P(z)
b ou k = nsi b alors « succès »
sinon {non b et k=n } « échec »
ARRET
PROGRESSION
{non b et k<n}
k+1 n1 kk k+1
10
EVALUATION DE z : 1 z n : G1.validarc(x,z) et G2.validarc(z,y)
z : 1 z n : P(z)
INVARIANT
1 k k+1 n
1 k n et b= z : 1 z k : P(z)
k := k+1 ;
b := P(k)
b ou k = nsi b alors « succès »
sinon {non b et k=n } « échec »
ARRET
PROGRESSION
{non b et k<n}
k+1 n1 kk k+1
?
11
EVALUATION DE z : 1 z n : G1.validarc(x,z) et G2.validarc(z,y)
z : 1 z n : P(z)
INVARIANT
1 k k+1 n
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 = nsi b alors « succès »
sinon {non b et k=n } « échec »
ARRET
k := 1 ;
b := P(1)
INIT1k=0 n
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
fpourtout
fin
13
pourtout x de G1.sommets ---------------------------------------------> n étapes pourtout y de G1.sommets --------------------------------> n
étapesdepuis k := 0 ; b := faux
jusqu’à b ou k = G1.nb_sommets ---------> au pire n étapesfaire
k := k+1 ;
b := G1.valid_arc(x, k) et G2.valid_arc(k, y)
2 accès n3
fait ;
si b alors Result.ajout_arc(x,y) fsi
1 accès n2
COMPLEXITE
Soit un algorithme en O(n3)
14
3F3H
2F3H
2F2H
1F3H
3F
3H
1F1H
2F
1F
0
Gv
Gr
3F3H
2F3H
2F2H
1F3H
3F
3H
1F1H
2F
1F
0
Gv Gr
15
3F3H
2F3H
2F2H
1F3H
3F
3H
1F1H
2F
1F
0
3F3H
2F3H
2F2H
1F3H
3F
3H
1F1H
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] Il existe un chemin de longueur p allant de x à y
17
Il 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
• Induction : vrai pour p vrai pour p+1
x z yp 1
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