35
2017 Problema satisfacerii restrictiilor Capitolul 7

Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

Embed Size (px)

Citation preview

Page 1: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

2017

Problema satisfacerii restrictiilor

Capitolul 7

Page 2: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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:

Page 3: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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.

Page 4: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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

Page 5: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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.

Page 6: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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.

⟨𝑋 = 𝑎, 𝑌 = 𝑎⟩ ⟨𝑋 = 𝑎, 𝑌 = 𝑏⟩ ⟨𝑋 = 𝑏, 𝑌 = 𝑎⟩ ⟨𝑋 = 𝑏, 𝑌 = 𝑏⟩

⟨𝑋 = 𝑏⟩ ⟨𝑋 = 𝑎⟩

⟨⟩ 𝑋 = 𝑎 𝑋 = 𝑏

𝑌 = 𝑎 𝑌 = 𝑏 𝑌 = 𝑎 𝑌 = 𝑏

Page 7: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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.

⟨𝑋 = 𝑎, 𝑌 = 𝑎⟩ ⟨𝑋 = 𝑎, 𝑌 = 𝑏⟩ ⟨𝑋 = 𝑏, 𝑌 = 𝑏⟩ ⟨𝑋 = 𝑎, 𝑌 = 𝑎⟩

⟨𝑋 = 𝑎, 𝑌 = 𝑏⟩ ⟨𝑋 = 𝑏, 𝑌 = 𝑎⟩

⟨𝑋 = 𝑎, 𝑌 = 𝑎⟩ 𝑋 = 𝑏 𝑌 = 𝑏

𝑋 = 𝑎 𝑌 = 𝑏 𝑋 = 𝑏 𝑌 = 𝑎

… … … …

Page 8: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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

Page 9: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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.

Page 10: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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)

Page 11: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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

Page 12: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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:

Page 13: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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.

Page 14: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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

Page 15: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

2017

Algoritmi specifici pentru PSR

• Algoritmi de propagare: algoritmi de consistenta

• Cautare locala

• SAT si SMT: satisfacere Booleana si rezolvare

modulo “teorii”

Page 16: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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 𝐵 < 𝐶.

𝐴 < 𝐵 𝐴 𝐵 𝐶 𝐵 < 𝐶

Page 17: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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 𝑅.

Page 18: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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 𝑅.

𝐴 < 𝐵 𝐴 𝐵 𝐶 𝐵 < 𝐶

Page 19: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

2017

Algoritmul de arc consistenta

Page 20: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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

Page 21: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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 𝑫𝑪 = *𝟑, 𝟒+.

𝐴 < 𝐵 𝐴 𝐵 𝐶 𝐵 < 𝐶

Page 22: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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 𝑫𝑪 = *𝟑, 𝟒+.

𝐴 < 𝐵 𝐴 𝐵 𝐶 𝐵 < 𝐶

Page 23: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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

Page 24: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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”.

Page 25: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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

Page 26: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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.

Page 27: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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.

Page 28: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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.

Page 29: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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.

Page 30: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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 !

Page 31: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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

Page 32: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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

Page 33: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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

Page 34: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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.

Page 35: Problema satisfacerii restrictiilor - software.ucv.rosoftware.ucv.ro/~cbadica/ai/cap7.pdf · Exemplu: cripto-aritmetica

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.