Итак, в настоящее время я прохожу курс «Алгоритмы», и у меня возникла проблема с повторениями и получением времени выполнения. Мне было интересно, может ли кто-нибудь объяснить мне с точки зрения непрофессионала, как решить с помощью метода подстановки.
Вопрос из книги: Алгоритм B решает задачи размера n, рекурсивно решая две подзадачи размера n − 1, а затем объединяя решения за постоянное время.
Что привело меня к следующему повторению: T(n)=2T(n-1)+O(1)
. Затем я придумал O(1)=1
. Что дало мне следующее: T(n)=2T(n-1)+1
Вот моя попытка решить это
T(n)=2T(n-1)+1
=2(2T(n-2)+1)+1=4T(n-2)+3
=4(2T(n-3)+1)+3=8T(n-3)+7
=8(2T(n-4)+1)+7=16T(n-4)+15
=16(2T(n-5)+1)+15=32T(n-5)+31
=32T(2T(n-6)+1)+31=64T(n-6)+63
Если я все делаю правильно, как мне продолжать получать время работы? Может ли кто-нибудь объяснить на непрофессиональном уровне, как использовать метод подстановки?