Documente Academic
Documente Profesional
Documente Cultură
algoritmilor exponentiali
Descrierea conceptului
Aplicatie: problema de decizie 3SAT
Reducerea complexitatii
algoritmilor exponentiali
Observatii 1
concept similar ideii de baza pentru Branch&Bound
se proiecteaza un algoritm, eventual chiar de complexitate
exponentiala dar
se cere ca in cazul cel mai nefavorabil complexitatea
algoritmului sa fie semnificativ mai mica decat complexitatea
solutiei brute.
2
Reducerea complexitatii
algoritmilor exponentiali
Exemplul 2
Fie x ->M(x) -> U : |M(x)|2n
=> o complexitate a cazului celui mai nefavorabil de ordinul cn
reprezinta o imbunatatire esentiala pentru orice c<2.
=> in aceasta abordare, se accepta algoritmi de complexitate
exponentiala daca ei sunt utilizabili in practica pentru dimensiuni
ale datelor de intrare pt care algoritmii pur exponentiali nu se
dovedesc mai eficace.
Reducerea complexitatii
algoritmilor exponentiali
dar un algoritm de
complexitate 2n este, chiar
pentru instante de
dimensiune n=50, la limita
executabilitatii practice.
un algoritm de complexitate
(1,2)n poate fi executat in
cateva secunde pe instante
ale problemei de dimensiune
n=100;
un algoritm de complexitate
n2.2n este inca practic executabil
pe instante ale problemei de
dimensiune n=300;
Complexitate
n=10
n=50
n=100
n=300
2n
1024
(16 cifre)
(31 cifre)
(91 cifre)
2n/2
32
~33.106
(16 cifre)
(46 cifre)
(1,2)n
900
~29.106
(24 cifre)
10.2n
89
1350
10240
~1,64.106
n2.2n
894
~336000
~10,24.106
~14,8.109
Reducerea complexitatii
algoritmilor exponentiali
Reducerea complexitatii
algoritmilor exponentiali
Observatii 3
Aceasta abordare:
universala,
este, de obicei, incununanta de succes daca problema
data este in prealabil analizata, iar informatia astfel
obtinuta este utilizata pentru proiectarea unui algoritm
de rezolvare a problemei cu ajutorul uneia dintre
tehnicile fundamentale de proiectare a algoritmilor;
Astfel de algoritmi sunt utili in practica pt ca au un timp de
lucru redus pt multe probleme concrete, atunci cand
instanta care trebuie rezolvata are o dimensiune
rezonabila.
6
Reducerea complexitatii
algoritmilor exponentiali
In prezent,
nu exista un concept care sa permita cristalizarea unei
strategii generale la nivelul unei intregi clase de
probleme de proiectare a algoritmilor exponentiali
executabili in practica;
Reducerea complexitatii
algoritmilor exponentiali
Conceptul
poate fi utilizat pt. orice tip de problema algoritmic
rezolvabila,
s-a dovedit deosebit de util pt abordarea problemelor
privind satisfezabilitatea formulelor logice.
Reducerea complexitatii
algoritmilor exponentiali
Descrierea conceptului
Aplicatie: problema de decizie 3SAT
Reducerea complexitatii
algoritmilor exponentiali
In continuare, ilustram aceasta abordare pentru o
problema de decizie: problema 3SAT.
Algoritmul D&C-3SAT este cel mai simplu exemplu
cunoscut de aplicare a acestui concept.
Enunt:
(3SAT, logic)
Reducerea complexitatii
algoritmilor exponentiali
Pp. este definita peste o multime de n variabile logice.
Abordarea bruta, care consta in calcularea valorii () pt
asignare , conduce la o complexitate, in cazul cel mai
nefavorabil, de ordinul O(||.2n),
evaluarea lui pt fiecare
asignare se face intr-un timp de
ordinul O(||).
2n asignari posibile pt
cele n variabile logice
Reducerea complexitatii
algoritmilor exponentiali
Aratam, in continuare, ca daca pt problema 3SAT aplicam
- in locul cautarii brute expuse mai sus
conceptul de reducere a complexitatii in cazul cel mai nefavorabil,
metoda Divide et Impera,
12
Reducerea complexitatii
algoritmilor exponentiali
Fie F o formula logica in FNC si t un literal oarecare care
apare in F =>
notam prin F(t=1) formula obtinuta din F prin aplicarea
urmatoarelor reguli:
(r1) se elimina din F toate clauzele care contin literalul t;
Reducerea complexitatii
algoritmilor exponentiali
Analog, notam prin F(t=0) formula obtinuta din F prin
aplicarea urmatoarelor reguli:
(r1) se elimina din F toate clauzele care contin literalul t;
(r2) daca o clauza din F contine, pe langa literalul t, cel putin
inca un literal diferit de t, atunci literalul t este si el eliminat
din clauza respectiva;
(r3) daca o clauza din F consta numai din literalul t, atunci
F(t=0)=0, adica F(t=0) este o formula nesatisfezabila.
14
Reducerea complexitatii
algoritmilor exponentiali
Reducerea complexitatii
algoritmilor exponentiali
Exemplul 4
Fie formula cu 5 variabile, aflata in FNC3
F (x x x ) (x ) (x x x ) (x x ) (x x x )
1 2 4
2
2 3 5
1 5
1 2 3
F (x x x ) (x ) (x x x ) (x x ) (x x x )
1 2 4
2
2 3 5
1 5
1 2 3
F (x x x ) (x ) (x x x ) (x x ) (x x x )
1 2 4
2
2 3 5
1 5
1 2 3
Observam ca:
(1)
F ( x 0) 0 si F ( x 1) 0
2
2
18
Reducerea complexitatii
algoritmilor exponentiali
O strategie Divide et Impera pentru problema 3SAT:
Fie F3FNC(n,r), n,rN si
fie (t1t2t3) o clauza din F:
Observam ca:
F=satisfazabila
cel putin una dintre formulele logice
F(t1=1),
F(t1=0, t2=1),
F(t1=0, t2=0, t3=1)
este satisfezabila.
19
Reducerea complexitatii
algoritmilor exponentiali
Conform regulilor (r1),(r2) si (r3) rezulta imediat ca:
F(t1=1) 3FNC(n-1,r-1),
F(t1=0, t2=1) 3FNC(n-2,r-1),
3FNC(n-1,r-1),
3FNC(n-2,r-1) si respectiv
3FNC(n-3,r-1).
Reducerea complexitatii
algoritmilor exponentiali
Algoritmul D&C-3SAT(F)
Intrare: O formula F in 3FNC.
Reducerea complexitatii
algoritmilor exponentiali
Algoritmul D&C-3SAT(F) (cont.)
Pas 2: Fie H una dintre cele mai scurte clauze din F.
Daca H=(t) atunci tipareste (D&C-3SAT(F(t=1)));
Reducerea complexitatii
algoritmilor exponentiali
Teorema 5
Algoritmul D&C-3SAT rezolva problema de decizie 3SAT si
TimeD&C-3SAT(F)=O(r.1,84n)
pentru F3FNC(n,r).
23
Reducerea complexitatii
algoritmilor exponentiali
demonstratie
24
Reducerea complexitatii
algoritmilor exponentiali
(ii) calculam complexitatea algoritmului,T(n,r)=TimeD&C-3SAT(n,r), in
functie de n = nr. variabile si r = nr. clauze.
Pt simplificare: consideram |F|=nr. de literali din F.
(*1)
Reducerea complexitatii
algoritmilor exponentiali
Pt. n{1,2} si r, aplicand acelasi rationament ca mai sus,
Intrucat:
o noua formula F(t=a) se poate obtine din formula F in timp 3.|F| 9r,
(*2)
28
(*1)
(*2)
(*3)
(*1)
(*2)
(*3)
(*1)
(*2)
(*3)
Reducerea complexitatii
algoritmilor exponentiali
Exercitiu (dificil)
Sa se imbunatateasca algoritmul D&C-3SAT pentru a
se obtine un algoritm de ordin O(r.1,64n) pentru
problema 3SAT.
32
Reducerea complexitatii
algoritmilor exponentiali
Descrierea conceptului
Aplicatie: 3SAT
33