Table of Contents

## Vzorci evolucije procesov

procedura: vzorec lokalne evolucije računalniškega procesa

Kaj pa lahko rečemo o globalnih vzorcih?

### 1.2.1 Linearna rekurzija in iteracija

razlika med rekurzivno proceduro in rekurzivnim procesom:

1. rekurzivna procedura v Lisp-u odraža princip, da se pri klicanju procedure sklicuje na samo proceduro

2. rekurziven proces opisuje obliko evolucije računskega postopka

Rekurzivni procesi:

3. procedura kliče samo sebe, dokler ni dosežen robni pogoj (aplikativni red)

4. pri tem mora interpreter v spominu ohranjati zapis o potrebnih izvedbah procedure –> zaradi tega prostorska zahtevnost O(n)

5. to se imenuje veriga preloženih operacij (? chain of deferred operations)

6. ko se funkcija kliče na vhodu, ki ustreza robnim pogojem, se nato v nasprotnem vrstnem redu funkcija aplicira na vhodno vrednost in izvede –> časovna zahtevnost O(n)

7. klasičen primer: fakulteta \[n!\]; rekurzivna definicija: \[n! = n(n-1)!\]

Iterativni procesi:

8. stanje procedure je enolično opisano na vsakem koraku: spremenljivke stanja

9. poleg tega obstaja enoličen predpis za pripisovanje novih (posodobljenih) vrednosti spremenljivkam stanja po vsaki izvedbi procedure

10. prostorska zahtevnost je tako O(1) - stanje je vsakič shranjeno v istem številu spremenljivk

11. časovna zahtevnost je O(n)

Razlike:

12. tudi pri iterativnih procesih procedura kliče sama sebe, vendar je razlika v postopku izvajanja; medtem ko se mora rekurzivni proces zaradi pomnenja verige preloženih operacij izvesti v celoti, lahko iterativni proces na katerikoli točki prekinemo in nato nadaljujemo na podlagi vrednosti spremenljivk stanja ob prekinitvi

13. v tem primeru govorimo o repni rekurziji (slovarček); zanke (while, for, …) v ostalih jezikih so tako samo posebne sintaktične oblike repne rekurzije

### 1.2.2 Drevesna rekurzija

14. pri linearni rekurziji vsak korak vsebuje en klic procedure

15. če se na posameznem koraku procedura kliče večkrat (korak je odvisen od večih prejšnjih vrednosti), je struktura procesa drevesna

16. eksponentna časovna zahtevnost: O(exp(n))

17. linearna prostorska zahtevnost: O(n) - v spominu moramo na vsakem koraku ohraniti samo vrednosti v vozliščih na prejšnjem nivoju globine drevesa

18. klasični primer: Fibonaccijeva števila; \[Fib(n) = Fib(n-1) + Fib(n-2)\]