parent( X, Y) - WordPress.com

advertisement
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
Download