/ / Відняти складність часу від цієї формули повторення? - алгоритм, складність часу

Вилучити складність часу з цієї формули повторення? - алгоритм, складність часу

Я читав час розрахунку складності, пов'язані з питанням на SO, але я не можу коментар там (недостатньо повторень). Яка складність цього алгоритму розбиття на Паліндроми?

У мене є питання щодо переходу від 1-го до 2-го рівняння:

Тепер ви можете написати той же вираз для H (n-1), а потім замінити назад спростити:

H (n) = 2 H (n-1) + O (n) =========>

І це вирішує

H (n) = O (n * 2 ^ n) =========> Рівн

Може хтось проілюструвати, як він отримав рівняння від Eq.1? Дякую.

Відповіді:

2 для відповіді № 1

Формула 1 являє собою a рекуррентне відношення. Див. Посилання для підручника про те, як вирішити ці типи рівнянь, але ми можемо вирішити за допомогою розширення, як показано нижче:

H(n) = 2H(n-1) + O(n)
H(n) = 2*2H(n-2) + 2O(n-1) + O(n)
H(n) = 2*2*2H(n-3) + 2*2O(n-2) + 2O(n-1) + O(n)
...
H(n) = 2^n*H(1) + 2^(n-1)*O(1) + ... + 2O(n-1) + O(n)

since H(1) = O(n) (see the original question)
H(n) = 2^n*O(n) + 2^(n-1)*O(1) + ... + 2O(n-1) + O(n)
H(n) = O(n * 2^n)

1 для відповіді № 2

Нам необхідно гомогенізувати рівняння, в цьому простому випадку, просто додаючи постійну до кожної сторони. По-перше, позначте O (n) = K, щоб уникнути зливання з позначенням O на цьому етапі:

H (n) = 2 H (n-1) + K

Потім додайте K для кожної сторони:

H (n) + K = 2 (H (n-1) + K)

Нехай G (n) = H (n) + K, то

G (n) = 2 G (n-1)

Це добре відомий однорідний 1-й порядок повторення, з розчином

G (n) = G (0) × 2н = G (1) × 2н-1

Оскільки H (1) = O (n), G (1) = H (1) + K = O (n) + O (n) = O (n),

G (n) = O (n) × 2н-1 = O (n × 2н-1) = O (n × 2н)

і

H (n) = G (n) - K = O (n × 2н) - O (n) = O (n × 2н)


1 для відповіді № 3

Вони помиляються.

Припустимо, що O позначає щільну зв'язок і замінник O(n) з c * n для деякої постійної c. Розгортаючи рекурсію, ви отримаєте:

введіть опис зображення тут

Коли ви закінчите, розкрутіть рекурсію n = i і b = T(0).

Тепер знаходимо суму:

введіть опис зображення тут

Підсумовуючи ви отримаєте:

введіть опис зображення тут

Тому тепер зрозуміло, що T(n) є O(2^n) без будь-якого n


Для людей, які все ще скептично ставляться до математики: