Documente Academic
Documente Profesional
Documente Cultură
Dorel Lucanu
Faculty of Computer Science
Alexandru Ioan Cuza University, Iasi, Romania
dlucanu@info.uaic.ro
PA 2013/2014
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 1 / 47
Outline
1
Complexitatea problemelor
2
Complexitatea sortarii
3
Complexitatea cautarii divide-et-impera
4
Reducerea polinomiala problemelor
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 2 / 47
Complexitatea problemelor
Plan
1
Complexitatea problemelor
2
Complexitatea sortarii
3
Complexitatea cautarii divide-et-impera
4
Reducerea polinomiala problemelor
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 3 / 47
Complexitatea problemelor
De ce denim complexitatea unei probleme
Pana acum am clasicat problemele n rezolvabile si nerezolvabile.
Pentru o problema rezolvabila pot exista mai mult i algoritmi care sa o
rezolve.
De fapt daca exista unul, atunci exista o innitate. (De ce?)
Am vazut cum se masoara ecient a unui algoritm.
Ce putem spune despre ecient a rezolvarii unei probleme?
Denit iile de la ecient a algoritmilor pot usor transferate la probleme.
De exemplu, complexitatea timp a unei probleme se refera la complexitatea
timp a algoritmilor care rezolva problema. Pentru ecare versiune a
denit iei pentru algorimi (n cazul cel mai nefavorabil, medie, cost uniform,
cost logaritmic,. . . ), vom avea una corespunzatoare pentru probleme.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 4 / 47
Complexitatea problemelor
Denit ia complexitat ii O(f (n)) a unei probleme
Ofera o margine superioara pentru efortul computat ional necesar rezolvarii
unei probleme.
Denit ie
Problema P are complexitatea timp n cazul cel mai nefavorabil O(f (n))
daca exista un algoritm A care rezolva P si T
A
(n) = O(f (n)).
Pentru a arata ca o problema P are complexitatea timp n cazul cel mai
nefavorabil O(f (n)), este sucient de gasit un algoritm A care rezolva P si
sa aratam ca A are complexitatea timp n cazul cel mai nefavorabil
O(f (n)). Valoarea lui f (n) ne da o margine superioara pentru timpul
necesar rezolvarii unei instant e de dimensiune n.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 5 / 47
Complexitatea problemelor
Denit ia complexitat ii (f (n)) a unei probleme
Ofera o margine inferioara pentru efortul computat ional necesar rezolvarii
unei probleme.
Denit ie
P are complexitatea timp n cazul cel mai nefavorabil (f (n)) daca orice
algoritm A care rezolva P are T
A
(n) = (f (n)).
Acest tip de informat ie este mult mai dicil de obt inut deoarece trebuie
araatat ca nu exista algoritmi care sa rezolve orice instant a de dimensiune
n ntr-un timp mai mic decat f (n) multiplicat cu o constanta. Vom studia
doar doua probleme pentru care exista dovedita aceasta margine inferioara:
sortarea si cautarea.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 6 / 47
Complexitatea problemelor
Algoritm optim pentru o problema
Denit ie
A este algoritm optim (din punct de vedere al complexitat ii timp pentru
cazul cel mai nefavorabil) pentru problema P daca
A rezolva P si
P are complexitatea timp n cazul cel mai nefavorabil (T
A
(n)).
Se poate dovedi ca un algoritm este optim din punct de vedere al timpului
de execut ie numai daca se cunoaste limita inferioara pentru problema; din
acest motiv se cunosc put ini algoritmi optimi.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 7 / 47
Complexitatea sortarii
Plan
1
Complexitatea problemelor
2
Complexitatea sortarii
3
Complexitatea cautarii divide-et-impera
4
Reducerea polinomiala problemelor
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 8 / 47
Complexitatea sortarii
Problema sortarii
Consideram cazul particular al sortarii tablourilor:
SORT
Intrare n si tabloul a = i v
i
[ i = 0, . . . , n 1.
Iesire tabloul a
= i w
i
[ i = 0, . . . , n 1 cu proprietat ile:
w
0
w
n1
si (w
0
, . . . , w
n1
) este o permutare a
secvent ei (v
0
, . . . , v
n1
); convenim sa notam aceasta
proprietate prin Perm(a, a
).
Notam cu SORT(a, n) predicatul care ia valoarea true daca si numai daca
tabloul a cu n elemente este sortat.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 9 / 47
Complexitatea sortarii
Sortare prin interschimbare (BubbleSort)
Metoda bubble sort se bazeaza pe urmatoarea denit ie a predicatului
SORT(a, n):
SORT(a, n) (i )(0 i < n 1) a[i ] a[i + 1]
Descrierea algoritmului este urmatoarea:
bubbleSort(a, n) {
ultim = n-1;
while (ultim > 0) {
n1 = ultim;
ultim = 0;
for (i=0; i < n1; i = i+1) {
if (a[i] > a[i+1]) {
swap (a, i, i+1);
ultim = i;
}
}
}
}
swap(a, i, j) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 10 / 47
Complexitatea sortarii
Evaluarea algoritmului BubbleSort
Corectitudine Invariant bucla while: a[ultim .. n 1] include cele mai
mari n 1 ultim elemente din a init ial (v
0
, . . . , v
n1
) ordonate crescator
Invariant bucla for: a[j] a[i] pentru j = 0, . . . , i .
Ambele bucle ment in invariant si predicatul Perm(a, a
), unde a
este
valoarea curenta a variabilei a.
Timp de execut ie Cazul cel mai nefavorabil este obt inut cand secvent a de
intrare este ordonata descrescator si, n acest caz, procedura executa
O(n
2
) operat ii.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 11 / 47
Complexitatea sortarii
Sortare prin insert ie directa (InsertSort)
Principiul de baza al algoritmului de sortare prin insert ie este urmatorul:
Se presupune ca subsecvent a a[0 .. j 1] este sortata. Se cauta n aceasta
subsecvent a locul i al elementului a[j ] si se insereaza a[j ] pe pozit ia i .
Pozit ia i este determinata astfel:
i = 0 daca a[j ] < a[0];
0 < i < j si satisface a[i 1] a[j ] < a[i ];
i = j daca a[j ] a[j 1].
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 12 / 47
Complexitatea sortarii
InsertSort: algoritmul
insertSort(a, n) {
for (j = 1; j < n; j = j+1) {
i = j - 1;
temp = a[i];
while ((i >= 0) && (temp < a[i])) {
a[i+1] = a[i];
i = i -1;
}
if (i != j-1) a[i+1] = temp;
}
}
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 13 / 47
Complexitatea sortarii
Evaluarea algoritmului InsertSort
Corectitudine Invariantul buclei for este format din Perm(a, v
0
, . . . , v
n1
)
si din proprietatea ca primele j 1 sunt ordonate crescator. Invariantul
buclei while include ca temp a[i + 1], . . . , a[j 1], iar dupa while
avem invariantul si a[i] temp sau i < 0.
Timp de execut ie Cazul cel mai nefavorabil este obt inut cand secvent a de
intrare este ordonata descrescator. Cautarea pozit iei i n subsecvent a
a[0 .. j 1] necesita j 1 translat ii j 1 comaparat ii. Rezulta ca timpul
total n cazul cel mai nefavorabil este O(1 + + n 1) = O(n
2
).
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 14 / 47
Complexitatea sortarii
Select ia sistematica
Se bazeaza pe structura de date de tip max-heap. Metoda de sortare prin
select ie sistematica consta n parcurgerea a doua etape:
Construirea pentru secvent a curenta a proprietat ii MAXHEAP(a).
Selectarea n mod repetat a elementului maximal din secvent a curenta
si refacerea proprietat ii MAXHEAP pentru secvent a ramasa.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 15 / 47
Complexitatea sortarii
Algoritmul HeapSort
insertInHeap(a, n, l) {
isHeap = false; j = l;
while ((2*(j-1) <= n-1) && ! isHeap) {
k = 2*j +1;
if ((k < n-1) && (a[k] < a[k+1])) k = k+1;
if (a[j] < a[k]) swap(a, j, k); else isHeap = true;
j = k;
}
}
heapSort(a, n) {
for (l = (n-1)/2; l >= 0; l = l-1)
insertInHeap(a, n, l);
r = n-1;
while (r >= 1) {
swap(a, 0, r);
insertInHeap(a, r, 0);
r = r - 1;
}
}
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 16 / 47
Complexitatea sortarii
Evaluarea algoritmului HeapSort
Corectitudine Se bazeaza pe corectitudinea implementarii operat iilor peste
max-heap.
Explicat ii pe tabla.
Timp de execut ie Cazul cel mai nefavorabil este dat de un tablou deja
ordonat (!).
Operat ia de insertt ie ntr-un max-heap se realizeaza n timpul O(log n).
Prima etapa se va realiza n timpul O((n/2) log n) = O(n log n).
Etapa a doua necesita timpul
O(log(n 1) + + log 1) = O(log n!) = O(n log n).
Rezulta ca timpul de execut ie n cazul cel mai nefavorabil este O(n log n).
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 17 / 47
Complexitatea sortarii
Alt i algoritmi de sortare
Exercit ii pentru seminar.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 18 / 47
Complexitatea sortarii
Doua ntrebari despe algoritmii de sortare
Algoritmii de sortare prezentat i pana acum se bazeaza pe executarea a
doua operat ii primitive: compararea si interschimbarea a doua elemente.
Deoarece orice interschimbare este, n general, precedata de o comparat ie
(prin care se decide daca interschimbarea este necesara) putem spune ca
operat iile de comparare domina calculul oricarui algoritm prezentat pana
acum.
Ne punem urmatoarele doua ntrebari:
care este numarul minim de comparat ii executate n cazul cel mai
nefavorabil?
care algoritmi de sortare realizeaza minimul de comparat ii, i.e. care
algoritmi sunt optimali?
Pentru a putea raspunde la cele doua ntrebari trebuie mai ntai sa
precizam modelul de calcul peste care sunt construit i acesti algoritmi.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 19 / 47
Complexitatea sortarii
Arborii de decizie pentru sortare: intuitiv
Pentru simplitate vom presupune a
i
,= a
j
daca i ,= j . Deoarece raspunsul
dat de comparat ia i ? j are numai doua posibilitat i de alegere, rezulta ca
putem reprezenta cele doua mult imi de comparat ii prin intermediul unui
arbore binar:
radacina va cont ine o comparat ie i ? j ;
subarborele din stanga cont ine comparat iile facute n cazul a
i
< a
j
;
subarborele din dreapta cont ine comparat iile facute n cazul a
i
> a
j
.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 20 / 47
Complexitatea sortarii
Algoritmi reprezentat i ca arborii de decizie (pentru sortare)
Denit ie
Un arbore de decizie pentru n elemente este un arbore binar n care varfurile
interne sunt etichetate cu perechi de forma i ? j , iar varfurile de pe frontiera sunt
etichetate cu permutari ale mult imii 0, 1, . . . , n 1.
Denit ie
Fie t un arbore de decizie de dimensiune n si secvent a a = (a
0
, . . . , a
n1
).
Calculul lui t pentru intrarea a consta n parcurgerea unui drum de la radacina la
un varf de pe frontiera denit astfel:
1. Init ial se pleaca din radacina.
2. Presupunem ca varful curent este i ? j . Daca a
i
< a
j
atunci ul din stanga
lui i ? j devine varf curent; altfel ul din dreapta devine varf curent.
3. Calculul se opreste daca varful curent este pe frontiera.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 21 / 47
Complexitatea sortarii
Arbori de decizie pentru sortare
Denit ie
Fie t un arbore de decizie pentru n elemente. Spunem ca t rezolva
problema sortarii daca pentru orice intrare a = (a
0
, . . . , a
n1
), calculul lui
t pentru a se termina ntr-un varf cu permutarea astfel ncat
a
(0)
< < a
(n1)
. Un arbore de decizie care rezolva problema sortarii
va mai numit si arbore de decizie pentru sortare iar modelul de calcul va
numit modelul arborilor de decizie pentru sortare.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 22 / 47
Complexitatea sortarii
Arborele de decizie pentru InsertSort
0?1
1?2
0?2
0?2
1?2
0,1,2
1,0,2
0,2,1 2,0,1 1,2,0
2,1,0
<
<
<
<
<
>
>
>
>
>
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 23 / 47
Complexitatea sortarii
Complexitatea sortarii
Putem deni acum timpul de execut ie minim pentru cazul cel mai
nefavorabil prin expresia:
T(n) = min
t
max
length(, t)
unde length(, t) reprezinta lungimea drumului de la radacina la varful pe
frontiera etichetat cu n arborele de decizie pentru sortare t.
Teorema
Problema sortarii are timpul de execut ie pentru cazul cel mai nefavorabil
(n log n) n modelul arborilor de decizie pentru sortare.
Demonstrat ie. Un arbore de decizie de dimensiune n care rezolva problema
sortarii are n! varfuri pe frontiera. Un arbore de nalt ime k are cel mult 2
k
varfuri
pe frontiera. De aici rezulta
2
T(n)
n!
care implica T(n) log
2
(n!) = (n log
2
n). sfdem
Corolar
Algoritmul HeapSort este optimal n modelul arborilor de decizie pentru sortare.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 24 / 47
Complexitatea cautarii divide-et-impera
Plan
1
Complexitatea problemelor
2
Complexitatea sortarii
3
Complexitatea cautarii divide-et-impera
4
Reducerea polinomiala problemelor
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 25 / 47
Complexitatea cautarii divide-et-impera
Problema cautarii
Instant a o mult ime univers |, o submult ime S | si un element a din
|;
Intrebare a S ?
Presupunem ca | este total ordonata si mult imea S este reprezentata de
tabloul (s[i] [ 0 i n 1) cu s[0] < < s[n 1].
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 26 / 47
Complexitatea cautarii divide-et-impera
Algoritm generic divide-et-impera de cautare: ideea
Mai ntai generalizam problema presupunand ca se cauta a n secvent a
(s[p], . . . , s[q]). Reamintim ca are loc s[p] < < s[q]. Algoritmii de cautare
bazat i pe paradigma divide-et-impera au o descriere recursiva denita dupa
urmatoarea strategie:
se determina m cu p m q;
daca a = s[m] atunci cautarea se termina cu succes;
daca a < s[m] atunci cautarea continua cu subsecvent a (s[p], . . . , s[m 1]);
daca a > s[m] atunci cautarea continua cu subsecvent a (s[m + 1], . . . , s[q]);
cu proprietat ile M
M si
exista o submult ime S
S cu
xS
x = M
.
SSD2
Instant a O mult ime S de numere ntregi, M, K doua numere ntregi
pozitive cu K M.
cu proprietat ile K M
M si
xS
x = M
S?
SSD3
Instant a O mult ime S de numere ntregi, M un numar ntreg pozitiv.
S cu
xS
x = M?
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 39 / 47
Reducerea polinomiala problemelor
Exemplu: SSD1 SSD2
SSD1
Intrare O mult ime S de numere ntregi, M numar ntreg pozitiv.
Iesire Cel mai mare numar ntreg M
cu proprietat ile M
M si exista o
submult ime S
S cu
xS
x = M
.
SSD2
Instant a O mult ime S de numere ntregi, M, K doua numere ntregi pozitive
cu K M.
cu proprietat ile K M
M si
xS
x = M
S?
1
nu exista preprocesare;
2
cauta binar pe M
cu proprietat ile M
M si exista o
submult ime S
S cu
xS
x = M
.
SSD2
Instant a O mult ime S de numere ntregi, M, K doua numere ntregi pozitive
cu K < M.
cu proprietat ile K M
M si
xS
x = M
S?
1
nu exista preprocesare;
2
calculeaza M
cu proprietat ile M
M si exista o
submult ime S
S cu
xS
x = M
.
SSD3
Instant a O mult ime S de numere ntregi, M un numar ntreg pozitiv.
S cu
xS
x = M?
1
nu exista preprocesare;
2
calculeaza M
cu proprietat ile K M
M si
xS
x = M
S?
SSD3
Instant a O mult ime S de numere ntregi, M un numar ntreg pozitiv.
S cu
xS
x = M?
1
nu exista preprocesare;
2
apeleaza un algoritm care rezolva SSD2 pentru instant a S, M, M;
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 44 / 47
Reducerea polinomiala problemelor
Exemplu: SUBSET DISJOINT
SUBSET
Instant a Doua mult imi S
1
si S
2
.
Intrebare S
1
S
2
?
DISJOINT
Instant a Doua mult imi S
1
si S
2
.
Intrebare S
1
S
2
= ?
SUBSET DISJOINT:
1
se considera la intrare o instant a S
1
, S
2
a lui SUBSET;
2
calculeaza t(S
1
, S
2
) = S
1
, S
2
3
ntoarce rezultatul ntors de un algoritm care rezolva DISJOINT
pentru instant a S
1
, S
2
.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 45 / 47
Reducerea polinomiala problemelor
Reducerea: proprietat i
Teorema
a) Daca P are complexitatea timp (f (n)) si P
g(n)
Q atunci Q are
complexitatea timp (f (n) g(n)).
b) Daca Q are complexitatea O(f (n)) si P
g(n)
Q atunci P are
complexitatea O(f (n) + g(n)).
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 46 / 47