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