StartAlgorytmyInneProblem wież Hanoi
Baza Wiedzy
Wersja offline serwisu przeznaczona na urządzenia z systemem Android.

Darowizny
darowiznaWspomóż rozwój serwisu


Nagłówki RSS
Kanał artykuły
Kanał implementacje
Kanał komentarze
Kanał forum


Bookmarki









Sonda
Implementacji w jakim języku programowania poszukujesz?
 
Problem wież Hanoi
Ocena użytkowników:++--- / 11
SłabyŚwietny 
Wpisany przez Piotr Łabudziński
czwartek, 17 listopada 2005 20:38
Wieże Hanoi – dane mamy krążki o różnych średnicach, ułożonych na sobie od najmniejszego do największego. Problem polega na odbudowaniu (przeniesieniu wszystkich klocków wieży na ostatni palik), z zachowaniem kształtu, wieży składającej się z kolistych klocków o różnych średnicach. Na raz można przenosić tylko jeden krążek. Podczas przekładania wolno się posługiwać buforem, reprezentowanym przez dodatkową podstawkę na klocki, przy ogólnym założeniu, że nie można kłaść klocka o większej średnicy na mniejszy.
Zagadka ta wywodzi się z Tybetańskiej legendy, według której mnisi rozwiązują tą łamigłówkę dla 64 krążków. Legenda mówi, że gdy mnisi zakończą zadanie, nastąpi koniec świata.

Na początek proponuje zapoznać się z algorytmem dla 1,2 i 3-ch krążków, aby następnie można było wyprowadzić sobie algorytm na N ilość krążków.
  • Problem dla 1 krążka:
    Problem dla jednego krazka

  • Dla 2 krążków:
    Problem dla dwóch krazków

  • Dla 3 krążków:
    rozwiązanie dla 3 krążków składa się z 7 ruchów:
    kolejne etapy to:
    • przenieś krążek o najmniejszej średnicy na palik docelowy,
    • krążek o średnicy większej przenieś na palik pomocniczy,
    • krążek najmniejszy przenieś na palik pomocniczy,
    • następnie krążek największy przenieś na palik docelowy a najmniejszy na źródłowy,
    • na największym połóż średni i potem najmniejszy,
    • koniec


  • Rozwiązanie dla N elementów:
    Cały problem przeniesienia krążków hanoi przy uzyciu 3 palików składa się z trzech podstawowych "kawałków":
    • przenieś N-1 górnych krążków z palika początkowego na palik pomocniczy,
    • przenieś N-ty krążek na palik docelowy,
    • przenieś N-1 górnych krążków z palika pomocniczego na docelowy.

Jak widać problem wież hanoi jest problemem, w którym liczba kroków rośnie wykładniczo w zależności od liczby krążków do przełożenia.



Autor Język programowania Komentarz Otwórz Pobierz Ocena
Tomasz Lubiński C/C++
Implementacja w C/C++
Implementacja w C/C++
+++-- / 10
Tomasz Lubiński Delphi/Pascal
Implementacja w Delphi/Pascal
Implementacja w Delphi/Pascal
++--- / 6
Tomasz Lubiński Java
Implementacja w Java
Implementacja w Java
++--- / 4
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie



Poprawiony: czwartek, 09 czerwca 2011 21:09

Dodaj komentarz

Kod antysapmowy
Odśwież