Sunteți pe pagina 1din 46

Complexitatea problemelor

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]);

In funct ie de modul de alegere a valorii m prin instruct iunile 2 si 5, se disting mai


mult i algoritmi de cautare. Cei mai cunoscut i dintre acestia sunt:
Cautare liniara (secvent iala). Se alege m = p.
Cautare binara. Se alege m = ,
p + q
2
|.
Cautare Fibonacci. Se presupune q +1 p = Fib(k) 1 unde Fib(k) este la
k-lea numar Fibonacci. Se alege m astfel ncat m p = Fib(k 1) 1 si
q m = Fib(k 2) 1.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 27 / 47
Complexitatea cautarii divide-et-impera
Algoritm generic divide-et-impera de cautare
pos(s, n, a) {
p = 0; q = n - 1;
2: alege m ntre p si q
while ( (a != s[m]) && (p < q)) {
if (a < s[m]) p = m -1; else q = m + 1;
5: alege m ntre p si q
}
if (a == s[m]) return m; else return -1;
}
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 28 / 47
Complexitatea cautarii divide-et-impera
Algoritmi reprezentat i ca arbori de decizie (pentru cautare)
Denit ie
Arborele de decizie pentru cautare de dimensiune n atasat unui algoritm
bazat pe metoda divide-et-impera este denit dupa cum urmeaza:
Mai ntai se deneste recursiv arborele T(p, q) astfel:
daca p > q atunci T(p, q) este arborele vid;
altfel, radacina este m calculata de algoritmul utilizate de instruct iunea
2 sau 5, iar subarborele stang este T(p, m 1) si cel drept este
T(m + 1, q).
Arborele de decizie pentru cautare de dimensiune n este T(0, n 1)
la care se adauga varfurile externe avand ca etichete intervalele
(, X
0
), (X
0
, X
1
), . . . , (X
n1
, +) n aceasta ordine de la stanga la
dreapta, unde X
0
, . . . , X
n1
sunt n variabile.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 29 / 47
Complexitatea cautarii divide-et-impera
Exemplu de arbore de decizie pentru cautarea binara
T(p,q)
m
T(p,m-1) T(m+1,q)
T = T(0,n-1)
n = 6
1 3
5
4
2
0
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 30 / 47
Complexitatea cautarii divide-et-impera
Algoritmi reprezentat i ca arbori de decizie (pentru cautare)
Denit ie
Calculul unui arbore de decizie pentru intrarea x
0
, . . . , x
n1
, a, unde
x
0
< < x
n1
, consta n:
1
etichetarea nodurilor interne cu x
0
, . . . , x
n1
astfel ncat lista inordine ne da
ordinea crescatoare a etichetelor, si
2
parcurgerea unui drum de la radacina spre frontiera determinat astfel: daca
varful curent v este etichetat cu x
m
(vom vedea ca m este dat de
instruct iunea 2 sau 5 din schema procedurala divide-et-impera) atunci:
1 daca v este varf extern etichetat (X
i
, X
i +1
) atunci a (x
i
, x
i +1
)
(variabila X
i
este interpretata ca avand valoarea x
i
) si calculul se
termina cu insucces;
2 daca a = x
m
atunci calculul se termina cu succes;
3 daca a < x
m
atunci radacina subarborelui stang devine varf curent;
4 daca a > x
m
atunci radacina subarborelui drept devine varf curent.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 31 / 47
Complexitatea cautarii divide-et-impera
Cazul particular al cautarii binare
Lema
Fie t arborele de decizie pentru cautare cu n varfuri corespunzator cautarii
binare. Daca 2
h1
n < 2
h
, atunci nalt imea lui t este h.
Corolar
Timpul de execut ie pentru cazul cel mai nefavorabil al cautarii binare este
O(log
2
n).
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 32 / 47
Complexitatea cautarii divide-et-impera
Proprietat i ale arborilor de decizie pentru cautare
Denit ie
Fie t un arbore de decizie pentru cautare. Lungimea interna a lui t, notata
IntLength(t), este suma lungimilor drumurilor de la radacina la varfurile
interne. Lungimea externa a lui t, notata ExtLength(t), este suma
lungimilor drumurilor de la radacina la varfurile de pe frontiera (pendante).
Lema
Fie t un arbore de decizie pentru cautare cu n varfuri interne. Atunci:
ExtLength(t) IntLength(t) = 2n.
Lema
Lungimea interna minima a unui arbore de decizie cu n varfuri interne este:
(n + 1)(h 1) 2
h
+ 2
unde h = ,log
2
(n + 1)|.
Corolar
Lungimea externa minima a unui arbore de decizie este
(n + 1)(h + 1) 2
h
.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 33 / 47
Complexitatea cautarii divide-et-impera
Complexitatea cautarii
Teorema
Problema cautarii are timpul de execut ie n cazul cel mai nefavorabil
(log n) n modelul arborilor de decizie pentru cautare.
Corolar
Cautarea binara este optima din punct de vedere al timpului mediu de
execut ie n modelul arborilor de decizie pentru cautare.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 34 / 47
Reducerea polinomiala 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 35 / 47
Reducerea polinomiala problemelor
Motivat ie
Mentalitate: Daca stiu sa rezolv problema Q, pot utiliza acel algoritm sa
rezolv P?
Intuitiv: Problema P se reduce la Q daca un algoritm care rezolva Q
poate ajuta la rezolvarea lui P.
Aplicat ii:
proiectarea de algoritmi
demonstrarea limitelor: daca P este dicila atunci si Q este dicila
clasicarea problemelor
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 36 / 47
Reducerea polinomiala problemelor
Cazul comun (reducerea Turing)
Problema P se reduce polinomial la problema (rezolvabila) Q, notam
P Q, daca se poate construi un algoritm care rezolva P dupa
urmatoarea schema:
1
se considera la intrare o instant a p a lui P;
2
preproceseaza n timp polinomial intrarea p
3
se apeleaza algoritmul pentru Q, posibil de mai multe ori (un numar
polinomial)
4
se postproceseaza rezultatul dat de Q n timp polinomial
Daca pasii de preprocesare si postprocesare necesita O(g(n)) timp, atunci
scriem P
g(n)
Q.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 37 / 47
Reducerea polinomiala problemelor
Exemplu: MAX SORT
Fie MAX problema determinarii elementului maxim dintr-o mult ime:
Intrare O mult ime S total ordonata.
Iesire Cel mai mare element din S.
Urmatorul algoritm rezolva MAX:
1
reprezinta S cu un tablou s (preprocesare);
2
apeleaza un algoritm de sortare pentru s;
3
ntoarce ultimul element din s (postprocesarea);
Deoarece algoritmul de mai sus este mai complex decat algoritmul care
determina maximul enumerand toate elementele din S, rezulta ca nu
este ntotdeauna o reducere de la o problema mai complexa la una mai
simpla. De aceea termenul de transformare este mai potrivit.
Ment inem totusi si termenul de reducere pentru ca asa este cunoscut n
literatura.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 38 / 47
Reducerea polinomiala problemelor
Variante pentru submult imea de suma data
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.

Intrebare Exista numar ntreg M

cu proprietat ile K M

M si

xS

x = M

pentru o o submult ime oarecare S

S?
SSD3
Instant a O mult ime S de numere ntregi, M un numar ntreg pozitiv.

Intrebare Exista o submult ime S

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.

Intrebare Exista numar ntreg M

cu proprietat ile K M

M si

xS

x = M

pentru o o submult ime oarecare S

S?
1
nu exista preprocesare;
2
cauta binar pe M

n intervalul (0, M] apeland un algoritm care


rezolva SSD2;
Acesta este un exemplu de reducerea unei probleme de optim la versiunea
ei ca problema de decizie.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 40 / 47
Reducerea polinomiala problemelor
Exemplu: SSD2 SSD1
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.

Intrebare Exista numar ntreg M

cu proprietat ile K M

M si

xS

x = M

pentru o o submult ime oarecare S

S?
1
nu exista preprocesare;
2
calculeaza M

M apeland un algoritm care rezolva SSD1;


3
daca M

K ntoarce DA, altfel ntoarce NU;


D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 41 / 47
Reducerea polinomiala problemelor
Exemplu: SSD3 SSD1
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

.
SSD3
Instant a O mult ime S de numere ntregi, M un numar ntreg pozitiv.

Intrebare Exista o submult ime S

S cu

xS

x = M?
1
nu exista preprocesare;
2
calculeaza M

M apeland un algoritm care rezolva SSD1;


3
daca M

= M ntoarce DA, altfel ntoarce NU;


D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 42 / 47
Reducerea polinomiala problemelor
Reducerea Karp
Se considera P si Q probleme de decizie.
Problema P se reduce polinomial la problema (rezolvabila) Q, notam
P Q, daca se poate construi un algoritm care rezolva P dupa
urmatoarea schema
1
se considera la intrare o instant a p a lui P;
2
preproceseaza n timp polinomial intrarea p
3
se apeleaza (o singura data) algoritmul pentru Q
4
raspunsul pentru Q este acelasi cu cel al lui P (fara postprocesare)
Daca pasul de preprocesare necesita O(g(n)) timp, atunci scriem
P
g(n)
Q.
D. Lucanu (FII - UAIC) Complexitatea problemelor PA 2013/2014 43 / 47
Reducerea polinomiala problemelor
Exemplu: SSD3 SSD2
SSD2
Instant a O mult ime S de numere ntregi, M, K doua numere ntregi pozitive
cu K M.

Intrebare Exista numar ntreg M

cu proprietat ile K M

M si

xS

x = M

pentru o o submult ime oarecare S

S?
SSD3
Instant a O mult ime S de numere ntregi, M un numar ntreg pozitiv.

Intrebare Exista o submult ime S

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