parent( X, Y) - WordPress.com
Download
Report
Transcript parent( X, Y) - WordPress.com
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