Sei sulla pagina 1di 24

Probleme NP -complete

Ø  Algoritmi nedeterministi (reamintire)


Ø  Clasele P si NP
Ø  Probleme NP -dificile si NP -complete
Ø  Exemple de probleme NP -complete
Algoritmi nedeterministi (reamintire)
Problema rezolvata de un algoritm nedeterminist

Spunem ca un algoritm nedeterminst A rezolva o problema P daca:


ð pentru orice instanta p a lui P, exista o conguratie <A; σp>
astfel incat σp include structuri date ce descrie p;
ð exista o executia lui A din conguratia initiala <A; σp> care
se termina intr-o conguratie < . ; σ’> ; si σ’ include structuri
de date ce descriu P(p).
Probleme de decizie (reamintire)

Ø  formalizare
ð instanta: A, B ⊆ A, x ∈ A
ð intrebare: x ∈ B?
Ø  exemplu: problema rucsacului
ð instanta
•  o multime de obiecte O,
•  fiecare obiect are o marime w(o) ∈ Z+ si o valoare p(o) ∈ Z+
•  restrictie: M ∈ Z+
•  scop K ∈ Z+
ð intrebare
•  exista O’ ⊆ O a.i. ∑o∈O’ w(o) ≤ M si ∑o∈O’ p(o) ≥ K?
Algoritm nedeterminist pentru rucsac 0/1
procedure rucsacND(O, s, v, M, K, x)
begin
/* ghiceste */
for each o ∈ O do
x[o] ← random(2)
/* verifica */
wGhicit ← vGhicit ← 0
for each o ∈ O do
wGhicit ← wGhicit + x[o]*w[o]
pGhicit ← pGhicit + x[o]*p[o]
if (wGhicit ≤ M and pGhicit ≥ K)
then success
else failure
end
Clasele P si NP

Ø  P = clasa problemelor care pot fi rezolvate de algoritmi


deterministi in timp polinomial
Ø  NP = clasa problemelor care pot fi rezolvate de algoritmi
NEdeterministi in timp polinomial
Ø  E usor de vazut ca P ⊆ NP
Ø  Intrebarea e se pune daca P ⊂ NP sau P = NP ?
Ø  Este una dintre cele mai celebre probleme nerezolvate
(rezolvarea ei este premiata cu 1 milion de dolari)
Ø  Deocamdata putem demonstra doar
Teorema
Daca P este in NP, atunci exista polinoamele p(n) si q(n) si un
algoritm determinist care rezolva P in timpul O(p(n)2q(n)).
Ø  In ipoteza ca P ⊂ NP, care sunt problemele ce candideaza a fi
in P si nu in NP ?
Probleme NP-complete

Ø  P este problema NP-dificila daca pentru orice problema Q din


NP are loc Q ∝ P.

Ø  P este problema NP-completa daca:


ð P este in NP si
ð P este NP-dificila
SAT - enunt

Ø  Problema satisfiabilitatii (SAT)


ð instanta: o formula F din calculul propozitional in forma
normala conjuctiva si in care apar variabile din {x0, ...,xn-1}
ð intrebare: exista o atribuire a variabilelor pentru care F este
satisfacuta?

Teorema (Steven Cook, 1971)


SAT este NP-completa.
SAT - demonstratie

Ø  algoritm nedeterminist care rezolva SAT:


1.  ghiceste o atribuire pentru variabile
2.  calculeaza valoarea formulei
3.  daca formula este satisfacuta intoarce success; altfel
intoarce failure.
SAT - demonstratie (cont.)

Ø  (∀P in NP ) P ∝ SAT


ð fie A care rezolva P
ð Se considera variabilele:
•  Bijt = valoarea bitului j din locatia i la momentul t
•  Skt ⇔ instructiunea de eticheta k se executa la
momentul t
ð asociem lui A pentru intrarea x formula
F(A, x) = F1 ∧ F2 ∧ F3 ∧ F4 ∧ F5 ∧ F6 unde
•  F1 - starea initiala
•  F2 - prima instructiune care se executa
•  F3 - dupa t pasi se executa exact o instructiune
•  F4 - calculul instructiunii urmatoare
•  F5 - schimbarea memoriei
•  F6 - terminarea cu succes
SAT - demonstratie (cont.)

1: if (x > 2)
2: then y ← x*x
3: else y ← x*x*x
4:success
Ø  locatia 0 memoreaza 2, locatia 1 memoreaza x, locatia 2
memoreaza y
Ø  starea initiala pentru x = 3
F1 = B0,0,0 ∧ ¬B0,1,0 ∧ B1,0,0 ∧ B1,1,0
Ø  prima instructiune care se executa
F2 = S1,0 ∧ ¬S2, 0 ∧ ¬S3, 0 ∧ ¬S4, 0
Ø  dupa t pasi se executa exact o instructiune
F3 = G0 ∧ G1 ∧ G2
Gt = G1,t ⊕ G2,t ⊕ G3,t ⊕ G4,t
...
G2,t= ¬S1,t ∧ S2, t ∧ ¬S3, t ∧ ¬S4, t
....
Ø  etc
Problema U

Ø  Formulare
ð Instanta
•  un program A, o intrare x, un intreg k > 0
ð Intrebare
•  programul A cu intrarea x se termina cu raspunsul DA in
≤ k pasi?
Ø  U este in NP
ð construim un algoritm U care simuleaza k pasi ai lui A si se
termina cu DA daca si numai daca A se termina cu DA in cei
k pasi
Ø  U este in NP-dificila
ð daca Q este in NP, atunci exista un alg. nedet. A care rezolva
Q
ð transformam o instanta q ∈ Q de dimensiune n intr-o
instanta (A, q, TA(n))
Exemple de probleme NP-complete
Ø  SAT
Ø  3SAT
Ø  Rucsac 0/1
Ø  Submultime de suma data

Ø  V-acoperire (VA)


ð instanta: un graf G = (V, E), K ∈ Z+
ð intrebare: exista o V-acoperire V’ a.i. #V’ ≤ K?

Ø  Circuit Hamiltonian intr-un digraf (CHD)


ð instanta: un digraf D = (V, A)
ð intrebare: exista un circuit Hamiltonian?

Ø  Circuit Hamiltonian intr-un graf (CHG)


Exemple de probleme NP-complete (continuare I)

Ø  Comis voiajor (CV)


ð instanta: un graf ponderat G = (V, E, c), c({i,j}) ∈ Z+, K
∈ Z+
ð intrebare: exista un circuit Hamiltonian de cost ≤ K?

Ø  Planificare procesoare (PP)


ð instanta: o multime P de programe, m procesoare, un timp
de executie t(p) pentru fiecare program p, un termen D
ð intrebare: exista o planificare a procesoarelor pentru P a.i.
orice program sa fie executat in termenul D?
Exemple de probleme NP-complete (continuare II)

Ø  Congruente patratice (CP)


ð instanta: a, b, c ∈ Z+
ð intrebare: exista 0 < x < c a.i. x2 mod b = a ?

Ø  Ecuatii diofantice patratice


ð instanta: a, b, c ∈ Z+
ð intrebare: exista x, y ∈ Z+ a.i. ax2 + by = c ?
Cum se arata NP-completitudinea

Ø  reducere
daca P este in NP, Q este NP-completa si Q ∝ P
atunci P este NP-completa
ð exemplu: SAT ∝ 3SAT
•  c = u1
c' = (u1∨ y1∨ y2)∧(u1∨ y1' ∨ y2) ∧(u1∨ y1∨ y2') ∧(u1∨ y1' ∨ y2')
•  c = u1 ∨ u2
c' = (u1∨ u2∨ y1)∧(u1∨ u2 ∨ y1')
•  c = u1 ∨ u2 ∨ u3 ∨ u4
c' = (u1∨ u2∨ y1)∧(u3∨ u4 ∨ y1')
ð 3SAT ∝ VA
ð VA ∝ CHG
Cum se arata NP-completitudinea (cont.)

Ø  restrictia
daca Q este NP-completa si Q este caz special al lui P
atunci P este NP-completa
ð exemplu: CHG caz special al lui CHD
Alte clase

Ø  PSPACE = clasa problemelor care sunt rezolvate de algoritmi


deterministi in timp nelimitat si utilizand spatiu polinomial
Ø  NPSPACE = clasa problemelor care sunt rezolvate de algoritmi
NEdeterministi in timp nelimitat si utilizand spatiu polinomial

Ø  PSPACE = NPSPACE (Savitch, 1970)

Ø  problema co-P:


ð aceleasi instante ca P dar raspunde DA daca P raspunde NU
si raspunde NU daca P raspunde DA
Ø  co-NP = clasa problemelor co-P cu P in NP
Alte clase

PSPACE

NP co-NP

NP co-NP
complete P complete

descopunerea
in factori primi
Problema TQBF

Ø  P(x) o formula booleana care depinde de variabila booleana x


Ø  Cuantificator universal :∀ ∀xP(x) inseamna “pentru orice
x∈{0,1}, P(x) este adevarat”
Ø  Cuantificator existential :∀ ∃xP(x) inseamna “exista x∈{0,1},
P(x) este adevarat”
Ø  Formula booleana quantificata complet (fully quantified
Boolean formula) = o formula prefixata cu cuantificator un (∀x)
sau (∃x) pentru fiecare variabila x
Ø  Exemple:
∀x(x∨x)
∀x∀y (x∨y)
∀x∃y ((x∧y)∨(x∧y))
∃z∀x∃y ((x∧y∧z)∨(x∧y∧z))
Ø  o formula booleana quantificata complet este adevarata sau falsa
Problema TQBF

Ø  TQBF(True Quantified Boolean Formulas)


ð instanta: o formula booleana quantificata complet F
ð intrebare: este F adevarata?

Ø  TQBF este PSPACE completa


ð TQBF este in PSPACE
F ≡ Q1Q2 … Qn Φ(x1, x2, …, xn)
construim un algoritm recursiv val(F) astfel:
daca F nu are cuantificatori (si deci nici variabile), intoarce
valoarea lui F
altfel
A = val(Q2 … Qn Φ(0, x2, …, xn) )
B = val(Q2 … Qn Φ(1, x2, …, xn))
daca Q1 ≡ (∃ x1), atunci intoarce A ∨ B
daca Q1 ≡ (∀ x1), atunci intoarce A ∧ B
Problema TQBF

•  spatiul ocupat de val(): O(n + log n)


•  timpul: O(2n)
ð (∀P in PSPACE ) P ∝ TQBF
Φc1, c2, t = true daca si numai daca din configuratia c1 se poate
ajunge in configuratia c2 in cel mult t pasi
pentru un P in PSPACE data:
c1 = starea initiala
c2 = starea finala
t = timpul dat de algritmul care rezolva P (exponential,
marginit de un T)
Problema TQBF

•  cum poate fi calculata Φc1, c2, t in timp polinomial?


t = 1, trivial
t > 1 : Φc1, c2, t = (∃m) Φc1, m, ⎡t/2⎤ ∧ Φm, c2, ⎡t/2⎤
din pacate timpul este exponential pentru formula de
mai sus
Φc1, c2, t = (∃m)(∀(c3,c4) ∈ {(c1,m),(m,c2)})Φc3, c4, ⎡t/2⎤
= (∃m) p(m, c1, c2, c3,c 4) ⇒ Φc3, c4, ⎡t/2⎤
= (∃m) p(m, c1, c2, c3,c 4) ∨ Φc3, c4, ⎡t/2⎤
Bibliografie suplimentara

Ø  An Annotated List of Selected NP-complete Problems


http://www.csc.liv.ac.uk/~ped/teachadmin/COMP202/annotated_np.html

Potrebbero piacerti anche