def reconstruire_chemin(predecesseurs, etat_final): """ Reconstruit le chemin à partir de l'état final en suivant les parents jusqu'à l'état initial. Args: predecesseurs (dict): Dictionnaire où chaque clé est un état et la valeur est le parent de cet état. etat_final (list): L'état final à partir duquel remonter pour trouver le chemin. Returns: list: Le chemin depuis l'état initial jusqu'à l'état final, incluant tous les états intermédiaires. """ chemin = [] etat_actuel = tuple(etat_final) # Convertir en tuple pour correspondre aux clés dans 'predecesseurs' # Remonter à travers les parents jusqu'à l'état initial while etat_actuel is not None: chemin.append(list(etat_actuel)) # Ajouter l'état actuel au chemin (reconverti en liste pour l'affichage) etat_actuel = predecesseurs[etat_actuel] # Suivre le parent de l'état actuel # Inverser le chemin pour qu'il soit dans l'ordre de l'état initial à l'état final chemin.reverse() return chemin etat_initial = [3, 4, 5] # Exemple d'état initial etat_final = [0, 0, 0] # Exemple d'état final (victoire) # Dictionnaire des parents (simulé pour cet exemple) predecesseurs = { (3, 4, 5): None, # État initial sans parent (2, 4, 5): (3, 4, 5), (2, 3, 5): (2, 4, 5), (2, 3, 4): (2, 3, 5), (0, 3, 4): (2, 3, 4), (0, 0, 4): (0, 3, 4), (0, 0, 0): (0, 0, 4) # État final } # Reconstruction du chemin chemin = reconstruire_chemin(predecesseurs, etat_final) # Affichage du chemin for etat in chemin: print(etat)