Outils pour utilisateurs

Outils du site


les_fiches_revisions:algorithmique:algo_graphes

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
les_fiches_revisions:algorithmique:algo_graphes [2021/01/12 11:18]
lf
les_fiches_revisions:algorithmique:algo_graphes [2021/01/14 10:36]
lf
Ligne 4: Ligne 4:
 •Le parcours en largeur \\ •Le parcours en largeur \\
 •le parcours en profondeur •le parcours en profondeur
 +•Chercher une chaine dans un graphe
  
 ===A quoi ça sert ?=== ===A quoi ça sert ?===
Ligne 36: Ligne 37:
  
 Voyez ce programme comme une tache d'encre qui s'étend. \\ Voyez ce programme comme une tache d'encre qui s'étend. \\
-Le programme va d'abord visiter les taches adjacentes au point de départ pour visiter ceux de plus en plus loin.+Le programme va d'abord visiter les taches adjacentes au point de départ pour visiter ceux de plus en plus loin.\\ 
 +\\ 
 +Si on part du point I on aura un ordre de visite de: I , E , H , C , D , G , H , B , F et A \\ 
 +La distance entre le point I et celui visité est indiqué sur le graphe {{:les_fiches_revisions:algorithmique:image_wiki_nsi.png?400|}} 
 + 
 + 
 +==== Le parcours en profondeur==== 
 + 
 +Dans le cas du parcours en profondeur, on va chercher à aller "le plus loin possible". \\ 
 +La méthode de découverte est unidirectionnelle.\\ 
 +\\  
 +<code> 
 +VARIABLE 
 +G : un graphe 
 +u : noeud 
 +v : noeud 
 +//On part du principe que pour tout sommet u du graphe G, u.couleur = blanc à l'origine 
 +DEBUT 
 +PARCOURS-PROFONDEUR(G,u) : 
 +  u.couleur ← noir 
 +  pour chaque sommet v adjacent au sommet u : 
 +    si v.couleur n'est pas noir : 
 +      PARCOURS-PROFONDEUR(G,v) 
 +    fin si 
 +  fin pour 
 +FIN 
 +</code> 
 +Sur ce graphe on peut voir le chemin pris par l'algorithme.  
 +{{:les_fiches_revisions:algorithmique:algo_graphe.png?400|}} 
 +\\ 
 +\\ 
 +====Cycle dans les graphes==== 
 +Qu'est qu'un cycle ? \\ 
 +Un cycle est tout simplement une boucle dans un graphe, c'est utile pour savoir s'il est possible d'effectuer un parcours qui revient à son point de départ sans être obligé de faire demi-tour.\\ 
 +L'algorithme ci dessous permet de "détecter" la présence d'au moins un cycle dans un graphe. 
 +<code> 
 +VARIABLE 
 +s : noeud (noeud quelconque) 
 +G : un graphe 
 +u : noeud 
 +v : noeud 
 +p : pile (vide au départ) 
 +//On part du principe que pour tout sommet u du graphe G, u.couleur = blanc à l'origine 
 +DEBUT 
 +CYCLE(): 
 +  piler(s,p) 
 +  tant que p n'est pas vide : 
 +    u ← depiler(p) 
 +    pour chaque sommet v adjacent au sommet u : 
 +      si v.couleur n'est pas noir : 
 +        piler(v,p) 
 +      fin si 
 +    fin pour 
 +    si u est noir : 
 +      renvoie Vrai 
 +    sinon : 
 +      u.couleur ← noir 
 +    fin si 
 +  fin tant que 
 +  renvoie Faux 
 +FIN 
 +</code> 
 + 
 +====Chercher une chaine dans un graphe==== 
 +Ici nous cherchons à connaitre le chemin entre deux noeuds\\ 
 +:!: cet algorithme renvoie un chemin, ce n'est pas forcement le plus court 
 + 
 +<code> 
 +VARIABLE 
 +G : un graphe 
 +start : noeud (noeud de départ) 
 +end : noeud (noeud d'arrivé) 
 +u : noeud 
 +chaine : ensemble de noeuds (initialement vide) 
 + 
 +DEBUT 
 +TROUVE-CHAINE(G, start, end, chaine): 
 +  chaine = chaine ⋃ start //le symbol ⋃ signifie union, il permet d'ajouter le noeud start à l'ensemble chaine 
 +  si start est identique à end : 
 +    renvoie chaine 
 +  fin si 
 +  pour chaque sommet u adjacent au sommet start : 
 +    si u n'appartient pas à chaine : 
 +      nchemin = TROUVE-CHAINE(G, u, end, chaine) 
 +      si nchemin non vide : 
 +        renvoie nchemin 
 +      fin si 
 +    fin si 
 + fin pour 
 + renvoie NIL 
 +FIN 
 +</code> 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
  
  
-==== Le parcours en largeur ==== 
  
  
les_fiches_revisions/algorithmique/algo_graphes.txt · Dernière modification: 2021/01/14 11:03 de lf