Sunteți pe pagina 1din 33

Reducerea complexitatii

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.

Ideea de baza pt proiectarea acestor algoritmi:


cautarea solutiei intr-un spatiu al solutiilor posibile a carui
dimensiune este exponentiala dar mai mica decat dimensiunea
(exponentiala) a spatiului solutiilor posibile in care se executa
3
cautarea bruta (naiva).

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

Pp. limita intre rezolvabilitate si nerezolvabilitate: ordinul de complexitate: 1016 =>


4

Reducerea complexitatii
algoritmilor exponentiali

=> imbunatatirea complexitatii de domeniul exponentialului


poate contribui in mod esential la rezolvabilitatea practica
a unor probleme dificile.

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;

nu exista o teorie robusta care sa explice de ce


pt unele probleme dificile se pot proiecta algortmi cu o
complexitate de ordinul p(n).cn, unde p = polinom si c=
constanta, c<2,
iar pt altele nu.
7

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.

in loc sa cercetam toate cele 2n asignari posibile ale


celor n variabile logice dintr-o formula logica ,
determinam satisfezabilitatea formulei cercetand cel
mult O(cn) asignari, unde c N, c<2.
8

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)

vrem sa decidem daca o formula logica oararecare


aflata in FNC cu clauze in care apar cel mult 3
variabile logice, este satisfezabila.
10

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

Evident, acest algoritm f. simplu functioneaza pt problema


generala a satisfiabilitatii.
11

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,

putem decide problema 3SAT intr-un timp de ordinul O(||.1,84n).

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;

(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=1)=0, adica F(t=1) este o formula nesatisfezabila.
13

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

In general, pentru variabilele t1,,tc,s1,,sd, formula:


F(t1=1,t2=1,,tc=1,s1=0,s2=0,,sd=0) se obtine din F
construind pe rand (t1=1), F(t1=1)(t2=1) etc.

Evident, t1=1,t2=1,,tc=1,s1=0,s2=0,,sd=0 determina o


asignare partiala pt variabilele din F.

=> problema daca F(t1=1,t2=1,,tc=1,s1=0,s2=0,,sd=0)


este satisfezabila
problema existentei unei asignari care sa satisfaca
t1=1,t2=1,,tc=1,s1=0,s2=0,,sd=0 si F.

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

aplicam primul set de reguli pt asignarea x1=1 =>


obtinem o noua formula:
F ( x 1) ( x ) ( x x x ) ( x x x )
1
2
2 3 5
1 2 3
( x ) ( x x x ) ( x x ),
2
2 3 5
2 3
16

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

aplicam acum primul set de reguli pt asignarea x2=1


=>obtinem o alta formula:
F ( x 1) ( x x ) ( x x x )
2
1 5
1 2 3
(x x ) (x x )
1 5
1 3

aplicam al 2-lea set de reguli pt asignarea x3=0


=>obtinem o alta formula:
F ( x 0) ( x x x ) ( x ) ( x x x ) ( x x )
3
1 2 4
2
2 3 5
1 5
(x x x ) (x ) (x x ) (x x )
1 2 4
2
2 5
1 5
17

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

pentru ca a 2a clauza consta numai dintr-un singur literal: x2.


(2) literal t din F si a {0,1}:
formula F(t=a) contine mai putine variabile decat
formula initiala F.
Notatie
n,rN:
3FNC (n,r)={| este o formula in 3FNC peste cel mult
n variabile si contine cel mult r clauze}

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),

F(t1=0, t2=0, t3=1) 3FNC(n-3,r-1).


=> am redus problema satisfezabilitatii formulei F 3FNC(n,r) la problema
satisfezabilitatii a 3 subinstante ale sale aflate in:

3FNC(n-1,r-1),
3FNC(n-2,r-1) si respectiv
3FNC(n-3,r-1).

=> am obtinut urmatorul algoritm recursiv pt 3SAT:


20

Reducerea complexitatii
algoritmilor exponentiali
Algoritmul D&C-3SAT(F)
Intrare: O formula F in 3FNC.

Pas 1: daca m,kN\{0} a.i. F3FNC(3,k) sau F3FNC(m,2)


atunci se verifica toate asignarile posibile pentru
variabilele din F si

se stabileste daca F3SAT sau nu;


daca F3SAT, atunci tipareste 1; altfel, tipareste 0.
21

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

Daca H=(t1t2) atunci tipareste


(D&C-3SAT(F(t1=1)) D&C-3SAT(F(t1=0, t2=1)));
Daca H=(t1t2 t3) atunci tipareste
(D&C-3SAT(F(t1=1)) D&C-3SAT(F(t1=0, t2=1))
D&C-3SAT(F(t1=0, t2=0, t3=1))).
22

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

(i) algoritmul D&C-3SAT rezolva 3SAT


distingem 3 cazuri:
a)

F contine o clauza care consta dintr-un singur literal t;

este evident ca F este satisfezabila F(t=1) este satisfezabila.


b)

F contine o clauza (t1t2);

atunci F este satisfezabila cel putin una dintre formulele F(t1=1)


sau F(t1=0, t2=1)este satisfezabila.
c)

F contine numai clauze de lungime 3 clauza (t1t2 t3);

atunci F este satisfezabila cel putin una dintre formulele F(t1=1),


F(t1=0, t2=1), F(t1=0, t2=0, t3=1)este satisfezabila.
=> algoritmul D&C-3SAT este corect.

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.

Cum F este in 3FNC peste n variabile si consta din r clauze =>


n |F| si |F|/3 r |F|

(pt ca: |F|/3 r|F| |F|3r3|F|


deoarece fiecare clauza din F are maximum
3 termeni)
25

Pas 1: daca m,kN\{0} a.i. F3FNC(3,k) sau F3FNC(m,2)


atunci se verifica toate asignarile posibile pentru variabilele din F si
se stabileste daca F3SAT sau nu;
daca F3SAT, atunci tipareste 1; altfel, tipareste 0.

Cf. Pas. 1 din algoritm:


T(n,r) 8.|F| 24r, (n,r) {1,2,3} x{1,2}

(*1)

24r pt ca |F|/3 r|F|3 r.


8 pt ca exista 8 asignari posibile
pt 3 variabile: 000, 001,,111
26

Reducerea complexitatii
algoritmilor exponentiali
Pt. n{1,2} si r, aplicand acelasi rationament ca mai sus,

putem presupune ca:


T(1,r)|F|3r si T(2,r)4.|F|12r

apoi majoram cf.|F|3r).

pt n=1 var exista 1! asignare posibila,


pt n=2 var. exista 4 asignari posibile
27

Pas 2: Fie H una dintre cele mai scurte clauze din F.


Daca H=(t) atunci tipareste (D&C-3SAT(F(t=1)));
Daca H=(t1t2) atunci tipareste (D&C-3SAT(F(t1=1)) D&C-3SAT(F(t1=0, t2=1)));
Daca H=(t1t2 t3) atunci tipareste (D&C-3SAT(F(t1=1)) D&C-3SAT(F(t1=0, t2=1))
D&C-3SAT(F(t1=0, t2=0, t3=1))).

Intrucat:
o noua formula F(t=a) se poate obtine din formula F in timp 3.|F| 9r,

majorarea |F|3r se inmulteste cu 3 pt ca sunt 3 reguli


care trebuie aplicate pt a obtine F(t=1), respectiv F(t=0),
din F

analiza Pasului 2 conduce , pt n>3 si r>2, la recurenta:


T(n,r) 54r + T(n-1,r-1) + T(n-2,r-1) + T(n-3,r-1)

54= (3 subinstante aparute la Pasul 2) x


x (2 tipuri de reguli de reducere) x
x (3 reguli) x 3r, unde 3r majoreaza |F|)

(*2)

28

T(n,r) 8.|F| 24r, (n,r) {1,2,3} x{1,2}

(*1)

T(n,r) 54r + T(n-1,r-1) + T(n-2,r-1) + T(n-3,r-1)

(*2)

Demonstram prin inductie dupa n = nr variabile din F ca


T(n,r) 27r .(1,84n-1)

(*3)

satisface atat recurenta (*2) cat si conditiile initiale (*1).


Observam ca, pt n=3 si r1:
T(n,r) = T(3,r) = 27r . (1,843-1) 100r > 24r
=> algoritmul D&C-3SAT se executa pt n=3 in timp inferior
lui T(3,r).

Analog se intampla si in cazurile n=1 si n=2 => formula (*3)


satisface (*1).
29

T(n,r) 8.|F| 24r, (n,r) {1,2,3} x{1,2}

(*1)

T(n,r) 54r + T(n-1,r-1) + T(n-2,r-1) + T(n-3,r-1)

(*2)

T(n,r) 27r .(1,84n-1)

(*3)

Fie acum n4; demonstram prin inductie dupa n ca T(n,r),

calculata dupa formula (*3), satisface recurenta (*2)


a) pentru n=4 si r2 avem, cf (*2) si (*1):
T(n,r) 54r + T(3,r-1) + T(2,r-1) + T(1,r-1)

54r + 24(r-1) + 12(r-1) + 3(r-1) =


= 93r - 39 93r 27r .(1,844-1).
30

T(n,r) 8.|F| 24r, (n,r) {1,2,3} x{1,2}

(*1)

T(n,r) 54r + T(n-1,r-1) + T(n-2,r-1) + T(n-3,r-1)

(*2)

T(n,r) 27r .(1,84n-1)

(*3)

b) pentru m<n presupunem ca T(m,r) 27r .(1,84m-1) satisface


recurenta (*2) si demonstram pentru n.
Fie un r2 oarecare; avem, cf. (*2) si ipotezei de inductie:
T(n,r) 54r + T(n-1,r-1) + T(n-2,r-1) + T(n-3,r-1)

54r + 27(r-1).(1,84n-1-1) + 27(r-1).(1,84n-2-1) + 27(r-1).(1,84n-3-1)


54r + 27r .(1,84n-1+1,84n-2+ 1,84n-3-3) =
= 54r + 27r .1,84n-1(1 + 1,84-1+1,84-2) 3.27r
27r .1,84n 27r = 27r .(1,84n-1).
=> o functie T(n,r) O(r.1,84n) care satisface recurenta (*2).
31

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

S-ar putea să vă placă și