Sunteți pe pagina 1din 19

CLP(X ) - constraint logic programming over the domain X

INTELIGENTA ARTIFICIALA
Curs
- Programare logica bazata pe constrangeri/Domenii Finite -
Sudoku

Luciana Morogan

Academia Tehnica Militara

November 2, 2019

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Cuprins

1 CLP(X ) - constraint logic programming over the domain


X

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Generalitati
CLP: paradigma de programare declarativa

CLP(X): CLP peste domeniul X

CLP(FD): CLP peste intregi


CLP(B): CLP peste variabilele booleene
CLP(Q): CLP peste numerele rationale
CLP(R): CLP peste numerele reale (oating point)

Avantaj: abilitatea de a combina informatia disponibila despre entitatile despre


care se rationeaza, inainte de inceperea efectiva a cautarii in spatiul de stari al
problemei (pruning )

Taierea din spatiul de cautare s.npropagarea constarngerilor si se realizeaza


automat de catre solver-ul pentru constrangeri disponibil domeniului

Disponibila in SWI-Prolog prin library(clpfd).


In sierul sursa trebuie inclusa directiva: : use module(library (clpfd )) :
Constraint programming libraries (general-purpose programming
languages): https : ==en:wikipedia:org=wiki =Constraint p rogramming

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Generalitati

Denitie. Programarea bazata pe constrangerieste o incapsulare (embedding) de


constraingeri intr-un limbaj de programare gazda
Primul limbaj gazda folosit: programarea logica, deci denumirea initiala a
domeniului a fost programare logica bazata pe constrangeri

Abordarea CP: cautarea unei stari a lumii in care un numar mare de constrangeri
este satisfacut in acelasi timp.

O problema este interpretata drept o stare a lumii ce contine un numar


necunoscut de variabile. Programul bazat pe constrangeri va cauta toate valorile
tuturor variabilelor

Constrangere: relatia dintre mai multe variabile care limiteaza valoarile pe care
acestea le pot lua simultan
O solutie a problemei: o asignare (asocierea unei variabile cu o valoare a
domeniului sau) totala care satisface toate constrangerile problemei

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Sudoku

In Prolog: liste de permutari


Fiecare linie: permutare a [1, 2, 3, 4]
Fiecare coloana: permutare a [1, 2, 3, 4]
Fiecare careu 2x2: permutare a [1, 2, 3, 4]

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Variabilele vor lua valori din domeniul pe care exista


constrangeri

Se dau: multimea variabilelor , domeniul ecarei variabile, constrangerile asupra


variabilelor
Se cere: o mapare a valorilor la acele variabile ce satisfac constrangeri
Luciana Morogan INTELIGENTA ARTIFICIALA
CLP(X ) - constraint logic programming over the domain X

Sudoku: graf al constrangerilor

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Sudoku: graf al constrangerilor

Cand un domeniu se va modica, toate constrangerile legate de


acesta se vor updata! (notat (*))
Luciana Morogan INTELIGENTA ARTIFICIALA
CLP(X ) - constraint logic programming over the domain X

Constrangeri conectate cu C (1)

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Constrangeri conectate cu C (2)

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Constrangeri conectate cu F (1)

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Constrangeri conectate cu K (1)

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Constrangeri conectate cu K (2)

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Constrangeri conectate cu D (1)

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Constrangeri conectate cu D (2)

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Rezultat: solutie unica!

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Pot exista domenii;


...Daca sunt inconsistente constrangerile folosite =) nu exista solutie

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Pot exista domenii cu valori multiple


...Daca sunt inconsistente constrangerile folosite =) nu exista solutie

Luciana Morogan INTELIGENTA ARTIFICIALA


CLP(X ) - constraint logic programming over the domain X

Materiale suplimentare

http://www.swi-prolog.org/man/clpfd.html

CLP general:
http://www.swi-prolog.org/pldoc/man?section=clp

https://github.com/triska/clpfd

Luciana Morogan INTELIGENTA ARTIFICIALA

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