زبان برنامه نویسی پرولوگ
DESCRIPTION
زبان برنامه نویسی پرولوگ. Prolog. Programming In logic. هوش مصنوعی. انواع داده در پرولوگ. symbol string ” “ char integer real می توان نوع جدید (ساختار) تعریف نمود. زبان پرولوگ به حروف حساس است.متغیرها با حروف بزرگ شروع می شوند - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/1.jpg)
زبان برنامه نویسی پرولوگProgramming In logic
Prolog
هوش مصنوعی
![Page 2: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/2.jpg)
symbol string ” “ char integer real می توان نوع جدید )ساختار( تعریف نمود
انواع داده در پرولوگ
متغ?یرها با حروف بزرگ شروع می زبان پرولوگ به حروف حساس است.شوند
دارند و فقط یک بار unbound و boundدر پرولوگ متغیرها دو وضعیت مقدار می گیرند
X = 3
از قبل مقدار دارد مقایسه می کند و اگر مقدار ندارد انتساب می دهدXاگر است.backward chaningاستنتاج در پرولوگ به صورت
![Page 3: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/3.jpg)
رابطه خویشاوندی در پرولوگpam
jim
patann
bob liz
tom parent(pam,bob).
parent(tom,bob).
parent(tom,liz).
parent(bob,ann).
parent(bob,pat).
parent(pat,jim).
male(tom).
male(bob).
male(jim).
female(pam).
female(ann).
female(pat).
female(liz).
![Page 4: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/4.jpg)
مسند )محمول( در پرولوگpredicates
parent(symbol, symbol)
male(symbol)
female(symbol)
clauses
parent(pam,bob).
parent(tom,bob).
male(tom).
male(bob).
female(pat).
female(liz).
Goal:
parent(bob, pat) Yes
parent(bob, jim) No
parent(X, pat) X=bob
parent(X, ann), parent(X, pat) X=bob
parent(pam, X) X = bob
![Page 5: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/5.jpg)
نحوه اجرای دستورات در پرولوگ
Goal:
parent(X, jim), parent(Y,X) X = pat, Y=bob
بار جستجو به جواب می رسد2با parent(Y,X), parent(X, jim) Y=bob, X = jim
چک شودX باید تمامی موارد Yبرای هر از دید منطقی دو دستور فرقی ندارند اما از دید روالی نحوه اجرای دستورات مهم
استAlt + R اجراAlt + E ویرایش
![Page 6: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/6.jpg)
انواع داده در پرولوگdomains
datatype = date(integer, symbol, integer)
predicates
birth(symbol, datatype)
clauses
birth(ali, date(1990, september,20)).
birth(ali, date(1992, july,20)).
birth(ahmad, date(1990, october,12)).
Goal: birth(ahmad, X).
X=date(1990, october,12)
![Page 7: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/7.jpg)
Unificationیکسان سازی واقعیات ابتدا دستورات اجرای زمان در پرولوگ )اص?ول موضوع?ی( را چ?ک م?ی کن?د و س?پس با انجام عم?ل یکس?ان س?ازی بر اس?اس قوانی?ن پایگاه دانش
predicatesاستنتاج می کند.
offspring(symbol,symbol) فرزندmother(symbol,symbol)
clauses
offspring(pat, bob)
mother(X,Y) :- parent(X,Y) , female(X).
![Page 8: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/8.jpg)
ادامه رابطه خویشاوندیpredicates
sister(symbol,symbol)
clauses
sister(X,Y) :- parent(Z, X) , parent(Z,Y), female(X).
Goal: sister(liz, X)
X= bob
X= liz
sister(X,Y) :- parent(Z, X) , parent(Z,Y), female(X) , X<>Y.
![Page 9: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/9.jpg)
ادامه رابطه خویشاوندیpredicates
grandparent(symbol,symbol)
clauses
grandparent (X,Y) :- parent(X, Z) , parent(Z,Y).
تابع بازگشتیpredicates
predecessor(symbol,symbol)
clauses
predecessor(X,Y) :- parent(X, Y).
predecessor(X,Y) :- parent(Z, Y), predecessor(X,Z).
![Page 10: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/10.jpg)
ادامه رابطه خویشاوندی
pam
jim
patann
bob liz
tom
![Page 11: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/11.jpg)
ادامه رابطه خویشاوندی
pam
jim
patann
bob liz
tom
![Page 12: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/12.jpg)
ادامه رابطه خویشاوندی
pam
jim
patann
bob liz
tom
![Page 13: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/13.jpg)
نمايش درختي مدارات الكتريكي
![Page 14: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/14.jpg)
نمايش درختي مدارات الكتريكي
![Page 15: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/15.jpg)
نمايش درختي خط و مثلث
![Page 16: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/16.jpg)
نمايش درختي خط و مثلث
![Page 17: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/17.jpg)
AI
ليست ها
LISTS
![Page 18: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/18.jpg)
نمايش درختي ليست[ann, tennis, tom, skiing]
![Page 19: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/19.jpg)
رابطه عضویت و ادغامmember(X , [X | L]).member(X , [Head | Tail]) :- member(X , Tail).
conc([ ] , L , L).conc([X | L1] , L2 , [X | L3]) :- con(L1 , L2 , L3).
![Page 20: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/20.jpg)
رابطه ادغام?- conc(L1 , L2 , [a, b, c]).
L1=[ ] L2=[a, b, c]L1=[a] L2=[b, c]L1=[a, b] L2=[c]L1=[a, b, c] L2=[ ]
?- conc(Before , [may | After], [jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec]).
Before = [jan,feb,mar,apr]After = [jun,jul,aug,sep,oct,nov,dec]
![Page 21: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/21.jpg)
رابطه ادغام
?- conc(_ , [Month1, may ,Month2 | _], [jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec]).
Month1 = aprMonth2 = jun
![Page 22: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/22.jpg)
member1(X, L) :- conc (L1, [X|L2] , L).
رابطه عضویت با استفاده از ادغام
L1 X L2
[X|L2]
L
![Page 23: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/23.jpg)
رابطه عضویت با استفاده از ادغام
![Page 24: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/24.jpg)
add( X, L, [X|L]).
del( X, [X|Tail], Tail).del( X, [Y|Tail], [Y|Tail1]) :- del( X, Tail, Tail1).
مثال:?- del( a, [a, b, a, a], L).
L = [b, a, a]L = [a, b, a]L = [a, b, a]
اضافه به و حذف از لیست
![Page 25: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/25.jpg)
مثال:?- del( a, L, [m, n, p]).
L = [a, m, n, p]L = [m, a, n, p]L = [m, n, a, p]L = [m, n, p, a]
insert(X, List, BiggerList) :- del( X, BiggerList, List).
delرابطه عضویت با استفاده از member2(X, List) :- del ( X , List, _).
درج
![Page 26: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/26.jpg)
sublist( S, L) :- conc( L1, L2 , L),conc( S, L3, L2).
زیر لیست
L1
L2
L
S L3
?- sublist( S, [a, b, c])
S= [] S= [a] S= [a,b] S= [a,b,c]S= [] S= [b] S= [b,c]S= [] S= [c]S= []
![Page 27: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/27.jpg)
permutation( [ ], [ ]).permutation( [X|L], P) :- permutation( L, L1),
insert( X, L1, P).
جایگشت
X L
L2
permute L
L1 L1 is a permutation of L
Insert X obtaining a permutation of [X | L]
![Page 28: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/28.jpg)
permutation2( [ ], [ ]).permutation2( L, [X|P]) :- del ( X, L, L1),
permutation ( L1, P).
جایگشت
![Page 29: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/29.jpg)
reverse( [ ], [ ]) .reverse( [X|Tail], L) :- reverse (Tail, L1),
conc (L1, [X] , L).
لیست معکوس
![Page 30: زبان برنامه نویسی پرولوگ](https://reader030.vdocuments.site/reader030/viewer/2022033014/568161b4550346895dd17d77/html5/thumbnails/30.jpg)
1. evenlength(List)2. oddlength(List)3. shift (L1, L2)4. palindrome(List) such as [m, a, d, a, m]5. translate(List1, List 2) such as translate([1 , 2], [one, two])
use means(0, zero), means(1, one), …6. flatten(List , FlatList)
?- flatten([a,b,[c,d],[ ],[[[e]]],f],L)L= [a,b,c,d,e,f]
تمرين