Sunteți pe pagina 1din 84

Cursul 4

Structura Ciclica a Permutarilor.


Tehnici Avansate de Numarare

Octombrie 2013

Cursul 4

Permutari si cicluri
Permutarile au si rolul de functii de rearanjare.
Exemplu
1

Permutarea h4, 2, 1, 3i este o functie bijectiva care mapeaza 1


la 4, 2 la 2, 3 la 1, si 4 la 3. Putem scrie
1 7 4 7 3 7 1, 2 7 2

Permutarea h2, 1, 3, 5, 7, 4, 6i este o functie care mapeaza


1 7 2 7 1, 3 7 3, 4 7 5 7 7 7 6 7 4

Definitie (Ciclu)
Un ciclu este o functie : {v1 , v2 , . . . , vk } {v1 , v2 , . . . , vk } care
mapeaza
v1 7 v2 7 . . . 7 vk1 7 vk 7 v1
Notatia matematica a acestui ciclu este (v1 , . . . , vk ).
Ciclul (v1 ) reprezinta functia : {v1 } {v1 } cu (v1 ) = v1 .
Cursul 4

Structura ciclica a permutarilor

Observatie
Orice permutare poate fi reprezentata ca o compozitie de cicluri
disjuncte. Aceasta reprezentare se numeste structura ciclica a
permutarii.
Exemplu
1

Permutarea h4, 2, 1, 3i poate fi reprezentata ca o compozitie


de 2 cicluri disjuncte: (1, 4, 3)(2).

Permutarea h2, 1, 3, 5, 7, 4, 6i poate fi reprezentata ca o


compozitie de 3 cicluri disjuncte: (1, 2)(3)(4, 5, 7, 6).

Cursul 4

Structura ciclica a permutarilor


Propriet
ati

Reprezentarea unui ciclu nu este unica: de exemplu, (2, 3, 4),


(3, 4, 2) si (4, 2, 3) sunt cicluri care reprezinta aceeasi functie.

Cursul 4

Structura ciclica a permutarilor


Propriet
ati

Reprezentarea unui ciclu nu este unica: de exemplu, (2, 3, 4),


(3, 4, 2) si (4, 2, 3) sunt cicluri care reprezinta aceeasi functie.
Structura ciclica a permutarilor nu este unica: de exemplu
urmatoarele structuri ciclice reprezinta aceeasi permutare:
B
B
B
B
B

(1, 5)(2, 3, 4)
(1, 5)(3, 4, 2)
(5, 1)(4, 2, 3)
(2, 3, 4)(1, 5)
In general, structurile ciclice care se obtin prin
rotirea ciclurilor din structur
a, la stanga sau la dreapta, sau
permutarea ciclurilor structurii

reprezinta aceeasi permutare.

Cursul 4

Structura ciclica a permutarilor


Propriet
ati

Reprezentarea unui ciclu nu este unica: de exemplu, (2, 3, 4),


(3, 4, 2) si (4, 2, 3) sunt cicluri care reprezinta aceeasi functie.
Structura ciclica a permutarilor nu este unica: de exemplu
urmatoarele structuri ciclice reprezinta aceeasi permutare:
B
B
B
B
B

(1, 5)(2, 3, 4)
(1, 5)(3, 4, 2)
(5, 1)(4, 2, 3)
(2, 3, 4)(1, 5)
In general, structurile ciclice care se obtin prin
rotirea ciclurilor din structur
a, la stanga sau la dreapta, sau
permutarea ciclurilor structurii

reprezinta aceeasi permutare.

Putem defini o structura ciclica canonica a unei permutari:


B Fiecare ciclu ncepe cu elementul cel mai mic.
B Ciclurile sunt scrise n ordinea crescatoare a celui mai mic
element.
Cursul 4

Structuri ciclice
Construirea structurii ciclice canonice a unei permut
ari

Idee de baza
1

Se porneste de la 1 calculul secventei de succesori pana se


revine la 1. Acest proces construieste primul ciclu.

Se alege cel mai mic element care nu apare n primul ciclu si


se construieste al doilea ciclu.

Se repeta acest proces pana cand toate elementele apar


ntr-un ciclu.

Cursul 4

Structuri ciclice
Construirea structurii ciclice canonice a unei permut
ari

Idee de baza
1

Se porneste de la 1 calculul secventei de succesori pana se


revine la 1. Acest proces construieste primul ciclu.

Se alege cel mai mic element care nu apare n primul ciclu si


se construieste al doilea ciclu.

Se repeta acest proces pana cand toate elementele apar


ntr-un ciclu.

Exercitiu
Care sunt structurile ciclice canonice ale urmatoarelor permutari:
1

h1, 2, 3, 4, 5, 6, 7, 8, 9, 10i?

Cursul 4

Structuri ciclice
Construirea structurii ciclice canonice a unei permut
ari

Idee de baza
1

Se porneste de la 1 calculul secventei de succesori pana se


revine la 1. Acest proces construieste primul ciclu.

Se alege cel mai mic element care nu apare n primul ciclu si


se construieste al doilea ciclu.

Se repeta acest proces pana cand toate elementele apar


ntr-un ciclu.

Exercitiu
Care sunt structurile ciclice canonice ale urmatoarelor permutari:
1

h1, 2, 3, 4, 5, 6, 7, 8, 9, 10i?
(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)

Cursul 4

Structuri ciclice
Construirea structurii ciclice canonice a unei permut
ari

Idee de baza
1

Se porneste de la 1 calculul secventei de succesori pana se


revine la 1. Acest proces construieste primul ciclu.

Se alege cel mai mic element care nu apare n primul ciclu si


se construieste al doilea ciclu.

Se repeta acest proces pana cand toate elementele apar


ntr-un ciclu.

Exercitiu
Care sunt structurile ciclice canonice ale urmatoarelor permutari:
1

h1, 2, 3, 4, 5, 6, 7, 8, 9, 10i?
(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)

h10, 9, 8, 7, 6, 5, 4, 3, 2, 1i?

Cursul 4

Structuri ciclice
Construirea structurii ciclice canonice a unei permut
ari

Idee de baza
1

Se porneste de la 1 calculul secventei de succesori pana se


revine la 1. Acest proces construieste primul ciclu.

Se alege cel mai mic element care nu apare n primul ciclu si


se construieste al doilea ciclu.

Se repeta acest proces pana cand toate elementele apar


ntr-un ciclu.

Exercitiu
Care sunt structurile ciclice canonice ale urmatoarelor permutari:
1

h1, 2, 3, 4, 5, 6, 7, 8, 9, 10i?
(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)

h10, 9, 8, 7, 6, 5, 4, 3, 2, 1i?
(1, 10)(2, 9)(3, 8)(4, 7)(5, 6)
Cursul 4

Structuri ciclice
Calculul permut
arii corespunz
atoare unei structuri ciclice

Exemplu ilustrat
Permutarea corespunzatoare structurii ciclice (1, 3, 4)(2, 6, 7)(5) se
poate calcula astfel:
1

Se rotesc la dreapta cu o pozitie toate ciclurile structurii


ciclice initiale (4, 1, 3)(7, 2, 6)(5)

Se aliniaza structura ciclica rotita la dreapta peste structura


ciclica initiala:
( 4 , 1 , 3 )( 7 , 2 , 6 )( 5 )

( 1 , 3 , 4 )( 2 , 6 , 7 )( 5 )

Se poate citi direct permutarea


1
2
3
4
5
6
7
h 3 , 6 , 4 , 1 , 5 , 7 , 2 i
Cursul 4

Structuri ciclice
Tipul unei permut
ari

Tipul unei permutari de n elemente este lista = [1 , . . . , n ] n


care i este numarul ciclurilor lui cu lungimea i, pentru
1 i n.

Cursul 4

Structuri ciclice
Tipul unei permut
ari

Tipul unei permutari de n elemente este lista = [1 , . . . , n ] n


care i este numarul ciclurilor lui cu lungimea i, pentru
1 i n.
Exemplu
1

Permutarea h1, 2, 3, 4, 5, 6, 7i = (1)(2)(3)(4)(5)(6)(7) are tipul


[7, 0, 0, 0, 0, 0, 0]

Permutarea h7, 6, 5, 4, 3, 2, 1i = (1, 7)(2, 6)(3, 5)(4) are tipul


[1, 3, 0, 0, 0, 0, 0]

Permutarea
h1, 3, 2, 6, 7, 8, 9, 4, 10, 5i = (1)(2, 3)(4, 6, 8)(5, 7, 9, 10)
are tipul [1, 1, 1, 1, 0, 0, 0, 0, 0, 0]

Cursul 4

Structuri ciclice
Tipul unei permut
ari

Tipul unei permutari de n elemente este lista = [1 , . . . , n ] n


care i este numarul ciclurilor lui cu lungimea i, pentru
1 i n.
Exemplu
1

Permutarea h1, 2, 3, 4, 5, 6, 7i = (1)(2)(3)(4)(5)(6)(7) are tipul


[7, 0, 0, 0, 0, 0, 0]

Permutarea h7, 6, 5, 4, 3, 2, 1i = (1, 7)(2, 6)(3, 5)(4) are tipul


[1, 3, 0, 0, 0, 0, 0]

Permutarea
h1, 3, 2, 6, 7, 8, 9, 4, 10, 5i = (1)(2, 3)(4, 6, 8)(5, 7, 9, 10)
are tipul [1, 1, 1, 1, 0, 0, 0, 0, 0, 0]

Observat
ie: [1 , . . . , n ] este tipul unei permutari daca si numai
daca 1 1 + 2 2 + . . . + n n = n
i i = numarul de elemente ce apar n cicluri cu lungimea i.
Cursul 4

Numararea permutarilor de un anumit tip


Intrebare: Cate permutari au tipul = [1 , 2 , . . . , n ]?

Cursul 4

Numararea permutarilor de un anumit tip


Intrebare: Cate permutari au tipul = [1 , 2 , . . . , n ]?
Scriem toate cele n! permutari si inseram paranteze pentru a
construi n! structuri ciclice de forma
c11 . . . c11
| {z }

cicluri cu lung. 1

...

c1n . . . cn
| {z }n

cicluri cu lung. n

Cursul 4

Numararea permutarilor de un anumit tip


Intrebare: Cate permutari au tipul = [1 , 2 , . . . , n ]?
Scriem toate cele n! permutari si inseram paranteze pentru a
construi n! structuri ciclice de forma
c11 . . . c11
| {z }

cicluri cu lung. 1

...

c1n . . . cn
| {z }n

cicluri cu lung. n

Numaram structurile ciclice ce reprezinta aceeasi permutare


B Fiecare ciclu cki de lungime i poate fi scris in i feluri
echivalente din cauza echivalentei ciclurilor, exista
11 22 . . . nn structuri ciclice care reprezinta aceeasi
permutare.
(am aplicat regula produsului)
B Orice permutare a ciclurilor din cadrul unui bloc de cicluri cu
aceeasi lungime reprezinta aceeasi permutare
exist
a i ! permut
ari in fiecare bloc de cicluri de lungime i
exist
a 1 ! 2 ! . . . n ! structuri ciclice echivalente din acest
motiv.
(am aplicat regula produsului)

Cursul 4

Numararea permutarilor de un anumit tip


Intrebare: Cate permutari au tipul = [1 , 2 , . . . , n ]?
Scriem toate cele n! permutari si inseram paranteze pentru a
construi n! structuri ciclice de forma
c11 . . . c11
| {z }

cicluri cu lung. 1

...

c1n . . . cn
| {z }n

cicluri cu lung. n

Numaram structurile ciclice ce reprezinta aceeasi permutare


B Fiecare ciclu cki de lungime i poate fi scris in i feluri
echivalente din cauza echivalentei ciclurilor, exista
11 22 . . . nn structuri ciclice care reprezinta aceeasi
permutare.
(am aplicat regula produsului)
B Orice permutare a ciclurilor din cadrul unui bloc de cicluri cu
aceeasi lungime reprezinta aceeasi permutare
exist
a i ! permut
ari in fiecare bloc de cicluri de lungime i
exist
a 1 ! 2 ! . . . n ! structuri ciclice echivalente din acest
motiv.
(am aplicat regula produsului)

nr. perm. de tip este

n!
1 ! 2 ! . . . n ! 11 22 . . . nn
Cursul 4

Aplicatii ale permutarilor de acelasi tip


Partitii ntregi

O partitie ntreaga a unui ntreg pozitiv n este un multi-set de


ntregi pozitivi a caror suma este n. Se observa ca
Numarul partitiilor lui n = Numarul tipurilor de n-permutari.
[1 , . . . , n ] {1, . . . , 1, . . . , n, . . . , n}
| {z }
| {z }
1 ori

n ori

Exemplu
Partitiile ntregi ale numarului 5 sunt multi-seturile
{5}, {4, 1}, {3, 2}, {3, 1, 1}, {2, 2, 1}, {2, 1, 1, 1}, {1, 1, 1, 1, 1}. Ele
corespund tipurilor
[0, 0, 0, 0, 1], [1, 0, 0, 1, 0], [0, 1, 1, 0, 0], [2, 0, 1, 0, 0], [1, 0, 0, 2, 0],
[3, 1, 0, 0, 0], [5, 0, 0, 0, 0].

Cursul 4

Partea 2: Tehnici avansate de numarare


Observatii preliminare

Numeroase probleme de numarare nu pot fi rezolvate cu


metodele prezentate pana acum.
Exemple:
1

Cate siruri de biti de lungime n nu contin doua zerouri


consecutive?
In cate feluri se pot aloca 7 lucrari la 3 angajati astfel ncat
fiecare angajat sa primeasca cel putin o lucrare?

Cursul 4

Partea 2: Tehnici avansate de numarare


Observatii preliminare

Numeroase probleme de numarare nu pot fi rezolvate cu


metodele prezentate pana acum.
Exemple:
1

Cate siruri de biti de lungime n nu contin doua zerouri


consecutive?
In cate feluri se pot aloca 7 lucrari la 3 angajati astfel ncat
fiecare angajat sa primeasca cel putin o lucrare?

Scopul partii a 2-a a cursului: prezentarea unor tehnici mai


avansate de numarare:

Cursul 4

Partea 2: Tehnici avansate de numarare


Observatii preliminare

Numeroase probleme de numarare nu pot fi rezolvate cu


metodele prezentate pana acum.
Exemple:
1

Cate siruri de biti de lungime n nu contin doua zerouri


consecutive?
In cate feluri se pot aloca 7 lucrari la 3 angajati astfel ncat
fiecare angajat sa primeasca cel putin o lucrare?

Scopul partii a 2-a a cursului: prezentarea unor tehnici mai


avansate de numarare:
Relatii de recurenta

Cursul 4

Partea 2: Tehnici avansate de numarare


Observatii preliminare

Numeroase probleme de numarare nu pot fi rezolvate cu


metodele prezentate pana acum.
Exemple:
1

Cate siruri de biti de lungime n nu contin doua zerouri


consecutive?
In cate feluri se pot aloca 7 lucrari la 3 angajati astfel ncat
fiecare angajat sa primeasca cel putin o lucrare?

Scopul partii a 2-a a cursului: prezentarea unor tehnici mai


avansate de numarare:
Relatii de recurenta
Rezolvarea relatiilor de recurenta liniara

Cursul 4

Partea 2: Tehnici avansate de numarare


Observatii preliminare

Numeroase probleme de numarare nu pot fi rezolvate cu


metodele prezentate pana acum.
Exemple:
1

Cate siruri de biti de lungime n nu contin doua zerouri


consecutive?
In cate feluri se pot aloca 7 lucrari la 3 angajati astfel ncat
fiecare angajat sa primeasca cel putin o lucrare?

Scopul partii a 2-a a cursului: prezentarea unor tehnici mai


avansate de numarare:
Relatii de recurenta
Rezolvarea relatiilor de recurenta liniara
Algoritmi divide-and-conquer

Cursul 4

Relatii de recurenta
Exemplu
Numarul bacteriilor din o colonie se dubleaza n fiecare ora. Daca
ntr-o colonie sunt initial 5 bacterii, cate vor fi dupa n ore?
spuns. Fie an numarul de bacterii dupa n ore.
Ra
a0 = 5

(cunostinte initiale)

an = 2 an1 pentru n > 0

(evolutie)

Cursul 4

Relatii de recurenta
Exemplu
Numarul bacteriilor din o colonie se dubleaza n fiecare ora. Daca
ntr-o colonie sunt initial 5 bacterii, cate vor fi dupa n ore?
spuns. Fie an numarul de bacterii dupa n ore.
Ra
a0 = 5

(cunostinte initiale)

an = 2 an1 pentru n > 0

(evolutie)

O relatie de recurenta pentru secventa {an } este o ecuatie


care exprima an n functie de 0 sau mai multi termeni dintre
a0 , a1 , . . . , an1 ai secventei, pentru toti n n0 , unde n0 0.

Cursul 4

Relatii de recurenta
Exemplu
Numarul bacteriilor din o colonie se dubleaza n fiecare ora. Daca
ntr-o colonie sunt initial 5 bacterii, cate vor fi dupa n ore?
spuns. Fie an numarul de bacterii dupa n ore.
Ra
a0 = 5

(cunostinte initiale)

an = 2 an1 pentru n > 0

(evolutie)

O relatie de recurenta pentru secventa {an } este o ecuatie


care exprima an n functie de 0 sau mai multi termeni dintre
a0 , a1 , . . . , an1 ai secventei, pentru toti n n0 , unde n0 0.
O solutie a relatiei de recurenta este o formula de calcul direct
a lui an din n, care satisface relatia de recurenta.

Cursul 4

Relatii de recurenta
Exemplu
Numarul bacteriilor din o colonie se dubleaza n fiecare ora. Daca
ntr-o colonie sunt initial 5 bacterii, cate vor fi dupa n ore?
spuns. Fie an numarul de bacterii dupa n ore.
Ra
a0 = 5

(cunostinte initiale)

an = 2 an1 pentru n > 0

(evolutie)

O relatie de recurenta pentru secventa {an } este o ecuatie


care exprima an n functie de 0 sau mai multi termeni dintre
a0 , a1 , . . . , an1 ai secventei, pentru toti n n0 , unde n0 0.
O solutie a relatiei de recurenta este o formula de calcul direct
a lui an din n, care satisface relatia de recurenta.
In continuare vor fi prezentate tehnici de rezolvare a unor tipuri de
relatii de recurenta.
Cursul 4

Relatii de recurenta
Exemple

Cursul 4

Relatii de recurenta
Exemple

a0 = 3, a1 = 5, an = an1 an2 pentru n 2.


Toate elementele lui {an } pot fi calculate recursiv:
a2 = a1 a0 = 5 3 = 2
a3 = a2 a1 = 2 5 = 3
...
Putem g
asi o formul
a general
a de calcul direct a lui an n
functie de n?

Cursul 4

Relatii de recurenta
Exemple

a0 = 3, a1 = 5, an = an1 an2 pentru n 2.


Toate elementele lui {an } pot fi calculate recursiv:
a2 = a1 a0 = 5 3 = 2
a3 = a2 a1 = 2 5 = 3
...
Putem g
asi o formul
a general
a de calcul direct a lui an n
functie de n?
a0 = 0, a1 = 3, an = 2 an1 an2 pentru n 2. Toate
elementele lui {an } pot fi calculate recursiv:
a2 = 2 a1 a0 = 6
a3 = 2 a2 a1 = 9
...
Se poate demonstra prin inductie ca an = 3 n pentru toti
n 0.
Cursul 4

Exemplu: iepuri si numere Fibonacci


O pereche tanara de iepuri ncepe sa se nmulteasca la varsta de 2 luni,
dand nastere lunar la o pereche de iepuri. Se presupune ca o pereche de
iepuri cu varsta de 0 luni este adusa pe o insula. Sa se determine o
relatie de recurenta pentru numarul de iepuri de pe insula dupa n luni.

f1 = 1, f2 = 1, fn = fn1 + fn2 if n 2.
Cursul 4

Exemplu: Turnul din Hanoi

Sa se mute toate discurile pe axul 2 n ordinea marimii lor, cu


discul cel mai mare asezat dedesubt.
Discurile pot fi mutate unul cate unul de pe un ax pe altul cu
conditia ca niciodata sa nu se puna un disc peste unul mai
mic.
Intrebare: Care este numarul minim de mutari necesare
pentru a rezolva problema turnului din Hanoi cu n discuri?
Cursul 4

Exemplu: Turnul din Hanoi (continuare)


R
aspuns: Fie Hn nr. minim de mutari necesare pentru a pune
n discuri n ordinea marimii, de pe un ax pe altul.
Pentru a pune cel mai mare disc la baza axului 2, va trebui
mai ntai sa mutam n 1 discuri mai mici de pe axul 1 pe axul
3. Nr. minim de mutari pentru a face acest lucru este Hn1 .
Dupa ce am pus cel mai mare disc de pe axul 1 pe axul 2,
putem efectua Hn1 mutari pentru a muta discurile de pe axul
3 pe axul 2.

ax 1

ax 2

Cursul 4

ax 3

Exemplu: Turnul din Hanoi (continuare)


R
aspuns: Fie Hn nr. minim de mutari necesare pentru a pune
n discuri n ordinea marimii, de pe un ax pe altul.
Pentru a pune cel mai mare disc la baza axului 2, va trebui
mai ntai sa mutam n 1 discuri mai mici de pe axul 1 pe axul
3. Nr. minim de mutari pentru a face acest lucru este Hn1 .
Dupa ce am pus cel mai mare disc de pe axul 1 pe axul 2,
putem efectua Hn1 mutari pentru a muta discurile de pe axul
3 pe axul 2.
(1) Hn1 mut
ari

ax 1

ax 2

Cursul 4

ax 3

Exemplu: Turnul din Hanoi (continuare)


R
aspuns: Fie Hn nr. minim de mutari necesare pentru a pune
n discuri n ordinea marimii, de pe un ax pe altul.
Pentru a pune cel mai mare disc la baza axului 2, va trebui
mai ntai sa mutam n 1 discuri mai mici de pe axul 1 pe axul
3. Nr. minim de mutari pentru a face acest lucru este Hn1 .
Dupa ce am pus cel mai mare disc de pe axul 1 pe axul 2,
putem efectua Hn1 mutari pentru a muta discurile de pe axul
3 pe axul 2.
(1) Hn1 mut
ari
(2) 1 mutare

ax 1

ax 2

Cursul 4

ax 3

Exemplu: Turnul din Hanoi (continuare)


R
aspuns: Fie Hn nr. minim de mutari necesare pentru a pune
n discuri n ordinea marimii, de pe un ax pe altul.
Pentru a pune cel mai mare disc la baza axului 2, va trebui
mai ntai sa mutam n 1 discuri mai mici de pe axul 1 pe axul
3. Nr. minim de mutari pentru a face acest lucru este Hn1 .
Dupa ce am pus cel mai mare disc de pe axul 1 pe axul 2,
putem efectua Hn1 mutari pentru a muta discurile de pe axul
3 pe axul 2.
(1) Hn1 mut
ari
(2) 1 mutare
(3) Hn1 mut
ari

ax 1

ax 2

Cursul 4

ax 3

Exemplu: Turnul din Hanoi (continuare)


R
aspuns: Fie Hn nr. minim de mutari necesare pentru a pune
n discuri n ordinea marimii, de pe un ax pe altul.
Pentru a pune cel mai mare disc la baza axului 2, va trebui
mai ntai sa mutam n 1 discuri mai mici de pe axul 1 pe axul
3. Nr. minim de mutari pentru a face acest lucru este Hn1 .
Dupa ce am pus cel mai mare disc de pe axul 1 pe axul 2,
putem efectua Hn1 mutari pentru a muta discurile de pe axul
3 pe axul 2.
(1) Hn1 mut
ari
(2) 1 mutare
(3) Hn1 mut
ari

ax 1

ax 2

ax 3

Hn = Hn1 + 1 + Hn1 = 2Hn1 + 1. Se observa ca H1 = 1.


Cursul 4

Exemplu: Turnul din Hanoi (continuat)


Putem aplica o metoda iterativa de aflare a unei formule de
calcul pentru Hn direct din n atunci cand n > 1:
Hn = 2 Hn1 + 1
= 2(2 Hn2 + 1) + 1 = 22 Hn2 + 2 + 1
= 22 (2 Hn3 + 1) + 2 + 1 = 23 Hn3 + 22 + 2 + 1
..
.
= 2n1 H1 + 2n2 + . . . + 2 + 1
= 2n1 + 2n2 + . . . + 2 + 1
2n 1
= 2n 1
=
21

Cursul 4

Exemplu: Turnul din Hanoi (continuat)


Putem aplica o metoda iterativa de aflare a unei formule de
calcul pentru Hn direct din n atunci cand n > 1:
Hn = 2 Hn1 + 1
= 2(2 Hn2 + 1) + 1 = 22 Hn2 + 2 + 1
= 22 (2 Hn3 + 1) + 2 + 1 = 23 Hn3 + 22 + 2 + 1
..
.
= 2n1 H1 + 2n2 + . . . + 2 + 1
= 2n1 + 2n2 + . . . + 2 + 1
2n 1
= 2n 1
=
21
Legenda turnului din Hanoi:

Cursul 4

Exemplu: Turnul din Hanoi (continuat)


Putem aplica o metoda iterativa de aflare a unei formule de
calcul pentru Hn direct din n atunci cand n > 1:
Hn = 2 Hn1 + 1
= 2(2 Hn2 + 1) + 1 = 22 Hn2 + 2 + 1
= 22 (2 Hn3 + 1) + 2 + 1 = 23 Hn3 + 22 + 2 + 1
..
.
= 2n1 H1 + 2n2 + . . . + 2 + 1
= 2n1 + 2n2 + . . . + 2 + 1
2n 1
= 2n 1
=
21
Legenda turnului din Hanoi:
I Sunt 64 discuri, iar mutarea unui disc dureaza 1 secunda

Cursul 4

Exemplu: Turnul din Hanoi (continuat)


Putem aplica o metoda iterativa de aflare a unei formule de
calcul pentru Hn direct din n atunci cand n > 1:
Hn = 2 Hn1 + 1
= 2(2 Hn2 + 1) + 1 = 22 Hn2 + 2 + 1
= 22 (2 Hn3 + 1) + 2 + 1 = 23 Hn3 + 22 + 2 + 1
..
.
= 2n1 H1 + 2n2 + . . . + 2 + 1
= 2n1 + 2n2 + . . . + 2 + 1
2n 1
= 2n 1
=
21
Legenda turnului din Hanoi:
I Sunt 64 discuri, iar mutarea unui disc dureaza 1 secunda
I Timpul minim de mutare a ntregului turn=
(264 1) s = 18446744073709551615 s 500 miliarde ani.
Cursul 4

Exemplu: Siruri speciale de biti


Sa se gaseasca o relatie de recurenta si conditiile initiale pentru
numarul de siruri de biti de lungime n care nu au doua zerouri
consecutive. Cate astfel de siruri de lungime 5 exista?

A: Avem de numarat a doua lucruri distincte:


1
2

S
irurile de n-biti fara 2 zerouri consec., care se termina cu 1:
S
irurile de n biti fara 2 zerouri consec. care se termina cu 0:
Nr. siruri de lungime n f
ar
a
00:

Se termin
a cu 1:

Orice sir de lungime n 1 f


ar
a 00

Se termin
a cu 0:

Orice sir de lungime n 2 f


ar
a
00

an1

an2

Total:
an = an1 + an2
S
irurile cu lungimea 1 sunt 0 and 1 a1 = 2, iar sirurile cu lungimea 2 f
ar
a 00 sunt
01, 10, 11 a2 = 3.
Cursul 4

Exemplu: Siruri speciale de biti (continuare)

Numarul an de siruri de biti de lungime n fara 00 satisface relatia


de recurenta
a1 = 2,

a2 = 3,

an = an1 + an2 daca n 2.

a3 = a1 + a2 = 2 + 3 = 5
a4 = a2 + a3 = 3 + 5 = 8
a5 = a3 + a4 = 5 + 8 = 13.

Cursul 4

Relatii de recurenta liniara


O relatie omogena de recurenta liniara de gradul k cu
coeficienti constanti este o relatie de forma
an = c1 an1 + c2 an2 + . . . + ck ank ,
unde c1 , c2 , . . . , ck R si ck 6= 0.
Daca se cunosc cele k conditii initiale
a0 = C0 , a1 = C1 , . . . , ak1 = Ck1 ,
atunci se poate calcula recursiv an pentru toti n k.
Exemplu (Relatii de recurenta liniara)
{fn } unde f0 = f1 = 1, si fn = fn1 + fn2 daca n > 1.
{Pn } unde P0 = 1, si Pn = 1.11 Pn1 daca n > 0.
Exemplu (Relatii de recurenta neliniara)
2
a0 = 1, a1 = 1, an = an1
+ an2 pentru toti n > 1.
Cursul 4

Relatii de recurenta liniara


Apar frecvent n procesul de modelare a problemelor.
Se poate determina o formula care calculeaza an direct din n.

Teorema 1
Se considera relatia de recurenta
an = c1 an1 + c2 an2 + . . . + ck ank , a0 = C0 , . . . , ak1 = Ck1 . (1)
Se presupune ca r1 , . . . , rt sunt radacinile distincte ale ecuatiei
r k c1 r k1 . . . ck = 0 cu multiplicitatile m1 , . . . , mt , unde mi 1
pentru i = 1, 2, . . . , t si m1 + m2 + . . . + mt = k. Atunci secventa {an }
este o solutie a relatiei de recurenta (1) daca si numai daca
an =(1,0 + 1,1 n + . . . + 1,m1 1 nm1 1 )r1n
+ (2,0 + 2,1 n + . . . + 2,m2 1 nm2 1 )r2n
+ . . . + (t,0 + t,1 n + . . . + t,mt 1 nmt 1 )rtn
pentru n N, unde i,j sunt constante pentru 1 i t si 0 j < mi .
Cursul 4

Relatii de recurenta liniara


Exemple

Sa se afle solutiile relatiei de recurenta


an = 3 an1 3 an2 an3
care satisface conditiile initiale a0 = 1, a1 = 2, si a2 = 1.

Cursul 4

Relatii de recurenta liniara


Exemple

Sa se afle solutiile relatiei de recurenta


an = 3 an1 3 an2 an3
care satisface conditiile initiale a0 = 1, a1 = 2, si a2 = 1.
spuns. Ecuatia caracteristica a relatiei de recurenta este
Ra
3
r + 3r 2 + 3r + 1 = 0, adica (r + 1)3 = 0, care are singura
radacina r = 1 cu multiplicitatea 3.

Cursul 4

Relatii de recurenta liniara


Exemple

Sa se afle solutiile relatiei de recurenta


an = 3 an1 3 an2 an3
care satisface conditiile initiale a0 = 1, a1 = 2, si a2 = 1.
spuns. Ecuatia caracteristica a relatiei de recurenta este
Ra
3
r + 3r 2 + 3r + 1 = 0, adica (r + 1)3 = 0, care are singura
radacina r = 1 cu multiplicitatea 3.
solutiile relatiei de recurenta sunt de forma
an = 1,0 (1)n + 1,1 n(1)n + 1,2 n2 (1)n .

Cursul 4

Relatii de recurenta liniara


Exemple

Sa se afle solutiile relatiei de recurenta


an = 3 an1 3 an2 an3
care satisface conditiile initiale a0 = 1, a1 = 2, si a2 = 1.
spuns. Ecuatia caracteristica a relatiei de recurenta este
Ra
3
r + 3r 2 + 3r + 1 = 0, adica (r + 1)3 = 0, care are singura
radacina r = 1 cu multiplicitatea 3.
solutiile relatiei de recurenta sunt de forma
an = 1,0 (1)n + 1,1 n(1)n + 1,2 n2 (1)n .
Mai avem de aflat constantele 1,0 , 1,1 , 1,2 ,
informatiile despre conditiile initiale:

a0 = 1 = 1,0

a1 = 2 = 1,0 1,1 1,2

a2 = 1 = 1,0 + 21,1 + 41,2


Cursul 4

folosind
1,0 = 1
1,1 = 3
1,2 = 2.

Relatii de recurenta liniara


Exemple

Sa se afle solutiile relatiei de recurenta


an = 3 an1 3 an2 an3
care satisface conditiile initiale a0 = 1, a1 = 2, si a2 = 1.
spuns. Ecuatia caracteristica a relatiei de recurenta este
Ra
3
r + 3r 2 + 3r + 1 = 0, adica (r + 1)3 = 0, care are singura
radacina r = 1 cu multiplicitatea 3.
solutiile relatiei de recurenta sunt de forma
an = 1,0 (1)n + 1,1 n(1)n + 1,2 n2 (1)n .
Mai avem de aflat constantele 1,0 , 1,1 , 1,2 ,
informatiile despre conditiile initiale:

a0 = 1 = 1,0

a1 = 2 = 1,0 1,1 1,2

a2 = 1 = 1,0 + 21,1 + 41,2


an = (1 + 3 n 2 n2 )(1)n .
Cursul 4

folosind
1,0 = 1
1,1 = 3
1,2 = 2.

Recurente liniare neomogene cu coeficienti constanti


Definitie
O relatie de recurenta liniara neomogena cu coeficienti constanti este
an = c1 an1 + c2 an2 + . . . + ck ank + F (n),
unde c1 , . . . , ck R si F (n) este o functie diferita de functia constanta 0,
care depinde doar de n. Recurenta liniara
an = c1 an1 + c2 an2 + . . . + ck ank
se numeste relatia omogena asociata.

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Definitie
O relatie de recurenta liniara neomogena cu coeficienti constanti este
an = c1 an1 + c2 an2 + . . . + ck ank + F (n),
unde c1 , . . . , ck R si F (n) este o functie diferita de functia constanta 0,
care depinde doar de n. Recurenta liniara
an = c1 an1 + c2 an2 + . . . + ck ank
se numeste relatia omogena asociata.

Exemple

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Definitie
O relatie de recurenta liniara neomogena cu coeficienti constanti este
an = c1 an1 + c2 an2 + . . . + ck ank + F (n),
unde c1 , . . . , ck R si F (n) este o functie diferita de functia constanta 0,
care depinde doar de n. Recurenta liniara
an = c1 an1 + c2 an2 + . . . + ck ank
se numeste relatia omogena asociata.

Exemple
1

an = an1 + 2n este o recurenta neomogena.


Relatia omogena asociata este an = an1 .

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Definitie
O relatie de recurenta liniara neomogena cu coeficienti constanti este
an = c1 an1 + c2 an2 + . . . + ck ank + F (n),
unde c1 , . . . , ck R si F (n) este o functie diferita de functia constanta 0,
care depinde doar de n. Recurenta liniara
an = c1 an1 + c2 an2 + . . . + ck ank
se numeste relatia omogena asociata.

Exemple
1

an = an1 + 2n este o recurenta neomogena.


Relatia omogena asociata este an = an1 .
an = an1 + an2 + n2 + n + 1 este o recurenta neomogena.
Relatia omogena asociata este an = an1 + an2 .
Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Teorema 2
(p)

Daca {an } este o solutie particulara a recurentei


an = c1 an1 + c2 an2 + . . . + ck ank + F (n),
(p)

(h)

(h)

atunci orice alta solutie este de forma {an + an }, unde {an }


(h)
unde {an } este o solutie a recurentei omogene asociate
an = c1 an1 + c2 an2 + . . . + ck ank .

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Teorema 2
(p)

Daca {an } este o solutie particulara a recurentei


an = c1 an1 + c2 an2 + . . . + ck ank + F (n),
(p)

(h)

(h)

atunci orice alta solutie este de forma {an + an }, unde {an }


(h)
unde {an } este o solutie a recurentei omogene asociate
an = c1 an1 + c2 an2 + . . . + ck ank .
Observat
ii:

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Teorema 2
(p)

Daca {an } este o solutie particulara a recurentei


an = c1 an1 + c2 an2 + . . . + ck ank + F (n),
(p)

(h)

(h)

atunci orice alta solutie este de forma {an + an }, unde {an }


(h)
unde {an } este o solutie a recurentei omogene asociate
an = c1 an1 + c2 an2 + . . . + ck ank .
Observat
ii:
(h)

I Stim din Teorema 1 cum sa calculam {an }.

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Teorema 2
(p)

Daca {an } este o solutie particulara a recurentei


an = c1 an1 + c2 an2 + . . . + ck ank + F (n),
(p)

(h)

(h)

atunci orice alta solutie este de forma {an + an }, unde {an }


(h)
unde {an } este o solutie a recurentei omogene asociate
an = c1 an1 + c2 an2 + . . . + ck ank .
Observat
ii:
(h)

I Stim din Teorema 1 cum sa calculam {an }.


(p)

I Cum putem afla o solutie particulara {an }?

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Aflarea unei solutii particulare

Teorema 3
Daca F (n) = (bt nt + bt1 nt1 + . . . + b1 t + b0 ) s n cu
b0 , . . . , bt1 , bt , s R atunci
1

Daca s nu este o radacina a ecuatiei caracteristice a recurentei


liniare omogene asociate, atunci exista o solutie particulara de
forma
(pt nt + pt1 nt1 + . . . + p1 n + p0 ) s n .

Daca s este o radacina cu multiplicitatea m a recurentei liniare


omogene asociate, atunci exista o solutie particulara de forma
nm (pt nt + pt1 nt1 + . . . + p1 n + p0 ) s n .

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Exemplul 1

Sa se afle solutia generala a recurentei liniare neomogene


an = 6 an1 9 an2 + F (n)
daca F (n) = n2 2n

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Exemplul 1

Sa se afle solutia generala a recurentei liniare neomogene


an = 6 an1 9 an2 + F (n)
daca F (n) = n2 2n
spuns: Recurenta liniara omogena asociata este
Ra
an = 6 an1 9 an2 . Ecuatia ei caracteristica este r 2 6 r + 9 = 0, care
are o singura radacina, r = 3, cu multiplicitatea 2.

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Exemplul 1

Sa se afle solutia generala a recurentei liniare neomogene


an = 6 an1 9 an2 + F (n)
daca F (n) = n2 2n
spuns: Recurenta liniara omogena asociata este
Ra
an = 6 an1 9 an2 . Ecuatia ei caracteristica este r 2 6 r + 9 = 0, care
are o singura radacina, r = 3, cu multiplicitatea 2.
(h)
solutia partii omogene este an = (b1 n + b0 ) 3n .

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Exemplul 1

Sa se afle solutia generala a recurentei liniare neomogene


an = 6 an1 9 an2 + F (n)
daca F (n) = n2 2n
spuns: Recurenta liniara omogena asociata este
Ra
an = 6 an1 9 an2 . Ecuatia ei caracteristica este r 2 6 r + 9 = 0, care
are o singura radacina, r = 3, cu multiplicitatea 2.
(h)
solutia partii omogene este an = (b1 n + b0 ) 3n .
F (n) este de forma Q(n) s n unde Q(n) este un polinom de gradul t = 2,
si s = 2 nu este radacina a ecuatiei caracteristice a recurentei omogene
asociate conform Teoremei 3, o solutie particulara este
(p)
an = (p2 n2 + p1 n + p0 ) 2n .

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Exemplul 1

Sa se afle solutia generala a recurentei liniare neomogene


an = 6 an1 9 an2 + F (n)
daca F (n) = n2 2n
spuns: Recurenta liniara omogena asociata este
Ra
an = 6 an1 9 an2 . Ecuatia ei caracteristica este r 2 6 r + 9 = 0, care
are o singura radacina, r = 3, cu multiplicitatea 2.
(h)
solutia partii omogene este an = (b1 n + b0 ) 3n .
F (n) este de forma Q(n) s n unde Q(n) este un polinom de gradul t = 2,
si s = 2 nu este radacina a ecuatiei caracteristice a recurentei omogene
asociate conform Teoremei 3, o solutie particulara este
(p)
an = (p2 n2 + p1 n + p0 ) 2n .
(p)
(p)
(p)
Din an = 6 an1 9 an2 + n2 2n obtinem
n2
2
2 ((p2 4)n + (p1 12 p2 )n + p0 6 p1 + 24 p2 ) = 0 p0 =
192, p1 = 48, p2 = 4

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Exemplul 1

Sa se afle solutia generala a recurentei liniare neomogene


an = 6 an1 9 an2 + F (n)
daca F (n) = n2 2n
spuns: Recurenta liniara omogena asociata este
Ra
an = 6 an1 9 an2 . Ecuatia ei caracteristica este r 2 6 r + 9 = 0, care
are o singura radacina, r = 3, cu multiplicitatea 2.
(h)
solutia partii omogene este an = (b1 n + b0 ) 3n .
F (n) este de forma Q(n) s n unde Q(n) este un polinom de gradul t = 2,
si s = 2 nu este radacina a ecuatiei caracteristice a recurentei omogene
asociate conform Teoremei 3, o solutie particulara este
(p)
an = (p2 n2 + p1 n + p0 ) 2n .
(p)
(p)
(p)
Din an = 6 an1 9 an2 + n2 2n obtinem
n2
2
2 ((p2 4)n + (p1 12 p2 )n + p0 6 p1 + 24 p2 ) = 0 p0 =
192, p1 = 48, p2 = 4
(p)
(h)
an = an + an = (4 n2 + 48 n + 192) 2n + (b1 n + b0 ) 3n .
Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Exemplul 2

Sa se afle solutia generala a recurentei liniare neomogene an = an1 + n


care satisface conditia initiala a1 = 1.

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Exemplul 2

Sa se afle solutia generala a recurentei liniare neomogene an = an1 + n


care satisface conditia initiala a1 = 1.
spuns: Recurenta liniara omogena asociata lui an este an = an1 .
Ra
Ecuatia caracteristica este r 1 = 0, deci solutia ei este de forma
(h)
an = c 1n = c unde c R.

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Exemplul 2

Sa se afle solutia generala a recurentei liniare neomogene an = an1 + n


care satisface conditia initiala a1 = 1.
spuns: Recurenta liniara omogena asociata lui an este an = an1 .
Ra
Ecuatia caracteristica este r 1 = 0, deci solutia ei este de forma
(h)
an = c 1n = c unde c R.
Partea neliniara este F (n) = Q(n) s n unde Q(n) = n si s = 1 este
radacina cu multiplicitatea 1 a ecuatiei caracteristice a recurentei liniare
omogene asociate conform Teoremei 3, exista o solutie particulara de
(p)
forma an = ns (p1 n + p0 ) 1n = p1 n2 + p0 n.

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Exemplul 2

Sa se afle solutia generala a recurentei liniare neomogene an = an1 + n


care satisface conditia initiala a1 = 1.
spuns: Recurenta liniara omogena asociata lui an este an = an1 .
Ra
Ecuatia caracteristica este r 1 = 0, deci solutia ei este de forma
(h)
an = c 1n = c unde c R.
Partea neliniara este F (n) = Q(n) s n unde Q(n) = n si s = 1 este
radacina cu multiplicitatea 1 a ecuatiei caracteristice a recurentei liniare
omogene asociate conform Teoremei 3, exista o solutie particulara de
(p)
forma an = ns (p1 n + p0 ) 1n = p1 n2 + p0 n.
(p)
(p)
Pentru a afla p0 and p1 , tinem cont de faptul ca an = an1 + n, care
implica n(2 p1 1) + (p0 p1 ) = 0, deci p0 = p1 = 12 . Rezulta ca
2
(p)
an = n2 + n2 = n(n+1)
.
2

Cursul 4

Recurente liniare neomogene cu coeficienti constanti


Exemplul 2

Sa se afle solutia generala a recurentei liniare neomogene an = an1 + n


care satisface conditia initiala a1 = 1.
spuns: Recurenta liniara omogena asociata lui an este an = an1 .
Ra
Ecuatia caracteristica este r 1 = 0, deci solutia ei este de forma
(h)
an = c 1n = c unde c R.
Partea neliniara este F (n) = Q(n) s n unde Q(n) = n si s = 1 este
radacina cu multiplicitatea 1 a ecuatiei caracteristice a recurentei liniare
omogene asociate conform Teoremei 3, exista o solutie particulara de
(p)
forma an = ns (p1 n + p0 ) 1n = p1 n2 + p0 n.
(p)
(p)
Pentru a afla p0 and p1 , tinem cont de faptul ca an = an1 + n, care
implica n(2 p1 1) + (p0 p1 ) = 0, deci p0 = p1 = 12 . Rezulta ca
2
(p)
an = n2 + n2 = n(n+1)
.
2
(p)
(h)
Din Teorema 2, rezulta ca an = an + an = c + n(n+1)
. Stim si ca
2
12
1 = a1 = c + 2 = c + 1, deci c = 0. Prin urmare an = n(n+1)
.
2

Cursul 4

Algoritmi Divide-and-Conquer si recurente

Principiul divide-and-conquer
Imparte o problema n una sau mai multi instante ale
aceluiasi tip de problema, dar de marimi mai mici.
Rezolva (cucereste) problema folosind solutiile
subproblemelor obtinute prin mpartire.

Cursul 4

Algoritmi Divide-and-Conquer si recurente

Principiul divide-and-conquer
Imparte o problema n una sau mai multi instante ale
aceluiasi tip de problema, dar de marimi mai mici.
Rezolva (cucereste) problema folosind solutiile
subproblemelor obtinute prin mpartire.
Exemple tipice:
1

Cautarea binara a unui element n o lista sortata.

Sortarea unei liste prin njumatatiri succesive care se sorteaza


separat.

...

Cursul 4

Relatii de recurenta Divide-and-Conquer


Fazele unui algoritm Divide-and-Conquer
Imparte o problema de marime n n b subprobleme de marime
n/b.
. In realitate, nu toate subproblemele au exact
Remarca
aceeasi marime: unele au marimea dn/be, altele au marimea
bn/bc.

m ca

Considera
f (n/b) := numarul de operatii necesare pt. a rezolva o
problema de marime n/b
a := numarul de subprobleme ce trebuiesc rezolvate.
g (n) := numarul de operatii suplimentare necesare pentru
combinarea solutiilor subproblemelor n o solutie a problemei
initiale (pasul conquer)

f (n) = a f (n/b) + g (n).


Aceasta este o recurenta divide-and-conquer.
Cursul 4

Divide-and-Conquer
Exemplul 1: C
autarea binar
a

Se cauta un element n o secventa sortata de n elemente, astfel:


Se mparte secventa sortata initiala n 2 secvente de marime
n/2, si se alege subsecventa n care se cauta mai departe o
singura subproblema de marime n/2
Sunt necesare 2 operatii pentru a determina:
1
2

subsecventa n care se cauta mai departe


daca secventa mai contine elemente.

Cursul 4

Divide-and-Conquer
Exemplul 1: C
autarea binar
a

Se cauta un element n o secventa sortata de n elemente, astfel:


Se mparte secventa sortata initiala n 2 secvente de marime
n/2, si se alege subsecventa n care se cauta mai departe o
singura subproblema de marime n/2
Sunt necesare 2 operatii pentru a determina:
1
2

subsecventa n care se cauta mai departe


daca secventa mai contine elemente.

recurenta divide-and-conquer
f (n) = f (n/2) + 2.

Cursul 4

Divide-and-Conquer
Exemplul 2: MergeSort

procedure MergeSort(L = a1 , . . . , an )
if n > 1 then
m = bn/2c
L1 = a1 , . . . , am
L2 = am+1 , . . . , an
L := merge(MergeSort(L1), MergeSort(L2))
/* L este acum sortata crescator */
procedure merge(L1 , L2 : sorted list)
L :=lista vida
while listele L1 si L2 sunt ambele nevide
elimina primul element al lui L1 sau al lui L2 , cel mai mic dintre ele
si adauga-l la sfarsitul listei L.
if eliminarea precedenta produce o lista vida
then elimina toate elementele din cealalta lista si
adauga-le la sfarsitul listei L.
Cursul 4

Divide-and-Conquer
Exemplul 2: MergeSort (continuare)

Combinarea listelor
Prima lista A doua lista
2,3,5,6
1,4
2,3,5,6
4
3,5,6
4
5,6
4
5,6

sortate 2,3,5,6 si 1,4.


Lista combinata Comparari
1<2
1
2<4
1,2
3<4
1,2,3
4<5
1,2,3,4
1,2,3,4,5,6

Cursul 4

Divide-and-Conquer
Exemplul 2: MergeSort (continuare)

Combinarea listelor
Prima lista A doua lista
2,3,5,6
1,4
2,3,5,6
4
3,5,6
4
5,6
4
5,6

sortate 2,3,5,6 si 1,4.


Lista combinata Comparari
1<2
1
2<4
1,2
3<4
1,2,3
4<5
1,2,3,4
1,2,3,4,5,6

Observat
ii
1

MergeSort efectueaza mai putin de n comparatii pentru a


combina 2 liste sortate de cate n/2 elemente fiecare.

Numarul de comparatii efectuate de MergeSort pt. sortarea unei


liste de n elemente este mai mic decat M(n), unde
M(n) = 2 M(n/2) + n.
Cursul 4

Recurente Divide-and-Conquer
Estimarea m
arimii solutiilor

Teorema 4
Fie f o functie crescatoare care satisface relatia de recurenta
f (n) = a f (n/b) + c
ori de cate ori n se divide cu b, unde a 1, b este un ntreg mai
mare decat 1, si c R este pozitiv. Atunci

O(nlogb (a) ) daca a > 1
f (n) este
O(log n)
daca a = 1.
In plus, daca n = b k , unde k este un ntreg pozitiv, atunci
f (n) = C1 nlogb a + C2 ,
unde C1 = f (1) + C /(a 1) si C2 = c/(a 1).
Cursul 4

Relatii Divide-and-Conquer
Estimarea m
arimii solutiilor

Teorema 5 (Master Theorem)


Fie f o functie crescatoare care satisface relatia de recurenta
f (n) = a f (n/b) + c nd
ori de cate ori n = b k , unde k este un ntreg pozitiv, a 1, b este
un ntreg mai mare decat 1, si c, d R cu c > 0 si d 0. Atunci

daca a < b d ,
O(nd )
d
O(n log n) daca a = b d ,
f (n) este

O(nlogb a )
daca a > b d .

Cursul 4

Relatii Divide-and-Conquer
Estimarea m
arimii solutiilor

Teorema 5 (Master Theorem)


Fie f o functie crescatoare care satisface relatia de recurenta
f (n) = a f (n/b) + c nd
ori de cate ori n = b k , unde k este un ntreg pozitiv, a 1, b este
un ntreg mai mare decat 1, si c, d R cu c > 0 si d 0. Atunci

daca a < b d ,
O(nd )
d
O(n log n) daca a = b d ,
f (n) este

O(nlogb a )
daca a > b d .
Exemplu (Complexitatea lui MergeSort)
M(n) = a M(n/b) + c nd unde a = b = 2, c = d = 1
M(n) este O(n log n).
Cursul 4

Bibliografie

Sectiunea 3.1 din


S. Pemmaraju, S. Skiena. Combinatorics and Graph Theory
with Mathematica. Cambridge University Press. 2003.
Capitolul 7 din
Kenneth H. Rosen. Discrete Mathematics and Its
Applications. Sixth Edition. McGraw-Hill, 2007.

Cursul 4

S-ar putea să vă placă și