Рекурентним співвідношенням називається вираз, який дозволяє визначити наступні члени послідовності через попередні.
Під розв'язанням рекурентного співвідношення будемо розуміти формулу, яка дозволяє отримати елемент послідовності, що задається рекурсією, по його номеру, без обчислення попередніх елементів.
Згідно з основною теоремою алгебри існує
коренів рівняння . Ці корені відіграють вирішальну роль в знаходженні послідовності, яка відповідає заданому рекурентному співвідношенню.
Якщо всі корені різні, то розв'язок рекурсії має вигляд:
де коефіцієнти визначаються в залежності від значень початкових елементів послідовності .
У випадку коли однакові корені присутні декілька разів (кратні корені) розв'язок рекурсії має інший вигляд.
Якщо корінь кратності (для простого кореня ), тоді
де коефіцієнти визначаються з початкових елементів послідовності.
Алгоритм розв'язання однорідного рекурентного співвідношення
1. Скласти характеристичний поліном і розв'язати його. Виписати формулу елемента послідовності в залежності від того чи наявні кратні корені.
2. Застосувати формулу для елемента, до початкових елементів , значення яких вже відомі. Таким чином буде отримана система лінійних рівнянь. Розв'язок лінійної системи дозволяє знайти остаточний вираз для .
В якості прикладу можна зауважити, що послідовність Фібоначчі задається лінійним однорідним рекурентним співвідношенням з постійними коефіцієнтами порядку два. Застосування наведеного методу дає згадану вище формулу Біне.
Приклад розв'язання однорідного рекурентного співвідношення
Нехай , початкові значення . Знайти формулу для обчислення .
1. Складаємо характеристичний поліном за допомогою наступної підстановки:
Тоді, з отримуємо .
Знаходимо корені : .
Так як корені різні, то тоді розв'язок рекурсії має вигляд:
2. Знайдемо невідомі коефіцієнти . Для цього застосуємо формулу для , до початкових елементів , значення яких вже відомі з умови. Таким чином отримаємо систему лінійних рівнянь:
Розв'язок цієї лінійної системи . Остаточний вираз для .
Приклад розв'язання однорідного рекурентного співвідношення з комплексними числами
1. Знайти частковий розв'язок неоднорідного рекурентного співвідношення . Це якраз найскладніше завдання, тому що не існує єдиного алгоритму дій на цьому етапі.
2. Знайти розв'язок однорідного рекурентного співвідношення у загальному вигляді. Невідомі коефіцієнти будуть обчислені на наступному кроці.
3. Розв'язок неоднорідного рекурентного співвідношення записати у вигляді . Застосувати формулу для елемента, до початкових елементів , значення яких вже відомі. Таким чином буде отримана система лінійних рівнянь. Розв'язок лінійної системи дозволяє знайти остаточний вираз для .
Приклад розв'язання неоднорідного рекурентного співвідношення
Нехай , початкові значення . Знайти формулу для обчислення .
1. Знайдемо частковий розв'язок неоднорідного рекурентного співвідношення у вигляді , де — константа, яка буде знайдена. Тоді , . Підставимо у рекурентне рівняння:
Отже, частковим розв'язком неоднорідного рекурентного співвідношення буде
2. Знайдемо розв'язок однорідного рекурентного співвідношення у загальному вигляді. Невідомі коефіцієнти будуть обчислені на наступному кроці.
.
Знаходимо корені: .
Так як корені різні, то тоді розв'язок рекурсії має вигляд:
3. Розв'язком неоднорідного рекурентного співвідношення буде . Знайдемо невідомі коефіцієнти . Для цього застосуємо формулу для до початкових елементів , значення яких вже відомі з умови. Таким чином отримаємо систему лінійних рівнянь:
Розв'язок цієї лінійної системи . Остаточний вираз для .
Нехай вектор довжини , який складається з нулів та одиниць. а) Скільки існує таких векторів? б) Скільки існує таких векторів, де нулі не стоять поруч? с) Скільки векторів у яких будь-які два сусідні елемента різні?
Розв'язати завдання з leetcode.com (Count Vowels Permutation). Given an integer n, your task is to count how many strings of length n can be formed under the following rules:
Each character is a lower case vowel ('a', 'e', 'i', 'o', 'u')
Each vowel 'a' may only be followed by an 'e'.
Each vowel 'e' may only be followed by an 'a' or an 'i'.
Each vowel 'i' may not be followed by another 'i'.
Each vowel 'o' may only be followed by an 'i' or a 'u'.
Each vowel 'u' may only be followed by an 'a'.
Since the answer may be too large, return it modulo 10^9 + 7.
Example 1:
Input: n = 1
Output: 5
Explanation: All possible strings are: "a", "e", "i" , "o" and "u".
Example 2:
Input: n = 2
Output: 10
Explanation: All possible strings are: "ae", "ea", "ei", "ia", "ie", "io", "iu", "oi", "ou" and "ua".