بتـــــاريخ : 2/13/2011 9:23:02 AM
الفــــــــئة
  • الحـــــــــــاسب
  • التعليقات المشاهدات التقييمات
    0 887 0

    موضوعات متعلقة

    لمحة عن الـ(process)

    Unification In Prolog لمحه بسيطه عن gnu prolog unification process

    الناقل : elmasry | العمر :42 | الكاتب الأصلى : Eisa Ayed | المصدر : www.arabteam2000-forum.com

    كلمات مفتاحية  :



    حقيقة احترت بكيفية كتابة الموضوع لكن بالمجمل هذه لمحه بسيطه عن ال unification

    ال Unification هو باختصار مايعمله ال prolog interpreter عندما تعطيه اي استعلام ..
    فهو يحاول ان يجد حل لهذا الاستعلام عن طريق عمل unify بين الاستعلام query وبين الحقائق الموجوده لديه facts and rules.

    فلنفرض ان لديك المعلومات التاليه :

    age(ahmed,23).
    age(khaled,40).
    age(ahmed,30).


    وتريد ان تستعلم عن عمر احمد .. ففي محرر البرولوق بتكتب التالي :

    age(ahmed,X).


    فالكلمات التي تبدأ بحروف كبيره هي متغيرات variables
    ماعداه فهي ثوابت constants or atoms

    هنا انت تطلب من البرنامج ان يبحث لك عن قيمة للمتغير X تتماشى مع المعلومات التي لديك ..
    والنتيجه هي X=23

    العمليه بسيطه :
    1- ان كل تيرم له نفس عدد الاريقيومنت :
    age(a,b) cannot be unified with age (X)

    2- ان الاسم لكلاهما هو نفس الاسم :
    age(a,b) cannot be unified with agee(X,Y)

    3- المتغير يأخذ أي قيمه ولايستطيع ان ياخذ قيمتين مختلفتين بنفس الوقت
    age(a,b) cannot be unified with age(X,X)

    4- الثابت constant لا يعمله unify إلا مع نفسه
    age(a,b) cannot be unified with age(b,b).

    5- اذا كان احد الطرفين متغير فقيمته الجديده هي قيمة الطرف الآخر
    مثال :
    unify(X,f(z,b,c,d))
    X=f(a,b,c,d)


    في الحاله الخامسه اذا كان الطرف الآخر يحتوي على نفس المتغير في داخله فهذه سوف تنتهي بايرور .
    مثال
    unify(X,f(a,b,c,X))

    فال X هنا هو نفسه يحمل الطرف الآخر وكل مره ينادي نفسه
    لذلك هناك دالة unify_with_occurs_check في gnu prolog لمنع هذا الشئ ..

    للاستزاده
    http://web.uvic.ca/~...olog/unify.html

    كلمات مفتاحية  :

    تعليقات الزوار ()