Documente Academic
Documente Profesional
Documente Cultură
Curs Metode de Analiza A Algoritmilor
Curs Metode de Analiza A Algoritmilor
wertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmq
Metode de analiz a
wertyuiopasdfghjklzxcvbnmq
algoritmilor
Note de curs
wertyuiopasdfghjklzxcvbnmq
Mihaela Colhon
wertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmq
Cuprins
Algoritmi i funcii calculabile .............................................................................5
Instructiuni ........................................................................................................ 5
Caracteristicile algoritmilor ............................................................................... 9
Corectitudinea algoritmilor .......................................................................... 11
Calculabilitate .................................................................................................. 15
Maina Turing ....................................................................................................17
Notaia O ......................................................................................................... 44
Notaia ......................................................................................................... 47
Notaia ......................................................................................................... 48
Analiza asimptotic a principalelor structuri de prelucrare ............................ 52
Exerciii ............................................................................................................ 55
2
Analiza complexitii algoritmilor recursivi .......................................................57
3
4
Algoritmi si funcii calculabile
Un algoritm cuprinde:
Instructiuni
Sintaxa instruciunii de atribuire este:
<variabila> <expresie>
Sintaxa instructiunii if
if <conditie> then
<bloc_instructiuni1>
else
<bloc_instructiuni2>
endif
while <conditie> do
<bloc_instructiuni>
endwhile
6
Algoritmi si funcii calculabile
Dac condiia nu este niciodat fals, atunci ciclul WHILE intr ntr-o
bucl infinit. Dac condiia este de la bun inceput fals, atunci ciclul
WHILE nu se va executa niciodat.
<bloc_instructiuni>
endfor
sau
<bloc_instructiuni>
endfor
7
Algoritmi si funcii calculabile
repeat
<bloc_instructiuni>
until <conditie>
8
Algoritmi si funcii calculabile
Caracteristicile algoritmilor
O problem rezolvabil algoritmic o definim ca pe o funcie p total
definit pe mulimea datelor de intrare (I) cu valori n mulimea datelor
de ieire (O).
p: I O
(2,1,4,3,5) (1,2,3,4,5)
9
Algoritmi si funcii calculabile
input output
- ....
Step1: x 1
Step2: x x + 2
10
Algoritmi si funcii calculabile
else GO TO Step 2
endif
Step 1: x 0
else Stop.
endif
Corectitudinea algoritmului
Condiia de oprire
Durata execuiei
Determinarea spaiului de memorie alocat
Corectitudinea algoritmilor
Atunci cnd proiectm un algoritm acesta trebuie s fie evaluat cel puin
din urmtoarele puncte de vedere:
11
Algoritmi si funcii calculabile
12
Algoritmi si funcii calculabile
n timpul executiei, un algoritm trece prin mai multe stri (de obicei prin
atribuiri de valori variabilelor) de la un pas la alt pas de prelucrare. Ideea
de baz a verificrii corectitudinii este aceea de a stabili care trebuie s
fie starea corespunztoare fiecrei etape de prelucrare astfel nct, la
sfritul algoritmului postcondiiile s fie ndeplinite. Odat ce am stabilit
aceste stri intermediare este suficient s verificm dac fiecare pas de
prelucrare asigur transformarea corecta a starii actuale n starea
urmtoare.
for j 2 to n do
key v[j]
i j-1
while (i > 0 and v[i] > key)
v[i+1] v[i]
i i-1
endwhile
13
Algoritmi si funcii calculabile
v[i+1] key
endfor
Folosind inducia matematic, doi pai sunt suficienti pentru acest scop:
14
Algoritmi si funcii calculabile
Calculabilitate
Conceptele de funcie calculabil i algoritm formeaz conceptele de
baz din teoria calculabilitii fiind preluate din informatic i
matematic. Din punct de vedere tehnic, algoritmul este definit ca o
secven finit de pai neambigui i executabili a cror execuie asigur
rezolvarea taskului pentru care algoritmul n cauz a fost definit.
15
Algoritmi si funcii calculabile
16
Maina Turing
Maina Turing
O main Turing este un acceptor care poate s scrie pe banda de intrare.
n acest mod, banda de intrare devine o memorie auxiliar. Cnd a
inventat maina care i poart numele, Turing nu era interesat de
calculatoare ci de posibilitatea specificrii i rezolvrii problemelor de
matematic folosind mijloace automate. Adic, poate fi rezolvat orice
problem de matematic utiliznd nite reguli elementare de prelucrare a
irurilor?
1
Figure 1 Modele, paradigme i limbaje
1
Mihnea Muraru, Paradigme de Programare note de curs 2012
Maina Turing
18
Maina Turing
(S, , , s0)
unde:
19
Maina Turing
(S, , , s0)
unde:
: S Pf (S {L, R})
20
Maina Turing
Definiie. Pentru orice funcie f pentru care exist o maina Turing care o
calculeaz spunem c funcia f este Turing calculabil.
21
Maina Turing
Pentru a demonstra acest lucru, vom considera maina Turing ({s0}, {1},
, s0) cu urmtoarea funcie de tranziie:
1
s0 (STOP, R) (s0, 1)
Intr-adevr, pentru intrarea 11 vom avea (s0, 11) |- (s0, 111) |- (STOP,
111). Mai mult, pentru orice n 0, (s0, 1
1 ) |- (s0, 1 1 ) |-
(STOP,
1 1 ).
astfel: oricare ar fi *
,
=
,
22
Maina Turing
L = { *| = 1... n, n mod 2 = 0 }
a D N
s0 (s1,L)
s1 (s2, ) (s4, R)
s2 (s3, L)
s3 (s0, ) (s6, R)
s4 (s5, D)
s5 (STOP, R) (STOP, R)
rspunde yes rspunde no
s6 (s5, N)
23
Maina Turing
Clase de complexitate
Teoria complexitii calculului se refer la problemele de decidabilitate
prin prisma dificultii soluiei. Dificultatea unei probleme este descris
n termeni de resurse computaionale necesare celui mai eficient algoritm
care rezolv problema respectiv.
24
Maina Turing
Familii de limbaje
Se numete alfabet sau vocabular V orice mulime finit i nevid de
simboluri (sau litere, caractere, variabile). Un cuvnt peste un alfabet V
este o secven p = a1a2 . . . an, ai V, i = 1, ... , n. Numrul n se numete
lungimea cuvntului i va fi notat cu |p|. Vom considera i cuvntul vid
care nu conine nici un simbol; evident || = 0.
25
Maina Turing
V*VNV* V*. Mulimea P va fi deci format din perechi de forma (u, v),
cu proprietatea c u = u1Au2, cu u1, u2 V*, A VN i v V*, deci u i v
sunt cuvinte peste V cu observaia c u trebuie s conin cel puin un
simbol neterminal. Vom spune c o astfel de pereche este o regul de
producie (regul de generare, regul de rescriere) i o vom nota u v
de reguli.
! = "# $% |( #}
26
Maina Turing
* ,- * -,
forma
./ ./
cu A, B, C VN i p, q VT*.
27
Maina Turing
28
Maina Turing
Exerciii
1) S considerm urmtorul exemplu de main Turing: ({s0, s1}, {a,
}, , s0) pentru care funcia de tranziie este definit astfel:
a
s0 (s1, ) (STOP, )
s1 (s0, a) (s0, R)
29
Analiza complexitii algoritmilor nerecursivi
Analiza complexitii
algoritmilor nerecursivi
Analiza complexitii unui algoritm are ca scop estimarea volumului
resurselor de calcul necesare pentru execuia algoritmului:
Dintre cele dou resurse de calcul, cea critic este timpul de execuie.
Acesta depinde de numrul de operaii care trebuie efectuate i de
dimensiunea datelor de intrare. Deci, timpul de execuie difer de la
execuie la alta.
Timpul de execuie
n continuare, vom nota cu T(|x|) timpul de execuie al unui algoritm
relativ la instana x I. Pentru a estima timpul de execuie este necesar a
se stabili un model de calcul i o unitate de msur. Vom considera n
cele ce urmeaz modelul de calcul cu acces aleatoriu:
31
Etapele analizei algoritmilor
Cazuri de analiz
Asa cum s-a mai precizat, timpul de execuie depinde de dimensiunea
datelor de intrare dar i proprietile datelor de intrare.
Cazul cel mai defavorabil (CCMD) reprezint cel mai mare timp de
execuie furniznd limita superioar pentru acesta. n analiza algoritmilor,
marginea superioar este mai important dect marginea inferioar.
32
Etapele analizei algoritmilor
1
5 31 |4|
1
Tmediu(|x|) =
33
Etapele analizei algoritmilor
Ieire: o permutare v[(1)], ..., v[(n)] astfel nct: v[(1)] < ... < v[(n)]
58 67
+1
c5
3. j i-1 n -1
58 67
c6
4. while((j>0)and(v[j]> key))do
58 67
c7
5. v[j+1] v[j] c8
6. j j-1
7. endwhile
8. v[j+1] key c9 n-1
9. endfor
34
Etapele analizei algoritmilor
CCMF CM CCMD
1(n) 1 k n
2(n) 1 1 0
3(n) 0 k-1 n
35
Etapele analizei algoritmilor
+1
3@A[] |4|
=
2
ceea ce se poate interpreta astfel: n cazul aparteneei elementului la
vector, algoritmul parcurge n medie jumtate din vector.
36
Etapele analizei algoritmilor
- T1(n) = an+b
- T2(n) = alogn+b
- T3(n) = an2 + bn + c
- T4(n) = an + bn + c
Ordinul de cretere
Caracterizeaz creterea termenului dominant din expresia timpului de
execuie n raport cu dimensiunea problemei. Mai precis, ordinul de
cretere cuantific creterea termenului dominant cnd dimensiunea
problemei crete de k ori.
Exemple:
5 1 = - complexitate liniar
5 7 =
8
- complexitate ptratic
5 7 M =
NOK
M
- complexitate polinomial
5 =
=
M POK Q
MQ
- complexitate exponenial
5
S
=
5
5 S
5 T
= T
5
5M 1 = = + 1
lnM5 M
= M5 lnM
38
Etapele analizei algoritmilor
Exerciii
naturale
5 7 . Dimensiunea acestei probleme poate fi considerat n.
Exerciiu 1. Considerm problema calculrii sumei primelor n numere
39
Etapele analizei algoritmilor
40
Etapele analizei algoritmilor
Q8
5W 7 = 2
Q8
Q
8
= k1n2 + k2n + k3 complexitate ptratic
CCMF: n =1 (n)=0
41
Etapele analizei algoritmilor
Q
5 7 + 1
1. for i 1, n-1 do k1 n-1
Q
5 7 + 1
2. for j i+1, n do k2
3. if (v[i]>v[j]) then c3
4. v[i] v[j] k4 (n)
5. endif
6. endfor
7. endfor
42
Notaii asimptotice
Notaii asimptotice
n general, se utilizeaz analiza asimptotic atunci cnd se caut s se
evalueze comparativ mai muli algoritmi, urmrindu-se astfel gruparea
algoritmilor n clase n funcie de ordinul de cretere al timpului de
execuie. Acest tip de analiz a fost definit pentru:
Notaia O
Considerm un algoritm i o funcie t: N R+2 astfel nct o
implementare a algoritmului s necesite t(n) uniti de timp pentru a
executa algoritmul pentru o instan de dimensiune n. Aa cum spune
Principiul invariaiei, orice implementare a algoritmului va necesita un
timp n ordinul lui t.
O(f(n)) = "Y: [ \ ; T \ , W [ . . W : Y Td }
Convenim s vorbim despre ordinul lui f chiar i atunci cnd valoarea lui
f(n) este negativ sau nedefinit pentru anumite valori n < n0. De
2 *
Prin N notm mulimea numerelor naturale, N= {0, 1, 2, ...} i N mulimea numerelor
*
naturale strict pozitive, N = {1, 2, ...}, R+ notm mulimea numerelor reale pozitive i
*
R + mulimea numerelor reale strict pozitive
44
Notaii asimptotice
ie
exemplu, vom vorbi despre ordinul lui chiar dac n punctele n=0 i
n=1 funcia nu este definit.
45
Notaii asimptotice
O(k) O(logn) O(n) O(n logn) O(n2) O(n3) ... O(nk) ...
O(kn) O(n!) O(nn)
O(f) = "Y: [ [ \ |T \ , W , kW [ . . W , k
kW : Y, k
Td, k
}
1) Dac t(n) = aknk + ak-1nk-1 + ... + a1n + a0, ak >0 atunci t(n)
O(np) pentru p k.
2) f(n) O(f(n)) reflexivitate
3
Remember. Funcia logaritmic
X
Fie a >0 un numr real pozitiv. Considerm ecuaia exponenial a = N. Aceast
ecuaie are o soluie unic determinat x = logaN. Deci logaritmul unui numr real
pozitiv este exponentul la care trebuie ridicat baza pentru a obine numrul dat.
log 10 N = lg N logaritm zecimal
loge N = ln N logaritm natural (folosit n rezolvarea unor probleme de fizic, e = 2,71
numrul lui Euler)
46
Notaii asimptotice
Notaia
Notaia O(f) este folosit pentru a nota superior timpul necesar unui
algoritm, msurnd eficiena respectivului algoritm. Uneori este util s
estimm i limita inferioar a acestui timp:
(f) = "Y: [ \ |T \ , W [ . . W : Y Td }
47
Notaii asimptotice
g(n)
cf(n)
n0
1) Dac t(n) = aknk + ak-1nk-1 + ... + a1n + a0, ak >0 atunci t(n)
(np), p k
2) f(n) (f(n)) - reflexivitate
3) dac f(n) (h(n)) i h(n) (g(n)) atunci f(n) (g(n))
4) (f(n)+g(n)) = (max(f(n), g(n)))
5) (f(n)) (f(n))
6) dac f(n) O(g(n)) atunci g(n) (f(n)) i reciproc
O situaie fericit este atunci cnd timpul de execuie este limitat att
superior ct i inferior de un multiplu real i pozitiv al aceleiai funcii,
aa cum se va defini n seciunea urmtoare ordinul exact al unei funcii -
(f).
Notaia
n general este dificil s se determine expresia ce definete timpul de
execuie al unui algoritm n funcie de dimensiunea datelor de intrare. De
aceea, o metod de estimare a eficienei algoritmilor const n
determinarea limitelor ntre care timpul de execuie poate varia.
48
Notaii asimptotice
Observm c avem:
n
lim ==
J d
49
Notaii asimptotice
1) Dac t(n) = aknk + ak-1nk-1 + ... + a1n + a0, ak >0 atunci t(n)
(nk)
Dem. ntr-adevr, din limJ = M rezult c R+ i
o
N
Sumarizm:
50
Notaii asimptotice
1) Tranzitivitate
2) Reflexivitate
f(n) O(f(n))
f(n) (f(n))
f(n) (f(n))
3) Simetria
4) Antisimetria
5) Altele
51
Notaii asimptotice
Dac evaluarea condiiei unei structuri alternative are cost constant iar
prelucrrile celor dou variante au ordinele de complexitate O(f1(n)) i
O(f2(n)) atunci costul structurii alternative ar fi O(max(f1(n), f2(n)).
m 1
for i 1, n do
m 2*m
for j 1, m do
//prelucrare de ordin O(1)
endfor
endfor
n acest caz n
=
52
+ 1
t2
52
Notaii asimptotice
- Compunerea
53
Notaii asimptotice
M5 d=
-
54
Notaii asimptotice
Exerciii
1. S considerm f(n) = 10n i g(n)=n2. S se determine ordinele celor
dou funcii.
n f(n) g(n)
1 10 1
2 20 4
3 30 9
... ... ...
9 90 81
10 100 100
11 110 121
12 120 144
55
Notaii asimptotice
8
z
g(n) = 12 + 22 + ... + n2, deci g(n) = . Verificai prin
inducie c g O(n3)
8
h(n) = 13 + 23 + ... + n3, deci h(n) = { | . Verificai prin inducie
8
c h O(n4).
@ POK Q
i(n) =
5 4
= @Q
. Verificai prin inducie c i (xn), x>1
56
Analiza complexitii algoritmi recursivi
Analiza complexitii
algoritmilor recursivi
n cazul algoritmilor recursivi, principiile de analiz au n vedere
urmtoarele aspecte:
function fact(n)
if (n<=1) then return 1
else return nfact(n-1)
endif
endfunction
Analiza complexitii algoritmi recursivi
Metoda substituiei
Aceast metod presupune identificarea formulei de recuren i
demonstrarea ei folosind inducia matematic. Metoda se poate utiliza
att pentru determinarea limitei superioare dar i a limitei inferioare a
unui algoritm. Metoda este foarte puternic dar nu poate fi aplicabil
dect problemelor pentru care se poate intui formula de recuren.
58
Analiza complexitii algoritmi recursivi
...
59
Analiza complexitii algoritmi recursivi
________________________
8
t(n) = 1+2 + 3 + .... + n = . Obinem t(n) = (n2).
60
Analiza complexitii algoritmi recursivi
Tmediu(|x|)= x1
+ +
y = 1 + +
= 8
=
h
Metoda Iteraiei
Aceast metod transform recursia ntr-o sum i se bazeaz pe folosirea
tehnicilor de mrginire a sumelor. Conversia recurenei n sum se face
prin expandarea recursiei i exprimarea ei ca o sum de termeni
dependeni numai de n i de condiiile iniiale.
61
Analiza complexitii algoritmi recursivi
62
Analiza complexitii algoritmi recursivi
2W n : < = 2
n : < + 2W
2W 2 2W
2 n : < = 28 n : 8 < + 2
2 2 2
28 n : < = 2X n : X < + 28 8
28 2 2
....
2M n : < = 2M
n : < + 2M
2M 2M 2M
Arbori de recuren
Aceste reprezentri au urmtoarele semnificaii:
63
Analiza complexitii algoritmi recursivi
t(n) (n)
Metoda Master
Metoda Master ofer o soluie direct pentru relaii de recuren de tipul:
unde f(n) este o funcie asimptotic pozitiv iar t(n) o funcie nenegativ.
Teorema Master stabilete dac f(n) = (nk) atunci t(n) poate fi mrginit
asimptotic astfel:
4
Remember!
m log2m
1 0
2 1
4 2
8 3
16 4
32 5
64 6
128 7
256 8
64
Analiza complexitii algoritmi recursivi
Tehnica reducerii
Aceast tehnic folosete legtura ntre soluia unei probleme i soluia
aceleiai probleme dar pentru o instan de dimensiune mai mic. Pentru
unele probleme aceast abordare conduce la obinerea unor algoritmi mai
eficieni deoarece, uneori, este mai simplu s se specifice relaia dintre
soluia problemei de rezolvat i soluia unei probleme de dimensiune mai
mic dect s se specifice explicit modul de calcul al soluiei.
4 4, k = 1
48 =
4 8K
48 , k > 1
K
pentru m=1, x2 = 4 8 4 8
pentru m=2, 4 8 = 4 8 4 8
L K K
pentru m=3, 4 8 = 4 8 4 8
L L
function power2(x, m)
p x x
65
Analiza complexitii algoritmi recursivi
for i 1, m-1 do
p p p
endfor
return p
endfunction
function power3(x, m)
if (m=1) then return x x
else
p power3(x, m-1)
return p p
endif
endfunction
4 4, = 2
n numr par.
4 =
48 48, > 2
function power4(x, m)
if (n=2) then return x x
else
p power4(x, n div 2)
return p p
endif
endfunction
66
Analiza complexitii algoritmi recursivi
4 4, = 2
4 = 4 8 4 8 , > 2, k -
Q Q
p p p p
4 8 4 8 4, > 2, k 7k-
function power5(x, n)
if (n=1) then return x
else
if (n=2) then return x x
else
p power5(x, n div 2)
if (n mod 2=0) then return p p
else return p p x
endif
endif
endif
endfunction
67
Analiza complexitii algoritmi recursivi
0, = 1
avem urmtoarea recuren:
n
=
n 1
+ 1, > 1
Formula de recuren pentru algoritmul power3(x, m) este:
t(2m) = t(2m-1) + 1
Aplicnd metoda substituiei napoi avem:
t(2m) = t(2m-1) + 1
t(2m-1) = t(2m-2) + 1
...
t(2) = 1
________________
t(2m) = m = lg n
Pentru k = lg n avem t(n) = 2lg n + 1 + 2 + ... + 2lg n-1 deci t(n) = O(2ieL )
= O(n).
68
Analiza complexitii algoritmi recursivi
123
function permut(k)
if (k=1) then write v[1...n]
else
for i 1,k do
v[i] v[k]
perumt(k-1)
v[k] v[i]
endfor
endif
endfunction
0, = = 1
Formula de recuren pentru acest algoritm este:
n=
=
=n= 1
+ 2
, = > 1
69
Analiza complexitii algoritmi recursivi
+logn.
Lum m = logn i avem: t(m) = 2t(m/2) + logm. Trebuie s
demonstrm c t(m) = O(m logm).
t(m) 2cm/2 (log(m/2)) + logm = cm(logm + log2-1) + logm = cm
logm 2cm +logm = cm logm 2c + logm cm logm + m, pentru
c>1
3) S se determine ordinul de cretere pentru problema Turnurilor
din Hanoi care are un timp de execuie de forma:
n 1
+ 1 + n 1
, > 1
n
=
1, = 1
70
Analiza complexitii algoritmi recursivi
71
Analiza algoritmilor. Studiu de caz
function hanoi(n, X, Y, Z)
if (n 1) then
hanoi(n-1, X, Z, Y)
hanoi(1, X, Y, _)
hanoi(n-1, Z, Y, X)
endif
endfunction
Analiza complexitii algoritmi recursivi
73
Analiza complexitii algoritmi recursivi
pentru n > 1:
move(2) = 2move(1) + 1 = 3
move(3) = 2move(2) + 1 = 7
move(4) = 2move(3) + 1 = 15
...
= 22move(n-2) + 21 + 20
= 2[2[2move(n-3) + 1] + 1] + 1
= 23move(n-3) + 22 + 21 + 20
.........................................
74
Analiza complexitii algoritmi recursivi
75
NP-completitudine
NP-completitudine
n analiza complexitii, cel mai important aspect care intereseaz att pe
teoreticieni ct i pe cei care care implementeaz este acela de a stabili
dac, pentru o anumit problem, exist un algoritm polinomial care s o
rezolve.
1. Fiind dat un graf G = (V, N), exist un drum n acest graf de lungime
mai mic dect k?
Limbaje formale
Rezolvarea problemelor de decizie poate profita de instrumentele oferite
de teoria limbajelor formale. Vom recapitula n cele ce urmeaz cteva
concepte ale limbajelor formale. Un alfabet este o mulime finit de
simboluri. Un limbaj L peste este orice mulime de iruri formate din
77
NP-completitdine
L* = {} L L2 L3 ...
L = { *| P() = da }
78
NP-completitdine
o intrare oarecare,
o intrare prob,
79
NP-completitdine
Determinism
Numim algoritm determinist o secven finit de instruciuni n care
fiecare operaie are un rezultat unic determinat. Un algoritm determinist
se bucur de asemenea de proprietatea de serialitate: la un moment dat, n
timpul execuiei se execut o singur aciune.
pozitie_curenta nord(pozitie_curenta)
80
NP-completitdine
pozitie_curenta est(pozitie_curenta)
pozitie_curenta sud(pozitie_curenta)
pozitie_curenta vest(pozitie_curenta)
endif
endif
81
NP-completitdine
caut(v, elem) {
i choice(1..n) // generare
neprim(n) {
82
NP-completitdine
sort(v, n) {
for i 1, n
for i 1, n
j choice(1..n) // generare
for i 1, n-1
Clase de complexitate P i NP
Termenul de NP-complexitate vine de la "timp polinomial
nedeterminist". Aceast clas cuprinde toate problemele de decizie crora
li se poate asocia un set de soluii posibile, fiecare soluie putnd fi
verificat dac este sau nu o soluie potenial ntr-un timp polinomial.
83
NP-completitdine
pentru k o constant.
P = ? NP
84
NP-completitdine
85
NP-completitdine
rezolv mai multe probleme majore ale acestei discipline. Cei mai muli
cercettori cred c P i NP nu reprezint aceeai clas dar consider c
NP include clasa P.
86
NP-completitdine
Reducere polinomial
Reducerea poate fi vzut ca o modalitate de a afirma c o problem este
la fel de uoar sau la fel de grea ca o alt problem. Vom folosi
reducerea pentru a arta dificultatea de rezolvare a unei probleme prin
transformarea ei ntr-o problem deja cunoscut ca fiind o problem grea.
Algoritm P
Input
Input pentru P Reducere R R(x) Algoritm P Output P
87
NP-completitdine
88
NP-completitdine
Un atom peste o baz B este definit ca un element de forma p(t1, ..., tn),
unde p(n) SP i t1, ..., tn sunt termeni peste B.
89
NP-completitdine
Este uor de verificat c problema SAT este n NP. Dac se consider cei
n literali stocai pe n bii de memorie, verificarea satisfiabilitii se reduce
la a verifica dac toate clauzele sunt satisfcute, ceea ce implic o
complexitate polinomial, O(nm).
90
NP-completitdine
Varianta 2SAT
Se d o formul boolean F n forma normal conjunctiv astfel nct
fiecare clauz conine exact doi literali. S se determine dac exist o
substituie (atribuire de valori) care s satisfac formula F.
- (u, v) dat de (u v)
- (u, v) dat de ((v) u)
91
NP-completitdine
92
Bibliografie
[1] Irina Athanasiu, Limbaje formale i automate (Note de curs), 2012
[2] Dumitru Dan Burdescu, Analiza complexitii algoritmilor, Editura
Albastra, Cluj Napoca, 1998.
[3] Mihai Budiu, Algoritmi,
http://www.cs.cmu.edu/~mihaib/articole/algoritmi/algoritmi-
html.html, 1997.
[4] Thomas H. Cormen, Charles E. Leiserson, Ronald R. Rivest,
Introducere n algoritmi, Editura Computer Libris Agora, 2000
[5] Cristian Giumale, Analiza algoritmilor (Note de curs), 2014
[6] Mihai Gontineac, Limbaje Formale i Teoria Automatelor, Note de
curs (http://www.math.uaic.ro/~gonti/Didactics.htm)
[7] Dorel Lucanu, Mitic Craus, Proiectarea algoritmilor, Editura
Polirom, 2008
[8] Drgan Mircea, Limbaje Formale i Tehnici de Compilare, 2006
[9] Drgan Mircea, tefan Mruter, Limbaje Formale, 2005
[10] Mihnea Muraru, Paradigme de programare, Note de curs 2012
[11] Daniela Zaharie, Algoritmi Note de curs,
http://web.info.uvt.ro/~dzaharie/alg/alg2014.html, 2014