PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : حل مسئله n وزیر به روش عقب گرد توسط VBA



~M*E*H*D*I~
2012/12/30, 22:08
مسئله چند وزیر یک معمای شطرنجی و ریاضیاتی است که بر اساس آن باید n وزیر شطرنج در یک صفحه n×n شطرنج به*گونه*ای قرار داده شوند که هیچ*یک زیر ضرب دیگری نباشند. با توجه به اینکه وزیر به*صورت افقی، عمودی و اُریب حرکت می*کند، باید هر وزیر را در طول، عرض و قطر متفاوتی قرار داد.

اولین و مشهورترین شکل این مسئله معمای هشت وزیر است که برای حل آن باید ۸ وزیر را در یک صفحهً معمولی (۸×۸) شطرنج قرار داد. این مسئله ۹۲ جواب دارد که ۱۲ جواب آن منحصر به*فرد است یعنی بقیه جواب*ها از تقارن جواب*های اصلی به*دست می*آید.
مسئله n وزیر در صورتی جواب دارد که n مساوی ۱ یا بیشتر از ۳ باشد. یعنی مسئله دو وزیر و سه وزیر راه حلی ندارند.

این مسئله در سال ۱۸۴۸ توسط شطرنج بازی به نام Max Bezzel عنوان شد و ریاضی دانان بسیاری ازجمله Gauss و Georg Cantor بر روی این مسئله کار کرده و در نهایت آنرا به n وزیر تعمیم دادند. اولین راه حل توسط Franz Nauck در سال ۱۸۵۰ ارائه شد که به همان مسئله n وزیر تعمیم داده شد. پس از آن Gunther راه حلی با استفاده از دترمینان ارائه داد که J.W.L. Glaisher آنرا کامل نمود. در سال ۱۹۷۹، Edsger Dijkstra Nauck با استفاده از الگوریتم عقب گرد اول عمق، این مسئله را حل کرد.

الگوریتم عقبگرد

از تکنیک عقبگرد Backtracking برای حل مسائلی استفاده می*شود که در آن*ها دنباله*ای از اشیاء از یک مجموعه مشخص انتخاب می*شود، به طوری که این دنباله، ملاکی را در بر می*گیرد. عقبگرد حالت اصلاح شدهٔ جست و جوی عمقی یک درخت است. این الگوریتم همانند جست و جوی عمقی است، با این تفاوت که فرزندان یک گره فقط هنگامی ملاقات می*شوند که گره امید بخش باشدو در آن گره حلی وجود نداشته باشد. با توجه به اینکه هیچ ۲ وزیری نباید همدیگر را گارد کنند و در یک سطر نمی*توانند باشند، تعداد کل حالت*ها برای n=۴ برابر ۴*۴*۴*۴=۲۵۶ است. در شطرنج یک وزیر می*تواند به مهره*هایی که در خانه*های عمود یا مورب به وی قرار دارند حمله کند. یا به عبارت ریاضی، اگر ردیفها و ستونهای شطرنج را از یک تا هشت شماره گذاری کنیم و وزیر در خانه (i، j) قرار داشته باشد، مهره*هایی که در خانه*های (i، m) یا (m، j) یا (i ± m، j ± m) قرار دارند توسط وزیر تهدید می*شوند.

برای سادگی تشریح این مسئله با استفاده از روش بازگشت به عقب، فرض می*کنیم که خانه*های شطرنج ۴x۴ و تعداد وزیرها نیز ۴ باشد. سپس بعد از یافتن راه حل برای این مسئله ساده شده، اقدام به نوشتن الگوریتم برای مسئله اصلی می*کنیم.
مراحل جستجو برای یافتن جواب را به این صورت دنبال می*کنیم که: وزیر اول را در ردیف اول و ستون اول قرار می*دهیم.
در ردیف دوم از اولین ستون به جلو رفته و به دنبال خانه*ای می*گردیم که مورد تهدید وزیر اول نباشد و وزیر دوم را در این خانه قرار می*دهیم.
همانند قبل، در ردیف سوم از اولین ستون به جلو رفته و به دنبال خانه*ای می*گردیم که مورد تهدید وزیران اول و دوم نباشد. می*بینیم که چنین خانه*ای موجود نیست. پس به عقب یعنی ردیف دوم برگشته و وزیر دوم را به خانه*ای دیگر از ردیف دوم منتقل می*کنیم که مورد تهدید وزیر اول نباشد.
دوباره در ردیف سوم اولین خانه*ای را میابیم که مورد تهدید دو وزیر قبلی نباشد. این بار خانه را می*یابیم و وزیر سوم را در آن قرار می*دهیم.
همانند قبل، در ردیف چهارم به دنبال اولین خانه*ای می*گردیم که مورد تهدید وزیران پیشین نباشد. چنین خانه*ای موجود نیست. به ردیف قبل یعنی ردیف سوم باز می*گردیم تا خانه*ای دیگر برای وزیر سوم بیابیم. خانه دیگری وجود ندارد. به ردیف قبل یعنی ردیف دوم بر می*گردیم تا خانه دیگری برای وزیر دوم پیدا کنیم. به آخرین ستون رسیده*ایم و خانه دیگری نیست. به ردیف قبل یعنی ردیف اول بر می*گردیم و وزیر اول را یک ستون به جلو می*بریم.
در ردیف دوم اولین خانه*ای را میابیم که مورد تهدید وزیر اول نباشد و وزیر دوم را در آن خانه قرار می*دهیم.
در ردیف سوم اولین خانه*ای را میابیم که مورد تهدید وزیران اول و دوم نباشد و وزیر سوم را در آن خانه می*گذاریم.
در ردیف چهارم اولین خانه*ای را میابیم که مورد تهدید وزیران پیشین نباشد. این بار خانه را می*یابیم و وزیر چهارم را در آن خانه قرار می*دهیم.
به یک جواب می*رسیم. حال اگر فرض کنیم که این خانه جواب نیست و به مسیر خود ادامه دهیم، احتمالا" می*توانیم جوابهای دیگری نیز بیابیم.

هشت وزیر
2014/11/13, 11:55
سلام
استادمون گفته مسئله هشت وزیر رو که با الگوریتم ژنتیک محاسبه میشه (ماکسیمم محلی ) رو با اکسل حل کنید میگفت راه حلش مثل جدول ضرب که یه خونه رو حساب می کنیم با درگ کردن کل مسئله حل میشه
این فایل رو دانلود کردم ولی چیزی نفهمیدم اصلا این سایزی که از ما میگیره چی هست؟؟؟؟؟؟
اگه میشه کمک کنید خیلی نمره داره
ممنون

karimi22
2014/11/13, 14:58
سلام سوال شما خیلی مبهم داره
اول شما؟
دوم هشت وزیر
سوم فایل
چهارم استاد
پنجم نمره
خدایش خیلی سخته!!

~M*E*H*D*I~
2014/11/13, 19:06
سلام
استادمون گفته مسئله هشت وزیر رو که با الگوریتم ژنتیک محاسبه میشه (ماکسیمم محلی ) رو با اکسل حل کنید میگفت راه حلش مثل جدول ضرب که یه خونه رو حساب می کنیم با درگ کردن کل مسئله حل میشه
این فایل رو دانلود کردم ولی چیزی نفهمیدم اصلا این سایزی که از ما میگیره چی هست؟؟؟؟؟؟
اگه میشه کمک کنید خیلی نمره داره
ممنون

روش حل تو فایل پیوست از طریق Back-Tracking حل شده از طریق ژنتیک بنده تجربه ای ندارم درضمن فایل برای n وزیر جواب میده یعنی ابعاد جدول رو ابتدا میگیره از شما