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

Présentations similaires


Présentation au sujet: "Algorithmes et structures de données avancées Cours 7"— 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) = {v1, v2, …, vn} de sommets (anglais : one vertex, two vertices) Un ensemble E(G)  V x V d’arê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 d’adjacence Pour des graphes orientés et non-orientés
Soit G = (V,E) avec V = {s1, s2, …, sn} La matrice d’adjacence A est une matrice quadratique binaire de taille n x n avec Ai,k = 1 si (si, sk)  E, Ai,k = 0 sinon La matrice d’adjacence d’un graphe non orienté est symétrique Suivant l’ordre des nœuds, il y a plusieurs matrice d’adjacence du même graphe

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

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

7 Fermeture transitive La fermeture transitive d’un 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 Fermeture transitive A : Matrice d’adjacence
Pour une chaîne maximale de longueur n  Matrice d’adjacence de la fermeture transitive

10 G(V,E) : (Matrice d’adjacence A):
Ai,k = 1 si (si, sk)  E, Ai,k = 0 sinon G*(V,E*) : Fermeture transitive de G (Matrice d’adjacence A*) A*i,k = 1 ssi il y a une chaîne de si à sk.

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 Ak[i,j] représente l'existence d'une chaîne de i à j passant uniquement par des sommets inférieurs ou égaux à k. Ak[i,j]=Ak-1[i,j] OU (Ak-1[i,k] ET Ak-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 d’adajcence de G*: An[i,j]

15 Algorithme de Warshall
Entrée : Matrice d’adjacence 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(n3) il peut être intéressant de construire la fermeture transitive d'un graphe une fois pour toute,  on peut savoir si les sommets si et sj 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 l’absurde : L’idée d’une 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 , c’est 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 d’arêtes »

27 Technique de preuve par induction
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 s1 et s2 (il est possible que s1 et s2 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"

Présentations similaires


Annonces Google