مقدمة إلى لغة الذكاء الإصطناعي برولوج 1

Wednesday, August 13, 2008 | Labels: | |


بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

لغة البرمجة Prolog والتي اخترعها الين كولمر ايور هي واحدة من أشهر اللغات المتخصصة في مجال الذكاء الإصطناعي ، وتعتمد اللغة على أسلوب المنطق في البرمجة ومن كلمة programmation en logique الفرنسية تم اشتقاق الكلمة الجديدة لترمز للغة .
*** المصدر : ويكيبديا .

وتعتبر اللغة Prolog قديمة نسبياً هناك لغات أخرى أصبحت أحدث مثل LISP ، لكن اللغة القديمة التي ظهرت في سبعينيات القرن المنصرم لا تزال تحتفظ بقدراتها حتى هذه اللحظة .

بداية كونك مبرمج تطبيقات عادية ب .net أو Java أو C++ لا يعني انك ستجد نفس ما تعلمته في برولوج ، أنس الأمر فالموضوع مختلف كلياً ، ولكنه سهل وبسيط ، حيث تعتمد برولوج في الأساس على العلاقات المنطقية بين الأشياء ، ويتم في هذه الحالة انشاء ما يعرف باسم ( قاعدة المعلومات Information Base ) وهي مختلفة عما عهدناه في عالم قواعد البيانات DataBase .

أيضاً ال Prolog متغيرة بالكامل ، فلا يمكن تحديد عدد أكوادها حيث أن البرنامج يتعلم أثناء عمل Run له وبالتالي عدد السطور قد يزيد أو ينقص حسب ما تعلمه البرنامج خلال هذه المراحل .

كيف أبدأ ؟

خطوتك الأولى للبداية تحتاج منك إلى استخدام أداة ما لتنفيذ أكوادك ، ستجد الكثير من الأدوات ، ولكني وجدت نسخة مناسبة اسمها Amzi Development Environment أثناء تصفحي في الموسوعة العربية ، لذا تستطيع أن تجد رابطها هنا :
http://www.c4arab.com/images/lessons/programming/AI/prolog/amzi_6-2-14_winnt.rar

كل ما عليك هو فتح ملف جديد ، وابدأ بكتابة الأكواد ، بعد الانتهاء قم باختيار Listener ثم Start لبدء التنفيذ .
مجدداً قم بالذهاب إلى Listener ومن ثم اختر Consult ومنه قم باختيار الملف الذي كتبت فيه الأكواد .
الخطوة الاخيرة ، هي البدء باستخدام البرنامج لعمل العلاقات ، سنشرح مثالاً تطبيقياً في الفقرة اللاحقة .

كيف ابرمج باستخدام برولوج ؟

كما ذكرنا في أول الدرس فإن Prolog تعتمد على العلاقات المنطقية ، فيمكنني القول مثلاً :

Human(Ahmed)
Car(Toyota)
Human(Khaled)

والمعنى باختصار ، أن أحمد و خالد من نوع انسان فيما تويوتا هي من نوع عربة .
جرب كتابة هذه الأسطر ، ومن ثم قم بتشغيل البرنامج كما أوضحنا في الجزء أعلاه (Listener -> Start ثم Listener -> Consult)

ومن ثم ابدأ بكتابة هذه الأسئلة :

?- Human(V).

هنا أن تقوم بسؤال البرنامج عن جميع من هم من النوع Human لتضعهم في المتغير V حيث سيقوم بعرضهم لك ، لا تنس أن يكون V حرف كابتيل .
طبعاً سيدأ بعرضهم علي واحداً وراء الآخر ، يمكنني ضغط Enter لو لم أرد عرض المزيد أو ; للاستمرار في العرض .

النوع الثاني من الأسئلة هو الذي تتوقع منه اجابة منطقية ، مثل هذا السؤال :

?- Human(Ahmed).


وسيرد عليك (نعم) أما لو ادخلت هذا السؤال :

?- Human(Ali).


فهذا البيان لم نقم بادخاله له في قاعدة المعلومات ، لذا ستكون الاجابة بالنفي .

حتى هذه اللحظة فأنا استخدم البيانات التي قمت بكتابتها ، قد يتساءل شخص ما ، إذن ما هي الجدوى من هذا البرنامج ، هذا ما سنتعرف عليه في الجزئين التاليين .

تركيب العلاقات :

في الأجزاء السابقة كانت الأسئلة اجابات على بيانات مباشرة موجودة في قاعدة المعلومات ، ولكن الجزء الأقوى هو الخاص بالعلاقات المتعددة ، فمثلاً لو بدأنا بعلاقة : أحمد أبو محمد

father(ahmed,mohammed)

نستطيع تعريف أن أحمد أبو علي أيضاً :

father(ahmed,ali)

وهكذا عندما نبدأ بالاستعلام عن أبناء أحمد ، سنضع الجملة التالية في السؤال :

?- father(ahmed,U)


فسيعطينا جميع الأبناء للثابت (أحمد) ، لا تنس ان أي حرف كابتيل يعتبر متغير في البرلوج .

القواعد :

هذه هي النقطة التي نريد الوصول إليها وهي تعريف القواعد ، وهي التي ستحقق لنا الفائدة المرجوة في هذه البرمجة حيث أنه في جميع ما سبق كان البرنامج يجيب من البيانات التي أدخلناها ، أما الآن فسيكون قادراً على الإجابة بناء على مجموعة من المعلومات ومجموعة من القواعد ، وهو ما يفعله العقل البشري في حالة التفكير في الاجابة ، ولنبدأ بأبسط الامثلة مثل ( كل السيارات لديها باب ، وكل الطيارات لها باب ) بالشكل التالي :

car(X) :- gotadoor(X).
cairplane(X) :- gotadoor(X).

والآن لو قمنا بتعريف عدد من السيارات والطائرات ، قم قمنا لاحقاً بسؤال البرنامج عما إذا كان للسيارة mazda مثلاً باب ، ومع أننا لم نذكر صراحة ان gotadoor(mazda) إلا أن البرنامج استنتج أن ال mazda لها باب نظراً لإنها سيارة ، وكل السيارات لها باب .

نهاية :


ما زال في عالم ال Prolog الكثير من الأوامر ، لا تنس الادخال والاخراج وال List ... الخ ، ولكن كانت هذه مقدمة سريعة للبدء في العمل ، ربما لم تتضح لك الفائدة بعد ولكن جرب الإطلاع على الرد التالي مباشرة ، ستجد مثالاً حقيقياً لكيفية الاستفادة من مثل هذه التطبيقات .

والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .

0 comments: