2017
Problema satisfacerii restrictiilor
Capitolul 7
2017
Aplicatii ale PSR
• Resource assignment problems: e.g., what resource is assigned to
what activity ?
• Timetabling problems: e.g., which class (or more general, activity) is
offered when and where?
• Hardware/software configuration: cloud systems, service
composition
• Engineering configuration problems: (e.g. Renault Megane Case),
• Spreadsheets:
• Transportation scheduling: vehicle routing, pickup and delivery
problems
• Scheduling: factory scheduling, manufacturing
• Radio frequency assignment:
• Packing problems: knapsack problem.
• Layout problems: VLSI layout
• Compilatoare si limbaje de programare: depanare simbolica:
2017
Definirea PSR
• In problema satisfacerii restrictiilor – PSR (engl. constraint satisfaction problem – CSP), uneori si problema selectiei multidimensionale se dau:
– O multime finita de variabile
– Un domeniu (multime de valori posibile) pentru fiecare variabila. Domeniile pot fi multimi finite sau multi infinite.
– O multime de restrictii (sau constrangeri) si/sau o functie de evaluare
• In PSR se cere asignarea cate unei valori fiecarei variabile astfel incat:
– Fie sunt satisfacute restrictiile, acestea numindu-se si restrictii stricte (engl. hard constraints), iar problema numindu-se in acest caz problema de satisfacere. Optional o problema poate avea si restrictii slabe (engl. soft constraint).
– Fie se minimizeaza functia de evaluare (sau cost), in acest caz problema numindu-se problema de optimizare.
2017
Exemplu – problema reginelor
• Variables: 𝑄1, 𝑄2, 𝑄3, 𝑄4. 𝑄𝑖 is the row of the queen placed on column 𝑖.
• Domains: *1,2,3,4+
• Constraints: no two distinct queens can attack on rows, on main
diagonals, on secondary diagonals.
– On rows: 𝑄𝑖 ≠ 𝑄𝑗 for all 𝑖 and 𝑗
– On main diagonals: 𝑄𝑖 − 𝑄𝑗 ≠ 𝑖 − 𝑗
– On secondary diagonals: 𝑄𝑖 − 𝑄𝑗 ≠ 𝑗 − 𝑖
– On whatever diagonals: |𝑄𝑖 − 𝑄𝑗| ≠ |𝑖 − 𝑗|
4 Q
3 Q
2 Q
1 Q
1 2 3 4
2017
Definirea formala a PSR
• Multimea variabilelor *𝑋1, 𝑋2 … , 𝑋𝑛+.
• Pentru fiecare variabila 𝑋𝑖 se indica domeniul sau 𝐷𝑖 ce reprezinta
multimea valorilor posibile ale variabilei.
• Pentru problemele de optimizare se indica restrictiile problemei. O
restrictie reprezinta o submultime a produsului cartezian al unei
submultimi a domeniilor variabilelor.
𝑅𝑗 ⊆ 𝐷𝑖1× ⋯ × 𝐷𝑖𝑘
. Here constraint 𝑅𝑗 involves 𝑘 variables: 𝑋𝑖1, … , 𝑋𝑖𝑘
.
• O solutie a unei probleme de satisfacere reprezinta un 𝑛-tuplu de
𝑋1 = 𝑣1, … , 𝑋𝑛 = 𝑣𝑛 , 𝑣𝑖 ∈ 𝐷𝑖 care satisface restrictiile problemei.
• Pentru problemele de optimizare se indica o functie de cost care asociaza
cate o valoare de cost fiecarei asignari de valori variabilelor problemei.
• O solutie a unei probleme de optimizare reprezinta un n-tuplu de valori
ale variabilelor care satisfac restrictiile si optimizeaza functia de cost.
2017
PSR ca problema de cautare
• In PSR ne intereseaza doar valoarea nodului obiectiv, nu calea catre el !
• Abordarea incrementala: Se ordoneaza variabilele *𝑋1, 𝑋2, … , 𝑋𝑛+. Un
nod corespunde unei asignari partiale de valori, doar primelor 𝑘 variabile,
0 ≤ 𝑘 ≤ 𝑛. Vecinii unui nod se obtin prin asignarea unei valori variabilei
urmatoare, cu indicele 𝑘 + 1. Nodul initial are toate variabilele
neasignate, adica 𝑘 = 0.
⟨𝑋 = 𝑎, 𝑌 = 𝑎⟩ ⟨𝑋 = 𝑎, 𝑌 = 𝑏⟩ ⟨𝑋 = 𝑏, 𝑌 = 𝑎⟩ ⟨𝑋 = 𝑏, 𝑌 = 𝑏⟩
⟨𝑋 = 𝑏⟩ ⟨𝑋 = 𝑎⟩
⟨⟩ 𝑋 = 𝑎 𝑋 = 𝑏
𝑌 = 𝑎 𝑌 = 𝑏 𝑌 = 𝑎 𝑌 = 𝑏
2017
PSR ca problema de cautare
• Abordarea cu stare completa: Un nod corespunde unei asignari de
valori tuturor variabilelor problemei 𝑋1 = 𝑣1, … , 𝑋𝑛 = 𝑣𝑛 . Vecinii unui
nod corespund schimbarii unei valori a unei variabile. Un nod de start se
obtine asignand aleator cate o valoare fiecarei variabile.
⟨𝑋 = 𝑎, 𝑌 = 𝑎⟩ ⟨𝑋 = 𝑎, 𝑌 = 𝑏⟩ ⟨𝑋 = 𝑏, 𝑌 = 𝑏⟩ ⟨𝑋 = 𝑎, 𝑌 = 𝑎⟩
⟨𝑋 = 𝑎, 𝑌 = 𝑏⟩ ⟨𝑋 = 𝑏, 𝑌 = 𝑎⟩
⟨𝑋 = 𝑎, 𝑌 = 𝑎⟩ 𝑋 = 𝑏 𝑌 = 𝑏
𝑋 = 𝑎 𝑌 = 𝑏 𝑋 = 𝑏 𝑌 = 𝑎
… … … …
2017
Exemplu: cripto-aritmetica
• Variables: 𝑇, 𝑊, 𝑂, 𝐹, 𝑈, 𝑅 with domain *0,1,2, … , 9+.
• Constraints:
𝑎𝑙𝑙𝑑𝑖𝑓𝑓𝑒𝑟𝑒𝑛𝑡( 𝑇, 𝑊, 𝑂, 𝐹, 𝑈, 𝑅 )
𝑇 ≠ 0
𝐹 ≠ 0
200𝑇 + 20𝑊 + 2𝑂 = 1000𝐹 + 100𝑂 + 10𝑈 + 𝑅
• Additional variables: 𝐶1, 𝐶2, 𝐶3 with domain {0,1}
• Replace last constraint with:
2𝑂 = 𝑅 + 10𝐶1
2𝑊 + 𝐶1 = 𝑈 + 10𝐶2
2𝑇 + 𝐶2 = 𝑂 + 10𝐶3
𝐹 = 𝐶3
T W O +
T W O
F O U R
2017
Exemplu: planificarea activitatilor
• Sa presupunem ca robotul de distribuire trebuie sa planifice 5 activitati a,
b, c, d si e, fiecare activitate poate incepe la unul din momentele 1, 2, 3
sau 4 iar durata unei activitati este neglijabila.
• Variabilele acestei probleme sunt momentele de realizare a activitatilor: A,
B, C, D si E.
• Domeniile valorilor variabilelor problemei sunt DA = DB = DC = DD = DE
= {1,2,3,4}.
• Restrictiile problemei sunt:
(B 3) (C 2) (A B) (B C) (C < D) (A = D) (E < A)
(E < B) (E < C) (E < D) (B D)
• Ele exprima urmatoarele lucruri: activitatea b nu poate fi realizata la
momentul 3, c nu poate fi realizata la momentul 2, a nu poate fi realizata
simultan cu b, b nu poate fi realizata simultan cu c, c trebuie realizata strict
inaintea lui d, etc.
2017
Reprezentarea PSR in Datalog
• O PSR in care domeniile variabilelor sunt multimi finite se numeste PSR finita. In continuare prin PSR intelegem of PSR finita.
• O PSR poate fi reprezentata in Datalog astfel:
– Fiecare restrictie este o relatie k-ara si poate fi exprimata extensional prin multimea k-tuplelor sale. Fiecarui tuplu ii corespunde o clauza Datalog de forma unui fapt in care toti termenii sunt constante.
– Multimea restrictiilor este reprezentata printr-o interogare Datalog in care variabilele corespund variabilelor problemei.
• Exemplu: timp(1) 1 < 2 1 2 3 1 1 = 1 timp(2) 1 < 3 1 3 3 2 2 = 2
timp(3) 1 < 4 1 4 3 4 3 = 3
timp(4) 2 < 3 2 1 4 1 4 = 4
2 < 4 2 3 4 2
3 < 4 2 4 4 3
? timp(A) timp(B) timp(C) timp(D) timp(E)
(B 3) (C 2) (A B) (B C) (C < D)
(A = D) (E < A) (E < B) (E < C) (E < D)
(B D)
2017
Rezolvarea PSR prin generare si testare
• Consta in generarea sistematica prin cautare exhaustiva a tuturor
elementelor produsului cartezian: D1 D2 … Dn si verificarea
restrictiilor sau evaluarea functiei de cost pentru fiecare element in parte.
• Aceasta metoda necesita un timp exponential !
• Presupunand ca |Di| = d pentru toti 1 i n, ca exista e restrictii care
trebuie testate si ca testarea unei restrictii consuma un timp constant,
rezulta ca algoritmul de generare si testare va necesita un timp de executie
O(edn).
• Exemplu: DA DB DC DD DE = {(1,1,1,1,1), (1,1,1,1,2), ...,
(4,4,4,4,4)}.
• Algoritmul de generare si testare se obtine aplicand procedura de
demonstrare de sus in jos pentru interogarea Datalog si inlocuind
nedeterminismul nu-conteaza cu selectia atomului cel mai din stanga din
corpul clauzei raspuns (de ce ?)
2017
? timp(A) timp(B) (B 3) (A B) timp(C)
(C 2) (B C) timp(D) (C < D) (A = D)
(B D) timp(E) (E < A) (E < B) (E < C)
(E < D)
Rezolvarea PSR prin backtracking
• Asignarea unei valori unei variabile = instantiere.
• Presupune instantierea variabilelor intr-o anumita ordine si evaluarea fiecarei restrictii imediat ce variabilele din cadrul sau au devenit instantiate.
• Avantaj: orice instantiere partiala a variabilelor care nu satisface restrictiile va putea fi astfel rejectata.
• Spre exemplu orice instantiere partiala in care A = 1 si B = 1 va fi inconsistenta cu restrictia A B.
• Astfel interogarea Datalog va putea fi modificata astfel incat, avand in vedere strategia de selectie de la stanga la dreapta, restrictiile sa fie impinse spre stanga astfel incat sa poata fi testate imediat ce variabilele corespunzatoare lor au devenit instantiate.
• Exemplu:
2017
Rezolvare folosind Prolog
digit(0).
digit(1).
digit(2).
digit(3).
digit(4).
digit(5).
digit(6).
digit(7).
digit(8).
digit(9).
sol([T,W,O,F,U,R]) :-
digit(T),
T \== 0,
digit(W),
W \== T,
digit(O),
O \== T, O \== W,
TWO is 100*T+10*W+O,
digit(F),
F \== 0, F \== T, F \== W, F \== O,
digit(U),
U \== T, U \== W, U \== O, U \== F,
digit(R),
R \== T, R \== W, R \== O, R \== F,
R \== U,
FOUR is 1000*F+100*O+10*U+R,
TWO+TWO =:= FOUR.
2017
Rezolvare folosind CLP
• Constraint Logic Programming – CLP
• ECLiPSe-CLP: http://www.eclipseclp.org/
:- lib(ic). % library for arithmetic constraints
twotwofour(Digits) :-
Digits = [T,W,O,F,U,R], % Variables ... digits
Digits :: [0..9], % Their domains {0,1,...,9}
Carries = [C1,C2,C3], % Other variables ... carries
Carries :: [0..1], % Their domains {0,1}
alldifferent(Digits), % Global constraint
T #\= 0, % Constraint “not equal”
F #\= 0,
C3 #= F, % Constraint “equal”
C2 + 2*T #= O + 10*C3,
C1 + 2*W #= U + 10*C2,
2*O #= R + 10*C1,
labeling(Carries), % Search for assignments
labeling(Digits).
2017
Algoritmi specifici pentru PSR
• Algoritmi de propagare: algoritmi de consistenta
• Cautare locala
• SAT si SMT: satisfacere Booleana si rezolvare
modulo “teorii”
2017
Graf de constrangeri
• Se considera o PSR in care 𝒳 este multimea variabilelor si ℛ este multimea de constrangeri.
• Definitie: Se numeste graf de constrangeri (engl. constraint graph) un graf neorientat 𝒢 = ⟨𝒳 ∪ ℛ, ℰ⟩ in care:
– Nodurile reprezinta variable din multimea 𝒳 sau constrangeri din multimea ℛ.
– Muchiile ℰ ⊆ 𝒳 × ℛ reprezinta perechi de noduri *𝑋, 𝑅+ astfel incat 𝑋 ∈ 𝒳, 𝑅 ∈ ℛ, iar variabila 𝑋 apare in constrangerea 𝑅.
• Exemplu: Se considera trei variabile intregi 𝐴, 𝐵, 𝐶 cu domeniile *1,2,3,4+ si constrangerile 𝐴 < 𝐵 si 𝐵 < 𝐶.
𝐴 < 𝐵 𝐴 𝐵 𝐶 𝐵 < 𝐶
2017
Gradul nodurilor unui graf de constrangeri
• Fie 𝒢 = 𝒳 ∪ ℛ, ℰ un graf de constrangeri si fie 𝑅 ∈ ℛ un nod al sau de tip constrangere. Daca constrangerea 𝑅 are 𝑘 variabile atunci se spune ca are aritatea 𝑘.
• Orice nod constrangere de aritate 𝑘 are gradul 𝑘.
• Exemple:
– Nodul constrangere 𝑋 ≠ 4 are gradul 1.
– Nodul consstrangere 𝑋 + 𝑌 = 𝑍 are gradul 3.
• Daca o variabila este implicata in 𝑘 constrangeri atunci nodul corespunzator are gradul 𝑘.
• Se considera o constrangere 𝑅 de aritate 1 care contine o singura variabila 𝑋. Atunci arcul *𝑋, 𝑅+ se numeste consistent in raport cu domeniul daca si numai daca fiecare valoare posibila a lui 𝑋 din domeniul sau 𝐷𝑋 satisface constrangerea 𝑅.
2017
Arc consistenta
• Definitie: Se considera o constrangere 𝑅 care depinde de variaabilele 𝑋, 𝑌1, … , 𝑌𝑘 unde 𝑘 ≥ 1.Arcul *𝑋, 𝑅+ se numeste arc consistent daca si numai daca pentru orice valoare 𝑥 ∈ 𝐷𝑋 exista valorile 𝑦𝑖 ∈ 𝐷𝑌𝑖
astfel
incat 𝑅(𝑋 = 𝑥, 𝑌1 = 𝑦1, … , 𝑌𝑘 = 𝑦𝑘) este adevarat.
• Definitie: Un graf de constrangeri este arc consistent daca si numai daca toate arcele sale sunt arc consistente.
• Exemplu: Se considera trei variabile intregi 𝐴, 𝐵, 𝐶 cu domeniile *1,2,3,4+ si constrangerile 𝐴 < 𝐵 si 𝐵 < 𝐶.
• Aici nici un arc nu este arc consistent. De exemplu arcul *𝐴, 𝐴 < 𝐵+ nu este arc consistent deoarece daca 𝐴 = 4 nu exista 𝐵 ∈ *1,2,3,4+ a.i. 𝐴 < 𝐵.
• Concluzie: Daca un arc *𝑋, 𝑅+ nu este arc consistent exista valori ale lui 𝑋 in domeniul sau 𝐷𝑋 pentru care nu exista valori corespunzatoare ale variabilelor 𝑌 care sa satisfaca impreuna constrangerea 𝑅.
𝐴 < 𝐵 𝐴 𝐵 𝐶 𝐵 < 𝐶
2017
Algoritmul de arc consistenta
2017
Complexitatea algoritmului de arc consistenta
• Propozitie: Fie 𝑒 = |ℛ|, 𝑑 = maxX∈𝒳
|𝐷𝑋|, fie 𝑘 gradul maxim al
tuturor nodurilor constrangere. Timpul de executie al
algoritmului ARC-CONSISTENCY este 𝑂 𝑒𝑑𝑘+1 .
• Demonstratie:
• Determinarea lui 𝑁𝐷𝑋 dureaza 𝑂(𝑑𝑘).
• Un arc *𝑋, 𝑅+ va putea ajunge in multimea 𝒬 de cel mult un
numar finit de ori, deoarece la fiecare extragere a sa din 𝒬
domeniul lui 𝑋 trebuie sa se restranga pentru a genera
readaugari in coada. Deci orice arc *𝑍, 𝑅+ cu 𝑍 ≠ 𝑋 va ajunge
in coada de cel mult 𝐷𝑋 ≤ 𝑑 ori.
• Intrucat exista 𝑒 arce timpul de executie este:
𝑂 𝑒 × 𝑑 × 𝑑𝑘 = 𝑂(𝑒𝑑𝑘+1).
• Observatie: pt. PSR binare, 𝑘 = 2, rezulta timpul 𝑂(𝑒𝑑3).
2017
Exemplu de aplicare a algoritmului de arc consistenta
• Exemplu: Se considera trei variabile intregi 𝐴, 𝐵, 𝐶 cu domeniile *1,2,3,4+ si
constrangerile 𝐴 < 𝐵 si 𝐵 < 𝐶. – Initial 𝒜 = * 𝐴, 𝐴 < 𝐵 , 𝐵, 𝐴 < 𝐵 , 𝐵, 𝐵 < 𝐶 , *𝐶, 𝐵 < 𝐶++. Fie 𝒜 o coada.
– Se selecteaza intai arcul (𝐴, 𝐴 < 𝐵). Valoarea 4 se elimina din 𝐷𝐴. 𝐷𝐴 = *1,2,3+. Nu se
pot adauga noi arce la 𝒜. 𝒜 = * 𝐵, 𝐴 < 𝐵 , 𝐵, 𝐵 < 𝐶 , *𝐶, 𝐵 < 𝐶++
– Se selecteaza arcul *𝐵, 𝐴 < 𝐵+. Valoarea 1 se elimina din 𝐷𝐵. Arcul *𝐴, 𝐴 < 𝐵+ va fi
readaugat la 𝒜. 𝐷𝐵 = *2,3,4+. 𝒜 = * 𝐵, 𝐵 < 𝐶 , 𝐶, 𝐵 < 𝐶 , *𝐴, 𝐴 < 𝐵)+
– Se selecteaza arcul *𝐵, 𝐵 < 𝐶+. Se poate elimina valoarea 4 din 𝐷𝐵. Nu se pot adauga
noi arce la 𝒜. 𝐷𝐵 = *2,3+. 𝒜 = * 𝐶, 𝐵 < 𝐶 , 𝐴, 𝐴 < 𝐵 +
– Se selecteaza arcul *𝐶, 𝐵 < 𝐶+. Se poate elimina valorile 1 si 2 din 𝐷𝐶. Arcul
𝐵, 𝐵 < 𝐶 va fi readaugat. 𝐷𝐶 = *3,4+. 𝒜 = * 𝐴, 𝐴 < 𝐵 , (𝐵, 𝐵 < 𝐶)+
– Se selecteaza arcul *𝐴, 𝐴 < 𝐵+. Valoarea 3 se poate elimina din 𝐷𝐴. Nu se pot adauga
noi arce la 𝒜. 𝐷𝐴 = *1,2+. 𝒜 = * 𝐵, 𝐵 < 𝐶 , 𝐵, 𝐴 < 𝐵 +
– Se selecteaza arcul 𝐵, 𝐵 < 𝐶 . Nu se poate restrange 𝐷𝐵. 𝒜 = * 𝐵, 𝐴 < 𝐵 +.
– Se selecteaza arcul *𝐵, 𝐴 < 𝐵+. Nu se poate restrange domeniul lui 𝐵.
– La final rezulta: 𝑫𝑨 = *𝟏, 𝟐+, 𝑫𝑩 = *𝟐, 𝟑+ si 𝑫𝑪 = *𝟑, 𝟒+.
𝐴 < 𝐵 𝐴 𝐵 𝐶 𝐵 < 𝐶
2017
Exemplu de aplicare a algoritmului de arc consistenta
• Exemplu: Se considera trei variabile intregi 𝐴, 𝐵, 𝐶 cu domeniile *1,2,3,4+ si
constrangerile 𝐴 < 𝐵 si 𝐵 < 𝐶. – Initial 𝒜 = * 𝐴, 𝐴 < 𝐵 , 𝐵, 𝐴 < 𝐵 , 𝐵, 𝐵 < 𝐶 , *𝐶, 𝐵 < 𝐶++. Fie 𝒜 o coada.
– Se selecteaza intai arcul (𝐴, 𝐴 < 𝐵). Valoarea 4 se elimina din 𝐷𝐴. Nu se pot adauga
noi arce la 𝒜. 𝐷𝐴 = *1,2,3+.
– Se selecteaza arcul *𝐵, 𝐴 < 𝐵+. Valoarea 1 se elimina din 𝐷𝐵. Arcul *𝐴, 𝐴 < 𝐵+ va fi
readaugat la 𝒜. 𝐷𝐵 = *2,3,4+.
– Se selecteaza arcul *𝐵, 𝐵 < 𝐶+. Se poate elimina valoarea 4 din 𝐷𝐵. Nu se pot adauga
noi arce la 𝒜. 𝐷𝐵 = *2,3+.
– Se selecteaza arcul *𝐶, 𝐵 < 𝐶+. Se poate elimina valoarea 1 din 𝐷𝐶. Arcul 𝐵, 𝐵 < 𝐶
va fi readaugat. 𝐷𝐶 = *2,3,4+.
– Se selecteaza arcul *𝐴, 𝐴 < 𝐵+. Valoarea 3 se poate elimina din 𝐷𝐴. Arcul *𝐵, 𝐴 < 𝐵+
este readaugat. 𝐷𝐴 = *1,2+.
– Se selecteaza arcul 𝐵, 𝐵 < 𝐶 . Nu se poate restrange domeniul lui 𝐵. – Se selecteaza arcul *𝐶, 𝐵 < 𝐶+. Se poate elimina 2 din 𝐷𝐶. 𝐷𝐶 = *3,4+.
– La final rezulta: 𝑫𝑨 = *𝟏, 𝟐+, 𝑫𝑩 = *𝟐, 𝟑+ si 𝑫𝑪 = *𝟑, 𝟒+.
𝐴 < 𝐵 𝐴 𝐵 𝐶 𝐵 < 𝐶
2017
Exemplu pentru planificarea activitatilor
• Exemplu: Se considera variabilele intregi 𝐴, 𝐵, 𝐶, 𝐷, 𝐸 cu domeniile *1,2,3,4+ si
constrangerile:
𝐵 ≠ 3 ∧ 𝐶 ≠ 2 ∧ 𝐴 ≠ 𝐵 ∧ 𝐵 𝐶 ∧ 𝐶 < 𝐷 ∧ 𝐴 = 𝐷 ∧
𝐸 < 𝐴 ∧ 𝐸 < 𝐵 ∧ 𝐸 < 𝐶 ∧ 𝐸 < 𝐷 ∧ (𝐵 ≠ 𝐷)
• Realizand consistenta in raport cu domeniul rezulta reteaua:
• Tema: aplicand algoritmul de arc consistenta rezulta
solutia:
𝐴 = 4, 𝐵 = 2, 𝐶 = 3, 𝐷 = 4, 𝐸 = 1
2017
Rezolvarea PSR cu algoritmul de arc consistenta
• In urma executiei algoritmului pentru un graf de constrangeri, rezulta un graf arc si domeniu consistent. El este acelasi indiferent de ordinea in care sunt verificate arcele – selectia arcelor este un nedeterminism “nu-conteaza”.
• La terminarea algoritmului avem 3 posibilitati:
– i. Cel putin un domeniu e vid. In acest caz in care problema nu are solutii. Daca un domeniu devine vid, atunci domeniile tuturor nodurilor conectate vor deveni vide.
– ii. Toate domeniile au un singur element. In acest caz problema are solutie unica.
– iii. Exista cel putin un domeniu cu mai mult de un element. In acest caz nu se stie daca problema are sau nu solutie. Se continua procesul de rezolvare folosind alte metode. O astfel de metoda consta in alegerea unui domeniu cu mai mult de o valoare, injumatatirea lui si aplicarea recursiva a algoritmului de arc consistenta subproblemelor PSR rezultate – se aplica metoda “divide et impera”.
2017
Divizarea domeniilor
• Se considera un graf de constrangeri arc consistent in care domeniile
variabilelor sunt nevide si cel putin o variabila admite valori mutiple –
cazul (iii) in urma aplicarii algoritmului de arc consistenta.
• Pentru rezolvare se aplica metoda “divide et impera” – se imparte
problema in subprobleme disjuncte, iar multimea solutiilor problemei
initiale va fi reuniiunea solutiilor subproblemelor.
• Tehnica se numeste divizarea domeniilor (engl. domain splitting) sau
analiza cazurilor (engl. case analysis).
• Exemplu: Se considera trei variabile intregi 𝐴, 𝐵, 𝐶 cu domeniile *1,2,3,4+
si constrangerile 𝐴 < 𝐵 si 𝐵 < 𝐶. In urma aplicarii algoritmului de arc
consistenta a rezultat: 𝐷𝐴 = *1,2+, 𝐷𝐵 = *2,3+ si 𝐷𝐶 = *3,4+. – Se imparte domeniul 𝐷𝐵 al lui 𝐵.
– Se alege 𝐵 = 2. Din arc consistenta rezulta ca 𝐴 nu poate fi 2. Continuand divizarea
cu 𝐷𝐶 rezulta doua solutii: (𝐴 = 1, 𝐵 = 2, 𝐶 = 3) si (𝐴 = 1, 𝐵 = 2, 𝐶 = 4).
– Se alege 𝐵 = 3. Din arc consistenta rezulta ca 𝐶 nu poate fi 3. Continuand divizarea
cu 𝐷𝐴 rezulta doua solutii: (𝐴 = 1, 𝐵 = 3, 𝐶 = 4) si (𝐴 = 2, 𝐵 = 3, 𝐶 = 4).
2017
Cautare locala
• Cautarea locala (engl. local search) este destinata rezolvarii de
probleme caracterizate de spatii de cautare foarte mare, cand
explorarea exhaustiva nu este posibila.
• In cautarea locala: – Nodul curent reprezinta o asignare completa de valori tuturor
variabilelor problemei
– Calea catre solutie nu conteaza, fiind important doar nodul final ce
reprezinta o solutie
– Problema de constrangeri este reformulata ca problema de optimizare.
In acest caz functia de optimizare este o functie ce are valoarea minima
/ maxima daca si numai daca toate constrangerile problemei
(constrangerile tari !) sunt satisfacute.
– Deseori se accepta solutii suboptimale = solutii pentru care functia de
optimizare nu este minima / maxima, sau echivalent pentru PSF, nu sunt
satisfacute toate constrangerile problemei.
2017
Completitudine si optimalitate
• Un algoritm de rezolvare a PSR este complet daca si numai daca ori de cate
ori exista o solutie, algoritmul determina solutia.
• Un algoritm de optimizare este optim daca si numai daca algoritmul
determina intotdeauna solutia optima.
• Pentru PSF reprezentate ca probleme de optimzare exista echivalenta
optimalitate ⟺ completitudine.
• Deseori algoritmii de rezolvare ai PSF sunt incompleti sau subptimali.
2017
Algoritm generic de cautare locala
• Se realizeaza o secventa de “imbunatatiri” locale pornind de la o solutie
initiala aleatoare. Fie se reuseste determinarea unei solutii, fie se returneaza
cea mai buna solutie intalnita pana la momentul terminarii.
2017
Metoda urcarii dealului
• Se foloseste pentru problemele de optimizare, in acest caz pentru maximizare.
• O solutie este o asignare completa de valori tuturor variabilelor problemei.
• Se returneaza cea mai buna solutie intalnita pana la momentul terminarii.
2017
Minimizarea conflictelor
• Este o varianta de cautare locala pentru rezolvarea PSR folosind
metoda urcarii dealului.
• Definitie. Se considera o asignare completa 𝑠𝑜𝑙 a variabilelor
problemei. O constrangere nesatisfacuta de 𝑠𝑜𝑙 se numeste
conflict al 𝑠𝑜𝑙. • Se defineste o functie de optimizare care asociaza lui 𝑠𝑜𝑙
numarul de conflicte ale lui 𝑠𝑜𝑙. Algoritmul de minimizare a
conflictelor se obtine adaptand algoritmul urcarii dealului pentru
minimizarea numarului de conflicte.
• Minimul global rezulta cand toate constrangerile sunt satisfacute.
• Un minim local corespunde unde solutii suboptimale, cand doar
o submultime de constrangeri sunt satisfacute.
• Tema: Formulati acest algoritm in pseudocod !
2017
Algoritmi de cautare locala stocastica
• Se folosesc selectii aleatoare ale vecinilor pentru a se
evita blocarea in extreme locale.
• Aleatorizarea se poate introduce in doua situatii: – Random restart. Alegerea unei solutii initiale aleatoare,
metoda deja folosita de algoritmii LOCAL-SEARCH si HILL-
CLIMB.
– Random walk. Reprezinta pasi aleatori in cadrul procesului
de cautare.
• Prin combinarea imbunatairii locale cu selectiile
aleatorare rezulta algoritmii de cautare locala stocastica
(engl. stochastic local search)..
2017
Metoda calirii simulate (engl. simulated annealing)
• Se alege din cand in cand un nod mai slab cu o probabilitate care scade
odata cu cresterea numarului de iteratii.
• Probabilitatea depinde de o functie de temperatura care descreste odata
cu cresterea numarului de iteratii.
• Un nod 𝑛 este o asignare completa de valori variabilelor. Se considera ca
ℎ(𝑛) reprezinta costul nodului n.
n nod initial generat aleator
T valoarea initiala a functiei de temperatura
Repeta
Selecteaza aleator un vecin n‟ al nodului curent n
Daca h(n‟) h(n) atunci
n n„
Altfel
n n‟ cu probabilitatea exp((h(n’)-h(n))/T)
Se reduce valoarea lui T
Pana cand se atinge o conditie de oprire
2017
Metode bazate pe populatii
• Populatie = o multime de noduri candidat. Pentru PSR un nod candidat reprezinta o asignare completa a variabilelor.
• La fiecare pas se obtine o populatie succesoare pe baza populatiei curente. Populatia succesoare se numeste si generatie urmatoare.
• Un element al unei populatii se mai numeste si individ.
• Metode:
– Cautare cu fasicol
– Algoritmi genetici
2017
Cautare cu fascicol
• Cautarea cu fascicol (engl. beam search) este o imbunatatire a metodei urcarii dealului. In loc de a retine la fiecare iteratie un singur nod cel mai bun, se retin cele mai bune k1 noduri. Aceasta multime de noduri se numeste populatie.
• Pentru k = 1 cautarea cu fascicol se reduce la urcarea dealului si pentru k = se reduce la cautarea pe nivel.
• Cautarea cu fascicol este utila atunci cand exista restrictii de memorie, putandu-se alege in acest caz o valoare convenabila pentru k in functie de volumul de memorie disponibila.
• Cautarea aleatoare cu fascicol selecteaza aleator cei k vecini ai nodului curent. Se pot folosi probabilitati a.i. probabilitatea alegerii unui nod mai bun este mai mare.
2017
Algoritmi genetici
• Algoritmii genetici sunt asemanatori cu cautarea aleatoare cu fascicol. Diferenta este in modul de generare a urmatoarei populatii. Sunt inspirati din genetica si de ideea ca indivizii care supravietuiesc sunt cei mai buni.
• Algoritmii genetici folosesc de regula trei operatori:
– Selectie – se selecteaza pentru imperechere nodurile cele mai bune. Acestea vor participa la operatia de incrucisare.
– Incrucisare (engl. crossover) – din doua noduri se genereaza un nod nou.
– Mutatie – se modifica aleator un nod rezultand un nod mutant.