مساله هشت وزیر از جمله مسائل مهم در زمینه طراحی الگوریتمها است. در این مسئله، ۸ مهره وزیر را باید روی صفحه شطرنج به گونهای قرار داد که هیچکدام از آنها دیگری را تهدید نکند.
برای افرادی که با بازی شطرنج آشنا نیستند، وزیر مهرهای از مهرههای شطرنج است که قادر است در هر جهت و به تعداد نامحدودی خانه حرکت کند، تا زمانی که توسط مهرهی دیگری مسدود نشود. اگر مهره حریف در یکی از خانههای قابل دسترس آن باشد، وضعیت وزیر تهدید شده است.
مسئله هشت وزیر بررسی میکند که با قرار دادن ۸ مهرهی وزیر بر روی صفحه شطرنج n در n، به چه ترتیب میتوان آنها را قرار داد تا شرایط مسئله احترام شود. برای حل این مسئله، روشهای مختلفی وجود دارد که یکی از آنها شامل چیدن تصادفی مهرهها بر روی صفحه شطرنج است. این روش به سرعت به جواب میرساند، اما نمیتواند تمام حالات مختلف چینشها را پوشش دهد. به عنوان مثال، در صفحه 8 در 8 شطرنج، این مسئله 92 جواب متفاوت دارد که با استفاده از روش تصادفی نمیتوان همه آنها را بیابیم.
یکی دیگر از روشها، قرار دادن مهرهها با دقت و بازگشتی به گونهای است که تداخلی نداشته باشند و شرایط مسئله را برآورده کنند. از سطر اول شروع میشود و به ترتیب، مهرهها قرار داده میشوند و اگر یک سطر بدون خانهای امن برای مهرهی وزیر باقی بماند، مهرههای سطر قبلی جابجا میشوند. این فرآیند ادامه داده شده و تا حالات ممکن تمام شوند.
برای پیادهسازی این الگوریتم و تشخیص خانههای امن، روشهای گوناگونی وجود دارد، اما روشی که استفاده شده، باعث سریع رسیدن به جواب مسئله با مصرف حافظه کم میشود.
در این رویه، خانههای امن و غیر امن با شمارهگذاری کامل شده و با توجه به چینش مهرهها، امنیت هر خانه قابل تشخیص است. این روش، یکی از بهترین روشهای حل مسئله هشت وزیر است که علاوه بر سرعت اجرا، حافظه کمتری نیز نیاز دارد.
اگر به تمرین نوشتن کد الگوریتم علاقهمندید، میتوانید از سایت پروژه، الگوریتم و کد مسئله هشت وزیر را به زبانهای مختلف دانلود کنید و تحلیلهای مربوطه را بررسی کنید.
برای دریافت فایل مربوطه با حجم 148 کیلوبایت، میتوانید از اینجا استفاده کنید.