ايده ي خيلي خوبي هست!
خوب براي نوشتن يك هوش مصنوعي براي بازي TicTacToe كه حالت ساده ي اون يك XO سه در سه و دو بعدي هست راه هاي متفاوتي ارائه شده!
احتمالاً همه ي ما قوانين اون رو بلد هستيم. پس فكر نكنم نيازي به ذكر قوانين اون باشه.
در اين بازي كامپيوتر بايد در هر مرحله يكي از خانه هاي جدول 3 در 3 رو انتخاب كنه، در اين انتخاب بايد اين قوانين رو به ترتيب رعايت كنه:
- در صورت امكان خانه اي رو انتخاب كنه كه بازي با برد خودش به اتمام برسه.
- در صورتي كه در حالتي قرار داره كه در حركت بعد طرف يك رديف را پر خواهد كرد، آن خانه را به منظور بلوك كردن رقيب انتخاب كنه.
- حالاتي كه در دو حركت بعد ممكن هست دو راهه بشرو پيدا كنه و حركتي انجام بده كه از اين موضوع جلوگيري كنه.
- هر حركت ممكني كه وجود داره انجام بده.
خوب در صورتي كه راهي پيدا كنيم كه به ترتيب اين مراحل رو بتونه انجام بده هيچ وقت نخواهد باخت. براي اجراي همچين الگوريتمي راه هاي مختلفي هست.
اولين راه حل كه شايد به ذهن همه ي ما برسه استفاده از Hardcoding هست. يعني با تعدادي if و else اين كار رو انجام بديم! اين كار در اين بازي ممكن هست چون تعداد حركات ممكن محدود هست.
راه هاي ديگه اي كه ارائه شدند متود هاي Alpha-beta pruning و Minimax و تشكيل يك lookup table هستند.
راه ديگري كه اين روز ها خيلي در هوش مصنوعي بازي ها استفاده مي شه روش Reinforcement learning و Q-Learning هست. اين روش بر مبناي تنبيه و تشويق كامپيوتر هست. يعني در نهايت (يا وسط) بازي با توجه به نتيجه كامپيوتر يا تشويق يا تنبيه مي شه و كامپيوتر سعي مي كنه به بيشترين ميزان تشويق بشه و كمترين ميزان تنبيه بشه.
حالا شما بگيد كدوم روش رو بررسي كنيم. يا اگر روش ديگه اي به ذهنتون ميرسه ارائه بديد.