الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Eight Puzzle Proplem In Prolog

بدأه TheKingMLL في 14 أغسطس 2010 · 2 رد · 3,250 مشاهدة · في الذكاء الاصطناعي وتطبيقاته
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

هذه أول مشاركة لي في هذا المنتدى الجميل والرائع

وسوف أبدأ أول مشاركة لي بسؤال ضروري جدا جدا أرجو منكم المساعدة ...

We want To solve 8-Puzzle Problem With Breadth First Search And Best First Search

Then Add Some Heuristic To The Algorithm To make it Faster And Not Generate All The Node Of the Tree

That is it :D

One Last Problem that Printing The Nodes Of All Tree In Tree Form

For Any Question Replay to me Plz

Good Luck :D

IF You Don't Look Around Once in a While You Might Miss It

#2

ماادري وين صعوبه الموضوع ..ساسهل عليك العمليه بالطريقه التاليه :

الاختلاف في انواع البحث المختلفه هو اختلاف بكيفيه عمل expand or traverse على الTree

بمعنى اخر كيفيه اختيار ال next node هو الاختلاف الرئيسي ..

هذا يعني ان تعمل بيئه عامه لكل ال search strategies وتعمل داله لنسميها expandDFS في حاله ال Depth First Search داخل الTree Class..

#3

اخي العزيز كنت قد كتبت ردا في موضوع سابق لاحد الاخوة يسأل فيه عن الHeuristic .. وساعيد لك الرد لانني وضحته عن لغز 8 Puzzle .. وطريقة حلها باستخدام First Best Search ..

تعتمد هذه الطريقة على شرط العملية المراد البحث فيها .. او بصورة اكثر توضيحا .. تعتمد على المعامل وعلى شرطه ..

يعني مثلا ..

لوقلت اريد البحث في طرق الوصول الى مكان ما مثلا .. ولكن لكل طريق مسافة ..

مثلا كالتالي


a - c = 14
a - d = 29
c - x = 8
c - e = 4
 a - b = 20

لو اعتمدنا مثلا في التنقل على معامل المسافة بين المدن .. وشرط المعامل هو الاقصر طولا ..

ستلاحظ بعد رسم الشجرة ان الانتقال سيكون بالشكل التالي

a - c - e

طبعا انت يجب ان تكون لديك معلومات معطاة ... وهي الشرط .. القيم .. والهدف ..

يعني من الممكن ان تكون لديك شجرة بها اكثر من طريق يوصلك للهدف .. لا يمكن ان تستغل اي طريق منهم .. يجب ان تحقق الشرط وهو الاقل قيمة ..

افترض انه لدنيا الشكل التالي

وهو المربع الشهير الخاص بلغز الثمان ارقام

puzzle1.gif

المربع الاول هو الهدف المنشود .. يعني الحالة المرتبة التي نريد ان نصل اليها بعد ترتيب ال8 مراتب او ال8 ارقام داخل المربع ..

المربع الثاني هو المربع الغير مرتب والذي يجب ان نصل به الى المرتبه الاولى ..

لو جئنا الان الى ترتيبه ...

سنمر بعدة خطوات تحريك وهي كلها تحرك مربعات الارقام لتعطي اكثر من حالة ..

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

ويتم عملية مقارنه الحالة الواحده مع الحالة الهدف .. كل خانة مع الخانه المقابلة .. هل الرقم الحالي هو في مكانه الصحيح ام لا ..؟؟ وهذا ما نرمز له بالرمز H. ..

فمثلا لو رجعت للصورة اعلاه ستجد ان H لهذه الحالة يساوي 5 .. لان 5 خانات بعد المقارنه وجدنا انها لم تكن في مكانها الصحيح حسب المخطط ...

ويمكنك تحريك المربع الفارغ الى ال 4 اتجاها حسب موقعه .. وكل حركه له تعطي حالة كما قلنا سابقا .. ولكن لكل حالة قيمة H خاصة .. ممكن ان تكون متساوية ولو كانت مختلفة نأخذ ال H الاصغر .. وهكذا ..

يعني هناك تفاصيل اخرى ولكن اردت توضيح فكرة الheu بصورة مختصرة ومبسطة ..

الكلام السابق هو مقتبس من رد لي سابقا ..

وساضيف الان عليه بخصوص حل اللغز بطريق البحث في العمق اولا ..

الية الحل تكون باعتماد العمق وهو الخط اليسار .. من الشبكة .. اي انك لا تحتاج لمقارنة او اي شئ .. ارسم شجرة الحل بكل بساطة وفي كل مرة يظهر لك ابناء من المربع الاصل .. اتجه لاول مربع على يسارك من الحل .. الى ان تصل الى الحل من خلاله .. وعندما تصل الى طريق مسدود ويكون بتكرار النتائج الضاهرة ..شاهد الصورة التالية ..

Animated_BFS.gif

صحيح انها معلومات قليلة ولكن اردت ان افيدك انت والباقين بشئ بسيط ..

اما لوكنت تريد حل المشكلة باستخدام البرولوك .. فلا اعتقد ان هذا ممكن في المنتدى لانه يتوجب عليك طرح ما تستطيع وحل المشاكل التي عندك تكون في المنتدى ..

اقرأ ماكتبته لك اعلاه واسال اذا اردت اي سؤال .. وان شاءلله تجد من يعينك ..

تحياتي العطرة للجميع ..

1

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

مواضيع مشابهة