Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 18

‫لغات الذكاء االصطناعي ‪AI Languages‬‬

‫في مجال الذكاء االصطناعي اشتهرت لغتان هما‪:‬‬


‫‪-1‬لغة ‪ : lisp‬وهي اختصار لــ ‪list of processing‬‬
‫وتعني معالجة القوائم والتي تم تصميمها عام ‪ 1984‬في‬
‫الواليات المتحدة وكان الغرض منها تحقيق األغراض البرمجية‬
‫للذكاء االصطناعي‪.‬‬
‫‪ -2‬لغة ‪: prolog‬وهي اختصار لــ ‪programming in‬‬
‫‪ logic‬وتعني البرمجة بالمنطق والتي تم تصميمها عام ‪1970‬‬
‫بجامعة مرسيليا بفرنسا بغرض برمجة المسائل المنطقية قبل‬
‫ظهور علم الذكاء االصطناعي‪:‬‬
‫‪1‬‬
‫مميزات وخصائص لغات الذكاء االصطناعي‬
‫تمتاز لغات الذكاء االصطناعي بخصائص تناسب طبيعة أنظمة الذكاء‬
‫االصطناعي والخصائص هي ‪:‬‬
‫أ‪-‬قابلية تمثيل المعرفة ‪:Knowledge Representation‬‬
‫ويقصد بها استخدام قواعد خاصة لوصف المعرفة (حقائق‬
‫‪,Facts‬عالقات ‪ ,Relations‬قواعد ‪ ,Rules‬اطر ‪.)Frames‬‬
‫وهي التي تشكل قاعدة المعرفة ‪.Knowledge Base‬‬
‫ب‪ -‬معالجة الرموز واألشكال ‪:Symbolic Processing‬‬
‫تمتاز لغات الذكاء االصطناعي بإمكانية معالجة الرموز واألشكال‪.‬‬

‫‪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‬‬
‫ويضم جزء التصريحات الحقول التالية والتي تميز كال منها بواسطة كلمة‬
‫مفتاحية‪:‬‬

‫الحــقـــل‬ ‫الكـلمة المفتاحية‬


‫أ‪-‬حقل منفرد لتصريح أنواع المتغيرات‬ ‫‪domains‬‬
‫ب‪-‬حقل شامل لتصريح مجاميع أنواع المتغيرات‬ ‫‪global domains‬‬
‫ج‪-‬حقل منفرد لتصريح العالقات الثابتة‬ ‫‪predicates‬‬
‫د‪-‬حقل شامل لتصريح مجاميع العالقات الثابتة‬ ‫‪global predicates‬‬
‫هـ‪-‬حقل لتصريح العالقات الديناميكية‬ ‫‪data base‬‬

‫‪7‬‬
‫حيث يمكن استخدام بعضها أو كلها في برنامج واحد ‪.‬‬
‫‪ -2‬الوصف المعرفي ‪:clauses‬‬
‫وتكتب فيه كل الحقائق ‪ Facts‬والقواعد ‪ Rules‬المعروفة عن المشكلة‪.‬‬
‫ويمكن إضافة جزء ثالث للبرنامج وهو جزء االستفسار (‪ )goal‬والذي من خالله‬
‫نستطيع طرح األسئلة عن المشكلة‪.‬‬
‫ويكمن توضيح الهيكل العام لبرنامج ‪ turbo prolog‬بالشكل التالي ‪:‬‬
‫البرنامج‬
‫‪program‬‬

‫التصريحات‬
‫االستفسار‬ ‫الوصف المعرفي‬
‫‪declaration‬‬
‫‪goal‬‬ ‫‪clauses‬‬

‫العالقات الديناميكية‬ ‫العالقات الثابتة‬ ‫المتغي‪5‬رات‬


‫‪Data base‬‬ ‫‪predicates‬‬ ‫‪variables‬‬
‫‪8‬‬
‫التصريحات ‪:declaration‬‬ ‫‪.1‬‬
‫التصريح عن المتغيرات ويتم في الحقل ‪.domains‬‬
‫حيث أن الصيغة العامة للتصريح هي‬
‫‪. variable name = type‬‬
‫حيث ‪ = variable name‬اسم المتغير ‪.‬‬
‫= نوع المتغير‪.‬‬ ‫‪type‬‬
‫وأنوع المتغيرات هي‬
‫‪ -1‬عدد صحيح ‪integer.‬‬
‫‪ -2‬عدد حقيقي ‪real .‬‬
‫‪ -3‬حرف ‪char.‬‬
‫‪ -4‬حزمة حرفية (سلسلة نصية) ‪sting .‬‬
‫‪ -5‬كلمات رمزية ‪.symbol‬‬

‫‪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‬‬
‫جمل الوصف المعرفي‪:‬‬

‫ويتم التصريح عنها باستخدام الكلمة المفتاحية ‪clauses‬‬


‫وفي هذا الحقل يتم إدراج كل الحقائق ‪ facts‬والقواعد ‪ rules‬التي يتم‬
‫وصف المشكلة بواسطتها‬
‫مثال‪:1‬‬
‫لو أردنا أن نصف حقيقة أن حسن هو والد نوري‬
‫نكتب األتي )‪.father(hasan ,nori‬‬
‫مثال‪:2‬‬
‫لو اردنا ان نصف قاعدة التعرف على األخت في برنامج الشجرة العائلية‬
‫نكتب االتي‬
‫‪Sister(X,Y)if female(Y)and parent(X,P)and‬‬
‫)‪.parent(Y,P‬‬
‫والتي تعني أن ‪ Y‬هي االخت ل ‪X‬‬
‫اذا كان ‪ Y‬انثى ووالد (اب او ام) ‪X‬‬
‫‪14‬‬ ‫هو نفس والد(اب او ام) ‪Y‬‬
‫ويمكن اختصار بعض الكلمات داخل القواعد باستخدام الرموز التالية‪.‬‬
‫كلمة‬ ‫رمز‬

‫‪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‬‬
‫إيجاد كل الحلول يتوقف البرنامج‪.‬‬

You might also like