PDA

View Full Version : سوال: شطرنج



SamaPic
یک شنبه 20 بهمن 1387, 22:46 عصر
با سلام خدمت دوستان عزيز.
من مي خواهم يك بازي شطرنج براي خودم بسازم.
در حال فكر روي الگوريتمش هستم (:متفکر:) ولي نمي دونم چه طور مي شود به برنامه هوش داد تا با هوش خود حركت كند.
نمي دونم عملي مي شود يا نه فقط در حد يك تمرين مي خوام كار كنم.
البته بايد بگويم كه فصل تحويل پروژه تمام شده بنابراين نمي تواند پروژه ي دانشجويي باشد.
ممنون مي شوم راهنمايي كنيد.
باتشكر فراوان.

Jaguar
دوشنبه 21 بهمن 1387, 02:33 صبح
سلام!

معمولا در کتاب های مربوط به هوش مصنوعی میتوانید این موضوع (شطرنج کامپیوتری) را پیدا کنید. شطرنج کامپیوتری سابقه ای به قدمت هوش مصنوعی دارد. نمی خواهم در این مورد مقاله بنویسم ولی همین بس که اگر یک جستجو بنمایید مطالب خواندنی فراوانی پیدا خواهید کرد و میبینید که افراد بسیاری برنامه های شطرنج نوشته اند و تعداد آنها به هزاران عدد می رسد. معمولا از برنامه های شطرنج کامپیوتری به عنوان Chess Engine یاد میشود زیرا خود (معمولا) رابط گرافیکی ندارند و از طریق پروتکلی با رابط ارتباط برقرار می سازند. دو پروتکل معروف winboard و uci نام دارد. انتخاب پروتکل اختیاری است. اما در مورد الگوریتم: معمولا الگوریتم جستجو Negamax همراه با Alpha-Beta pruning است. البته الگوریتم جستجو می تواند گسترش یابد و با تکنیک های و trick های دیگر در هم آمیخته شود به طوری که هر Chess Engine با دیگری متفاوت است. می توانید به برنامه خود یک تابع ارزیابی پیشرفته هم اضافه کنید اما حتی Material Evaluation خالی هم مناسب است. برنامه های زیادی هم به صورت منبع باز وجود دارد مثل: MicroMax ، MSCP ، Crafty که اولی (crafty) بسیار قدرتمند است ولی شاید برای آموزش در نگاه اول سخت تر باشد. mscp برای آموزش بهتر است. micromax کوچکترین برنامه شطرنج جهان از لحاظ تعداد حروف تایپ شده است مثلا به جای اسامی مناسب از اسامی یک حرفی استفاده شده و توابع به صورت Kernigan-Ritchie نوشته شده است ... برنامه شما باید برای انجام عملیات (مثلا تولید حرکات) تدبیری ببیند. اگر خودتان سعی کنید روی این الگوریتم فکر کنید احتمالا سرعت انجام عملیات را بسیار کاهش می دهی و سرعت یکی از عوامل بسیار مهم در شطرنج است. اما الگوریتم های بسیاری برای انجام این کار وجود دارند. معمولا از مجموعه ای از ساختمان داده 64 بیتی به نام bitboard برای نمایش صفحه استفاده می شود اما شاید نصف برنامه ها از این روش استفاده کنند و روش های متداول دیگری نیز وجود دارد. در آخر چند کلید واژه و عبارت گذاشته ام که روی اینترنت می توانید جستجو کنید:

Computer Chess History
Computer Chess Programming Theory
Alpha-Beta Pruning
Quiescence Search
Bitboard
Board representation

و یک سایت خوب و نسبتا پیشرفته در این زمینه:
chessprogramming.wikispaces.com

محمدامین شریفی
یک شنبه 03 خرداد 1388, 10:02 صبح
http://barnamenevis.org/forum/showthread.php?p=728315 (http://barnamenevis.org/forum/showthread.php?p=728315#post728315)