ioCode
Parcours en largeur
Graphes • Exercices 1A
Cet exercice conduit à l'implémentation du parcours en largueur dans un graphe non pondéré et permet de :
- construire le parcours en larguer lui-même,
- trouver la distance (nombre de sauts minimal) entre deux sommets,
- trouver le chemin le plus court dans un graphe non pondéré.
- Écrire une fonction1IndiceUtiliser une liste Python comme une file. L'initialiser une file avec le sommet de départ puis parcourir les voisins non visités pour les ajouter à la liste de parcours. Une structure de données
decouvertsdoit mémoriser les sommets déjà découverts pour ne pas les parcourir plusieurs fois.parcours_largeur(g, depart) -> list[int]qui renvoie la liste des sommets visités lors d'un parcours en largeur à partir du sommetdepart. Par exempleparcours_largeur([[1, 2], [0, 2], [0, 1]], 0)renvoie[0, 1, 2]. - Écrire une fonction2IndiceStocker le sommet et la distance courante dans la file d'attente sous la forme d'un tuple, puis interrompre la recherche dès que le sommet
stopest extrait de la file.distance(g, start, stop) -> intqui calcule la distance minimale (nombre de sauts minimal) entrestartetstopdans le grapheg. Par exempledistance([[1], [0, 2], [1]], 0, 2)renvoie2. - Écrire une fonction3IndiceRemonter itérativement les parents depuis le sommet d'arrivée jusqu'à la racine puis inverser la liste obtenue pour restituer le chemin correct.
remonter_chemin(parents, stop)qui renvoie la liste des sommets formant le chemin depuis la racine jusqu'àstopen utilisant le tableau de parents. Par convention, le sommet de départ est son propre parent sur le chemin. Par exempleremonter_chemin([0, 0, 1, 2], 3)renvoie[0, 1, 2, 3]. - Écrire une fonction4IndiceEnregistrer le prédécesseur de chaque voisin découvert pendant l'exploration.
plus_court_chemin(g, start, stop)qui renvoie un tuple(distance, chemin)correspondant au chemin le plus court entrestartetstopen termes de nombre de sauts dans un graphe non pondéré. Par exempleplus_court_chemin([[1], [0, 2], [1]], 0, 2)renvoie(2, [0, 1, 2]).
Langage
Console initialisée. En attente de l'interpréteur...