par ghghgh » 24 Nov 2007, 18:05
en gros un parcours en profondeur c'est :
parcours(noeudCourant)
llll si noeudCourant n'est pas valide
llll llll Retourner
llll pour tout voisin de noeudCourant
llll llll si voisin n'est pas marque
llll llll llll marque voisin
llll llll llll parcours(noeudVoisin)
voilà pour ce qui est du parcours en prof, pour chaque noeud, tu le marques, et tu rappelles sur tout les voisins, (tu peux le faire en récursif, comme ce que j'ai écris, ou tu peux le gérer avec une pile lifo qui contient les sommets à explorer, tu dépiles un sommet, et tu empiles les voisins non encore explorés)
pour le parcours en largeur :
soit F, une file fifo
parcours()
llll F = vide
llll F.ajouter(noeudDepart)
llll tant que file n'est pas vide
llll llll noeudCourant = F.debut()
llll llll marquer noeudCourant
llll llll pour tout voisin de noeudCourant
llll llll llll si voisin n'est pas marqué
llll llll llll llll F.ajouter(voisin)
et voilà, c'est pas bien compliqué, tu as
1. du papier et des crayons pour t'aider
2. google, notamment wikipedia
après pour l'implémentation en C++, ça dépend sur quel "noeud/objet" tu vas travailler, ce qui va te rendre la tâche plus ou moins difficile, mais si tu utilises les structures de la STL,
#include #include stack maPile; queue maFile;
tu ne devrais pas avoir trop de problèmes :)
bon courage