تبلیغات
وبلاگ هوش مصنوعی موسسه آموزش عالی خیام مشهد - روش بازی شطرنج در کامپیوتر - 2

اثر افق‌
كالبد یك نرم‌افزار شطرنج از قسمت‌های مختلفی تشكیل شده است كه كمی جلوتر خواهم گفت، اما اجازه بدهید برای ورود به بحث، شما را با یكی از چالش‌های همیشگی برنامه‌نویسان شطرنج آشنا كنم تا ببینید كامپیوتر برای موفقیت در یك بازی شطرنج، با چه معماهای غامضی دست و پنجه نرم‌ می‌كند.
لابد شنیده‌اید كه كامپیوتر هنگام شطرنج بازی تا چند مرحله جلوتر را در ذهن خودش مرور می‌كند و پیامدهای هر یك از حركت‌های فرضی را در هر مرحله ارزیابی می‌كند. واقعاً هم همین‌طور است.

حالا فرض كنید یك نرم‌افزار طوری برنامه‌ریزی شده است كه تا هفت مرحله جلوتر را می‌تواند محاسبه و ارزیابی كند. تصور كنید یك كامپیوتر با استفاده از چنین الگویی ناگهان متوجه ‌شود كه ممكن است در پنج نوبت دیگر مُهرهِ وزیرِ خودش را از دست بدهد و حتماً می‌دانید مهره وزیر چقدر مهم است. بنابراین، باید جایی در منطق نرم‌افزارِ شطرنج، به كامپیوتر گفته شده باشد كه در تصمیم‌سازی برای حركت بعدی خودت <به وضعیت مهره وزیر اولویت بده.> البته از لحاظ تئوریِ مدرن شطرنج، می‌توان پرسید كه آیا واقعاً ارزش یك مهره وزیر در سراسر یك بازی یكسان است؟ و آیا باید یك شطرنج باز در هر شرایطی به حفظ جان این مهره بیش از هر مهره دیگر اهمیت بدهد؟

اگر پاسخ منفی باشد، وضعیت خیلی پیچیده‌تر خواهد شد، ولی فعلاً بیایید برای ساده شدن صورت مسئله، فكر كنیم كه منطق تصمیم‌سازی كامپیوتر چنین باشد. در آن صورت نتیجه بدیهی این منطق این خواهد بود كه كامپیوتر شروع به بررسی سناریوهای مختلف نجات جان وزیر در پنج نوبت دیگر كند و در این میان به این نتیجه برسد كه بهترین گزینه این است كه مهره اسب خود را در همین نوبت قربانی كند تا با افزودن فلان حركت در نوبت سوم، دستیابی حریف به این هدف را دست كم تا نوبت هشتم به تعویق بیندازد. اما مشكل اینجاست كه این كامپیوتر می‌تواند تا هفت نوبت جلوتر را محاسبه‌ كند. بنابراین، عملاً تا یك دست دیگر بازی نكند، نمی‌تواند پیش‌بینی كند در نوبت هشتم چه اتفاقی خواهد افتاد.

از دیدگاه كامپیوتر، عدم روِیت یك معضل در افق دیدش به معنی نبودن آن معضل است. بنابراین، وقتی با انجام‌دادن یك حركت می‌توان آن معضل را تا عمق هفت مرحله از میدان دید خارج كرد، شاید به این معنی باشد كه مشكل حل شده است، ولی چنین نیست. چون در همان گام اول یك اسب فدا می‌شود، یك نوبت بازی انجام می‌شود و دوباره همان مشكل (تهدید شدن وزیر) در افق دید كامپیوتر ظاهر می‌شود. پس مشكل حل نشد و كامپیوتر اشتباه كرد.

<اثر افق> در شطرنج كامپیوتری كه اولین بار توسط هانس برلینر مطرح شد، از این جهت جالب است كه به‌گونه طنزآمیزی تبلور ماهیت بعضی از خطاهای انسانی نیز هست. به راستی خیلی از ما آدم‌ها دقیقاً به دلیل همین كوته‌بینی، اشتباه می‌كنیم. یعنی بارها در زندگی تصور می‌كنیم وقتی مشكلی در افق دیدمان نیست، یعنی آن مشكل وجود ندارد؛ در حالی كه مشكل وجود دارد و كافی است یك گام به جلو برداریم تا آن را ببینیم، ولی تا آن گام را برنداریم، از دیدنش ناتوان هستیم. درست مثل زمانی كه یك بطری نوشابه گازدار را ناگهان بدون حضورذهن باز می‌كنیم و تازه وقتی آن را باز كردیم و گازش بیرون جهید و پیراهنمان را كثیف كرد، یادمان می‌افتد كه باید در بطری را آرام باز می‌كردیم.

اولین درسی كه از اثر افق می‌توان گرفت این است كه پیدا كردن وضعیتی كه نرم‌افزار بتواند قدرت نسبی نیروها را در وضعیت كنونی سبك و سنگین كند، اصلاً خیلی مهم نیست؛ زیرا این ارزیابی ماهیت پویا بودن نیروها را در طول زمان درنظر نگرفته است. ارزیابی كنونی به درد آرایش كنونی می‌خورد، ولی چون لحظه بعد آرایش نیروها عوض می‌شود، ارزیابی كنونی شاید به كلی بیهوده باشد!!

به زبان ریاضیات مهندسی، می‌توان گفت كه وقتی شرایط اولیه یك معادله ریاضی ثابت باشد، یك كامپیوتر می‌تواند این معادله را هرچند هم پیچیده باشد، به سادگی حل كند. اما اگر بلافاصله در ثانیه بعدی شرایط اولیه تغییر كند، آن هم تغییری كه خودش تابعی از چگونگی اولین برخورد شما با معادله است، در آن صورت حل این معادله ممكن است از لحاظ نظری تا بی‌نهایت به تعویق بیفتد.

درس دیگری كه از این پدیده می‌توان گرفت این است كه دنبال كردن خط سیر تحولات در هرجهت تا عمق x مرحله كار بیهوده‌ای است. بعضی از مسیرها مهم‌ترند. این مسیرها را باید تا عمق مثلاً ده یا پانزده نوبت بازی دنبال كرد و بعضی دیگر را باید تا عمق پنج مرحله دنبال و بعد از آن را رها كرد. اشتباه است اگر همه مسیرها را تا عمق مثلاً هفت نوبت دنبال كنیم. در این صورت چگونه باید تشخیص دهیم كدام مسیر اهمیت استراتژیك بیشتری دارد و كدام‌یك از مسیرها كم اهمیت‌تر هستند؟

این چیزی است كه یك انسان هوشمند گاهی به صورت خودآگاه و گاهی ناخودآگاه انجام می دهد. به همین دلیل وقتی مثلاً شیئی را در اتاقمان گم می‌كنیم، تمام اتاق را به شعاع سه متر زیر و رو نمی‌كنیم. این كار نادرست است. پس با خود می‌گوییم كجاها را باید دقیق‌تر بگردیم؟ كجاها را باید یك نگاه سطحی بیندازیم؟ شما از كجا می‌فهمید برخی مناطق داخل اتاقتان اهمیت بیشتری برای پیدا كردن یك شی گمشده دارد؟

نوعی از هوش مصنوعی در بازی شطرنج به همین ترتیب شكل می‌گیرد. در واقع این هوش مصنوعی بیشتر معطوف به هوشمندی در انتخاب مسیرهای مهم‌تر برای دنبال كردن تحولات هستند. خوشبختانه چندین الگوریتم ریاضی جالب تاكنون عرضه شده‌اند تا بتوان اثر افق را شكست داد و ماورای آن را دید. بسط‌های ویژه Deep Blue از جمله همین الگوریتم‌ها هستند. (احتمالاً بلافاصله می توانید حدس بزنید چرا كامپیوتر Deep Blue سرانجام توانست كاسپاروف، قهرمان جهانی شطرنج، را شكست دهد.)

آناتومی یك نرم‌افزار شطرنج‌
اثر افق یك موضوع مهم در معماری فكری یك نرم‌افزار شطرنج است، ولی تمامِ مسئله‌ای نیست كه كامپیوتر باید حل كند. اثر افق فقط یك جنبه از مشكلات تكنیك‌های جست‌وجو است و تكنیك‌های جست‌وجو یكی از چهار ستون اصلی هر نرم‌افزار شطرنج هستند. كامپیوتر باید به حل سه مسئله محوری دیگر نیز فكر كند: چیدمان مهره‌ها، تولید حركت، و ارزیابی، به ترتیب سه موضوع مهم دیگری است كه هر نرم‌افزار شطرنج باید به آن فكر كند و در ادامه نیز به بررسی این چهار ركن می‌پردازیم.


چیدمان مهره‌ها
چیدمان مهره‌ها، عبارت است از تصویرسازی كامپیوتر از صفحه بازی. كامپیوتر چگونه باید صفحه بازی را <ببیند>؟ چگونه باید بفهمد این مهره‌ها كجا هستند؟

چگونه باید فهمید الان پنج مهره سیاه، هفت مهره سفید را تهدید می‌كنند؟ نرم‌افزارهای شطرنج عمدتاً از تكنیكی به نام bitboard برای دیدن صفحه بازی استفاده می‌كنند.

بیت بورد كه ظاهراً اختراع شطرنج بازان شوروی سابق است، متشكل از یك آرایه 64 بیتی است كه متناظر با 64 خانه شطرنج درنظرگرفته شده‌اند.

نرم‌افزارهای امروزی شطرنج از تعداد بسیار زیادی بیت‌بورد برای به تصویر كشیدن وضعیت مهره‌ها در ذهن خود استفاده می‌كنند. هر بیت از این آرایه ممكن است صفر یا یك باشد. وضعیت <یك> به معنی اشغال بودن خانه و وضعیت <صفر> به معنی خالی بودن خانه متناظر در صفحه شطرنج است. مثلاً یك بیت‌بورد ممكن است مربوط به خانه‌هایی باشد كه توسط فیل سیاه اشغال شده‌اند. یك بیت بورد دیگر ممكن است مربوط به خانه‌هایی باشد كه مهره‌های سفید،‌ مهره‌های سیاه را مورد حمله قرار داده‌اند و یك بیت بورد دیگر نشان دهد اسبی كه در خانه 4e قرار دارد، كدام خانه‌ها را زیر نفوذ خود دارد


  • آخرین ویرایش:-
آخرین پست ها