Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programming In logic Prolog هوش مصنوعی.  symbol  string” “  char  integer  real  می توان نوع جدید ( ساختار ) تعریف نمود زبان پرولوگ به حروف حساس.

Similar presentations


Presentation on theme: "Programming In logic Prolog هوش مصنوعی.  symbol  string” “  char  integer  real  می توان نوع جدید ( ساختار ) تعریف نمود زبان پرولوگ به حروف حساس."— Presentation transcript:

1 Programming In logic Prolog هوش مصنوعی

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

3 رابطه خویشاوندی در پرولوگ pam jim patann bobliz 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).

4 مسند ( محمول ) در پرولوگ 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

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ویرایش

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)

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

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.

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

10 ادامه رابطه خویشاوندی pa m jim patann bobliz tom

11 ادامه رابطه خویشاوندی pa m jim patann bobliz tom

12 ادامه رابطه خویشاوندی pa m jim patann bobliz tom

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

14

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

16

17 AI ليست ها LISTS

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

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

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]

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

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

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

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

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, _). درج

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

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

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

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

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]) usemeans(0, zero), means(1, one), … 6. flatten(List, FlatList) ?- flatten([a,b,[c,d],[ ],[[[e]]],f],L) L= [a,b,c,d,e,f] تمرين


Download ppt "Programming In logic Prolog هوش مصنوعی.  symbol  string” “  char  integer  real  می توان نوع جدید ( ساختار ) تعریف نمود زبان پرولوگ به حروف حساس."

Similar presentations


Ads by Google