Sunteți pe pagina 1din 20

Lucrri de laborator

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.

1. S se defineasc predicatul fact(N,Rez) care calculeaz recursiv


factorialul unui numr natural.

2. S se defineasc predicatul suma(A,B,Rez) i minus(A,B,Rez) , care


calculeaz cu ajutorul recursiei suma i diferena a dou numere naturale.

3. S se defineasc predicatul produs(A,B,Rez) care calculeaz cu


ajutorul recursiei produsul a dou numere naturale.

4. S se defineasc predicatul cmmdc(A,B,Rez) care gsete recursiv cel


mai mare divizor comun a dou numere naturale, aplicnd algoritmul lui
Euclid.

5. S se defineasc predicatul expo(X,N,XlaN) de ridicare a unui numr


la o putere natural cu ajutorul recursiei.

6. S se defineasc predicatul mod1(A,B,Rez) care calculeaz cu ajutorul


recursiei restul de la mprirea unui numr natural la altul.

7. S se defineasc predicatele succesor(A,B) i predecesor(A,B) , care


verific cu ajutorul recursiei dac un numr natural este succesorul celuilalt
i dac un numr este predecesorul celuilalt.

8. S se defineasc predicatul div1(A,B,Rez) care calculeaz cu ajutorul


recursiei partea ntreag de la mprirea unui numr natural la altul.

9. S se defineasc predicatul recursiv care calculeaz suma primelor n


numere naturale.

10. S se defineasc predicatul recursiv care gsete numrul Fibonacci de


pe poziia dat.

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.

13. S se defineasc predicatul recursiv care gsete suma tuturor


divizorilor unui numr natural dat.

14. S se defineasc predicatul recursiv care determin dac dou numere


naturale sunt reciproc prime(nu au divizori comuni).

15. S se defineasc predicatul recursiv care calculeaz suma primelor n


numere naturale impare.

16. S se defineasc predicatul recursiv care verific dac un numr natural


dat este prim.

17. S se defineasc predicatul recursiv care verific dac un numr natural


dat este perfect (este egal cu suma divizorilor si, de ex. 6=3+2+1).

18. S se defineasc predicatul recursiv care pentru un numr natural dat


calculeaz suma primilor n multipli al acestui numr, inclusiv el nsi.

19. S se defineasc predicatul recursiv care gsete suma a trei numere


naturale.

20. S se defineasc predicatul recursiv care reduce dou numere


naturale(le face reciproc prime prin mprirea ambelor numere la cel mai
mare divizor comun al lor).

3
Lucrare de laborator Nr.3.
Prelucrarea listelor n limbajul PROLOG. Definiii recursive.

1. S se defineasc n Prolog urmtoarele predicate:


a) predicatul care verific dac un element se conine ntr-o list
(aparine).
b) predicatul care gsete al n-lea element dintr-o list.
c) predicatul care dubleaz toate elementele unei liste.

2. S se defineasc n Prolog urmtoarele predicate:


a) predicatul care tiprete o list la ecran.
b) predicatul care tiprete o list n ordine invers.
c) predicatul care dubleaz toate elementele unei liste.

3. S se defineasc n Prolog urmtoarele predicate:


a) predicatul care concateneaz dou liste.
b) predicatul care inverseaz o list.
c) predicatul care verific dac o list se conine n alt list (este
submulime).

4. S se defineasc n Prolog urmtoarele predicate:


a) predicatul care elimin dintr-o list un element.
b) predicatul care elimin dintr-o list elementul de pe locul n.
c) predicatul care calculeaz lungimea unei liste.

5. S se defineasc n Prolog urmtoarele predicate:


a) predicatul care numr de cte ori se ntlnete un element ntr-o
list.
b) predicatul care calculeaz suma elementelor dintr-o list de
numere ntregi.
c) predicatul care calculeaz media aritmetic a numerelor dintr-o
list de numere ntregi.

6. S se defineasc n Prolog urmtoarele predicate:


a) predicatul care gsete elementul maximal dintr-o list numeric.
b) predicatul care gsete poziia unui element dat ntr-o list.
c) predicatul care gsete elementul de pe poziia dat ntr-o list.

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.

8. S se defineasc n Prolog urmtoarele predicate:


a) predicatul care alipete dou liste.
b) predicatul care mrete cu o unitate toate elementele unei liste
numerice.
c) predicatul care elimin dintr-o list ultimul element al listei.

9. S se defineasc n Prolog urmtoarele predicate:


a) predicatul care inverseaz o list.
b) predicatul care elimin dintr-o list penultimul element.
c) predicatul care ntr-o list numeric, toate elementele mai mari ca
3 le micoreaz cu 3.

10. S se defineasc n Prolog urmtoarele predicate:


a) predicatul care selecteaz dintr-o list numeric sublista
elementelor impare.
b) predicatul care elimin dintr-o list al treilea element.
c) predicatul care elimin toate elementele de pe poziiile pare dintr-
o list.

5
Lucrare de laborator Nr.4.
Prelucrarea listelor n limbajul PROLOG. Definiii recursive.

1. S se scrie predicatul care gsete elementul maximal al unei liste


numerice.

2. S se scrie predicatul care alipete dou liste n felul urmtor: prima list
o inverseaz i o alipete la lista a doua.

3. S se scrie predicatul care ntr-o list arbitrar schimb cu locurile


elementele n felul urmtor: primul element cu al doilea, al treilea cu al
patrulea, al cincilea cu al aselea etc. Dac lista are un numr impar de
elemente, ultimul element va rmne pe poziia sa.

4. S se scrie predicatul care elimin dintr-o list arbitrar toate repetrile


elementelor, n afar de ultima repetare.

5. S se scrie predicatul care verific dac un element dat se ntlnete ntr-


o list dat exact de dou ori.

6. S se scrie predicatul care elimin dintr-o list arbitrar primele N


elemente.

7. S se scrie predicatul care verific dac o list este prefixul altei liste.

8. S se scrie predicatul care verific dac un element dat se ntlnete ntr-


o list o singur dat.

9. S se scrie predicatul care pentru o list numeric calculeaz suma


ultimelor dou elemente ale acestei liste.

10. S se scrie predicatul care calculeaz numrul de apariii ale unui


element dat ntr-o list.

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.

13. S se scrie predicatul care pentru un numr i o list numeric date


verific dac n list se conin dou elemente vecine, suma crora este egal
cu numrul dat.

14. S se scrie predicatul care pentru un numr natural dat i o list de


numere naturale dat verific dac n list se conin dou elemente pentru
care numrul dat reprezint media lor aritmetic.

15. S se scrie predicatul care calculeaz suma elementelor pozitive dintr-o


list numeric.

16. S se scrie predicatul care elimin dintr-o list fiecare a doua apariie al
unui element dat.

17. S se scrie predicatul care calculeaz suma a doi vectori reprezentai


sub forma a dou liste numerice de aceeai lungime (vectori de aceeai
dimensiune).

18. S se scrie predicatul care insereaz un element ntr-o list pe ultima


poziie.

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.

2. S se scrie programul pentru sortarea unei liste numerice n ordine


cresctoare, prin metoda inseriei: capul listei se elimin, se sorteaz coada,
apoi capul se insereaz n coada sortat pe poziia corespunztoare.

3. S se scrie programul pentru sortarea unei liste numerice n ordine


cresctoare, prin metoda bulelor.

4. S se scrie programul pentru sortarea unei liste numerice n odine


cresctoare, prin metoda rapid: pentru o lista dat [Cap|Coada], Coada se
divizeaz n dou liste L i M, n aa fel, ca L s conin elementele mai
mici dect Cap, iar M s conin elementele mai mari dect Cap. Lista
sortat va fi compus din versiunea sortat a listei L, apoi Cap i apoi
versiunea sortat a listei M. La rndul su, listele L i M sunt sortate
recursiv prin sortarea rapid.

5. S se scrie programul pentru sortarea unei liste numerice n ordine


cresctoare, prin metoda seleciei: din list se selecteaz elementul
maximal i se trece n capul listei rezultante, iniial vid. Procesul se repet
pn cnd vor fi mutate toate elementele listei.

6. S se scrie programul care pentru un numr natural N i dou liste Lista


i Comb efectueaz:
a) verific dac lista Comb este combinare a N elemente din lista
Lista;
b) fiind date lista Lista i numrul natural N, construiete toate
listele Comb care formeaz
combinri de N elemente din Lista.

7. S se scrie programul care pentru o list (ce reprezint o mulime de


numere) i un numr dat gsete o submulime de elemente, suma crora
este egal cu numrul dat (dac exist o astfel de submulime).

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

11. Vom reprezenta matricile ptrate nn n form liste ce conin n 2


elemente, n care primele n elemente formeaz prima linie a matricii,
urmtoarele n elemente a doua linie, etc. S se scrie programul, care
pentru dou numere i, j i o list ce reprezint o matrice, gsete elementul
de pe poziia (i, j) n matrice.

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.

14. Fie dat o list care conine toate numerele naturale de la 1 pn la N


aranjate n ordine arbitrar. S se scrie programul care construiete din
aceast list o lis nou, astfel nct n lista nou s nu nimereasc pe
oricare dou poziii vecine numere naturale vecine. De exemplu 1 i 2, 5 i
4, 4 i 5, 8 i 7 etc.
9
15. Fie dat o list de subliste de numere arbitrare. S se sorteze aceast
list n ordine cresctoarea a sumelor elementelor sublistelor. De exemplu:
[[5, 3, 1], [ ], [-4, 2], [0, 1, 2, 3]] [[-4, 2], [ ], [0, 1, 2, 3], [5, 3, 1]] .

16. Fie dat o list de subliste de simboluri. S se scrie programul care


transform aceast list ntr-o mulime list de simboluri (fr subliste) n
care elementele nu se repet (programul construiete o list nou).
De exemplu: [[x, a, b, a], [b, c, d, e], [ ], [b, c, f]] [x, a, b, c, d, e, f] .

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

18. S se scrie programul care elimin dintr-o list arbitrar a doua i


ultima apariie a fiecrui element al listei.
De exemplu: [u, v, x, u, y, u, z, x, a, x, z, y, u] [u, x, y, u, z] .

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.

S se scrie un program Prolog care realizeaz automatul finit ce


recunoate cuvintele de forma:
1. a abc n c , n0
2. ab n (cd ) m , n1, m0
3. a n bd m , n0, m1
4. ab n cd m e , n1, m1
5. abc n d ef m , n0, m0
6. a n b m c k e , n0, m0, k0
7. a abc n de m , n0, m0, n+m1
8. abc n ab m , n1, m1
9. a n b m , n0, m0, n+m1
10. a n b m c k , n0, m0, k0, n+m1
11. ab cd m , n2, m1, n par, m impar
n

a bc d de , n0, m0
n m
12.
13. a n b m cd , n0, m0, k1
k

14. abc n de m , n0, m0


15. abcd n ef m , n1, m1
a n bc cd , n0, m1, k1
m k
16.
17. bc n ab m d , n0, m0, n+m1
18. a n b m c k , n1, m2, k3, n impar, m par, k se divide la 3
a n bc de , n1, m1, k1, m impar
m k
19.
20. abc n bcd m e , n0, m0, n+m1

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.

2. 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+1 (kn), nu
poate fi cu el n aceeai cutie;
- dac numerele i i j sunt ntr-o cutie, atunci k=i+j-1 (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.

3. S se distribuie numerele de la 1 la n n trei cutii A, B, C, astfel ca s


se satisfac urmtoarele condiii:
- numerele pare pot fi incluse numai n cutiile A i C;
- numerele impare pot fi incluse numai n cutiile B i C;
- 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.

4. S se distribuie numerele de la 1 la n n trei cutii A, B, C, astfel ca s


se satisfac urmtoarele condiii:
- n cutia A pot fi incluse numai numere pare;
- n cutia B pot fi incluse numai numere impare;
- dac numrul i este ntr-o cutie, atunci numrul k=2*i (kn), nu
poate fi cu el n aceeai cutie.
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.

6. S se divizeze o mulime numeric n dou submulimi, astfel, nct


suma elementelor din fiecare submulime s fie aceeai.

7. Copiii familiei Bright.


n familia Bright sunt cinci copii. La vrstele de 4, 5, 6, 7 i 8 ani
Rose i fraii si i-au demonstrat talentele n domenii diferite. Unul din ei
cnt bine la pian.
S se determine vrsta i talentul fiecrui copil, innd cont c
1. Becca are 4 ani i nu strlucete n matematici.
2. Un magician al calculatorului e cu un an mai mare dect Stu.
3. Violonistul are 7 ani.
4. Iona nu are 8 ani.
5. La 5 ani ai si Rob e un copil mai mic dect cel ce strlucete
n litere.

8. Patru elevi Mihai, Anatol, Alexandru i Petru studiaz cte o


limb strin. Doi biei studiaz limba german, unul engleza i unul
franceza. Se tie c Mihai i Anatol studiaz limbi strine diferite, la fel
Mihai cu Alexandru, Petru cu Alexandru, Petru cu Mihai, Anatol cu
Alexandru. Mihai nu studiaz limba englez. Determinai ce limb studiaz
fiecare biat.

9. Alina, Corina, Irina, Marina i Sabina s-au aezat la teatru pe


locurile de la 1 la 5. Alina nu are locul 5, iar Corina nu are locul 1. Irina
ede ntre prietene. Sabina nu ede lng Irina, iar Irina nu ede lng
Corina. Locul Marinei are un numr mai mare dect cel al Corinei. Cine
ede pe locul 5?

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.

Lucrare de laborator Nr.8. Jocul Chibriturile.

1. S se realizeze n Prolog jocul Chibriturile. Pe mas


sunt aezate 23 chibrituri. Sunt doi juctori i fiecare din ei pe
rnd trebuie s ia de pe mas cteva chibrituri. Fiecare juctor
are dreptul s ia 1, 2, sau 3 chibrituri. Juctorul care va lua
ultimul chibrit va pierde jocul.
S se scrie programul care utilizeaz strategia optimal de joc.

2. S se realizeze n Prolog jocul Chibriturile. Pe mas


sunt aezate 23 chibrituri. Sunt doi juctori i fiecare din ei pe
rnd trebuie s ia de pe mas cteva chibrituri. Fiecare juctor
are dreptul s ia 1, 2, sau 3 chibrituri. Juctorul care va lua
penultimul chibrit va pierde jocul.
S se scrie programul care utilizeaz strategia optimal de joc.

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

Lucrare de laborator Nr.10. Bidoanele cu ap.


1. Fie date dou bidoane unul de 7 litri i unul de 5
litri. Iniial ambele sunt dearte. S se gseasc o secven de
aciuni care las 4 litri de ap n bidonul de 7 litri (volumul de
ap rmas n bidonul mic nu conteaz). Aciunile posibile care
pot modifica starea bidoanelor sunt:
- un bidon poate fi umplut dintr-o surs extern;
- un bidon poate fi golit ntr-un recipient;
- apa poate fi turnat dintr-un bidon n altul, pn cnd primul
e gol sau al doilea e plin.
15
2. Fie date trei bidoane unul de 8 litri, unul de 5 litri i
unul de 3 litri. Iniial cel de 8 litri este plin, iar celelalte (de 5
litri i de 3 litri) sunt dearte. S se gseasc o secven de
aciuni care las cte 4 litri de ap n bidonul de 8 litri i n
bidonul de 5 litri. Aciunile posibile care pot modifica starea
bidoanelor sunt: apa poate fi turnat dintr-un bidon n altul, pn
cnd primul se golete sau al doilea se umple.

3. Fie date trei bidoane unul de 12 litri, unul de 7 litri


i unul de 5 litri. Iniial cel de 12 litri este plin, iar celelalte (de 7
litri i de 5 litri) sunt dearte. S se gseasc o secven de
aciuni care las cte 6 litri de ap n bidoanele de 12 litri i de 7
litri. Aciunile posibile care pot modifica starea bidoanelor sunt:
apa poate fi turnat dintr-un bidon n altul, pn cnd primul se
golete sau al doilea se umple.

4. Fie date trei bidoane unul de 10 litri, unul de 7 litri


i unul de 3 litri. Iniial cel de 10 litri este plin, iar celelalte (de 7
litri i de 3 litri) sunt dearte. S se gseasc o secven de
aciuni care las cte 5 litri de ap n bidoanele de 10 litri i de 7
litri. Aciunile posibile care pot modifica starea bidoanelor sunt:
apa poate fi turnat dintr-un bidon n altul, pn cnd primul se
golete sau al doilea se umple.

5. Fie date trei bidoane unul de 16 litri, unul de 8 litri


i unul de 5 litri. Iniial n cel de 16 litri sunt exact 14 litri de
ap, iar celelalte (de 8 litri i de 5 litri) sunt dearte. S se
gseasc o secven de aciuni care las cte 7 litri de ap n
bidoanele de 16 litri i de 8 litri. Aciunile posibile care pot
modifica starea bidoanelor sunt: apa poate fi turnat dintr-un
bidon n altul, pn cnd primul se golete sau al doilea se
umple.
16
6. Fie date trei bidoane unul de 7 litri, unul de 6 litri i
unul de 3 litri. Iniial n cel de 7 litri sunt 6 litri de ap, n cel de
6 litri sunt 4 litri de ap, cellalt de 3 litri este deert. S se
gseasc o secven de aciuni care las cte 5 litri de ap n
bidoanele de 7 litri i de 6 litri. Aciunile posibile care pot
modifica starea bidoanelor sunt: apa poate fi turnat dintr-un
bidon n altul, pn cnd primul se golete sau al doilea se
umple.

7. Fie date trei bidoane unul de 14 litri, unul de 8 litri


i unul de 5 litri. Iniial cel de 14 litri este plin, iar celelalte (de 8
litri i de 5 litri) sunt dearte. S se gseasc o secven de
aciuni care las cte 7 litri de ap n bidoanele de 14 litri i de 8
litri. Aciunile posibile care pot modifica starea bidoanelor sunt:
apa poate fi turnat dintr-un bidon n altul, pn cnd primul se
golete sau al doilea se umple.

Lucrarea de laborator Nr.11. Gramatici.


1. Fie dat gramatica
<Number> <A><B>
<A> 01
<A> 0<A>1
<B> 2
<B> 2<B>
ce genereaz numere de forma 0n1n2m .
S se scrie un program Prolog ce ar recunoate astfel de iruri de
simboluri.
2.Fie dat gramatica G= (VN, VT, P, S);VN={ S },VT={a, b, c } ,
P= { 1. S a2S
2. S bc }
ce genereaz cuvinte de forma: L(G)= { a2nbc, n>=0 }.
S se scrie un program Prolog ce ar recunoate astfel de cuvinte.
17
3. Fie dat gramatica G= (VN,VT,P,S);VN={S,H},VT={b,c,d,e },
P= { 1. S bbSe
2. S H
3. H cHdd
4. H cd }
Limbajul generat de aceast gramatic este:L(G)={b2ncmd2m-1en,
m>=1, n>=0 }. S se scrie un program Prolog ce ar recunoate
astfel de cuvinte.
4. Fie dat gramatica G= (VN,VT,P,S);VN={S,A,B}, VT={a,b,c},
P= { 1. S AB
2. A aAb
3. A ab
4. B cB
5. B c }
Limbajul generat de aceast gramatic este:L(G)= {aibicj,i 1,j 1}.
S se scrie un program Prolog ce ar recunoate astfel de cuvinte.
5. Fie dat gramatica G= (VN, VT, P, S); VN={ S }, VT={ a },
P= { 1. S aSa
2. S a }
Limbajul generat de aceast gramatic este: L(G)= { a2n-1, n 1 }.
S se scrie un program Prolog ce ar recunoate astfel de cuvinte.
6. Fie dat gramatica G= (VN, VT, P, S); VN={ S }, VT={ a },
P= { 1. S aSa
2. S aa }
Limbajul generat de aceast gramatic este: L(G)= { a2i, i 1 }.
S se scrie un program Prolog ce ar recunoate astfel de cuvinte.
7. Fie dat gramatica G= (VN, VT, P, S); VN={ S }, VT={ a },
P= { 1. S aaS
2. S a }
Limbajul generat de aceast gramatic este: L(G)= { a2i-1, i 1 }.
18
S se scrie un program Prolog ce ar recunoate astfel de cuvinte.
8. Fie dat gramatica G= (VN, VT, P, S); VN={ S }, VT={ a },
P= { 1. S aaS
2. S aa }
Limbajul generat de aceast gramatic este: L(G)= { a2j, j 1 }.
S se scrie un program Prolog ce ar recunoate astfel de cuvinte.
9. Fie dat gramatica G= (VN, VT, P, S); VN={ S }, VT={ a },
P= { 1. S Saa
2. S a }
Limbajul generat de aceast gramatic este: L(G)= { a2j-1, j 1 }.
S se scrie un program Prolog ce ar recunoate astfel de cuvinte.
10. Fie dat gramatica G= (VN, VT, P, S); VN={ S }, VT={ a },
P= { 1. S Saa
2. S aa }
Limbajul generat de aceast gramatic este: L(G)= { a2n, n 1 }.
S se scrie un program Prolog ce ar recunoate astfel de cuvinte.
11. Fie dat gramatica G= (VN, VT, P, S); VN={ S }, VT={ x, y },
P= { 1. S xSy
2. S xy }
Limbajul generat de aceast gramatic este: L(G)= { xnyn, n 1 }.
S se scrie un program Prolog ce ar recunoate astfel de cuvinte.
12. Fie dat gramatica G= (VN, VT, P, S); VN={ S, P, Q }, VT={ a,
b, c, d, e, f },
P= { 1. S aP
2. P bP
3. P cQ
4. Q dQ
5. Q e }
19
Limbajul generat de aceast gramatic este: L(G)= { abncdme, n 0, m 0 }.
S se scrie un program Prolog ce ar recunoate astfel de cuvinte.

20

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