solution aux problèmes de transvasement
Problème à 2 bidons: AB = 5L, 3L
Le tableau de correspondance numero_sommet <-> volumes AB peut être mis sous forme d’un dictionnaire: (voir le schéma avec la position des sommets sur la page enoncé)
diagramme triangulaire des états de remplissage
Le graphe peut être représenté à l’aide d’une matrice de sommets successeurs:
états numérotés à la manière d'un graphe
Utiliser alors le script python de la page enoncé pour définir la matrice d’adjacence.
Le plus court chemin nécessite 6 transvasements. Il s’agit de: 1=>6=>12=>3=>15=>8=>10
Remplacer les numéros de sommets par les volumes AB pour déduire les transvasements:
- On part d’un état 1, de coordonnées (0,0), c’est à dire avec 2 bidons vides.
- On va à l’état 2, de coordonnées (5,0): on remplit le grand bidon avec 5L.
- On va à l’état 12, de coordonnées (2,3): on verse de l’eau du grand bidon vers le petit, jusqu’à remplir celui-ci à ras bord.
- …
Problème à 3 bidons: ABC = 5L, 3L, 8L
Cette fois, les volumes sont repérés par 3 valeurs ABC. La somme des volumes est toujours egale à 8, car il n’y a ni vidange ni remplissage.
Le tableau de correspondance numero_sommet <-> volumes ABC est:
Le graphe est identique au précedent. Réutiliser le dictionnaire G. Pour le parcours, le sommet de depart est le 1, tel que ABC = (0,0,8); celui d’arrivée est le 4, ABC = (4,0,4)