Professional Documents
Culture Documents
لغات الذكاء الاصطناعي 1
لغات الذكاء الاصطناعي 1
2
ج -مرونة في التحكم :Flexibility of Control
اللغات التقليدية مثل Pascalو Cتقوم بمعالجة
المشكلة من خالل تتبع تسلسلي لتعليمات البرنامج فهي
دائما ما تكون عاجزة عن عالج مشاكل الذكاء االصطناعي
لذلك أتت لغات الذكاء االصطناعي بإمكانية تحكم أكثر
مرونة.
وبشكل عام:
تعتبر لغات الذكاء االصطناعي أكثر كفاءة من اللغات
التقليدية ونعني بالكفاءة زمن تنفيذ البرنامج وتقليل حجم
التخزين في الذاكرة ولكن نحتاج الى مجهود من قبل
المبرمج في تحديد كل الحقائق وربطها يبعضها البعض
3
وتوجيهها الستخالص النتائج واألهداف المطلوبة.
استخدام لغة :Turbo Prolog
مرت لغة Prologبتطورات وإصدارات متعددة منها على سبيل المثال
Sega-prolog
و swi-prologو visual-prologبإصداراته المختلفة.
وعلى الرغم من أن Turbo Prologقد ال تعتبر احدث اإلصدارات إال
أننا سنتناول مدخلنا إلى لغة Prologمن خاللها وذلك لعدة أسباب
هي:
.1لغة تحقق الجوانب العملية لشرح مفاهيم الذكاء االصطناعي خاصة
تمثيل المعرفة.
.2تمتاز بسرعة البرنامج في طور اإلنتاج.
.3يمكن اعتبارها لغة قياسية , standard languageحيث يمكن
من خاللها فهم اإلصدارات األخرى.
4
تعتبر لغة turbo prologلغة متكاملة تحتوي على العديد من
اإلجراءات المساعدة في عملية البرمجة كما يظهر في الشكل التالي :
(الشـــــاشة الرئــيســـية)
5
حيث نالحظ أن الشاشة الرئيسية تحتوي على سبعة قوائم وأربعة نوافذ
فرعية هي :
أ-نافذة كتابة البرنامج .Editor window
وهي النافذة التي يكتب فيها البرنامج
ب-نافــذة الـحـوار .Dialog Window
وهي نافذة من خاللها يستطيع المستخدم أن يطرح أسئلته ويجد
اإلجابة عليها من خاللها
ج -نافذة رسائل النظام .Message Window
وهي نافذة إخراج إلخراج معلومات النظام لبيان ما تم فعالً
د-نافذة تدقيق البرنامج .Trace Window
وهي نافذة تستخدم لتتبع البرنامج وبيان ما يقوم به برنامج Turbo
Prolog
بعد كتابة البرنامج في نافذة كتابة البرنامج Editorنقوم بحفظه
باختيار األمر write toمن قائمة Filesومن ثم تشغيله من قائمة
6 .Run
: الهيكل العام لبرنامج prolog
يضم هيكل البرنامج جزئين هما:
-1التصريحات : declarations
ويضم جزء التصريحات الحقول التالية والتي تميز كال منها بواسطة كلمة
مفتاحية:
7
حيث يمكن استخدام بعضها أو كلها في برنامج واحد .
-2الوصف المعرفي :clauses
وتكتب فيه كل الحقائق Factsوالقواعد Rulesالمعروفة عن المشكلة.
ويمكن إضافة جزء ثالث للبرنامج وهو جزء االستفسار ( )goalوالذي من خالله
نستطيع طرح األسئلة عن المشكلة.
ويكمن توضيح الهيكل العام لبرنامج turbo prologبالشكل التالي :
البرنامج
program
التصريحات
االستفسار الوصف المعرفي
declaration
goal clauses
9
مثال:
Age = integer
Name = string
حيث يعرف المتغير في هذه الحالة بالمتغير البسيط.
وقد يكون المتغير البسيط عبارة عن ملف fileوالذي يصرح عنه بالطريقة
التالية
File=file name
مثال:
File=documemt
وقد تكون أنواع المتغيرات مركبة وهي على نوعين.
مركب أولي
والذي يشمل تعريف عدة متغيرات من نوع واحد بالصيغة التالية.
list=type
حيث يفصل بين كل متغير واألخر بفاصلة ";"
مثال:
10 student,person,activity=symbol
مركب متداخل
حيث يصرح بداللة عالقة كالتالي.
)Name=relation-name(p1,p2,………,pn
حيث
()p1,p2,…….pnهي أنواع المعامالت التي تؤثر على العالقة.
مثال:1
)owners=owns(name,book
حيث أن نوع المتغير ownersهو بداللة عالقة مالكي الكتب ownsوالتي تربط
المعامالت التي هي
اسم المالك nameوالكتاب bookوقد تكون أنواع المعامالت بسيطة أو مركبة.
مثال:2
)birthday=date(day, month, year
حيث أن نوع المتغير birthdayهو بداللة عالقة التاريخ dateوالتي تربط
المعامالت التي هي اليوم
dayوالشهر monthوالسنة year
11
-2العالقاتpredicates:
في هذا الحقل يتم التصريح عن العالقات التي تشارك في وصف
المشكلة
الصيغة العامة للتصريح عن العالقة .
)Predicate-name(p1,p2,…….,pn
حيث
(Predicate-nameاسم العالقة)
(()p1,p2,…….,pnالمتغيرات التي تعتمد عليها)
مثال:1
)Pupil(name,age
عالقة توضيح لتلميذ "Pupilاسمها"و "nameاسمه"و
"ageعمره" (معامالت العالقة)
12
مثال:2
)Likes(student,activity
عالقة اسمها Likesتربط بين معاملين "studentالطالب"و
"activityالنشاط الذي يرغب فيه"
مثال:3
)directory(person ,telephone, birthday
عالقة لوصف معلومات شخصية اسمها directoryوتشمل االسم
,personوالرقم الهاتف telephone
وتاريخ الميالد birthday
13
جمل الوصف المعرفي:
if :-
, and
; or
وهذا يعني أن مثال 2يمكن كتابته كما يلي.
Sister(X,Y):-
Female(Y),
Parent(X.P),
).Parent(Y,P
15
مثال:1
لنفترض بأن لدينا المشكلة التالية .
احد المعلمين لدية صف مكون من اربعة طالب بأعمار مختلفة
ويريد وصف هذه المعرفة والسؤال عنها
البرنامج التالي يصف مشكلة هذا المعلم
domains
child=symbol
age=integer
predicates
)pupil(child,age
clauses
).pupil(ahmed,12
).pupil(omar,10
).pupil(saad,12
).pupil(ali,9
16
نالحظ أن البرنامج يتكون من جزئين
-1التصريحات والتي تضم حقلين .
أ -تصريح المتغيرات childوage
ب-تصريح العالقة Pupilأي التلميذ والتي معامالتها االسم
و العمر وعند تنفيذ البرنامج بعد كتابته
تظهر لنا عبارة goalفي نافذة االستفسار مما يعني أن
البرنامج صحيح قواعديا ً وجاهز الستقبال االستفسارات
حول المعرفة .
17
االستفسارات حول المعرفة الموضوعة
-1لمعرفة أسماء التالميذ الذين تكون أعمارهم مساوية لتسعة سنوات
نكتب السؤال بالشكل التالي :
)pupil(X,9
الحظ أننا استخدمنا مكان معامل االسم المتغير Xالذي يجب كتابته بعد مطابقة اسم
العالقة والعمر
بين االستفسار والوصف المعرفي
حيث يكون جواب االستفسار كما يلي .
X=ali
One solution only
وهي تعني انه يوجد حل واحد لهذا االستفسار إن لغة turbo prologتمكننا
من إيجاد كل الحلول الممكنة
من خالل استخدامنا لتقنية تعرف باالرتجاع backtrackingحيث وبعد إيجاد
أول تطابق او حل يرجع
النظام ليحاول إيجاد تطابقات أو حلول أخرى مع بقية العالقات في حقل الوصف
المعرفي حيث وبعد
18
إيجاد كل الحلول يتوقف البرنامج.