Sunteți pe pagina 1din 35

Proiectarea Algoritmilor

Curs 4 Backtracking i
propagarea restriciilor

Proiectarea Algoritmilor 2015

Bibliografie

http://ktiml.mff.cuni.cz/~bartak/constraints/i
ntro.html

Proiectarea Algoritmilor 2015

Problema
2

7
9
9
4

4
2

5
8

3
2

7
3

2
6
8

Proiectarea Algoritmilor 2015

9
3

SUDOKU

Joc foarte la mod cu reguli foarte simple.

Fiecare rnd, coloan sau regiune nu


trebuie s conin dect o dat cifrele de la
unu la nou (Wikipedia).

Prin trecerea n revist a soluiilor posibile


pentru acest joc vom explora tehnicile de
rezolvare backtracking i propagarea
restriciilor.
Proiectarea Algoritmilor 2015

Soluia 1 genereaz i testeaz

Generm toate
soluiile posibile
i le testm.
43 spaii de
completat, 9
posibiliti de
completare
pentru fiecare
csu => 943
soluii de testat.

1-9 2 1- 9 8

1 1-9 7

4 1-9

7 1-9 1-9 1-9 1-9 3

1 1-9 1-9

1-9 9 1-9 1-9 1-9 2

8 1-9 5

1-91-9 9 1-9 4 1-9 1-9 8

4 1-9 1-9 2 1-9 8 1-9 1-9 3

6 1-9 1-9 3 1-9 2 1-9 1-9

3 1-9 2

7 1-9 1-9 1-9 6 1-9

1-9 1-9 5

6 1-9 1-9 1-9 1-9 8

1-9 7

6 1-9 5

Proiectarea Algoritmilor 2015

1 1-9 9 1-9
5

Soluia 2 Backtracking cronologic (orb)


(I)

Construiete soluiile iterativ.

Menine evidena alegerilor fcute.

n momentul n care se ajunge la o


contradicie se revine la ultima decizie
luat i se ncearc alegerea unei alte
variante.
Proiectarea Algoritmilor 2015

Soluia 2 Backtracking cronologic (orb)


(II)
1
2
3
4
5 2

8 1

3 1
9

2 8

9
4

4
2

1 6
3

7 4
5

8 7
8

3
2 7

5 6
7 6
5 1

3
2
6

5
7
6
2
4
1
3

2
4
9
3
5
6

8
9

1
2
3
8
1
9
7

2
5
6

8
5
4
1
2

1
9
7
4
6
3

1
2
3
4
5
6
3
2
5
8

7
6

Proiectarea Algoritmilor 2015

Nu se gsete nici o soluie


pe aceast cale
deci trebuie s revenim.

7
1
8
6
9
2

4
2
3
8
1

...
9
6
5
7
3

6
8
5 1

9
7

Soluia 2 Backtracking cronologic (orb)


(III)

5
7
6
2
4
1
3

2
4
9
3
5
6

1
2
3
8
1
9
7

8
5
4
1
2

1
9
7
4
6
3

1
2
3
4
5
6
3
2
5
8

2 7
5 6
7 6
5 1

1 Gsim o nou soluie


2 posibil i relum
3 avansul.
4
2
5
...
5 2 3 8 1 6 7 4 9
7 4 8 5 9 3 1 2 6
6 9 1 4 7 2 8 3 5
3
2 5 9 1 4 5 6 8 7
4 5 7 2 6 8 9 3
1 6
3
2
3
2 7
6
5 6
8
7 6
5 1
9

Se ncearc schimbarea
ultimei alegeri (n acest
caz nu se poate deci
revenim iar la alegerea
1
precedent).

7
1
8
6
9
2

4
2
3
8

...
9
6
5
7
3

6
8

Proiectarea Algoritmilor 2015

Soluia 2 Backtracking cronologic (orb)


(IV)
Schema Backtracking

Soluie-parial INIT // iniializez


EEC-DEFINITIV fals // nu am ajuns (nc) la eec
Ct timp Soluie-parial nu este soluie final i nu avem EEC-DEFINITIV

Soluie-parial AVANS (Soluie-parial) // avansez


Dac EEC (Soluie-parial) // nu mai pot avansa

Dac EEC-DEFINITIV

Atunci REVENIRE (Soluie-parial) // m ntorc

Atunci ntoarce EEC // nu s-a gsit nicio soluie


Altfel ntoarce SUCCES // am ajuns la soluia problemei

Sfrit.

Procedura AVANS (Soluie-parial)

Dac exist alternativ de extindere // pot avansa?

Atunci Soluie-parial Soluie-parial alternativ de extindere // avansez


Altfel Dac Soluie-parial este INIT

Atunci EEC-DEFINITIV adevrat // nu s-au gsit soluii pentru problem


Altfel EEC (Soluie-parial) // ramura curent a dus la eec

Proiectarea Algoritmilor 2015

Backtracking optimizri posibile (I)

Alegerea variabilelor n alt ordine.

mbuntirea revenirilor.

Necesit detectarea cauzei producerii erorii.

Evitarea redundanelor n spaiul de


cutare (mbuntirea avansului).

Evitarea repetrii unei cutri care tim c va


duce la un rezultat greit.
Proiectarea Algoritmilor 2015

10

Backtracking optimizri posibile (II)

mbuntirea
revenirilor

Revenire la alegerea variabilei


care a cauzat eecul (8 nu poate
fi pus dect la poziia indicat).

5
7
6
2
4
1
3

2
4
9
3
5
6

7
Proiectarea Algoritmilor 2015

1
2
3 8
8 5
1 4
9 1
7 2

2 7
5 6
6

1
9
7
4
6
3

1
2
3
4
5
6
3
2
5
8

7
1
8
6
9
2

...
4 9
2 6
3 5
8 7
1 3
6

8
5

9
11

Backtracking optimizri posibile (III)

Evitarea redundanelor
n spaiul de cutare
5
7
Alegerea lui 8 pe aceast poziie va
6
produce un eec n viitor indiferent de
2
celelalte alegeri fcute deci n cazul
revenirii n aceast poziie nu are sens 4
s mai facem aceast alegere.
1
3

2
4
9
3
5
6

7
Proiectarea Algoritmilor 2015

1
2
3 8
8 5
1 4
9 1
7 2

2 7
5 6
6

1
9
7
4
6
3

1
2
3
4
5
6
3
2
5
8

7
1
8
6
9
2

...
4 9
2 6
3 5
8 7
1 3
6
8

9
12

Restricii, reele de restricii,


probleme de prelucrarea restriciilor

Definiie: O restricie c este o relaie ntre una sau


mai multe variabile v1, , vm, (denumite nodurile
sau celulele restriciei). Fiecare variabila vi poate lua
valori ntr-o anumit mulime Di, denumit domeniul
ei (ce poate fi finit sau nu, numeric sau nu).

Definiie: Se spune c un tuplu (o atribuire) de valori


(x1, , xm) din domeniile corespunztoare celor m
variabile satisface restricia c(v1, ..., vm), dac (x1,
, xm) c(v1, ..., vm).

Proiectarea Algoritmilor 2015

13

Exprimarea restriciilor

Enumerarea tuplelor
restriciei.

(5,2,3,8,1,6,7,4,9);
(6,2,3,8,1,5,7,4,9); etc.

2
7

2 8
9

0 < V1j < 10; V1jV1k;


j k, 0 < j, k < 10

7 4
3 1

Formule matematice,
cum ar fi ecuaiile sau
inecuaiile.

8 1

4
2

1 6

5
8 7

3
2 7

2
6

5 6

Precizarea unei mulimi


de reguli.

7 6

Proiectarea Algoritmilor 2015

8
5 1

9
14

Tipuri de restricii

Unare

Binare

Specificarea domeniului variabilei.


V11 {1, 2, 3, 4, 5, 6, 7, 8, 9} \ {2, 8, 1, 7, 4, 3, 9}

ntre 2 variabile.
V1j V1k j k, 0 < j, k < 10

N-are

L1

ntre n variabile.
Regula triunghiului: L1 + L2 > L3.
Proiectarea Algoritmilor 2015

L3

L2

15

Probleme de satisfacerea restriciilor

Definiie: O problem de satisfacere a restriciilor


(PSR) este un triplet <V,D,C>, format din:

o mulime V format din n variabile V = {v1, , vn};


mulimea D a domeniilor de valori corespunztoare acestor
variabile: D = {D1, Dn} ;
o mulime C de restricii C = {c1, , cp} ntre submulimi ale V
(ci (vi1, . . ., vij) Di1 x Di2 x ... x Dij).

Conform Definiiei tuplului, o restricie ci (vi1, ..., vij),


este o submulime a produsului cartezian Di1 x Di2 x ...
x Dij, constnd din toate tuplele de valori considerate
c satisfac restricia pentru (vi1, . . ., vij).
Proiectarea Algoritmilor 2015

16

Soluii ale PSR

Definiie: O soluie a unei PSR <V,D,C>


este un tuplu de valori <x1, , xn>
pentru toate variabilele V, din domeniile
corespunztoare D, astfel nct toate
restriciile din C s fie satisfcute.

Definiie: PSR binar este o PSR ce


conine doar restricii unare i binare.
Proiectarea Algoritmilor 2015

17

Probleme de satisfacere a restriciilor Reprezentare

Reprezentare PSR prin reele de restricii.

Reprezentarea folosit: graf

Nodurile: variabilele restriciei


Arcele: restriciile problemei
Valabil doar pentru PSR binare

Alt reprezentare posibil: graf

Nodurile: restriciile problemei


Arcele: variabilele restriciei
Valabil pentru orice tip de PSR
Proiectarea Algoritmilor 2015

18

Exemplu de reprezentare a PSR

0 < V1j < 10; V1j V1k;


j k, 0 < j, k < 10

V11: {5;6}
V11

5;6

V13:{3}

V11V13

V11V19

V13V16
V11V16

V19
V19: {6; 9}

V19V16

V16

8 1

5;6;
9

7 4

3 1
2 8

V13
V13V19

6;9

5
8 7

4
2
8
3
1 6
3
2
3
2 7
6
5 6
8
7 6
5 1
9

V16: {5;6;9}
Proiectarea Algoritmilor 2015

19

Algoritmi de rezolvare a PSR


Propagarea restriciilor

Caracteristici
Rezolv PSR binare;
Variabilele au domenii finite de valori;
Prin propagarea restriciilor se filtreaz
mulimile de valori (se elimin elementele
din domeniu conform unui criteriu dat);
Procesul de propagare se oprete cnd:

O mulime de valori este vid EEC;


Nu se mai modific domeniul vreunei mulimi.

Proiectarea Algoritmilor 2015

20

Algoritmi de rezolvare a PSR


Propagarea restriciilor
Notaii:

n = numr variabile = numr restricii unare;


r = numr restricii binare;
G = reeaua de restricii cu variabile drept noduri i
restricii drept arce;
Di = domeniul variabilei i;
Qi = predicat care verific restricia unar pe
variabila i;
Pij = predicatul care reprezint restricia binar pe
variabilele i i j (O muchie ntre i i j se nlocuiete
cu arcele orientate de la i la j i de la j la i);
a = max |Di|.
Proiectarea Algoritmilor 2015

21

NC-1 (Node Consistency -1)

Algoritm de consistena nodurilor (pentru restricii


unare).

Procedura NC(i) este:

Pentru fiecare x Di

Dac not Qi (x) // nu este satisfcut restricia unar

Atunci terge x din Di

Sfrit.

Algoritm NC-1 este:

Pentru i de la 1 la n Execut NC(i) // pentru fiecare var


Sfrit.

Complexitate NC-1? na
Proiectarea Algoritmilor 2015

22

NC-1: Exemplu (I)

Elimin din domeniul de valori al fiecrui nod


valorile care nu satisfac restriciile care au ca
argument variabila din nodul respectiv.

n cazul Sudoku variabilele iniial iau valori ntre


1-9.

Algoritmul NC-1 elimin pentru fiecare variabil


acele valori din domeniu care nu sunt
consistente cu valorile fixe (celulele deja fixate).
Proiectarea Algoritmilor 2015

23

NC-1: Exemplu (II)


5;6

3;

4;5;
8;

4;8;

6;

1;3;
4;

4
1

5;6;
9

6;9;

5
8

8
3

3
2

6
8
5

Proiectarea Algoritmilor 2015

9
24

Algoritmi de consisten a arcelor

Algoritmii de consisten a arcelor nltur toate


inconsistenele submulimilor de 2 elemente ale
reelei de restricii.

Funcia REVISE ((i,j)) este:

TERS fals // nu am modificat domeniul de valori


Pentru fiecare x Di

Dac nu exist y Dj a.. Pij(x,y) // nu se respect restricia

Atunci

terge x din Di;


TERS adevrat; // am fcut modificri

ntoarce TERS.
Proiectarea Algoritmilor 2015

25

Exemplu funcionare REVISE


2

3;

4;5;
8;

4;8;

6;

1;3;4;

5;6;2;

4
2

9;
8;

5,6

4
1
3

5;6;
9

6;9;

5
7
3

8
3

2
5
6

7
6

6
8
5

Complexitate Revise ? a2
Proiectarea Algoritmilor 2015

26

REVISE - Concluzie

Funcia Revise este apelat pentru un


arc al grafului de restricii (binare) i
terge acele valori din domeniul de
definiie al unei variabile pentru care nu
este satisfcut restricia pentru nici o
valoare corespunztoare celeilalte
variabile a restriciei.

Complexitate Revise: O(a2)


Proiectarea Algoritmilor 2015

27

AC-1 (Arc Consistency -1)

Algoritm AC-1 este:

NC-1; // reduc domeniul de valori


Q {(i,j) | (i,j) arce(G), i j} // adaug restriciile
Repet

SCHIMBAT fals // nu am modificat niciun domeniu


Pentru fiecare (i,j) Q // pentru fiecare restricie

SCHIMBAT (REVISE ((i,j)) sau SCHIMBAT)

Pn cnd non SCHIMBAT // nu am mai fcut


// modificri
Sfrit.
Proiectarea Algoritmilor 2015

28

AC-1 Caracteristici & Complexitate

Se aplic algoritmul de consistena


nodurilor i apoi se aplic REVISE pn
nu se mai realizeaz nici o schimbare.

Complexitate: O(na * 2r * a2)

La fiecare iteraie
eliminm o singur
valoare (i avem maxim
na valori posibile).

Numrul maxim de
apelri al Revise.

Proiectarea Algoritmilor 2015

Complexitate Revise.

29

Exemplu AC-1
2

3;

4;5;
8;

4;8;

6;

1;3;4;

5;6;2;

3,5

4
1
3

9
7
8
2
5
6

9;

8;

5,6

5;6;
9

4
2

8
8

6;9;

7
3

7
6

6
8

Proiectarea Algoritmilor 2015

9
30

AC-3 (Arc Consistency -3)

Algoritm AC-3 este:


NC-1; // reduc domeniul de valori
Q {(i,j) | (i,j) arce(G), i j} // adaug
restriciile
Ct timp Q nevid

Selecteaz i terge un arc (k,m) din Q;


Dac REVISE ((k,m)) // am modificat domeniul

Atunci Q Q {(i,k) | (i,k) arce(G), i k, i m}

// verific dac nu se modific i alte domenii


Proiectarea Algoritmilor 2015

31

AC-3 Caracteristici

Se elimin pe rnd arcele (constrngerile).

Dac o constrngere aduce modificri n reea


adugm pentru reverificare nodurile care puncteaz
ctre nodul de plecare al restriciei verificate.

Scopul: Reverificarea nodurilor direct implicate de o


constrngere din reea.

Avantaj: Se fac mult mai puine apeluri ale funciei


REVISE.

Complexitate: O(a3r).
Proiectarea Algoritmilor 2015

32

Backtracking + Propagarea restriciilor

n general, propagarea restriciilor nu poate rezolva complet


problema dat.

Metoda ajut la limitarea spaiului de cutare (foarte


important n condiiile n care backtracking-ul are
complexitate exponenial!).

n cazul n care propagarea restriciilor nu rezolv problema


se folosete:

Backtracking pentru a genera soluii pariale;


Propagarea restriciilor dup fiecare pas de backtracking pentru
a limita spaiul de cutare (i eventual a gsi c soluia nu este
valid).
Proiectarea Algoritmilor 2015

33

NTREBRI?
Proiectarea Algoritmilor 2015

34

Bibliografie Curs 5

Giumale Introducere in Analiza Algoritmilor cap


7.6

http://www.dwheeler.com/chessopenings/#Sicilian%20Defense

http://mouserunner.com/MozllaTicTacToe/Mozilla
_Tic_Tac_Toe.htm

http://www.emunix.emich.edu/~evett/AI/AlphaBeta
_movie/index_movie.htm

Proiectarea Algoritmilor 2015

35

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