• 0
زوار

Unification In Prolog

سؤال

السلام عليكم

حقيقة احترت بكيفية كتابة الموضوع لكن بالمجمل هذه لمحه بسيطه عن ال 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/~ling48x/ling482/prolog/unify.html

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

2 إجابة على هذا السؤال .

  • 0

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

جزاك الله خير اخي عيسى شرح جميل ....

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيك أخي عيسى ،،

موضوع في نفس السياق فقط في بيئة فيجول برولوق:

Unification & Backtracking in Visual prolog

بالتوفيق،

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .