Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
les_fiches_revisions:algorithmique:algo_graphes [2021/01/14 10:33] lf |
les_fiches_revisions:algorithmique:algo_graphes [2021/01/14 11:03] (Version actuelle) lf |
||
|---|---|---|---|
| Ligne 40: | Ligne 40: | ||
| \\ | \\ | ||
| Si on part du point I on aura un ordre de visite de: I , E , H , C , D , G , H , B , F et A \\ | 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 | + | La distance entre le point I et celui visité est indiqué sur le graphe {{: |
| - | ==== 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.\\ | ||
| - | \\ | ||
| - | < | ||
| - | VARIABLE | ||
| - | G : un graphe | ||
| - | u : noeud | ||
| - | v : noeud | ||
| - | //On part du principe que pour tout sommet u du graphe G, u.couleur = blanc à l' | ||
| - | DEBUT | ||
| - | PARCOURS-PROFONDEUR(G, | ||
| - | u.couleur ← noir | ||
| - | pour chaque sommet v adjacent au sommet u : | ||
| - | si v.couleur n'est pas noir : | ||
| - | PARCOURS-PROFONDEUR(G, | ||
| - | fin si | ||
| - | fin pour | ||
| - | FIN | ||
| - | </ | ||
| - | {{: | ||
| - | \\ | ||
| - | \\ | ||
| - | ====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' | ||
| - | L' | ||
| - | < | ||
| - | 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' | ||
| - | 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 | ||
| - | </ | ||
| - | ====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 | ||
| - | |||
| - | < | ||
| - | VARIABLE | ||
| - | G : un graphe | ||
| - | start : noeud (noeud de départ) | ||
| - | end : noeud (noeud d' | ||
| - | u : noeud | ||
| - | chaine : ensemble de noeuds (initialement vide) | ||
| - | |||
| - | DEBUT | ||
| - | TROUVE-CHAINE(G, | ||
| - | chaine = chaine ⋃ start //le symbol ⋃ signifie union, il permet d' | ||
| - | si start est identique à end : | ||
| - | renvoie chaine | ||
| - | fin si | ||
| - | pour chaque sommet u adjacent au sommet start : | ||
| - | si u n' | ||
| - | nchemin = TROUVE-CHAINE(G, | ||
| - | si nchemin non vide : | ||
| - | renvoie nchemin | ||
| - | fin si | ||
| - | fin si | ||
| - | fin pour | ||
| - | renvoie NIL | ||
| - | FIN | ||
| - | </ | ||