![]() |
حل مسئله 8 وزير(8Queen) با روش هاي مختلف!
دوستان بياييد مسئله 8 وزير را با روش هاي مختلف در اينجا با هم حل کنيم:rolleyes:
با استفاده از روشهايي از قبيل: الگوريتم ژنتيک جستجوي محلي الگوريتم عقبگرد مسئله ارضاي محدوديت جستجوي تپه نوردي و غيره ;) |
صورت مسئله : هشت وزير را در هشت خانه شطرنج (8*8) طوري قرار دهيد كه هيچكدام يكديگر را تهديد نكنند. وزير در خانه هاي شطرنج به صورت عرضي،طولي و قطري مي تواند حركت كند. اين مسئله قابل تعميم به مسئله N وزير در يك شطرنج N*N است.
تاريخچه: اين مسئله در سالي 1848 توسط شطرنج بازي به نام Max Bezzel عنوان شد و رياضي دانان بسياري ازجمله Gauss و Georg Cantor بر روي اين مسئله كار كرده و در نهايت آنرا به N وزير تعميم دادند. اولين راه حل توسط Franz Nauck در سال 1850 ارائه شد كه به همان مسئله N وزير تعميم داده شد. پس از آن Gunther راه حلي با استفاده از دترمينان ارائه داد كه J.W.L. Glaisher آنرا كامل نمود. در سال 1979 ، Edsger Dijkstra با استفاده از الگوريتم عقب گرد اول عمق اين مسئله را حل كرد. راه حل: براي حل اين مسئله كه داراي 92 جواب است ، بايد تكنيكهايي جهت كاهش حالات ،روش Brute Force يا امتحان تك تك جواب ها انجام شود. تعداد همه حالاتي كه مي تواند در روش Brute Force چك شود برابر 16,777,216 يا هشت به توان هشت است! يكي از روش هاي حل اين مسئله براي n>=4 يا n=1 استفاده از روش مكاشفه اي (heuristic) است: 1- عدد n را بر عدد 12 تقسيم كن و باقي مانده را يادداشت كن 2- به ترتيب اعداد زوج 2 تا n را در ليستي بنويس 3- اگر باقي مانده 3 يا 9 بود ، عدد 2 را به انتهاي ليست انتقال بده. 4- به ليست اعداد فرد 1 تا N را به ترتيب اضافه كن، اما اگر باقي مانده 8 بود اعداد را دو به دو باهم عوض كند (مثلا 1و3و5و7و9 تبديل به 3و1و7و5و9 ميشه) 5- اگر باقي مانده 2 بود جاي 1 و3 را با هم عوض كن و 5 را به انتهاي ليست ببر 6- اگر باقي مانده 3 يا 9 بود ، اعداد 1 و 3 را به انتهاي ليست ببر. 7- حال با استفاده از ليست بدست آمده وزير ها در صفحه شطرنج چيده مي شوند، بطوريكه جاي وزير ستون اول ،اولين عدد ليست ،جاي وزير ستون دوم ، دومين عدد ليست و ... اين الگوريتم يك راه حل براي حل اين مسئله است، براي بدست آوردن همه حالات از روشهاي ديگري مي توان استفاده كرد. روش حل مسئله 12 راه حل يكتا دارد كه با در نظر گيري تقارن و چرخش به 92 حالت قابل تبديل است. |
روش های جستجوی محلی
برای معرفی هریک از روش های جستجویی که در فصل به بررسی آن ها می پردازیم از مسئله 8 وزیر استفاده خواهیم کرد. در مسئله 8 وزیر هدف قرار دادن 8 وزیر بر روی صفحه شطرنج به گونه ای است که هیچیک از وزیرها همدیگر را گارد ندهند. تعمیم یافته مسئله 8 وزیر، مسئله n وزیر است که در آن بر روی یک صفحه شطرنج n*n باید n وزیر را به گونه ای قرار دهیم که هیچیک همدیگر را گارد ندهند. مسئله n وزیر از جمله مسائل NP در هوش مصنوعی است که روش های جستجوی معمولی قادر به حل آن ها نخواهد بود. از سوی دیگر می توان به مسئله 8 وزیر به عنوان یک مسئله بهینه سازی نیز نگریست که در آن هدف بهینه کردن تعداد گاردهای جفت وزیرها می باشد. به عنوان مثال فرض کنید در صفحه شطرنج معمولی ، 8 وزیر را به دو روش زیر قرار دهیم : http://aisthinktank.com/images/contents/queen1.JPGhttp://aisthinktank.com/images/contents/queen.JPG در روش چینش سمت چپ 3 وزیر و در روش چینش سمت راست 4 وزیر همدیگر را گارد می دهند. بنابراین روش چینش قبلی بهینه تر از روش چینش فعلی است. در واقع می توان مسئله بهینه سازی را به صورت زیر تعریف کرد. فرض کنید S مجموعه همه جواب های ممکن برای مسئله باشد. در صورتی S* می تواند جواب مسئله باشد که به ازای همه جواب های موجود در S ، S* بهینه تر از دیگر جواب ها باشد. در مسئله 8 وزیر دیدیم که جوابی بهینه است که تعداد گاردهای جفت وزیر آن کمتر باشد. روش های جستجوی محلی همگی حالت های همسایه حالت فعلی را برای رسیدن به بهینه ترین جواب بررسی می کنند. از این رو وجود دو تابع در همه این روش های جستجو الزامی است. اولین تابع میزان بهینگی جواب مسئله ارزیابی می کند و تابع دوم یکی از حالت های همسایه حالت فعلی را انتخاب می کند. سخن آخر اینکه نحوه پیاده سازی و طراحی الگوریتم برای انتخاب حالت هسایه در این روش های جستجو از اهمیت ویژه ای برخوردار است. به عنوان مثال برای مسئله 8 وزیر می توان به شکل های زیر حالت های همسایگی را تولید کرد : 1) دو وزیر به تصادف انتخاب شده و جای آن دو باهم عوض گردد. 2) یکی از وزیر ها به تصادف انتخاب شده و شماره سطر آن به تصادف تغییر کند. 3) ویزیری به تصادف انتخاب شده و یک خانه به سمت بالا یا پایین حرکت کند |
برنامه جستجوی تپه نوردی(برای هشت وزیر) نوشته شده با زبان c#
1(ها)ضميمه
تپه نوردی Hill Climbing Searching یکی از الگوریتم های هوش مصنوعی می باشد که برای مسائل پیچیده به کار میرود به گونه ای که بجای اینکه برای حل مسئله از کل گراف استفاده کند.به صورت اتفاقی از یک قسمت از گراف استفاده میکند.
دريافت سورس برنامه به زبان #C |
1(ها)ضميمه
اين مسئله به وسيله الگوريتم ژنتيک نيز در لينک زير(پاورپوينت سوم) توضيح داده شده است;)
اسلاید های آموزشی الگوریتم ژنتیک در لينک زير هم حل اين مسئله توسط الگوريتم ژنتيک با زبان vb.net قرار دارد: كد:
http://www.sergejusz.com/engineering_tips/queens_ga.htm و کاربر محترم ALI_KH برنامه ي کامل شده را به ما لطف کردند که در ضميمه ميتونيد دريافت کنيد::41: |
1(ها)ضميمه
حل مسئله هشت وزير با آنالينگ شبيه سازي شده
|
هشت وزير با prolog
|
هشت وزير با روش بازگشت به عقب Backtracking
1(ها)ضميمه
فرض کنید که در محلهای به دنبال یک کتاب فروشی خاص میگردیم. این کتاب فروشی در کوچهای قرار دارد که نبش آن یک خواربار فروشی است و همچنین در ابتدای خیابانی که این کوچه قرار دارد یک مدرسه هست.
کاری که برای یافتن این کتاب فروشی میکنیم این است که در این محله ابتدا به دنبال آن خیابان فرعی میگردیم که در ابتدای آن یک مدرسه قرار دارد. سپس در این خیابان به دنبال کوچهای میگردیم که یک خواربار فروشی در نبش آن است. هنگامی که کوچه را یافتیم، اگر در آن کتاب فروشی بود به جواب رسیدهایم وگرنه به خیابان فرعی برگشته و به دنبال کوچهای دیگر میگردیم که یک خواربار فروشی در نبش آن باشد. اگر در این خیابان چنین کوچهای وجود نداشت به خیابان اصلی برگشته و جستجوی خود را با یافتن خیابان فرعی دیگری با یک مدرسه در آن دنبال می کنیم. روالی که برای یافتن جواب در مثال بالا دنبال شد، روش بازگشت به عقب (Backtracking) نام دارد. در این روش همانطور که در مثال مشاهده کردید، در هر زمان که متوجه شدیم مسیر انتخاب شده به جواب نمیرسد، یک مرحله به عقب برگشته و مسیر دیگری را دنبال می کنیم. روش بازگشت به عقب برای آن دسته از مسائلی قابل استفاده است که برای رسیدن به جواب بتوان یک جستجوی سیستماتیک را دنبال کرد. به عنوان نمونه میتوان بهرهگیری از این روش را در بازیهای کامپیوتری، سیستمهای اثبات تئوریها، شبکههای مفهومی، هایپرتکس و ... دید. مثال 8 وزير: چگونه هشت وزیر را بر روی صفحه شطرنج قرار دهیم به گونهای که هیچ یک از آنها مورد تهدید دیگری قرار نگیرد؟ در مقاله زير اين مسئله با استفاده از روش عقبگرد همراه با سورس کد آن کاملاً توضيح داده شده ;) |
درخواست راهنمایی در مورد برنامه تپه نوردی با c#
نقل قول:
|
1(ها)ضميمه
و این هم برنامه ی NQueen که n رو از کاربر می خواد و بعد تمام جوابهای موجود رو چاپ میکنه!:D
با TC اجرا ميشه;) |
یک مثال کلاسیک از عقبگرد، مسئله n وزیر است.
- هدف از مسئله n وزیر ، چیدن n مهره وزیر در یک صفحه شطرنج است ، به طوری که هیچ دو وزیری یکدیگر را گارد ندهند. یعنی هیچ دو مهره ای نباید در یک سطر، ستون یا قطر یکسان باشند. - عقبگرد حالت اصلاح شده ی جست و جوی عمقی یک درخت است. - الگوریتم عقبگرد همانند جست و جوی عمقی است، با این تفاوت که فرزندان یک گره فقط هنگامی ملاقات می شوند که گره امید بخش باشدو در آن گره حلی وجود نداشته باشد. الگوریتم عقبگرد برای مسئله n وزیر كد:
void queens ( index i) |
1(ها)ضميمه
اینم یه برنامه برای الگوریتم عقبگرد که خودم با c# نوشتم
|
سلام کاش یکی پیدا میشد و برنامه n وزیر با الگوریتم ژنتیک توی سی شارپ رو میگذاشت . خواهشا کمک کنید فقط با سی شارپ
|
1(ها)ضميمه
Solving n-Queen problem using global parallel genetic algorithm
|
کد مساله هشت وزیر یا هشت پازل بوسیله الگوریتم زنتیک
با سلام
من به کد این مساله با روش زنتیک لازم دارم یعنی حتما باید با استفاده از توابع ترکیب وجهش در الگوریتم ژنتیک این مساله را حل کنیم لطفا اگر کسی کدشو داره بذاره ممنون میشم |
1(ها)ضميمه
در اين تاپيک که کد هم قرار داره!
queens_ga Eight Queens Puzzle: A genetic algorithm implementation using Java |
1(ها)ضميمه
اینم 8 وزیر با الگوریتم ژنتیک که با ++c نوشته شده
با تشکر از مدير گرامي alijy |
سلام.دوستان عزیز بهتر نبود به جای اینکه این قدر کد برنامه رو بزارین, توضیح در مورد الگوریتم می دادین؟؟؟؟
من که از کدهای نوشته شده چیزی نفهمیدم.توضیح بازگشت به عقب رو هم خوندم ولی اینو خودمم می دونستم.اگر بیشتر در مورد الگوریتم بازگشت به عقب برای حل این مسئله راهنماییم کنین ممنون می شم.اینکه برای حل مسئله چه کارایی باید انجام بدم. ممنون. |
سلام به همه ي علاقه مندان به هوش مصنوعي:25:
بچه ها من تازه واردم :3: يه سوال داشتم فقط بالاغيرتا نگين برو سرچ كن كه قبل ازاينكه شما بگبن سرچيدم، اما نبوده و اون هم اينكه..... كسي ميتونه خط به خط الگوريتم هشت وزير رو توضح بده ؟؟ به همون روش عقبگرد. طراحي الگوريتم پاس كردم ، نفهميدم. هوش هم دارم پاس مي كنم ولي باز هم نفهميدم. ممنون از اينكه م خواين برام توضيح بين:4: |
نقل قول:
من می خواستم کامل توضیح بدم . صفحه قبل را که دیدم... واقعا آنرا ملاحظه کرده اید؟ هشت وزير با روش بازگشت به عقب Backtracking http://artificial.ir/intelligence/thread619.html با شکل و توضیحات کامل ارائه شده بررسی کنید اگه واقعا مشکلی باقی ماند بفرمائید یک پیشنهاد دارم یک صفحه شطرنج بردارید و مهره ها را مرحله به مرحله بچینید |
نقل قول:
void queens ( index i) { index j; if ( promising(i)) if ( i == n) cout << col [1] through col [n]; else for ( j = 1 ; j ≤ n ; j++ ) { col [ i +1 ] = j; queens ( i + 1); } } bool promising ( index i ) { index k ; bool switch; k = 1; switch = true ; while ( k < i && switch ) { if (col [i] == col[k] || abs(col[i] – col[k] == i-k) switch = false; k++; } return switch; } يعني ببينين اينجا منظور از promising وtrue .. چيه؟ فقط شرط آخر رو متوجه شدم كه قطري بودن و.. رو چك مي كنه.:2: |
واي كاش يكي پيدا ميشد و 8 وزير را با زبان جاوا يا سي شارپ با الگوريتم هاي blind و hurrstic search رو به من مي داد:42:
|
سورس 8 وزیر
كد:
|
برنامه ی زیر که به صورت بازگشتی و با روش BackTrack نوشته شده رو میشه به N وزیر به راحتی تعمیم داد:
كد:
|
2(ها)ضميمه
غیر بازگشتی:
كد:
using System; بازگشتی: ( که در اين لينک هم قرار داده شده) كد:
using System; کد طراحی هر دوی آن به یک صورت است: كد:
using System; استفاده از این برنامه به عنوان پروژه درسی مجاز نیست.دوستان تنها مجاز به استفاده از قسمت گرافیک این برنامه هستند. برای پیاده سازی دیگر الگوریتم ها تنها کافیست که یک آرایه 3 بعدی را با الگوریتم تان برگردانید. اندیس اول و دوم این آرایه برای ردیف و ستون صفحه شطرنج در نظر گرفته شده است،و اندیس سوم هم برای ذخیره 92 حالت ممکن در نظر گرفته شده است. دیگر الگوریتم های ممکن را می توانید در همین فارم پیدا کنید. |
جاوا
1(ها)ضميمه
Solving the N-Queens Problem
|
ممنون از لطفت ريحانه جان واقعا متشكرم از لطفتون
دوستاي گلم مرتبه زماني و مكاني دو الگوريتم blind و hurrstic search رو اگر داريد لطف كنيد ممنون ميشم |
حل مساله nوزیر با الگوریتم ژنتیک
لطفا حل کامل مساله n وزیر ( 8 وزیر) را همراه با الگوریتم آن با الگوریتم ژنتیک قرار دهید .
|
ان وزیر
سلام
منم این ترم هوش دارم خواستی مقاله لاتین (ان وزیر) رو با کد پیاده سازی و power point میدم خبر بده؟:112: |
سلام پروژه 8وزیر به روش ژنتیک
با نرم افزار مطلب |
سلام دوستان
کسی میدونه هشت وزیر با الگوریتم تپه نوردی چطور حل میشه؟ گوگل کردم ولی خوب نفهمیدم چی میگن. توضیح کامل میخوام. توضیح : بعد از قرار دادن وزیر ها در روی صفحه به صورت تصادفی و همچنین دادن مقدار با تابع هزینه به هر کدام از خانه های شطرنج چطور باید محل وزیر ها رو تغییر بدیم ؟ |
سلام
لطفا برای منم الگوریتم 8 وزیر با ژنتیک در متلب رو بفرستید. |
سلام از تمامی کسانی که تو این تاپیک زحمت کشیدند خیلی تشکر می کنم
من می خوام n وزیرو با روش ارضای محدودیت(csp) بنویسم. اما نمی دونم چه طوری باید گراف محدودیت شو پیاده سازی کنم. ممنون می شم اگه راهنماییم کنید |
نقل قول:
hi bebinid har vaziri dar har soton hadafi dare hamon makanesh dar har soton mishe yek nod. dar in cod taarif makanharo darim Variables: { Q1, Q2, Q3, Q4 } Domain: { (1, 2, 3, 4), (1, 2, 3, 4), (1, 2, 3, 4), (1, 2, 3, 4) } Constraints: Alldifferent( Q1, Q2, Q3, Q4 ) and for i = 0...n and j = (i+1)...n, k = j-i, Q[i] != Q[j] + k and Q[i] != Q[j] - k. va in algoritm ke baray javab har khane ast bedast miayad ke badan yek csp ast. khat be khatam tozihesh dadam. min-conflicts(csp, max): initial := complete assignment ;jamiyate avaliye for 1..max do: ;az 1 .. akharin khane if initial is a solution: ;if jamiyate tolide javab bod return initial ;barmigardanad var := nextVar() ;da ghire indorat yek motaghair be jelo value := leastConflicts( var ) ;taeein meghdar var := value in initial ;gharar dadan meghdar dar motaghair return failure ;bargash be ebtedaye algoritm inam chandta file pdf ke ke be tartib rajebe Constraint Graph. hame chizo to pdf sharh dade az dast nadahid. http://www.cs.toronto.edu/~fbacchus/Presentations/CSP-BasicIntro.pdf http://www.iiia.csic.es/~pedro/CSP-Introduction.pdf http://www.cs.uwaterloo.ca/~jhoey/teaching/cs486/asst1.pdf http://cse.unl.edu/~choueiry/F09-896-004/Homework/homework4.pdf dar nahayad 2ta pic az backtracking http://www.4c.ucc.ie/web/outreach/backtracking.jpg forwardchecking http://www.4c.ucc.ie/web/outreach/forwardchecking.jpg by |
سلام میشه سورس هشت وزیر به روش بازگشتی در سی شارپ رو بده سریع
|
1(ها)ضميمه
سلام من این معمای هشت وزیر رو با C# نوشتم.
البته خیلی تعداد خطوطش زیاد شده . اما به هر حال میازرم برا دانلود. این برنامه رو با switch-case نوشتم. :18: |
با سلام من برنامه ی 8 وزیرو به زبان سی شارپ می خوام ..خیلی عجله دارم مرسی
|
با الگوریتم ژنتیک
نقل قول:
ضروریه |
نه...:103:
|
نقل قول:
دوستان اگه میشه لطف کنن این برنامه رو که با c++ نوشته شده و در پست بالا گزاشته شده بود (لینک دانلود برنامش : http://artificial.ir/intelligence/at...585-nqueen-zip ) توضیح بدن اصلا طرف چی کار کرده ... تقریبا یه توضیح خط به خط .. واقعا خیلی خیلی ممنون میشم اگه کسی برام توضیح بده یک دنیا ممنون میشم !! |
زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۲:۴۸ بعد از ظهر ميباشد. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.