Partage
  • Partager sur Facebook
  • Partager sur Twitter

tours de hanoi

algorithme récursif

    21 mai 2011 à 13:43:03

    Salut à tous,

    j'ai un peu de mal à comprendre cet algorithme qui résoud le problème des tours de hanoi.
    Pourriez vous m'expliquer comment il fonctionne ?

    def hanoi_moveOne(start, arrival):
      print("Move from ", start, " to ", arrival)
    
    def hanoi(numberOfDisks = 3, start = "A", arrival = "C", auxiliary = "B"):
      if numberOfDisks == 1:
        hanoi_moveOne(start, arrival)
      else:
        hanoi(numberOfDisks-1, start, auxiliary, arrival)
        hanoi_moveOne(start, arrival)
        hanoi(numberOfDisks-1, auxiliary, arrival, start) 
    
    if __name__ == "__main__":
      print("----------------") 
      hanoi()
      raw_input ()
    


    Merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
      21 mai 2011 à 14:38:40

      Citation : un usurpateur

      Imagine que tu veuilles déplacer N disques du pilier A au pilier C, le pilier B étant disponible pour les transferts.
      Si N = 1, c'est très simple, il suffit de déplacer l'unique disque de A à C.

      Si N > 1, on sait qu'on ne peut déplacer qu'un disque à la fois et qu'on ne peut le placer que sur un disque plus gros. Il va bien falloir déplacer le plus gros disque du pilier A vers le pilier C, seulement, comme on ne peut le placer que sur un pilier vide vu que c'est le plus gros, et qu'on ne peut pas le déplacer avec d'autres disques au dessus, il faudra donc que tous les autres disques soient à ce moment là sur le pilier B.
      Le problème initial (déplacer N disques de A à C en utilisant B) devient donc "déplacer N - 1 disques de A à B, déplacer le Nème disque de A à C, puis déplacer les N - 1 disques de B à C". Dans les deux déplacements de N - 1 disques, on dispose d'un troisième pilier dont on peut se servir...

      Cette explication n'est pas entièrement complète, mais elle devrait suffire à te mettre sur la voie. N'hésite pas à essayer avec par exemple 3 ou 4 disques pour bien comprendre le truc.

      • Partager sur Facebook
      • Partager sur Twitter

      tours de hanoi

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown