Рекурентне релације и парадигма подели па владај

Рекурентне релације

Рекурентне релације дефинишу низ у зависности од његових претходних чланова. Рекурентна релација реда k је једначина облика an = f(n, an-1, an-2, ..., an-k) за n >= k. Рекурентна релација је једнозначно одређена ако је задато k иницијалних вредности a0, a1, ..., ak-1. Без задатих иницијалних вредности, релација описује бесконачну фамилију низова.


Рекурентна релација је линеарна ако је an = Σki=1 cian-i + g(n), при чему су ci константе или функције од n, а g(n) је слободан члан.

Линеарна рекурентна релација је хомогена ако је g(n) = 0, а иначе је нехомогена.

Методе решавања рекурентних релација

Решити рекурентну релацију значи наћи експлицитну формулу за општи члан низа. Неки од начина решавања су:

Пример рекурзивног стабла

Алгоритмика

Алгоритмика је област информатике која се бави анализом временске и просторне сложености програма, као и дизајном што ефикаснијих алгоритама који решавају неки проблем. Алгоритамска сложеност је функција која описује како ресурси које алгоритам троши зависе од величине улаза. Ресурси су углавном време извршавања, меморија и енергија. Величина улаза n је мера количине информација које алгоритам прима и најчешће представља број битова у броју, број елемената у низу, број чворова у графу или дужину ниске.

Асимптотска нотација

Асимптотска нотација описује понашање функције када n тежи бесконачности, занемарујући константе и ниже редове.

Нека су f и g две позитивне функције природног броја n. За функцију g(n) каже се да је асимптотска горња граница функције f(n) и пише се f(n) = O(g(n)) ако постоје позитивне константe c и n0 такве да за свако n > n0 важи f(n) <= cg(n).
Ако важи f(n) > cg(n), за функцију g(n) се каже да је асимптотска доња граница функције f(n) и пише се f(n) = Ω(g(n)).
Ако важи f(n) = O(g(n)) и f(n) = Ω(g(n)), за функцију g(n) се каже да је асимптотска тесна граница функције f(n) и пише се f(n) = Θ(g(n)).

Парадигма подели па владај

Алгоритми засновани на алгоритамској парадигми подели па владај (енг. divide and conquer) решавају проблем тако што га поделе на мање потпроблеме исте врсте, а затим реше потпроблеме да би на крају спојили парцијална решења у решење проблема.

Ако је величина проблема n, а алгоритам решава a потпроблема величине n/b (b > 1 је фактор смањења величине проблема) уз додатни рад f(n) на поделу и комбиновање, рекурентна релација која описује подели па владај алгоритме је T(n) = aT(n/b) + f(n). Асимптотско решење ове рекурентне релације даје мастер теорема.

У следећој табели дато је поређење неких релевантних подели па владај алгоритама по временској и просторној сложености.

Алгоритам Рекурентна релација Време Простор
Merge Sort T(n) = 2T(n/2) + n Θ(n log n) Θ(n)
Quick Sort T(n) = T(k) + T(n-k) + n Θ(n log n) O(log n)
Binary Search T(n) = T(n/2) + 1 Θ(log n) O(1)

Закључак

Велике заслуге за брзину којом данас извршавамо свакодневне активности припадају алгоритмима заснованим на парадигми подели па владај и математичком моделу на коме се темеље — рекурентним релацијама. У овом раду је систематично објашњено како теоријска сарадња низова и алгоритмике дају практично решење за временски, енергетски и финансијски ефикасније програме.