La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Algorithmes et structures de données avancées Cours 7 Patrick Reuter

Présentations similaires


Présentation au sujet: "Algorithmes et structures de données avancées Cours 7 Patrick Reuter"— Transcription de la présentation:

1 Algorithmes et structures de données avancées Cours 7 Patrick Reuter

2 Les graphes Un graphe G = (V,E) un couple de deux ensembles –Un ensemble V(G) = {v 1, v 2, …, v n } de sommets (anglais : one vertex, two vertices) –Un ensemble E(G) V x V darêtes (anglais : edges)

3 Définitions Orientation : –les graphes non orientés –les graphes orientés degré boucle parité (sommets pairs et impairs) adjacence, voisin et voisinage sommet isolé sous-graphe, clique Graphe régulier Graphe complet Isomorphisme Chaîne, chaîne simple, cycle Connexité Stockage des graphes

4 Matrice dadjacence Pour des graphes orientés et non-orientés Soit G = (V,E) avec V = {s 1, s 2, …, s n } La matrice dadjacence A est une matrice quadratique binaire de taille n x n avec A i,k = 1 si (s i, s k ) E, A i,k = 0 sinon La matrice dadjacence dun graphe non orienté est symétrique Suivant lordre des nœuds, il y a plusieurs matrice dadjacence du même graphe

5 Graphe de contacts Comment montrer les contacts des contacts des contacts … Patrick Pierre Clémentine Jérôme Petra Luc Axl

6 Matrice dadjacence A = Patrick (1) Pierre (2) Clémentine (3) Jérôme (5) Petra (4) Luc (6) Axl (7)

7 Fermeture transitive La fermeture transitive dun graphe G est le Graphe G* + = (V, E* + ), où une arête (i, j) є E + ssi il y a une chaîne de i à j. Si les chaînes de longueur 0 sont aussi considérées, le résultat est la fermeture transitive et réflexive G*.

8 Fermeture transitive A* =

9 A : Matrice dadjacence Pour une chaîne maximale de longueur n Matrice dadjacence de la fermeture transitive Fermeture transitive

10 G(V,E) : (Matrice dadjacence A): –A i,k = 1 si (s i, s k ) E, A i,k = 0 sinon G*(V,E*) : Fermeture transitive de G (Matrice dadjacence A*) –A* i,k = 1 ssi il y a une chaîne de s i à s k.

11 Logiciels pour le calcul scientifique –Maple –Matlab –Mathematica –Mupad –Scilab –…

12 MuPad Démonstration

13 Algorithme de Warshall permet de construire la fermeture transitive d'un graphe orienté ou non orienté.

14 Algorithme de Warshall À partir de la matrice d'adjacence A du graphe G(V,E), on va calculer la matrice d'adjacence A* de G*(V, E*) On suppose que A k [i,j] représente l'existence d'une chaîne de i à j passant uniquement par des sommets inférieurs ou égaux à k. A k [i,j]=A k-1 [i,j] OU (A k-1 [i,k] ET A k-1 [k,j]) Il existe donc une chaîne de i à j passant seulement par des sommets inférieurs ou égaux à k –s'il existe une chaîne de i à j passants seulement par des sommets inférieurs ou égaux à k-1 –ou alors s'il existe une chaîne de i à k passant par des sommets inférieurs ou égaux à k-1 ET une chaîne de k à j passant par des sommets inférieurs ou égaux à k-1 Matrice dadajcence de G*: A n [i,j]

15 Algorithme de Warshall Entrée : Matrice dadjacence A pour k de 1 à |V(G)| faire pour i de 1 à |V(G)| faire pour j de 1 à |V(G)| faire if (A[i][j]=1 OU (A[i][k]=1 ET A[k][j]=1)) A[i][j]=1 else A[i][j]=0 A[i][j] = A[i][j] OU (A[i][k] ET A[k][j]) Sortie : A est la matrice décrivant la fermeture transitive

16 Algorithme de Warshall Complexité –O(n 3 ) –il peut être intéressant de construire la fermeture transitive d'un graphe une fois pour toute, on peut savoir si les sommets s i et s j appartiennent à la même composante connexe en un temps constant

17 Peut-on utiliser la fermeture transitive pour tester si un graphe est connexe ?

18 Connexité La notion de connexité exprime la possibilité d'aller de n'importe quel sommet du graphe à n'importe quel autre sommet du graphe. Plus formellement : Un graphe G est connexe si et seulement si s, t V(G), il existe une chaîne entre s et t.

19 Graphe connexe/complet Un graphe G est connexe si et seulement si s, t V(G), il existe une chaîne entre s et t. Un graphe G est complet si et seulement si s, t V(G), il existe une arête entre s et t.

20

21 Récapitulatif des preuves Preuve par récurrence Preuve par contradiction Preuve par construction

22 Preuve preuve par induction ou preuve par récurrence Une preuve par induction contient deux parties : –le cas de base –et la partie d'induction.

23 Preuve par contradiction Raisonnement par labsurde : Lidée dune telle preuve est de supposer que lénoncé est fausse, puis de montrer que cette supposition conduit à une contradiction. Puisque la logique ne peut être contradictoire, cest la supposition qui est fausse, et par conséquent lénoncé est vrai.

24 Preuve par construction Cette preuve nous prouve non seulement l'existence d'un objet, mais aussi une méthode pour le trouver Une telle preuve est toujours plus appréciée par un informaticien qu'une preuve qui indique seulement qu'un objet existe. La raison est que l'informaticien peut souvent convertir une preuve constructive en un algorithme pour trouver l'objet. De manière générale, une preuve constructive est toujours plus convaincante qu'une preuve d'existence.

25 Preuve No. 1 –Par récurrence

26 Théorème : s V(G) d(s) = 2 | E(G) | « La somme de degrés de tous les sommets est égal à deux fois le nombre darêtes »

27 Technique de preuve par induction Preuve : Vérifier que s V(G) d(s) = 2 | E(G) | pour un graphe sans arête Supposer que s V(G) d(s) = 2 | E(G) | pour n'importe quel graphe avec au plus k arêtes, Prouver que si s V(G) d(s) = 2 | E(G) | est vrai pour n'importe quel graphe avec au plus k arêtes, c'est aussi vrai pour n'importe quel graphe avec k+1 arêtes.

28 La preuve du théorème (1/2) Par induction sur le nombre d'arêtes dans le graphe. –(cas de base) La propriété est trivialement vraie pour un graphe avec |E| = 0, car le degré de chaque sommet du graphe est 0. –(hypothèse d'induction) On suppose que pour un graphe G avec au moins un sommet et au plus k arêtes, s V(G) d(s) = 2 | E(G) |

29 La preuve du théorème (2/2) (induction) Nous construisons un graphe G' en rajoutant une arête à G. Les sommets extrémités de la nouvelle arête, disons s 1 et s 2 (il est possible que s 1 et s 2 soient le même sommet), vont avoir leur degré augmenté de 1 chacun. Il est donc vrai que s V(G) d(s) = s V(G) d(s) + 2. De plus, nous avons rajouté une arête dans G'. Par conséquent |E(G')| = |E(G)| + 1. Donc, s V(G) d(s) = s V(G) d(s) + 2 = 2|E(G)|+ 2 = 2(|E(G)| + 1) = 2|E(G')|. Nous avons donc s V(G) d(s) = 2|E(G')| Nous avons donc prouvé la propriété par récurrence.


Télécharger ppt "Algorithmes et structures de données avancées Cours 7 Patrick Reuter"

Présentations similaires


Annonces Google