زبان برنامه نویسی پرولوگ
DESCRIPTION
زبان برنامه نویسی پرولوگ. Prolog. Programming In logic. هوش مصنوعی. انواع داده در پرولوگ. symbol string ” “ char integer real می توان نوع جدید (ساختار) تعریف نمود. زبان پرولوگ به حروف حساس است.متغیرها با حروف بزرگ شروع می شوند - PowerPoint PPT PresentationTRANSCRIPT
زبان برنامه نویسی پرولوگProgramming In logic
Prolog
هوش مصنوعی
symbol string ” “ char integer real می توان نوع جدید )ساختار( تعریف نمود
انواع داده در پرولوگ
متغ?یرها با حروف بزرگ شروع می زبان پرولوگ به حروف حساس است.شوند
دارند و فقط یک بار unbound و boundدر پرولوگ متغیرها دو وضعیت مقدار می گیرند
X = 3
از قبل مقدار دارد مقایسه می کند و اگر مقدار ندارد انتساب می دهدXاگر است.backward chaningاستنتاج در پرولوگ به صورت
رابطه خویشاوندی در پرولوگ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).
مسند )محمول( در پرولوگ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
نحوه اجرای دستورات در پرولوگ
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 ویرایش
انواع داده در پرولوگ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)
Unificationیکسان سازی واقعیات ابتدا دستورات اجرای زمان در پرولوگ )اص?ول موضوع?ی( را چ?ک م?ی کن?د و س?پس با انجام عم?ل یکس?ان س?ازی بر اس?اس قوانی?ن پایگاه دانش
predicatesاستنتاج می کند.
offspring(symbol,symbol) فرزندmother(symbol,symbol)
clauses
offspring(pat, bob)
mother(X,Y) :- parent(X,Y) , female(X).
ادامه رابطه خویشاوندی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.
ادامه رابطه خویشاوندی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).
ادامه رابطه خویشاوندی
pam
jim
patann
bob liz
tom
ادامه رابطه خویشاوندی
pam
jim
patann
bob liz
tom
ادامه رابطه خویشاوندی
pam
jim
patann
bob liz
tom
نمايش درختي مدارات الكتريكي
نمايش درختي مدارات الكتريكي
نمايش درختي خط و مثلث
نمايش درختي خط و مثلث
AI
ليست ها
LISTS
نمايش درختي ليست[ann, tennis, tom, skiing]
رابطه عضویت و ادغامmember(X , [X | L]).member(X , [Head | Tail]) :- member(X , Tail).
conc([ ] , L , L).conc([X | L1] , L2 , [X | L3]) :- con(L1 , L2 , L3).
رابطه ادغام?- 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]
رابطه ادغام
?- conc(_ , [Month1, may ,Month2 | _], [jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec]).
Month1 = aprMonth2 = jun
member1(X, L) :- conc (L1, [X|L2] , L).
رابطه عضویت با استفاده از ادغام
L1 X L2
[X|L2]
L
رابطه عضویت با استفاده از ادغام
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]
اضافه به و حذف از لیست
مثال:?- 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, _).
درج
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= []
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]
permutation2( [ ], [ ]).permutation2( L, [X|P]) :- del ( X, L, L1),
permutation ( L1, P).
جایگشت
reverse( [ ], [ ]) .reverse( [X|Tail], L) :- reverse (Tail, L1),
conc (L1, [X] , L).
لیست معکوس
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]
تمرين