Open navigation menu
Close suggestions
Search
Search
en
Change Language
Upload
Sign in
Sign in
Download free for days
0 ratings
0% found this document useful (0 votes)
63 views
10 pages
BIA - Lab7
BIA - lab7
Uploaded by
Elenutza Elena
AI-enhanced title
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here
.
Available Formats
Download as PDF or read online on Scribd
Download
Save
Save BIA - lab7 For Later
0%
0% found this document useful, undefined
0%
, undefined
Embed
Share
Print
Report
0 ratings
0% found this document useful (0 votes)
63 views
10 pages
BIA - Lab7
BIA - lab7
Uploaded by
Elenutza Elena
AI-enhanced title
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here
.
Available Formats
Download as PDF or read online on Scribd
Carousel Previous
Carousel Next
Download
Save
Save BIA - lab7 For Later
0%
0% found this document useful, undefined
0%
, undefined
Embed
Share
Print
Report
Download now
Download
You are on page 1
/ 10
Search
Fullscreen
LABORATOR 7 7.1. Operatii cu multimi reprezentate sub forms de liste Multimile pot fi reprezentate in LISP (sau in Prolog) sub formi de liste liniare, putandu-se astfel implementa operatiile de incluziune, reuniune, intersectie, diferentd, Ir ci i imea ti arti. i mu. . in cele ce urmeazi nu ne intereseazi ataét tipul elementelor ce compun multimile cat modul de implementare recursivi a operatiilor amintite. Prin definitie, operatiile enumerate mai sus sunt 1° incluziunea multimii A in multimea B: AcB (WV) xeA~x eB Pentru a defini incluziunea in LISP, vom avea nevoie de o functie ajut&toare, functia apart, care s& verifice apartenenta unui element 1a o multime data, deci, apartenenta unui element la o list’. Dup& definirea acestei functii auxiliare, functia care testeazi relatia de incluziune a doui multimi date, functia inclus, va avea doi parametri formali (cele dou% multimi) si va xeturna true (t) daci incluziunea este adevarat& si false (nil) in caz contrar. (comment FUNCTIA DE APARTENENTA) (de apart (e,1) (cond ((null 1) nil) ((= (car 1) e) t) (t (apart e (cdr 1))) ) ) (comment RELATIA DE INCLUZIUNE A DOUA MULTIMI) (de inclus (11,12) (cond ((null 11) t) ((apart (car 11) 12) (inclus (cdr 11) 12)) ) ) Exemplificare: -(inelus ‘(2 3) "(5 2.143 7)) t -(inclus ‘(4 5) ‘(1 23 4)) nil Problema Se cere s& se implementeze functia care verific’ relatia de incluziune dintre dou& multimi reprezentate sub forma de liste (de intregi) in limbajul Prolog.2° reuniunea a dou% multimi: AUB = (x|x€A sau xB) Pentru a implementa in LISP functia care determin& multimea rezultata in urma reuniunii a dou& multimi, ne vom folosi din nou de functia apart, care este de fapt un predicat care testeaz& apartenenta unui element la o multime. Functia pe care o implement&m este reuniune si'are doi parametri: cele dou& liste 1, si 1, de intrare si va returna tot o list’. vom tine cont si de urm&toarea proprietate a reuniunii, si anume: @UA=A aceasta constituind de fapt conditia de oprire din recursivitate. Functia va fi implementat% astfel: se parcurge lista 1, element cu element, testandu-se dacd acestea apartin sau nu listei 1,; dac& DA, atunci se trece la urmitorul element din 1,7 altfel, acel element din 1, care nu apare si in 1, se va include in lista rezultat si se trece apoi la urm&torul element din 1,. Cand lista 1, a fost integral parcursa, in coada listei rezultat se va adduga lista 1, in intregime, datorita conditiei de oprire din recursiviate impusa. - (de reuniune (11,12) (cond ((null 11) 12) ((apart (car 11) 12) (reuniune (cdr 11) 12)) (t (append (list (car 11)) (reuniune (cdr 11) 12))) ) Astfel: ~(reuniune ‘(3 2 41) "(5 217) (345217) -(reuniune ‘(1) ‘(2)) q 2) =(reuniune ‘(1 3.5) ‘(2 3 4)) (1523 4) Pentru ultimul exemplu, s& vedem cum are loc executia pas cu pas a functiei implementate. (135) U (234) = = (1) + ( (35) U (234) ) = = (2) + ( (5) U (234) ) = = (1) + (5) + (() U (234) ) = ee eee ee = (15234 unde prin simbolul ‘+’ am notat intuitiv functia append iar prin simbolul ’ U ’ am notat apelul recursiv al functiei reuniune. Exist& in LISP functia predefinita union care intoarce reuniunea a dou% sau mai multe multimi reprezentate sub forma de lista.intaxa: (union 1, 1, -. 1)) Exemplu: ~(union ‘(1) ‘(3 2.1) ‘(a 3 1)) (1.3 2a) Probleme: - Se cere s& se implementeze functia reuniune in Prolog. - S& se implementeze in LISP o functie care realizeazi xeuniunea unui num&r variabil de multimi reprezentate sub forma de liste. toate listele de intrare vor conetitut elemente ale unei liste neliniare care va fi astfel unicul parametru al functiei ce se va implementa. ica: 3° intersectia a dou% multimi: ANB = (x|xeA gi-xeB) Se utilizeaz& de asemenea proprietatea intersectiei: ena=e in Prolog, aceasta functie implemetats, impreun& cu functia ajutatoare apart, are urmitoarea forma: domains list = integer* predicates apart (integer , list) intersectie(list, list, list) clauses apart(X,(H}T]) if X-H or apart(x,T). intersectie([],_,[]). intersectie([H]T),L,[H]T1}) if apart(H,L) and intersectie(T,L,T1). intersectie((H]T],L,T1) if not(apart(H,L)) and intersectie(T,L,T1). La fel ca si in cazul reuniunii, in LISP exist& functia predefinits intersection: Sintaxa: (intersection 1, 1, -- 1,) Exemplu: ~(intersection ‘(3 125) ‘(5 a1) ‘(a 12147 5)) a5) Problem’: S88 se implementeze aceasta functie in LISP.4° diferenta a dou% miltim! A\B = (x|xeA gi xB) Problema: Plecand de 1a proprietatea: - e\A=o s& se implementeze in LISP si Prolog functia care determina diferenta a doui multimi date. In LISP exist& functia predefinita difference: Sintaxa: (difference 1, 1, -. 1,) care intoarce ca rezultat lista! (.-C0, V2) Vg) ee Va 5° diferenta simetric&> RAB = (A\B)U(B\A) sau AAB = (AUB) \ (ANB) Problems: S& se implementeze in LISP si Prolog functia care determin’ diferenta simetric’ a doud multimi date. 6* produs cartezian a dou’ multimi: AxB = ((a,b)|aeA $i beB) Problema: 'S& se implementeze in LISP gi Prolog o functie care calculeaz% produsul cartezian a dows multimi date. Solutie: (LISP) (de apel (e,1) (cond ((null 1) nil) (t (append (list (list e (car 1))) (apel e (cdr 1)))) ° ») (de cart (11,12) (cond ((null 11) nil) (t (append (apel (car 11) 12) (cart (cdr 11) 12))) »Exemplu: =(cart ‘(1 23 4) ‘(a b)) ((2 a) (2b) (2 a) (2b) (3 a) (3b) (4 a) (4 b)) 7° multimea tuturor pirtilor unei multim: Be (ay, Og¢ eo Bq) PCE) = (8, (Oy) 4 (AQ) ye (My Ady ey (Ae oe A): Problems S& se implementeze in LISP o functie care construieste multimea tuturor partilor unei multimi date. i_cu polinoame © reprezentare des int4lnit& gi ugor de folosit in implementarea operatiilor de adunare, inmultire, etc. a polinoamelor este aceea de list inl&ntuit% in care celulele listei reprezint’ cate uh termen al polinomului, termen reprezentat prin dou& elemente caracteristice: e - coeficientul monomului, - - exponent. De exemplu, polinomul P(x) =3x3+2.5x+9 poate fi reprezentat sub form& de list& linear& ca in figura Tele. 3 | 3 p—)2.5) 1 9/0 Fig. 7.1. Polinom de o variabild x si grad 3 Dac& polinomul nu este de o singura variabila, aga cum este el prezentat in exemplul anterior, ci de mai multe variabile, atunci, in functie de numarul de variabile, rangul fiec&rui mono din dezvoltare va fi de fapt un vectori de puteri ale fiecdrei variabile. De exemplu, fie polinomul P de trei variabile, de grad 6: P(x,y,2) =x y*z-3x?y?+5y 2245 Reprezentarea lui printr-o list& inlantuit& este cea din figura aia1|3|2 tH 3/2)2 oF ysie 1/2}; 5.]}0 oleh Fig. 7.2. Polinon de crad 6 si 3 variabile (1) sau, dacti exponentii celor 3 variable sunt reprezentatti ca o sublist&, atunci reprezentarea polinomului va fi cea din figura Tedd 1 5 7 3 2 0 0 2 2 - 0 a O 2 oO Fig. 7.3. Polinom de grad 6 si 3 variable (IZ) in limbajul Pascal, o astfel de structur& se definegte ca array[1..nvar] of byte; record coef ‘expo : reali 2 tips end; In LISP, polinomul din figura 7.1. poate fi reprezentat ca © list& imbricata ale c&rei elemente sunt liste ce contin doar dou& elenente, coeficientul (intreg) si exponentul: ((3 3) (-2 1) (9 0)). Polinomul din figura 7.2. va fi reprezentat tot ca o list& imbricat&’ dar sublistele monom vor avea atatea elemente cate variabile are polinomul plus unu (coeficientul): (2.3.2.1) (-3 220) (501 2) (5 00 0)) sau, conform reprezent&rii din figura 7-3., polinomul va fi: (2 (3 2.1)) (+3 (2 2 0)) (5 (0 1 2)) (5 (0 0 0))). Totugi, din punct de vedere al nivelelor structurii de list’, aceast’ notatie nu este in totalitate in conformitate cu reprezentarea din figura, doearece, toti coeficientii ar trebui situati pe nivelul 1 al listei iar din reprezentarea in LISP ar rezulta c& acestia se afl pe nivelul 2, dar am preferat totugi gruparea coeficientului gi a sublistei — exponentilor corespunz%tori unui monon intr-o sublist& pentru a evidentiafaptul c& se refers la un monom din dezvoltarea polinomului ca sum& de monoame. in acest caz, este importanta ordinea variabilelor (ordinea exponentilor variabilelor) care trebuie si fie aceeasi pentru fiecare monom in parte. - in Prolog vom putea considera coeficientii de tip real iar structura de list& corespunzitoare se va reprezenta astfel: domains _ list = integer* poli = monon* monom = mon(real, list) Astfel, polinomul din figura 7.3. poate fi reprezentat ca mai jos: {mon(1, [3,2,1]) pmon(~3,[2,2,0}) ,mon(5,[0,1,2]) ,mon(5,[0,0,0])]. Folosind aceast& reprezentare, vom putea in continuare implementa operatiile elementare cu polinoame gi ne vom rezuma in cele ce urmeaz& doar la adunarea gi inmultirea a doua polinoame, putandu-se apoi generaliza la n polinoame (o lista de n polinoame) . (1ist_poli = poli*) Va trebui si implementam pe lang cele dou& functii, de adunare gi inmultire a dov% polinoame, o serie de functii ajut&toare printre care: reducerea termenilor asemenea intr-un polinom, eliminarea termenilor cu coeficient egal cu zero, identificarea monoamelor de un anumit rang intr-un polinom, etc. Problem&_propusi: Se cere s& se implementeze in LISP gi in Prolog functiile de insumare, respectiv inmultire a doua polinoame. Solutie (Prolog): domains lstr = real* list = integer* poli = monom* monom = mon(real,list) predicates gasit(poli,list) coef (poli, list,real) coefn(poli,list,1str) cat(poli,poli,poli) elim(poli, list, poli) sum(1str,real) suml(list,list,list) redu0(poli,poli) prodm(monom,poli,poli) prod(poli,poli,poli) redu(poli,poli) sum_p(poli,poli,poli) xedu_poli(poli,poli) sum_poli(poli,poli,poli) prod_poli(poli,poli,poli) clauses sum([],0). sum((H/T],R) if sum(T,R1) andR=WARL. cat({} /L,/L). cat([H}T],L,(H]T1}) if cat(T,L,T1). gasit([mon(_,L1)|T],L) if -Li-L or gasit(T,L). coef ((mon(xX,L)|_],L,X). coef({_|T],L,xX) if coef(T,L,X). eosen (ile cha ae coefn([mon(X,L)}T],L,(X}L1]) if coefn(T,L,L1). coefn({_}T],L,L1) if coefn(T,L,L1). elim({}/_,(})+ elim([mon(_,L)]T],L,T1) if elim(T,L,T1). elim({mon(X,11)|T],L, (mon(Xx,11)}T1]) if elim(T,L,T1). sum_p({J,L,L). sum_p({mon(X,L) |] ,P,(mon(X,L){T1}) if not(gasit(P,L)) and sum_p(T,P,T1). sum_p([mon(X,L)}T].,P,{mon(X1,L)}T1]) if gasit(P,L) and coef(P,L,X2) and X1=X+X2 and elim(P,L,P1) and sum_p(T,P1,T1). sum_poli(P1,P2,P) if sum_p(P1,P2,P3) and redu0(P3,P). xedu0({],[])- redu0([mon(0,_){T],T1) if reduo(T,T1). redu0([mon(X,E) |T],[mon(X,L)|T1]) if X<>0, redu0(T,T1). reda({},[J)- redu([mon(X,L)|T],{mon(X,L){T2]) if not(gasit(T,L)) and redu(T,T1). redu((mon(X,L)|T],{mon(X1,L)|T1]) if gasit(T,L) and coefn(T,L,R) and sum(R,R1) and X1=X+R1 and elim(T,L,TT) and redu(TT,T1). redu_poli(Pl,P) if redu(P1,P2) and redu0(P2,P). suml((],(1/(1)+ suml([H1!T1],(H2|T2],(H]L}) if H=H1+H2, suml(T1,T2,L). prodm(_,{},{])+ prodm(mon(C,L) ,{mon(C1,L1)!T],[mon(C2,L2)}T2)) if c2=cécl, suml(L,L1,L2), prodm(mon(C,L),T,T2). prod({},_,(])- proa([H!/T],L1,R) if prodm(H,L1,R1) and prod(T,L1,R2) and cat(R1,R2,R3) and redu(R3,R). prod poli(P1,P2,P) if prod(P1,P2,P3) and redu0(P3,P).goal sum_poli( (mon(3,[2,1]),mon(-1,[1,2}),mon(2,[1,0])1, {mon(4,[2,0]),mon(-1,[2,1}),mon(~1,(1,2]), mon(1,[0,1]),mon(5, 1X), writef£("\n") ,write(x) ,writef("\n") ; vedu_poli({mon(3,[{2,1]),mon(-2,[0,1]),mon(1,[1,0]), mon(~1,{2,1}),mon(1,[{1,0}) ,mon(0.5,[1,1]), mon(-1,[0,1]),mon(2,[2,1])],¥), write(¥), writef("n"), prod_poli([mon(2,[1,1]),mon(~1,{2,1])1], {mon(1,[0,1]),mon(1,[1,1])],2), write(z), writef("\n"), prod_poli({mon(1,{1]),mon(~1,[01)], {mon(1,[1]),mon(1,[0])},U), write(U). Programul va, afiga ca urmare a specificatiilor din goal urm&toarea iegire: {mon(2,[2,1]),mon(-2,[1,2]),mon(2,[1,0]), mon(4,[2,0]),mon(1,[0,1]),mon(5,[0,0})] {mon(4,[2,1]),mon(~3,[0,1]),mon(2,[1,0]) ,mon(0.5,[1,1])} {mon(2,[1,2]),mon(1,[2-2]}),mon(~1,[3,2])] [mon(1,[2]),mon(-1,[0])} Cele patru rezultate de mai sus au fost obtinute, matematic, astfel: (3x2y -xy? + 2K) + (4x2 2y-xy ey +5) = (1 a 2xty —2xy?+ 2x +492 +y +5 i 3xty -2y +x -x?y+x+0.5xy-y+2x2y= (2 24x2y -3y +2x+0.5xy (axy -x2y ) x (y+xy ) = 2xy? +x2y? — xy? 13] (x-2) x (x41) 2x2 (4) 7.3. Probleme propuse 1" S& se scrie o functie LISP care returneazi al n-lea element dintr-o list& oarecare data. Observatie: in limbajul LISP exist’ o functie predefinita nth care returneaz& al n-lea element dintr-o list&, indiferent dac& acesta este atomic sau nu; Sintaxa: (nth n 1) unde n reprezint& pozitia elementului ce va fi returnat din lista 1 data.Exemplu: ~(nth 3.'(4 5 6 7 8)) 6 -(nth-o_"(1 2 3)) nil ~(nth 4 "(1 2 3)) nil ~(nth 2 -1((2 (2)) (((3) 4) 5) 6)) (((3) 4) 5) 2° S& se implementeze aceeasi functie si in Prolog. 3° Si se implementeze in LISP functia cerut& la problema 1° dar care s& returneze al n-lea atom numeric dintr-o list& imbricata. De exemplu, dact lista data ar fi 1 = ((a (b)) © ((d)) (e (£ (g) h))) gin = 5, atunci regultatul intors va fi e. 4° S& se implementeze in LISP gi Prolog functiile LISP predefinite rplaca si rplcd.
You might also like
Schneider Algebra
PDF
100% (7)
Schneider Algebra
280 pages
Mate - Info.Ro.3803 ADMITERE UPB - SUBIECTE SI SOLUTII - MATEMATICA - 2000-2015 PDF
PDF
100% (1)
Mate - Info.Ro.3803 ADMITERE UPB - SUBIECTE SI SOLUTII - MATEMATICA - 2000-2015 PDF
83 pages
Clasa 12 Algebra Mircea Ganga
PDF
95% (21)
Clasa 12 Algebra Mircea Ganga
283 pages
Clasa VI (I) (Clubul Matematicienilor)
PDF
83% (6)
Clasa VI (I) (Clubul Matematicienilor)
262 pages
Manual Matematica Clasa A 12-A M1
PDF
93% (29)
Manual Matematica Clasa A 12-A M1
265 pages
Legi de Compozitie
PDF
100% (2)
Legi de Compozitie
7 pages
Lalescu Vol 6
PDF
100% (1)
Lalescu Vol 6
58 pages
Probleme Liste LISP
PDF
100% (1)
Probleme Liste LISP
4 pages
Structuri Repetitive Cu Test Initial
PDF
100% (3)
Structuri Repetitive Cu Test Initial
8 pages
Expresii Algebrice Rezolvate
PDF
94% (17)
Expresii Algebrice Rezolvate
3 pages
Solutii Mate
PDF
No ratings yet
Solutii Mate
6 pages
Curs Lisp Part 1 Master
PDF
No ratings yet
Curs Lisp Part 1 Master
75 pages
FMI Probleme Rezolvate Partial Matematic 2019
PDF
No ratings yet
FMI Probleme Rezolvate Partial Matematic 2019
122 pages
Eccpr Passed
PDF
No ratings yet
Eccpr Passed
86 pages
Inteligenţă Artificială
PDF
No ratings yet
Inteligenţă Artificială
29 pages
Recursivitate. Probleme Rezolvate
PDF
No ratings yet
Recursivitate. Probleme Rezolvate
10 pages
Lista Probleme Rezolvate Informatica Goja Razvan
PDF
No ratings yet
Lista Probleme Rezolvate Informatica Goja Razvan
16 pages
Teme Info Functii
PDF
No ratings yet
Teme Info Functii
15 pages
Lab 04.acpcalin
PDF
No ratings yet
Lab 04.acpcalin
12 pages
Grile Subprograme
PDF
No ratings yet
Grile Subprograme
8 pages
Func: Problema 4.1
PDF
No ratings yet
Func: Problema 4.1
7 pages
Rezolvari Grile 2009
PDF
No ratings yet
Rezolvari Grile 2009
10 pages
The Secret Law Pope Benedict Implemented To Protect Pedophile Priests: CRIMENS SOLLICITIATONIS
PDF
No ratings yet
The Secret Law Pope Benedict Implemented To Protect Pedophile Priests: CRIMENS SOLLICITIATONIS
39 pages
Probleme Programare
PDF
No ratings yet
Probleme Programare
9 pages
Polinoame Inlantuite
PDF
No ratings yet
Polinoame Inlantuite
6 pages
05 Adt PDF
PDF
No ratings yet
05 Adt PDF
22 pages
Probleme Atp
PDF
No ratings yet
Probleme Atp
175 pages
ANA Seminar1a Introducere C
PDF
No ratings yet
ANA Seminar1a Introducere C
14 pages
Prolog v1
PDF
No ratings yet
Prolog v1
3 pages
Raport: Lucrarea de Laborator Nr.1
PDF
No ratings yet
Raport: Lucrarea de Laborator Nr.1
11 pages
Aranjamente Produs Cartezian
PDF
No ratings yet
Aranjamente Produs Cartezian
7 pages
G Polinoame Si Ecuatii Algebrice
PDF
No ratings yet
G Polinoame Si Ecuatii Algebrice
49 pages
Cafeobj - Exemple de Specificat Ii: 1 Nivelul 1 - Sorturi, Operat Ii, Ecuat Ii
PDF
No ratings yet
Cafeobj - Exemple de Specificat Ii: 1 Nivelul 1 - Sorturi, Operat Ii, Ecuat Ii
33 pages
Problemamatrice in C
PDF
No ratings yet
Problemamatrice in C
3 pages
Introducere in Informatica
PDF
No ratings yet
Introducere in Informatica
62 pages
Metoda Greedy 3
PDF
No ratings yet
Metoda Greedy 3
36 pages
I Creanga C Reischer D Simovici - Introducere Algebrica in Informatica Limbaje Formale Vol 2
PDF
No ratings yet
I Creanga C Reischer D Simovici - Introducere Algebrica in Informatica Limbaje Formale Vol 2
196 pages
Portofoliu Mate! (Repaired)
PDF
No ratings yet
Portofoliu Mate! (Repaired)
18 pages
Sub Multi Mi
PDF
No ratings yet
Sub Multi Mi
2 pages
1
PDF
No ratings yet
1
3 pages
Subprograme Definite de Utilizator: 1. Ce Se Va Afiga in Urma Executirii Programului Urmdtor
PDF
No ratings yet
Subprograme Definite de Utilizator: 1. Ce Se Va Afiga in Urma Executirii Programului Urmdtor
11 pages
Sa Se Numere Elementele Pare Dintr-Un Vector Sa Se Calculeze Valoare Maxima Din Elementele Unui Vector
PDF
No ratings yet
Sa Se Numere Elementele Pare Dintr-Un Vector Sa Se Calculeze Valoare Maxima Din Elementele Unui Vector
6 pages
Scilab 1 GR 9
PDF
No ratings yet
Scilab 1 GR 9
7 pages
2020 T3
PDF
No ratings yet
2020 T3
3 pages
Laborator 5 MAC Aproximari Polinomiale
PDF
No ratings yet
Laborator 5 MAC Aproximari Polinomiale
10 pages
STEM Farm Chores and Farm Activities.
PDF
No ratings yet
STEM Farm Chores and Farm Activities.
2 pages
Subprograme Definite de Utilizator: 1. Ce Se Va Afiga in Urma Executirii Programului Urmdtor
PDF
No ratings yet
Subprograme Definite de Utilizator: 1. Ce Se Va Afiga in Urma Executirii Programului Urmdtor
11 pages
Laborator - Metode - Numerice - Colocviu - Laborator - Cunosti Nte - Necesare - Minime PDF
PDF
No ratings yet
Laborator - Metode - Numerice - Colocviu - Laborator - Cunosti Nte - Necesare - Minime PDF
15 pages
Rezolvare Teste de Antrenament Setul1
PDF
No ratings yet
Rezolvare Teste de Antrenament Setul1
10 pages
Structuri Algebrice 1
PDF
No ratings yet
Structuri Algebrice 1
21 pages
Se Laborator2
PDF
No ratings yet
Se Laborator2
3 pages
01.002 Algebra Si Geometrie
PDF
No ratings yet
01.002 Algebra Si Geometrie
3 pages
Calculul Integralelor Nedefinte
PDF
No ratings yet
Calculul Integralelor Nedefinte
16 pages
BE Unit 1
PDF
No ratings yet
BE Unit 1
3 pages