Алгоритм анализа - рекуррентное уравнение (Ханойская башня)

Я видел этот рекурсивный алгоритм для решения Ханойской башни в Википедии. Может ли кто-нибудь объяснить мне, как я получаю уравнение повторения этого алгоритма?

Рекурсивное решение

  • пометьте колышки A, B, C - эти ярлыки могут перемещаться на разных этапах
  • пусть n будет общим количеством дисков
  • нумерация дисков от 1 (самый маленький, самый верхний) до n (самый большой, самый нижний)

Чтобы переместить n дисков из колышка A в колышек C:

  • переместить n−1 дисков из A в B. Это оставит диск n на колышке A
  • переместить диск n из A в C
  • переместить n−1 дисков из B в C, чтобы они находились на диске n

Выше приведен рекурсивный алгоритм, для выполнения шагов 1 и 3 снова примените тот же алгоритм для n−1. Вся процедура представляет собой конечное число шагов, так как в какой-то момент алгоритм будет необходим для n = 1. Этот шаг, перемещение одного диска из колышка A в колышек B, тривиален.

1 ответ

Первые три шага могут быть выполнены за линейное время, вторые три шага являются рекурсивной частью, затем просто пишите в рекурсивном формате то, что написано в текстовом формате:

T(n,A,C) = T(n-1,A,B) + 1 + T(n-1,B,C).

С другой стороны, поскольку метки не важны и T(n,A,B) = T(n,B,C)=T(n,A,C)=..., мы можем избавиться от меток, поэтому уравнение будет?

Другие вопросы по тегам