Structura Permutarilor
Structura Permutarilor
Structura Permutarilor
Octombrie 2013
Cursul 4
Permutari si cicluri
Permutarile au si rolul de functii de rearanjare.
Exemplu
1
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
Observatie
Orice permutare poate fi reprezentata ca o compozitie de cicluri
disjuncte. Aceasta reprezentare se numeste structura ciclica a
permutarii.
Exemplu
1
Cursul 4
Cursul 4
(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
Cursul 4
(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
Structuri ciclice
Construirea structurii ciclice canonice a unei permut
ari
Idee de baza
1
Cursul 4
Structuri ciclice
Construirea structurii ciclice canonice a unei permut
ari
Idee de baza
1
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
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
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
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
( 1 , 3 , 4 )( 2 , 6 , 7 )( 5 )
Structuri ciclice
Tipul unei permut
ari
Cursul 4
Structuri ciclice
Tipul unei permut
ari
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
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
Cursul 4
cicluri cu lung. 1
...
c1n . . . cn
| {z }n
cicluri cu lung. n
Cursul 4
cicluri cu lung. 1
...
c1n . . . cn
| {z }n
cicluri cu lung. n
Cursul 4
cicluri cu lung. 1
...
c1n . . . cn
| {z }n
cicluri cu lung. n
n!
1 ! 2 ! . . . n ! 11 22 . . . nn
Cursul 4
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
Cursul 4
Cursul 4
Cursul 4
Cursul 4
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)
(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)
(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)
(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)
(evolutie)
Relatii de recurenta
Exemple
Cursul 4
Relatii de recurenta
Exemple
Cursul 4
Relatii de recurenta
Exemple
f1 = 1, f2 = 1, fn = fn1 + fn2 if n 2.
Cursul 4
ax 1
ax 2
Cursul 4
ax 3
ax 1
ax 2
Cursul 4
ax 3
ax 1
ax 2
Cursul 4
ax 3
ax 1
ax 2
Cursul 4
ax 3
ax 1
ax 2
ax 3
Cursul 4
Cursul 4
Cursul 4
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:
Se termin
a cu 0:
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
a2 = 3,
a3 = a1 + a2 = 2 + 3 = 5
a4 = a2 + a3 = 3 + 5 = 8
a5 = a3 + a4 = 5 + 8 = 13.
Cursul 4
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
Cursul 4
Cursul 4
Cursul 4
a0 = 1 = 1,0
folosind
1,0 = 1
1,1 = 3
1,2 = 2.
a0 = 1 = 1,0
folosind
1,0 = 1
1,1 = 3
1,2 = 2.
Cursul 4
Exemple
Cursul 4
Exemple
1
Cursul 4
Exemple
1
(h)
(h)
Cursul 4
(h)
(h)
Cursul 4
(h)
(h)
Cursul 4
(h)
(h)
Cursul 4
Teorema 3
Daca F (n) = (bt nt + bt1 nt1 + . . . + b1 t + b0 ) s n cu
b0 , . . . , bt1 , bt , s R atunci
1
Cursul 4
Cursul 4
Cursul 4
Cursul 4
Cursul 4
Cursul 4
Cursul 4
Cursul 4
Cursul 4
Cursul 4
Cursul 4
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
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
...
Cursul 4
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)
Divide-and-Conquer
Exemplul 1: C
autarea binar
a
Cursul 4
Divide-and-Conquer
Exemplul 1: C
autarea binar
a
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
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
Observat
ii
1
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
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
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
Cursul 4