____ ______ _________ AI Languages

Document Sample
____ ______ _________ AI Languages Powered By Docstoc
					‫لغات الذكاء االصطناعي ‪AI Languages‬‬
             ‫في مجال الذكاء االصطناعي اشتهرت لغتان هما:‬
    ‫1-لغة ‪ : lisp‬وهي اختصار لــ ‪list of processing‬‬
      ‫وتعني معالجة القوائم والتي تم تصميمها عام 4891 في‬
 ‫الواليات المتحدة وكان الغرض منها تحقيق األغراض البرمجية‬
                                       ‫للذكاء االصطناعي.‬
  ‫2- لغة ‪: prolog‬وهي اختصار لــ ‪programming in‬‬
‫‪ logic‬وتعني البرمجة بالمنطق والتي تم تصميمها عام 0791‬
   ‫بجامعة مرسيليا بفرنسا بغرض برمجة المسائل المنطقية قبل‬
                              ‫ظهور علم الذكاء االصطناعي:‬
 ‫مميزات وخصائص لغات الذكاء االصطناعي‬
   ‫تمتاز لغات الذكاء االصطناعي بخصائص تناسب طبيعة أنظمة الذكاء‬
                                    ‫االصطناعي والخصائص هي :‬
       ‫أ-قابلية تمثيل المعرفة ‪:Knowledge Representation‬‬
          ‫ويقصد بها استخدام قواعد خاصة لوصف المعرفة (حقائق‬
‫‪,Facts‬عالقات ‪ ,Relations‬قواعد ‪ ,Rules‬اطر ‪.)Frames‬‬
              ‫وهي التي تشكل قاعدة المعرفة ‪.Knowledge Base‬‬
          ‫ب- معالجة الرموز واألشكال ‪:Symbolic Processing‬‬
       ‫تمتاز لغات الذكاء االصطناعي بإمكانية معالجة الرموز واألشكال.‬
   ‫ج- مرونة في التحكم ‪:Flexibility of Control‬‬
      ‫اللغات التقليدية مثل ‪ Pascal‬و ‪ C‬تقوم بمعالجة‬
  ‫المشكلة من خالل تتبع تسلسلي لتعليمات البرنامج فهي‬
‫دائما ما تكون عاجزة عن عالج مشاكل الذكاء االصطناعي‬
    ‫لذلك أتت لغات الذكاء االصطناعي بإمكانية تحكم أكثر‬
                                               ‫مرونة.‬
                                          ‫وبشكل عام:‬
     ‫تعتبر لغات الذكاء االصطناعي أكثر كفاءة من اللغات‬
 ‫التقليدية ونعني بالكفاءة زمن تنفيذ البرنامج وتقليل حجم‬
    ‫التخزين في الذاكرة ولكن نحتاج الى مجهود من قبل‬
   ‫المبرمج في تحديد كل الحقائق وربطها يبعضها البعض‬
       ‫وتوجيهها الستخالص النتائج واألهداف المطلوبة.‬
           ‫استخدام لغة ‪:Turbo Prolog‬‬
 ‫مرت لغة ‪ Prolog‬بتطور وإصدارات متعددة منها على سبيل المثال‬
                        ‫‪Sega-prolog‬‬
        ‫و ‪ swi-prolog‬و‪ visual-prolog‬بإصداراته المختلفة.‬
‫وعلى الرغم من أن ‪Turbo Prolog‬قد ال تعتبر احدث اإلصدارات إال‬
‫أننا سنتناول مدخلنا إلى لغة ‪ Prolog‬من خاللها وذلك لعدة أسباب‬
                                                            ‫هي:‬
‫1. لغة تحقق الجوانب العملية لشرح مفاهيم الذكاء االصطناعي خاصة‬
                                                  ‫تمثيل المعرفة.‬
                           ‫2. تمتاز بسرعة البرنامج في طور اإلنتاج.‬
‫3. يمكن اعتبارها لغة قياسية ‪, standard language‬حيث يمكن‬
                               ‫من خاللها فهم اإلصدارات األخرى.‬
  ‫تعتبر لغة ‪ turbo prolog‬لغة متكاملة تحتوي على العديد من‬
‫اإلجراءات المساعدة في عملية البرمجة كما يظهر في الشكل التالي :‬

                   ‫(الشـــــاشة الرئــيســـية)‬
‫حيث نالحظ أن الشاشة الرئيسية تحتوي على سبعة قوائم وأربعة نوافذ‬
                                                          ‫فرعية هي :‬
                       ‫أ-نافذة كتابة البرنامج ‪.Editor window‬‬
                                 ‫وهي النافذة التي يكتب فيها البرنامج‬
                     ‫ب-نافذة رسائل النظام ‪.Message Window‬‬
      ‫وهي نافذة من خاللها يستطيع المستخدم أن يطرح أسئلته ويجد‬
                                               ‫اإلجابة عليها من خاللها‬
                       ‫ج-نافذة تدقيق البرنامج ‪.Trace Window‬‬
           ‫وهي نافذة إخراج إلخراج معلومات النظام لبيان ما تم فع ً‬
           ‫ال‬
                            ‫د-نافــذة الـحـوار ‪.Dialog Window‬‬
‫وهي نافذة تستخدم لتتبع البرنامج وبيان ما يقوم به برنامج ‪Turbo‬‬
                                                             ‫‪Prolog‬‬
   ‫بعد كتابة البرنامج في نافذة كتابة البرنامج ‪ Editor‬نقوم بحفظه‬
  ‫باختيار األمر ‪ write to‬من قائمة ‪ Files‬ومن ثم تشغيله من قائمة‬
                                                                ‫‪.Run‬‬
   ‫‪: prolog‬‬                  ‫الهيكل العام لبرنامج‬
                                             ‫يضم هيكل البرنامج جزئين هما:‬
                                       ‫1-التصريحات ‪: declarations‬‬
      ‫ويضم جزء التصريحات الحقول التالية والتي تميز كال منها بواسطة كلمة‬
                                                                  ‫مفتاحية:‬

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

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




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




                 ‫العالقات الديناميكية‬   ‫العالقات الثابتة‬    ‫المتغيرات‬
                    ‫‪Data base‬‬            ‫‪predicates‬‬        ‫‪variables‬‬
                   ‫التصريحات ‪:declaration‬‬         ‫1.‬
‫التصريح عن المتغيرات ويتم في الحقل ‪.domains‬‬
            ‫حيث أن الصيغة العامة للتصريح هي‬
              ‫‪. variable name = type‬‬
      ‫حيث ‪ = variable name‬اسم المتغير .‬
                    ‫‪ =type‬نوع المتغير.‬
                             ‫وأنوع المتغيرات هي‬
                     ‫1- عدد صحيح ‪.integer‬‬
                          ‫2- عدد حقيقي ‪.real‬‬
                               ‫3- حرف ‪.char‬‬
      ‫4- حزمة حرفية (سلسلة نصية) ‪. sting‬‬
                   ‫5- كلمات رمزية ‪.symbol‬‬
                                                                     ‫مثال:‬
                                   ‫‪Age = integer‬‬
                                ‫‪Name = string‬‬
                        ‫حيث يعرف المتغير في هذه الحالة بالمتغير البسيط.‬
‫وقد يكون المتغير البسيط عبارة عن ملف ‪ file‬والذي يصرح عنه بالطريقة‬
                                                                    ‫التالية‬
                                                     ‫‪File=file name‬‬
                                                                    ‫مثال:‬
                                                   ‫‪File=documemt‬‬
                       ‫وقد تكون أنواع المتغيرات مركبة وهي على نوعين.‬
                                                               ‫مركب أولي‬
          ‫والذي يشمل تعريف عدة متغيرات من نوع واحد بالصيغة التالية.‬
                                              ‫‪list=type‬‬
                             ‫حيث يفصل بين كل متغير واألخر بفاصلة ";"‬
                                                                    ‫مثال:‬
                            ‫‪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‬‬
                                ‫2-العالقات:‪predicates‬‬
‫في هذا الحقل يتم التصريح عن العالقات التي تشارك في وصف‬
                                                 ‫المشكلة‬
                     ‫الصيغة العامة للتصريح عن العالقة .‬
             ‫(‪Predicate-name(p1,p2,…….,pn‬‬
                                                    ‫حيث‬
                      ‫‪(Predicate-name‬اسم العالقة)‬
       ‫(‪((p1,p2,…….,pn‬المتغيرات التي تعتمد عليها)‬
                                                  ‫مثال1:‬
                                   ‫)‪Pupil(name,age‬‬
  ‫عالقة توضيح لتلميذ ‪"Pupil‬اسمها"و ‪"name‬اسمه"و‬
                         ‫‪"age‬عمره" (معامالت العالقة)‬
                                                ‫مثال2:‬
                           ‫)‪Likes(student,activity‬‬
  ‫عالقة اسمها ‪ Likes‬تربط بين معاملين ‪"student‬الطالب"و‬
                        ‫‪"activity‬النشاط الذي يرغب فيه"‬
                                                ‫مثال3:‬
         ‫)‪directory(person ,telephone, birthday‬‬
‫عالقة لوصف معلومات شخصية اسمها ‪ directory‬وتشمل االسم‬
                    ‫‪,person‬والرقم الهاتف ‪telephone‬‬
                               ‫وتاريخ الميالد ‪birthday‬‬
                                                ‫جمل الوصف المعرفي:‬

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

                              ‫‪if‬‬                ‫-:‬
                           ‫‪and‬‬                   ‫,‬
                         ‫‪or‬‬                      ‫;‬
                       ‫وهذا يعني أن مثال2 يمكن كتابته كما يلي.‬
                                             ‫-:)‪Sister(X,Y‬‬
                                                ‫,)‪Female(Y‬‬
                                              ‫,)‪Parent(X.P‬‬
                                              ‫.)‪Parent(Y,P‬‬
                                                         ‫مثال1:‬
                             ‫لنفترض بأن لدينا المشكلة التالية .‬
     ‫احد المعلمين لدية صف مكون من اربعة طالب بأعمار مختلفة‬
                        ‫ويريد وصف هذه المعرفة والسؤال عنها‬
                         ‫البرنامج التالي يصف مشكلة هذا المعلم‬
‫‪domains‬‬
‫‪child=symbol‬‬
‫‪age=integer‬‬
‫‪predicates‬‬
‫)‪pupil(child,age‬‬
‫‪clauses‬‬
‫.)21,‪pupil(ahmed‬‬
‫.)01,‪pupil(omar‬‬
‫.)21,‪pupil(saad‬‬
‫.)9,‪pupil(ali‬‬
                       ‫نالحظ أن البرنامج يتكون من جزئين‬
                         ‫1-التصريحات والتي تضم حقلين .‬
                       ‫أ- تصريح المتغيرات ‪child‬و‪age‬‬
‫ب-تصريح العالقة ‪ Pupil‬أي التلميذ والتي معامالتها االسم‬
                    ‫و العمر وعند تنفيذ البرنامج بعد كتابته‬
  ‫تظهر لنا عبارة ‪ goal‬في نافذة االستفسار مما يعني أن‬
                                  ‫ً‬
      ‫البرنامج صحيح قواعديا وجاهز الستقبال االستفسارات‬
                                             ‫حول المعرفة .‬
                                       ‫االستفسارات حول المعرفة الموضوعة‬
           ‫1-لمعرفة أسماء التالميذ الذين تكون أعمارهم مساوية لتسعة سنوات‬
                                                ‫نكتب السؤال بالشكل التالي :‬
                          ‫)9,‪Pupil(X‬‬
‫الحظ أننا استخدمنا مكان معامل االسم المتغير ‪X‬الذي يجب كتابته بعد مطابقة اسم‬
                                                              ‫العالقة والعمر‬
                                            ‫بين االستفسار والوصف المعرفي‬
                                       ‫حيث يكون جواب االستفسار كما يلي .‬
                                                                     ‫‪X=ali‬‬
                                                  ‫‪One solution only‬‬
  ‫وهي تعني انه يوجد حل واحد لهذا االستفسار إن لغة ‪ turbo prolog‬تمكننا‬
                                                 ‫من إيجاد كل الحلول الممكنة‬
 ‫من خالل استخدامنا لتقنية تعرف باالرتجاع ‪ backtracking‬حيث وبعد إيجاد‬
                                                      ‫أول تطابق او حل يرجع‬
 ‫النظام ليحاول إيجاد تطابقات أو حلول أخرى مع بقية العالقات في حقل الوصف‬
                                                          ‫المعرفي حيث وبعد‬
                                            ‫إيجاد كل الحلول يتوقف البرنامج.‬

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:47
posted:7/26/2012
language:Arabic
pages:18