Chapter 1 – Introduction to Prolog 1.1 1.2 1.3 1.4 1.5 Defining relation by facts Defining relations by rules Recursive rules How Prolog answers questions Declarative and Procedural Meaning of Programs AI Languagesلغات الذكاء االصطناعي في مجال الذكاء االصطناعي اشتهرت لغتان هما: -1لغة : lispوهي اختصار لــ LISt of Processing وتعني معالجة القوائم والتي تم تصميمها عام 1984في الواليات المتحدة وكان الغرض منها تحقيق األغراض البرمجية للذكاء االصطناعي. -2لغة : prologوهي اختصار لــ PROgramming in logicوتعني البرمجة بالمنطق والتي تم تصميمها عام 1970 بجامعة مرسيليا بفرنسا بغرض برمجة المسائل المنطقية قبل ظهور علم الذكاء االصطناعي: 3 مميزات وخصائص لغات الذكاء االصطناعي تمتاز لغات الذكاء االصطناعي بخصائص تناسب طبيعة أنظمة الذكاء االصطناعي والخصائص هي : أ-قابلية تمثيل المعرفة :Knowledge Representation ويقصد بها استخدام قواعد خاصة لوصف المعرفة (حقائق ,Factsعالقات ,Relationsقواعد ,Rulesاطر .)Frames وهي التي تشكل قاعدة المعرفة .Knowledge Base ب -معالجة الرموز واألشكال :Symbolic Processing تمتاز لغات الذكاء االصطناعي بإمكانية معالجة الرموز واألشكال. 4 ج -مرونة في التحكم :Flexibility of Control اللغات التقليدية مثل Pascalو Cتقوم بمعالجة المشكلة من خالل تتبع تسلسلي لتعليمات البرنامج فهي دائما ما تكون عاجزة عن عالج مشاكل الذكاء االصطناعي لذلك أتت لغات الذكاء االصطناعي بإمكانية تحكم أكثر مرونة. وبشكل عام: تعتبر لغات الذكاء االصطناعي أكثر كفاءة من اللغات التقليدية ونعني بالكفاءة زمن تنفيذ البرنامج وتقليل حجم التخزين في الذاكرة ولكن نحتاج الى مجهود من قبل المبرمج في تحديد كل الحقائق وربطها يبعضها البعض وتوجيهها الستخالص النتائج واألهداف المطلوبة. 5 -2clauses:الوصف المعرفي المعروفة عن المشكلة Rules.والقواعد Factsوتكتب فيه كل الحقائق ) والذي من خالله goalويمكن إضافة جزء ثالث للبرنامج وهو جزء االستفسار ( نستطيع طرح األسئلة عن المشكلة. بالشكل التالي turbo prolog:ويكمن توضيح الهيكل العام لبرنامج البرنامج program التصريحات declaration المتغيرات variables العالقات الثابتة predicates االستفسار goal الوصف المعرفي clauses العالقات الديناميكية Data base 6 -2العالقاتpredicates: في هذا الحقل يتم التصريح عن العالقات التي تشارك في وصف المشكلة الصيغة العامة للتصريح عن العالقة . )Predicate-name(p1,p2,…….,pn حيث (Predicate-nameاسم العالقة) )((p1,p2,…….,pnالمتغيرات التي تعتمد عليها) مثال:1 )Pupil(name,age عالقة توضيح لتلميذ "Pupilاسمها"و "nameاسمه"و "ageعمره" (معامالت العالقة) 7 مثال:2 )Likes(student,activity "الطالب"و studentتربط بين معاملين Likesعالقة اسمها "النشاط الذي يرغب فيه"activity مثال:3 )directory(person ,telephone, birthday وتشمل االسم directoryعالقة لوصف معلومات شخصية اسمها ,telephoneوالرقم الهاتف person birthdayوتاريخ الميالد 8 clausesويتم التصريح عنها باستخدام الكلمة المفتاحية التي يتم rulesوالقواعد factsوفي هذا الحقل يتم إدراج كل الحقائق وصف المشكلة بواسطتها مثال:1 لو أردنا أن نصف حقيقة أن حسن هو والد نوري father(hasan ,nori).نكتب األتي مثال:2 لو اردنا ان نصف قاعدة التعرف على األخت في برنامج الشجرة العائلية نكتب االتي Sister(X,Y)if female(Y)and parent(X,P)and parent(Y,P). Xهي االخت ل Yوالتي تعني أن Xانثى ووالد (اب او ام) Yاذا كان Yهو نفس والد(اب او ام) 9 ويمكن اختصار بعض الكلمات داخل القواعد باستخدام الرموز التالية. رمز كلمة if :and , or ; وهذا يعني أن مثال 2يمكن كتابته كما يلي. Sister(X,Y):Female(Y), Parent(X.P), Parent(Y,P). 10 1.1 Defining relations by facts Given a whole family tree tom pam The tree defined by the Prolog program: parent( pam, bob). % Pam is a parent of Bob bob ann liz pat parent( parent( parent( parent( parent( tom, bob). tom, liz). bob, ann). bob, pat). pat, jim). jim 11 How to ask Prolog? ?- parent(bob,pat). yes ?-parent(liz,pat). no Using Variables – defined as Capital Letter ?-parent(X,liz). X=tom ?-parent(bob,X). X=ann if more than one answer, press ; to get others or press enter to stop X = pat ?-parent(X,Y). Using , to make conjunction (and) Who grandparent of jim? ?- parent(Y,jim), parent(X,Y). Using ; to make disjunction (or) ?-parent(Y,jim);parent(Y,pat). 1.1 Defining relations by facts Questions: Is Bob a parent of Pat? ?- parent( bob, pat). ?- parent( liz, pat). ?- parent( tom, ben). Who is Liz’s parent? ?- parent( X, liz). tom pam bob ann liz pat jim Who are Bob’s children? ?- parent( bob, X). 13 1.1 Defining relations by facts Questions: tom pam Who is a parent of whom? Find X and Y such that X is a parent of Y. ?- parent( X, Y). bob ann Who is a grandparent of Jim? X ?- parent( Y, jim), parent( X, Y). parent Y liz pat jim grandparent parent jim 14 1.1 Defining relations by facts Questions: tom pam Who are Tom’s grandchildren? ?- parent( tom, X), parent( X, Y). bob ann Do Ann and Pat have a common parent? ?- parent( X, ann), parent( X, pat). liz pat jim 15 1.2 Defining relations by rules Facts: female( pam). female( liz). female( ann). female( pat). male( tom). male( bob). male( jim). % Pam is female % Tom is male tom pam bob ann Define the “offspring(子女)” relation: Fact: offspring( liz, tom). Rule: offspring( Y, X) :- parent( X, Y). For all X and Y, Y is an offspring of X if X is a parent of Y. liz pat jim 16 1.2 Defining relations by rules Rules have: A condition part (body) A conclusion part (head) the right-hand side of the rule the left-hand side of the rule Example: offspring( Y, X) :- parent( X, Y). The rule is general in the sense that it is applicable to any objects X and Y. A special case of the general rule: offspring( liz, tom) :- parent( tom, liz). ?- offspring( liz, tom). ?- offspring( X, Y). X parent offspring Y 17 1.2 Defining relations by rules Define the “mother” relation: mother( X, Y) :- parent( X, Y), female( X). For all X and Y, X is the mother of Y if X is a parent of Y and X is a female. female X parent mother Y 18 1.2 Defining relations by rules Define the “grandparent” relation: grandparent( X, Z) :parent( X, Y), parent( Y, Z). X parent Y grandparent parent Z 19 1.2 Defining relations by rules Define the “sister” relation: sister( X, Y) :parent( Z, X), parent( Z, Y), female(X). For any X and Y, X is a sister of Y if (1) both X and Y have the same parent, and (2) X is female. ?- sister( ann, pat). Z ?- sister( X, pat). parent ?- sister( pat, pat). parent Pat is a sister to herself?! female X Y sister 20