n-ступенчатая / ступенчатая задача: невозможно понять, почему T (n) = T (n-1) + T (n-2) - PullRequest
2 голосов
/ 21 июня 2019

У меня проблемы с концептуальным пониманием решения хорошо известной проблемы подъема по лестнице. Проблема n-лестницы:

У вас есть n шагов, чтобы подняться. Вы можете подняться только на 1 или 2 шага за раз. найдите количество способов достичь N-го шага.

Для простоты, давайте просто использовать случай, когда n = 2. Решение T(n) = T(n-1) + T(n-2), и это, конечно, последовательность Фибоначчи.

Объяснение , почему обычно выглядит примерно так:

Вы находитесь на n-м шаге. Как ты туда попал, если бы ты мог подниматься на 1 или 2 шага за раз? Ну, ваш предыдущий шаг должен быть либо шагом n-1 (шаг 1), либо шагом n-2 (шаг 2). Теперь есть T(n-1) способов достижения n-1-го шага и T(n-2) способов достижения n-2-го шага, что означает, что есть T(n-2) способов достижения n, если ваш последний шаг был на n-2 и T(n-1) способов достижения n, если ваш последний шаг был на n-1. Это единственные две возможности того, как вы наконец достигли n, поэтому общее количество способов добраться до n-го шага составляет T(n-1) + T(n-2)

У меня проблемы с концептуализацией приведенной ниже части:

есть T(n-1) способов достижения n-1-го шага и T(n-2) способов достижения n-2-го шага, что означает, что есть T(n-2) способов достижения n, если ваш последний шаг был на n-2 и T(n-1) способов достижения n, если ваш последний шаг был на n-1.

Это звучит неправильно. Похоже, что объяснение противоречит само себе.

Есть T(n-1) способов достичь n-го шага

и

и T(n-1) способы достижения n, если ваш последний шаг был на n-1

и аналогично для T(n-2)

Я также запутался во втором пункте. Когда мы говорим, что решение - T(n-1) + T(n-2), мой мозг кричит, но подождите минутку, вы считаете дважды. T (n-1) уже включает T (n-2) '.

Может ли кто-нибудь помочь мне концептуально понять причину, по которой T(n) = T(n-1) + T(n-2)

PS Это не вопрос относительно реализации решения, а скорее вопрос о том, как объяснить / понять ответ.

Ответы [ 2 ]

2 голосов
/ 21 июня 2019

причина, по которой T(n) = T(n-1) + T(n-2)

Пост, который вы цитируете, занимает (как мне кажется) странный шаг, глядя на конец процесса.

Давайте вместо этого рассмотрим, что происходит, когда мы находимся в начале процесса, у подножия лестницы из n шагов. Что мы можем сделать прямо сейчас ?

  • Мы можем сделать 1 шаг, что оставляет нам проблему n-1 для решения

OR

  • Мы можем сделать 2 шага, что оставляет нам проблему n-2 для решения.

Понятно, мы либо делаем одно, либо другое. Таким образом, количество способов решения проблемы n - это в точности количество способов решения проблемы n-1, плюс число способов решения проблемы n-2.

или T(n) = T(n-1) + T(n-2).

0 голосов
/ 21 июня 2019

Конечно, вы учитываете повторяющиеся пути в T(n-1) и T(n-2). Но последний шаг к финалу другой! Так что думай так. Последним шагом может быть 1 или 2. Теперь из этого разделения у вас будет другой путь, и вам не нужно беспокоиться ни о чем в моделировании.

...