Presentation is loading. Please wait.

Presentation is loading. Please wait.

زبان برنامه نویسی پرولوگ

Similar presentations


Presentation on theme: "زبان برنامه نویسی پرولوگ"— Presentation transcript:

1 زبان برنامه نویسی پرولوگ
Prolog Programming In logic هوش مصنوعی 1

2 انواع داده در پرولوگ symbol string ” “ char integer real می توان نوع جدید (ساختار) تعریف نمود زبان پرولوگ به حروف حساس است. متغیرها با حروف بزرگ شروع می شوند در پرولوگ متغیرها دو وضعیت bound و unbound دارند و فقط یک بار مقدار می گیرند X = 3 اگر X از قبل مقدار دارد مقایسه می کند و اگر مقدار ندارد انتساب می دهد استنتاج در پرولوگ به صورت backward chaning است. 1

3 رابطه خویشاوندی در پرولوگ
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). pam tom bob liz ann pat jim 1

4 مسند (محمول) در پرولوگ Goal: predicates 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 predicates parent(symbol, symbol) male(symbol) female(symbol) clauses parent(pam,bob). parent(tom,bob). male(tom). male(bob). female(pat). female(liz). 1

5 نحوه اجرای دستورات در پرولوگ
Goal: parent(X, jim), parent(Y,X) X = pat, Y=bob با 2 بار جستجو به جواب می رسد parent(Y,X), parent(X, jim) Y=bob, X = jim برای هر Y باید تمامی موارد X چک شود از دید منطقی دو دستور فرقی ندارند اما از دید روالی نحوه اجرای دستورات مهم است Alt + R اجرا Alt + E ویرایش 1

6 انواع داده در پرولوگ 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) 1

7 یکسان سازی Unification
پرولوگ در زمان اجرای دستورات ابتدا واقعیات (اصول موضوعی) را چک می کند و سپس با انجام عمل یکسان سازی بر اساس قوانین پایگاه دانش استنتاج می کند. predicates offspring(symbol,symbol) فرزند mother(symbol,symbol) clauses offspring(pat, bob) mother(X,Y) :- parent(X,Y) , female(X). 1

8 ادامه رابطه خویشاوندی 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. 1

9 ادامه رابطه خویشاوندی تابع بازگشتی predicates
grandparent(symbol,symbol) clauses grandparent (X,Y) :- parent(X, Z) , parent(Z,Y). تابع بازگشتی predecessor(symbol,symbol) predecessor(X,Y) :- parent(X, Y). predecessor(X,Y) :- parent(Z, Y), predecessor(X,Z). 1

10 ادامه رابطه خویشاوندی pam tom bob liz ann pat jim 1

11 ادامه رابطه خویشاوندی pam tom bob liz ann pat jim 1

12 ادامه رابطه خویشاوندی pam tom bob liz ann pat jim 1

13 نمايش درختي مدارات الكتريكي
1

14 نمايش درختي مدارات الكتريكي
1

15 نمايش درختي خط و مثلث 1

16 نمايش درختي خط و مثلث 1

17 ليست ها LISTS 1

18 نمايش درختي ليست [ann, tennis, tom, skiing] 1

19 رابطه عضویت و ادغام member(X , [X | L]).
member(X , [Head | Tail]) :- member(X , Tail). conc([ ] , L , L). conc([X | L1] , L2 , [X | L3]) :- con(L1 , L2 , L3). 1

20 رابطه ادغام ?- 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] 1

21 رابطه ادغام ?- conc(_ , [Month1, may ,Month2 | _],
[jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec]). Month1 = apr Month2 = jun 1

22 رابطه عضویت با استفاده از ادغام
member1(X, L) :- conc (L1, [X|L2] , L). L L1 X L2 [X|L2] 1

23 رابطه عضویت با استفاده از ادغام
1

24 اضافه به و حذف از لیست 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] 1

25 درج مثال: ?- 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, _). 1

26 زیر لیست sublist( S, L) :- conc( L1, L2 , L), conc( S, L3, L2).
?- 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= [] L2 1

27 جایگشت permutation( [ ], [ ]).
permutation( [X|L], P) :- permutation( L, L1), insert( X, L1, P). X L permute L L2 L1 L1 is a permutation of L Insert X obtaining a permutation of [X | L] 1

28 جایگشت permutation2( [ ], [ ]).
permutation2( L, [X|P]) :- del ( X, L, L1), permutation ( L1, P). 1

29 لیست معکوس reverse( [ ], [ ]) .
reverse( [X|Tail], L) :- reverse (Tail, L1), conc (L1, [X] , L). 1

30 تمرين 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] 1


Download ppt "زبان برنامه نویسی پرولوگ"

Similar presentations


Ads by Google