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 6 Patrick Reuter

Présentations similaires


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

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

2 Arbre binaire de recherche procedure nomducle(noeud : p_t_noeud; cle : integer); Max Nat Rol PoloTony

3 procedure nomducle(noeud : p_t_noeud; cle : integer); begin if (noeud = NIL) then WriteLn('existe pas') else if (noeud^.cle = cle) then WriteLn('Solution ', noeud^.nom) else if (noeud^.cle > cle) then nomducle(noeud^.gauche, cle) else nomducle(noeud^.droite, cle); end; Complexité ??

4 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)

5 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

6 Matrice dadjacence Pour des graphes orientés et non-orientés Soit G = (V,E) avec V = {v 1, v 2, …, v n } La matrice dadjacence A est une matrice quadratique binaire de taille n x n avec A i,k = 1 si (v i, v 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

7 Exemple A = v1v2 v3 v4 v5 de à

8 Algorithmes sur les graphes Comment trouver une chaîne entre s et t ? Comment savoir si un graphe est connexe ? Comment savoir si un graphe est eulérien ? …

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

10 Définir une structure de données graphe dadjacence Définir un tableau contenant des étiquettes pour chaque sommet

11 Etape 1 : montrer les contacts directs Entrée : Graphe G définie par une matrice dadjacence A et un sommet s défini par son indice procedure montrerContacts(s : integer) début pour i de 1 à nbSommets(G) si (i s ET A[s][i]=1) alors afficher nom[i] à lécran; fin si fin pour fin { Montrer les conacts directs }

12 Définir un tableau contenant un indicateur si un sommet a déjà été visité

13 Etape 2 : montrer les contacts et les contacts des contacts Entrée : Graphe G définie par une matrice dadjacence A et un sommet s défini par son indice procedure montrerContacts(s : integer) Début marquerSommet(s); pour i de 1 à nbSommets(G) si (i s ET A[s][i]=1 ET NOT marqué(i)) alors afficher nom[i] à lécran fin si fin pour fin { Montrer les contacts directs et les contacts des contacts directs }

14 Etape 2 : montrer les contacts et les contacts des contacts Entrée : Graphe G définie par une matrice dadjacence A et un sommet s défini par son indice procedure montrerContacts(s : integer) Début marquerSommet(s); pour i de 1 à nbSommets(G) si (i s ET A[s][i]=1 ET NOT marqué(i)) alors afficher nom[i] à lécran marquerSommet(i); pour j de 1 à nbSommets(G) si (j s ET A[i][j]=1 ET NOT marqué(j)) alors marquerSommet(j); afficher nom[j] à lécran fin si fin pour fin si fin pour fin { Montrer les contacts directs et les contacts des contacts directs }

15 Etape 3 : Reconnaître la récursivité Entrée : Graphe G définie par une matrice dadjacence A et un sommet s défini par son indice procedure montrerContacts(s : integer) Début marquerSommet(s); pour i de 1 à nbSommets(G) si (i s ET A[s][i]=1 ET NOT marqué(i)) alors afficher nom[i] à lécran marquerSommet(i); pour j de 1 à nbSommets(G) si (j s ET A[s][j]=1 ET NOT marqué(j)) alors marquerSommet(j); afficher nom[j] à lécran fin si fin pour fin si fin pour fin { Montrer les contacts directs et les contacts des contacts directs }

16 Etape 4 : Récursivité Entrée : Graphe G définie par une matrice dadjacence A et un sommet s défini par son indice procedure montrerContacts(s : integer) Début marquerSommet(s); pour i de 1 à nbSommets(G) si (i s ET A[s][i]=1 ET NOT marqué(i)) alors afficher nom[i] à lécran montrerContacts(i); fin si fin pour fin { Montrer les conacts directs et les contacts des contacts directs }

17 Vérification des deux conditions dun algorithme récursif La fonction est appelé par elle-même La fonction est protégé par une condition pour ne pas sappeler infiniment –Quand tous les sommets voisins dun sommet sont marqués, la fonction nest plus appelée.


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

Présentations similaires


Annonces Google