1 Licence d’informatique Algorithmique des graphes Cours 3 deuxième partie : Opérations et...

Post on 04-Apr-2015

144 views 2 download

Transcript of 1 Licence d’informatique Algorithmique des graphes Cours 3 deuxième partie : Opérations et...

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