Программирование на языке Пролог для искусственного интеллекта

       

Задача о ханойской башне



13. 2. 2.    Задача о ханойской башне

Задача о ханойской башне (Рисунок 13.6) - это еще один классический пример эффективного применения метода разбиения задачи на подзадачи и построения И / ИЛИ-графа. Для простоты мы рассмотрим упрощенную версию этой задачи, когда в ней участвует только три диска:

Имеется три колышка  1,  2  и  3  и три диска  а,  b  и  с  (а   -  наименьший из них, а  с  -   наибольший). Первоначально все диски находятся на колышке 1. Задача состоит в том, чтобы переложить все диски на колышек 3. На каждом шагу можно перекладывать только один диск, причем никогда нельзя помещать больший диск на меньший.

Эту задачу можно рассматривать как задачу достижения следующих трех целей:

    (1)        Диск  а   -  на колышек 3.
    (2)        Диск  b   -  на колышек 3.
    (3)        Диск  с   -  на колышек 3.

Беда в том, что эти цели не независимы. Например, можно сразу переложить диск  а  на колышек 3, и первая цель будет достигнута. Но тогда две другие цели станут недостижимыми (если только мы не отменим первое наше действие). К счастью, существует такой удобный порядок достижения этих целей, из которого можно легко вывести искомое решение.



Содержание раздела