بخشی از مقاله
كامپیوتر چگونه شطرنج بازی میكند؟
درباره موفقیت كامپیوتر در شكست دادن قهرمانان بازی شطرنج حتماً شنیدهاید. به راستی كامپیوتر چگونه شطرنج بازی میكند؟ این سؤال جالبی است.
درباره موفقیت كامپیوتر در شكست دادن قهرمانان بازی شطرنج حتماً شنیدهاید. به راستی كامپیوتر چگونه شطرنج بازی میكند؟ این سؤال جالبی است. به نظر من بهترین پاسخ را میتوانید از برنامهنویسان بازیهای شطرنج كامپیوتری بپرسید.
این مقاله تحقیقی در همین زمینه است. در اینجا كوشیدهام مدل برنامهنویسی شطرنج و شیوه تجزیه و تحلیل بازی از نگاه كامپیوتر را تشریح كنم. اطلاعاتی را كه در اینجا آوردهام، همه از سایت برنامهنویسان بازیهای كامپیوتری، بهویژه برنامهنویسان بازی شطرنج، استخراج شدهاند.
● چرا بررسی شطرنج كامپیوتری؟
ممكن است بپرسید بررسی آناتومی یك برنامه شطرنج اصلاً چه فایدهای دارد؟ پاسخ را در دو سه نكته میتوانم خلاصه كنم. در وهله نخست، بررسی آناتومی یك بازی شطرنج از لحاظ تئوری هوشمصنوعی میتواند نمونه بسیار جالبی از كاربرد این علم تلقی شود. در بسیاری مواقع وقتی گفته میشود هوش مصنوعی، برای بسیاری از مردم واقعاً سؤال است كه این هوش از كجا میآید و چگونه شكل میگیرد. شطرنج یكی از جاهایی است كه میتوانید ببینید چگونه یك سری معادلات ریاضی كه ظاهری ساده، اما باطنی پیچیده دارند، به تدریج در پیچ و خم پردازشهای بعدی مبنای هوشمندی ماشین۱ را فراهم میكنند.
گذشته از این، بررسی مكانیزم شطرنجبازیِ كامپیوتر یك موضوع تأملبرانگیز است و به شما نوعی بینش شبه فلسفی درباره تفاوت رویكرد انسان و ماشین نسبت به نوع خاصی از معماها میدهد. ضمن اینكه، دریچه ذهن شما را به روی برخی اشتباهات رایج ذهن انسان بازمیكند كه منجر به تصمیمگیریهای اشتباه و در نتیجه پیامدهای نامطلوب میشوند. از این رهیافت میتوانید ببینید كه از دیدگاه علمی یكی از نظریههای مربوط به مبنای اشتباهكردن انسان هنگام تصمیمگیری میان گزینههای مختلف چیست.
آگاهی از این مسئله میتواند برای هركارشناس كامپیوتر، آن هم در دنیایی كه یك اشتباه كوچك میتواند به مدد شبكه جهانی اطلاعات در عرض چند ثانیه سراسر كره زمین را درنوردد و همچون ویروسهای مخرب كامپیوتری، پیامدهای وخیمی را ایجاد كند، مهم و آموزنده باشد.
این موضوع نكته دیگری را نیز روشن میكند و آن اینكه، چگونه برنامهنویسان باهوشی كه توسعهدهنده مدل برنامهنویسی شطرنج بودهاند، به منطق این اشتباهات پیبردهاند و سعی كردهاند به كامپیوتر یاد دهند با پیشبینی این اشتباهات، از انسان پیشدستی كند.
جالب اینجاست كه در مدل برنامهنویسی شطرنج، دغدغه كامپیوتر نه سرمایهگذاری روی اشتباهات حریف، بلكه چارهجویی در مورد اشتباهات احتمالی خودش است! از آن جالبتر اینكه، بازی شطرنج جزء بازیهای اصطلاحاً <با اطلاعات كامل> طبقهبندی میشود. بازیهایی كه هر دو طرف دستشان برای یكدیگر رو شده است.
بنابراین، وقتی میفهمیم كه بهرغم اطلاع طرفین از وضعیت مهرههای یكدیگر، این همه پیچیدگی در تجزیه و تحلیل وضعیتهای پیش رو وجود دارد، میتوانید حدس بزنید علت این همه ناكامی آدمیزاد در پیشبینی سرنوشت بسیاری از تحولات چیست؛ آن هم هنگامی كه دست حریف برایش رو نیست.
در نهایت، مطالعه و بررسی مدل برنامهنویسی شطرنج یك تمرین فكری خوب و آموزنده برای همه برنامهنویسان ماجراجوست و می تواند ذهن كاوشگر آنان را بیش از پیش ورزیده كند. به قول معروف، هم فال است و هم تماشا!
● اثر افق
كالبد یك نرمافزار شطرنج از قسمتهای مختلفی تشكیل شده است كه كمی جلوتر خواهم گفت، اما اجازه بدهید برای ورود به بحث، شما را با یكی از چالشهای همیشگی برنامهنویسان شطرنج آشنا كنم تا ببینید كامپیوتر برای موفقیت در یك بازی شطرنج، با چه معماهای غامضی دست و پنجه نرم میكند.
لابد شنیدهاید كه كامپیوتر هنگام شطرنج بازی تا چند مرحله جلوتر را در ذهن خودش مرور میكند و پیامدهای هر یك از حركتهای فرضی را در هر مرحله ارزیابی میكند. واقعاً هم همینطور است.
حالا فرض كنید یك نرمافزار طوری برنامهریزی شده است كه تا هفت مرحله جلوتر را میتواند محاسبه و ارزیابی كند. تصور كنید یك كامپیوتر با استفاده از چنین الگویی ناگهان متوجه شود كه ممكن است در پنج نوبت دیگر مُهرهِ وزیرِ خودش را از دست بدهد و حتماً میدانید مهره وزیر چقدر مهم است.
بنابراین، باید جایی در منطق نرمافزارِ شطرنج، به كامپیوتر گفته شده باشد كه در تصمیمسازی برای حركت بعدی خودت <به وضعیت مهره وزیر اولویت بده.> البته از لحاظ تئوریِ مدرن شطرنج، میتوان پرسید كه آیا واقعاً ارزش یك مهره وزیر در سراسر یك بازی یكسان است؟ و آیا باید یك شطرنج باز در هر شرایطی به حفظ جان این مهره بیش از هر مهره دیگر اهمیت بدهد؟
اگر پاسخ منفی باشد، وضعیت خیلی پیچیدهتر خواهد شد، ولی فعلاً بیایید برای ساده شدن صورت مسئله، فكر كنیم كه منطق تصمیمسازی كامپیوتر چنین باشد.
در آن صورت نتیجه بدیهی این منطق این خواهد بود كه كامپیوتر شروع به بررسی سناریوهای مختلف نجات جان وزیر در پنج نوبت دیگر كند و در این میان به این نتیجه برسد كه بهترین گزینه این است كه مهره اسب خود را در همین نوبت قربانی كند تا با افزودن فلان حركت در نوبت سوم، دستیابی حریف به این هدف را دست كم تا نوبت هشتم به تعویق بیندازد. اما مشكل اینجاست كه این كامپیوتر میتواند تا هفت نوبت جلوتر را محاسبه كند. بنابراین، عملاً تا یك دست دیگر بازی نكند، نمیتواند پیشبینی كند در نوبت هشتم چه اتفاقی خواهد افتاد.