Documente Academic
Documente Profesional
Documente Cultură
Labs PROLOG
Labs PROLOG
Inteligena artificial.
Lucrare de laborator Nr.1.
Fapte, reguli i interogri n limbajul PROLOG.
S construiasc un arbore genealogic arbitrar care s conin cel
puin 4 nivele(generaii). S se descrie acest arbore n limbajul PROLOG
cu ajutorul urmtoarelor relaii:
- parinte(X,Y). /* X este printele lui Y */
- barbat(X). /* X este brbat */
- femeie(X). /* X este femeie */
S se descrie regulile pentru diverse relaii de rudenie, utiliznd
numai cele trei relaii descrise mai sus:
1. mama(X,Y) /* X este mama lui Y */
2. tata(X,Y)
3. frate(X,Y)
4. sora(X,Y)
5. copil(X,Y) /* X este copilul lui Y */
6. fiica(X,Y)
7. fecior(X,Y)
8. bunel(X,Y)
9. bunica(X,Y)
10. unchi(X,Y)
11. nepot(X,Y)
12. stramos(X,Y) /* X este strmo pentru Y regul recursiv */
13. urmas(X,Y)
14. var(X,Y)
15. vara(X,Y)
16. areCopii(X) /* X are copii */
17. esteBunel(X)
18. esteBunica(X)
19. areFrati(X)
20. areVeri(X)
21. etc.
S se formuleze diferite interogri asupra programului.
Efectuarea unei variante const n definirea a cel puin 7 relaii
din cele enumerate mai sus, indicate de ctre profesor.
1
Lucrare de laborator Nr.2. Funcii numerice recursive.
2
11. S se defineasc n limbajul Prolog funcia Ackermann:
m 1 , dac n 0
A(n, m) A(n 1, 1) , dac n 0 , m 0
A(n 1, A(n, m 1)) , dac n 0 , m 0
12. S se defineasc predicatul recursiv care calculeaz din cte cifre este
compus numrul natural dat.
3
Lucrare de laborator Nr.3.
Prelucrarea listelor n limbajul PROLOG. Definiii recursive.
4
7. S se defineasc n Prolog urmtoarele predicate:
a) predicatul care gsete produsul elementelor dintr-o list
numeric.
b) predicatul care tiprete elementele de pe poziiile impare ale
unei liste.
c) predicatul care tiprete n ordine invers elementele de pe
poziiile pare ale unei liste.
5
Lucrare de laborator Nr.4.
Prelucrarea listelor n limbajul PROLOG. Definiii recursive.
2. S se scrie predicatul care alipete dou liste n felul urmtor: prima list
o inverseaz i o alipete la lista a doua.
7. S se scrie predicatul care verific dac o list este prefixul altei liste.
11. S se scrie predicatul care elimin toate apariiile unui element dat de
pe poziiile impare dintr-o list. Se consider c poziia primului element al
listei este 1.
6
12. S se scrie predicatul care pentru o list arbitrar construiete o list
format din dou elemente: primul i ultimul element al listei iniiale.
16. S se scrie predicatul care elimin dintr-o list fiecare a doua apariie al
unui element dat.
19. S se scrie predicatul care calculeaz suma poziiilor unei liste, pe care
se afl elemente nule. Poziia primului element al listei se consider 1.
20. S se scrie predicatul care unete dou liste simbolice n felul urmtor:
1-ul element al primei liste, 1-ul element al listei a doua, al 2-lea element al
primei liste, al 2-lea element al listei a doua etc. Dac elementele uneia din
liste s-au epuizat (aceast list este mai scurt dect cealalt list), n lista
rezultant se introduce constanta simbolic null pn cnd va fi parcurs
cealalt list.
7
Lucrare de laborator Nr.5. Prelucrarea listelor n PROLOG.
Utilizarea listelor la reprezentarea unor structuri de date.
1. S se scrie programul pentru sortarea unei liste numerice n ordine
cresctoare, prin metoda naiv: se genereaz permutri ale listei pn
cnd se obine o permutare sortat.
8
8. S se scrie programul care pentru dou liste arbitrare verific dac
elementele din prima list se ntlnesc n lista a doua n aceeai ordine
(prima list este o selecie de elemente din lista a doua).
De exemplu: Lista1=[a, b, d, x, z], Lista2=[s, b, a, c, b, b, d, e, x, r, z].
9. Numerele ntregi mari pot fi reprezentate sub forma: [n 1, c1, n2, c2, nk,
ck] , unde ni este numrul de repetri al cifrei c i. S se scrie programul,
care transform orice numr reprezentat sub form de list de cifre ntr-o
reprezentare prin perechi. De exemplu: [1, 1, 1, 1, 2, 3, 3, 5, 5, 0, 0, 0]
[4, 1, 1, 2, 2, 3, 2, 5, 3, 0].
10. Numerele ntregi mari pot fi reprezentate sub forma: [n1, c1, n2, c2,
nk, ck] , unde ni este numrul de repetri al cifrei ci. S se scrie programul,
care transform orice numr reprezentat sub form de list de perechi ntr-o
list ce conine toate cifrele numrului. De exemplu: [4, 1, 1, 2, 2,
3, 2, 5, 3, 0] [1, 1, 1, 1, 2, 3, 3, 5, 5, 0, 0, 0].
12. S se scrie programul care ntr-o list numeric arbitrar numr cte
elemente se conin, cu urmtoarea proprietate: sunt mai mari dect orice
element din dreapta lui.De exemplu: [1, 14, 3, 12, 4, 7, 3, 6, 2, 1, 2] 5.
13. Fie date dou liste: prima o list numeric arbitrar, a doua o list
numeric sortat n ordine cresctoare. S se scrie programul care insereaz
toate elementele primei liste n lista a doua, astfel nct lista a doua s
rmn sortat.
17. S se scrie programul care elimin dintr-o list arbitrar prima i ultima
apariie a fiecrui element al listei.
De exemplu: [a, b, a, c, d, c, a, b, f, d, b, a, b] [a, a, b, b] .
19. Numerele ntregi mari pot fi reprezentate sub forma: [[n1, c1], [n2, c2],
[nk, ck]] , unde ni este numrul de repetri al cifrei ci. S se scrie
programul, care transform orice numr reprezentat sub form de list de
cifre ntr-o reprezentare prin perechi (list de subliste. Toate sublistele
conin dou elemente). De exemplu: [1, 1, 1, 1, 2, 3, 3, 5, 5, 0, 0, 0]
[[4, 1], [1, 2], [2, 3], [2, 5], [3, 0].
20. Numerele ntregi mari pot fi reprezentate sub forma: [[n1, c1], [n2, c2],
[nk, ck]] , unde ni este numrul de repetri al cifrei ci. S se scrie
programul, care transform orice numr reprezentat sub form de list de
perechi (list de subliste din dou elemente) ntr-o list ce conine toate
cifrele numrului. De exemplu: [[4, 1], [1, 2], [2, 3], [2, 5], [3, 0]]
[1, 1, 1, 1, 2, 3, 3, 5, 5, 0, 0, 0].
10
Lucrare de laborator Nr.6. Tema: Automate finite.
a bc d de , n0, m0
n m
12.
13. a n b m cd , n0, m0, k1
k
11
Lucrare de laborator Nr.7.
Distribuirea numerelor. Probleme combinatorice.
1. S se distribuie numerele de la 1 la n n trei cutii A, B, C, astfel ca s
se satisfac urmtoarele condiii:
- dac numrul i este ntr-o cutie, atunci numrul k=2*i (kn), nu
poate fi cu el n aceeai cutie;
- dac numerele i i j sunt ntr-o cutie, atunci k=i+j (kn), nu poate fi
n aceeai cutie cu ultimii.
S se scrie un program Prolog ce ar gsi soluia problemei, lund n
cretere valoarea lui n.
12
5. S se distribuie numerele de la 1 la n n trei cutii A, B, C, astfel ca s
se satisfac urmtoarele condiii:
- dac numrul i este ntr-o cutie, atunci numrul k=n-i (k<n), nu poate
fi cu el n aceeai cutie;
- dac numerele i i j sunt ntr-o cutie, atunci k=(i+j)/2 (kn), nu
poate fi n aceeai cutie cu ultimii.
13
10. S se distribuie numerele de la 1 la n n trei cutii A, B, C, astfel ca
s se satisfac urmtoarele condiii:
- dac numrul i este ntr-o cutie, atunci numrul k=2*i (kn), nu
poate fi cu el n aceeai cutie;
- dac numerele i i j sunt ntr-o cutie, atunci k=i+j (kn), nu poate fi
n aceeai cutie cu ultimii.
S se scrie un program Prolog ce ar gsi soluia problemei, lund n
cretere valoarea lui n.
14
Lucrare de laborator Nr.9. 1. Pionii.
Pe o tabl orizontal cu 7 ptrate iniial sunt aliniai trei
pioni albi i trei pioni negri cu un ptrat liber ntre ei:
A A A N N N
S se gseasc consecutivitatea de transformri a configuraiei
iniiale pentru a ajunge la configuraia final n care pionii albi
sunt n dreapta, iar cei negri n stnga desprii de un ptrat
liber:
N N N A A A
utiliznd urmtoarele patru reguli:
- un pion negru poate fi deplasat cu un ptrat spre
stnga, dac ptratul e liber, de exemplu
A N A N N A A N A N N A
- un pion negru poate sri peste un pion adiacent alb spre
stnga, dac ptratul e liber, de exemplu
A N A N N A A N N A N A
- un pion alb poate fi deplasat cu un ptrat spre dreapta, dac
ptratul e liber, de exemplu
A N A N N A A N A NN A
- un pion alb poate sri peste un pion adiacent negru spre
dreapta, dac ptratul e liber, de exemplu
A A N N N A A N A NN A
20