30

Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije
Page 2: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije
Page 3: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Polinomi

Zadatak 1.Napisati proceduru za deklarisanje (definisanje) proizvoda dvapolinoma.

PROCEDURE puta(a, b : polinom)

VAR pr : polinom;

VAR ok : Boolean;

VAR i, j : CARDINAL;

BEGIN

ok := TRUE;

MakeNull(pr);

Page 4: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Polinomi(cont.)

IF (a[st] 6= −1) & (b[st] 6= −1) THEN

i := a[st] + b[st];

if i > MaxStep then

ok := FALSE

ELSE

WITH pr DO

st := i

for i := 0 to a[st] do

for j := 0 to b[st] do

pr[koef [i + j]] = pr[koef [i + j]] + a[koef [i]] ∗ b[koef [j]]

END · · · ;

Page 5: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Polinomi(cont.)

Zadatak 2.Napisati proceduru za izracunavanje proizvoda dva polinoma.

PROCEDURE puta(a, b : polinom)

VAR pr : polinom;

VAR ok : Boolean;

VAR i, j, k : CARDINAL;

BEGIN

ok := TRUE;

MakeNull(pr);

k := 0;

Page 6: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Polinomi(cont.)

pr[koef [k]] := a[koef [k]] ∗ b[koef [k]];

IF (a[st] 6= −1) & (b[st] 6= −1) THEN

k := a[st] + b[st];

if k > MaxStep then

ok := FALSE

ELSE

WITH pr DO

for j := 1 to a[st] + b[st] do

pr[koef [j]] := 0

for i := 0 to j do

pr[koef [j]] = pr[koef [j]] + a[koef [i]] ∗ b[koef [j − i]]

END · · · ;

Page 7: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Polinomi(cont.)

Zadatak 3.Korišcenjem Hornerovog algoritma za izracunavanje vrednostipolinoma p(x) izracunajmo p(a).

PROCEDURE Horner p(a)(p : polinom, a : REAL)

VAR i : CARDINAL;

VAR S : REAL;

BEGIN

S := p[koef [n]];

for i := 1 to n do;

S := aS + p[koef [n − i]]

END

Page 8: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Matrice

PRIMERNapisati procedure za množenje matrice A = [Aij] skalarom a iza sabiranje dveju matrica A = [Aij] i B = [Bij] istih dimenzija.

Zadatak 1.Napisati procedure za množenje dveju matrica A = [Aij],A ∈ M(m, p) i B = [Bij], B ∈ M(p, n).

PROCEDURE putaMatrix(A, B : matrica)

VAR C : matrica;

VAR i, j, p, m, n : CARDINAL;

Page 9: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Matrice(cont.)

BEGIN

for i := 1 to m do

for j := 1 to n do

Cij := 0

for k := 1 to p do

Cij := Cij + Aik ∗ Bkj

END . . . ;

Page 10: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Rekurzivne funkcije

Ponekad, kada je funkciju teško definisati direktno, u smislupromenljivih, poželjno je ili cak neophodno da koristimorekurziju. Rekurzija je metoda koja radi na osnovu principamatematicke indukcije. Naime, ako(i) funkciju definišemo za datu pocetnu vrednost a(obicno 0 ili 1),(ii) kada je funkcija definisana za vrednost k > a i možemo daje definišemo za k + 1,tada je funkciju moguce definisati za sve cele brojeve vece oda. Ovako definisana funkcija je rekurzivna.Dakle, ovaj oblik rekurzivne defionicije koristi se za funkcije kojesu definisane na skupu pozitivnih celih brojeva. (Nije uvak lakouociti da li je definisana funkcija rekurzivna.)

Page 11: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Rekurzivne funkcije(cont.)

PRIMERNeka je funkcija zadata na sledeci nacin:

f(0) = 2

f(k + 1) =f(k)!

(k + 1)!

Primetimo da je f(1) = 2, f(2) = 1, f(3) =1

6, što znaci da

f(4) nije definisano.

Zadatak 1.Napisati proceduru kojom se rekurzivno racna vrednost n!.

Page 12: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Rekurzivne funkcije(cont.)

PROCEDURE Factorial(n)

VAR n : CARDINAL;

if n = 0 then Factorial(n) = 1;

if n > 0 then Factorial(n) = n ∗ Factorial(n − 1)

END

U ovom slucaju, procedura Factorial(n) poziva samu sebe, štoje dozvoljeno u vecini programskih jezika. Kada se ovaprocedura pozove za n > 1, ona nastavlja da se izvršava svedok ne stigne do Factorial(n-1). Tada procedura zaustavljaprogram, cuvajuci informacije na steku, dok program ne možeda nastavi sa radom i poziva Factorial(n-1).

Page 13: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Rekurzivne funkcije(cont.)

Ako je n− 1 > 1 procedura Factorial(n-1) se izvršava sve dokprogram ne stigne do Factorial(n-2). Tada procedura zaustavljaprogram i poziva Factorial(n-2). Proces se nastavlja sve dok sene dostigne i izracuna Factorial(0). To omogucava nastavljanjeprocedure Factorial(1), koja se izvršava i, za uzvrat,omogucava racunanje vrednosti Factorial(2). Proces sezavršava izracunavanjem vrednosti Factorial(n).

Zadatak 2.Fibonacijev niz je jedna od funkcija koje se obicno definišurekurzivno. Prvi i drugi element niza jednaki su 1, dok svakisledeci predstavlja sumu prethodna dva clana niza. Napisatiproceduru za racunanje n Fibonacijevih brojeva.

Page 14: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Rekurzivne funkcije(cont.)

PROCEDURE Fibonaci(n)

VAR n : CARDINAL;

if n = 1 then Fibonaci(n) = 1;

if n = 2 then Fibonaci(n) = 1;

if n > 2 then Fibonaci(n) = Fibonaci(n − 1) + Fibonaci(n − 2)

END

Napomena

Ova procedura nije narocito efikasna, jer se u k-tom korakuizracunava Fibonaci(k-1) i drugi put Fibonaci(k-2), cija sevrednost izracunavala i u k− 1-om koraku.

Page 15: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Rekurzivne funkcije(cont.)

Zadatak 2.Niz Katalanovih brojeva je dat formulom:

Cat(n) =(2n)!

(n + 1)!(n!).

Znacaj

(1) Cat(n)– Broj nacina da se konveksni (n+2)-strani poligonisece na trouglove povezivanjem temena poligona (n-1)-omlinijom koje se ne seku.(2) Cat(n)– Broj nacina da se n zagrada ubaci u izraza1a2 . . . anan+1.

Definisacemo rekurzivno vrednost funkcije Cat(n):

Page 16: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Rekurzivne funkcije(cont.)

Cat(0) = 1

Cat(n + 1) =(2n + 2)!

(n + 2)!(n + 1)!=

(2n + 2)(2n + 1)(2n)!

(n + 2)(n + 1)!(n + 1)(n!)

=2(n + 1)(2n + 1)(2n)!

(n + 2)(n + 1)!(n + 1)(n!)

=2(2n + 1)

(n + 2)·

(2n)!

(n + 1)!(n!)

=2(2n + 1)

(n + 2)· Cat(n)

Page 17: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Rekurzivni algoritam

Razmotrimo sada rekurzivni algoritam koji ne predstavljarekurzivnu funkciju:

Zadatak 1.Drevni mit Hanojske kule: Ona se sastoji od tri štapa i skupadiskova koji se na njima ne nalaze. Svi diskovi su razlicitevelicine i u pocetku su poredjani na jednom od štapova odnajveceg do najmanjeg. Cilj je da se svi diskovi prebace nadrugi štap u istom redosledu, jedan po jedan, pri cemu veci disknikad ne sme da se poredja iznad manjeg.

Algoritam cemo rekurzivno formulisati, jer ako, na primer, naštapu stoji šest diskova i ako znamo kako da pomerimo prvihpet, možemo gornjih pet prebaciti na srednji štap, najveci nanezauzeti štap, a zatim onih pet prebacujemo sa srednjegštapa na najveci disk.

Page 18: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Rekurzivni algoritam(cont.)

PROCEDURE Hanoi(A, C, n)

VAR A, B, C, n : CARDINAL;

if n = 1 then "Pomeri jedan disk sa štapa A na C";

B = 6− A− C;

if n > 1 then

Hanoi(A, C, 1) "pomeranje preostalog diska sa štapa A na C"

Hanoi(B, C, n− 1) "pomeranje gornjih n-1 diskova sa B na C"

END

Napomena

Za n = 3 pocinjemo sa Hanoi(1,3,3) (A=1, B=2, C=3). U okviruovog poziva najpre pozivamo Hanoi(1,2,2) da bi gornja dvadiska pomerili na štap 2.

Page 19: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Rekurzivni algoritam(cont.)

Napomena

U okviru ovog poziva je A=1, C=2, B=3 i u okviru ovog pozivanajpre pozivamo Hanoi(1,3,1) kada gornji disk prebacujemo saštapa 1 na 3. Zatim pozivamo Hanoi(1,2,1) da bi drugi diskpremestili na štap 2. Zatim, Hanoi(3,2,1) prebacuje gornji disksa 2 na disk koji je na štapu 3, pa Hanoi(1,3,1) pomera donjidisk sa 1 na 3.

Page 20: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Homogene linearne rekurentne relacije

Pod rešavanjem rekurentne jednacine podrazumevamoprevodjenje funkcije a(n), odnosno an, definisane nadnenegativnim celim brojevima, iz oblika u kome je opisanarekurzivnom formulom u zatvoren oblik, gde je funkcija an

izražena izrazom koji direktno zavisi od n.U opštem slucaju, rešavanje proizvoljne rekurentne relacije nijejednostavan problem, a cesto je prakticno neizvodljivo.Definišimo klasu linearnih rekurentnih relacija:

Definicija 1.

Rekurentna relacija oblika

an = c1(n)an−1+c2(n)an−2+c3(n)an−3+· · ·+cp(n)an−p+f(n),

Page 21: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Homogene linearne rekurentne relacije(cont.)

Definicija 1.

cp(n) 6= 0, naziva se linearna rekurentna relacija reda p.

Definicija 2.

Linearna rekurentna relacija oblika

an = c1(n)an−1 + c2(n)an−2 + c3(n)an−3 + · · ·+ cp(n)an−p,

cp(n) 6= 0, naziva se homogena linearna rekurentna relacijareda p.

Naziv potice odatle što se svako ai javlja sa eksponentom 1.

Page 22: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

PolinomiRekurzivne funkcije i algoritmiRekurentne relacije

Homogene linearne rekurentne relacije(cont.)

Definicija 3.

Linearna rekurentna relacija oblika

an = c1an−1 + c2an−2 + c3an−3 + · · ·+ cpan−p + f(n), cp 6= 0

naziva se linearna rekurentna relacija reda p sa konstantnimkoeficijentima.

Definicija 4.

Linearna rekurentna relacija oblika

an = c1an−1 + c2an−2 + c3an−3 + · · ·+ cpan−p, cp 6= 0

naziva se homogena linearna rekurentna relacija sakonstantnim koeficijentima reda p.

Page 23: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije
Page 24: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije
Page 25: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

Stek

Lista

Upoznajmo se, sada, sa reprezentacijom dinamickih skupovajednostavnim strukturama koje koriste pokazivace (pointere).

Lista–apstrakcijalinearnog uredjenja

Najvažniji apstraktni tipovi podataka su oni kod kojih elementidomena imaju neku vrstu prirodnog uredjenja. Ovde ce biti recio apstraktnim tipovima podataka koji su zasnovani nalinearnom uredjenju.

Pojam linearnog uredjenja podrazumeva da je dat konacanskup elemenata S = {a1, a2, . . . , an}, pri cemu se popsmatrakonacan, uredjen niz elemenata-lista L = {b0, b1, . . . , bk},dužine k ∈ N, pri cemu bi ∈ S, za i = 0, k i b0 < b1 < · · · < bk.

Page 26: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

Stek

Lista(cont.)

Napomena

Uredjenje u listi L ne zavisi od uredjenja elemenata u skupu S.

Lista može da se definiše rekurentno na sledeci nacin:

Definicija

(i) Prazna lista je lista;(ii)Lista se sastoji od prvog elementa koji se naziva glava liste iliste preostalih elemenata koja se naziva rep;(iii) Svaka lista se dobija konacnom primenom pravila (i) i (ii).

Page 27: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

Stek

Stek i kju (queue)

Stek i kju su dinamicki sistemi iz kojih se elementi pomerajuskupovnom operacijom brisanja DELETE.U steku je element koji se briše iz liste onaj koji je poslednji,najskorije upisan, što znaci da je stek implementacija LAST-IN,FRST-OUT ili LIFO.Iz queuea se uvek briše element koji je najduže u listi. To znacida je queue implementacija FIRST-IN, FRST-OUT ili FIFO.Postoji nekoliko efektivnih postupaka za implementaciju steka ikjua na racunaru.Pokazacemo kako se svaki od njih može implementiratiupotrebom obicnih nizova.

Page 28: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

Stek

Stek

INSERT operacija kojom se neki element ubacuje u stek jePUSH,a DELETE operacija kojom se neki element briše izsteka je POP.Stek od najviše n elemenata možemo inplementirati nizomS[1..n]. Ovom nizu pridružujemo atribut top[S] koji oznacavaposlednji unet element. Stek sadrži elemente S[1..top[S]], gdeje S[1] element sa dna steka i S[top[S]] element sa vrha.Kada je top[S] = 0 stek je prazan.Ako brišemo elemente iz praznog steka, on ce bitiUNDERFLOWS (ispod toka) što znaci da se javlja greška.Ako top[S] prelazi n stek ce biti OVERFLOWS (iznad toka).Stek operacije PUSH, POP i Stack-Empty mogu seimplementirati u nekoliko linija koda.

Page 29: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

Stek

Stek(cont.)

Page 30: Rekurentne relacije - Пријаваnasport.pmf.ni.ac.rs/materijali/1263/PREDAVANJE2-SPA.pdf · 2014. 10. 22. · Overviev Elementarne strukture podataka Polinomi Rekurzivne funkcije

OvervievElementarne strukture podataka

Stek

Stek(cont.)

POP(S)

IF Stack − Empty(S) THEN

ERROR ”UNDERFLOW”

ELSE top[S]← top[S]− 1

RETURN S[top[S] + 1]

END