Gonta Nicolai Conceptele de bază care ne vor ajuta să creăm o simplă joaca de șah sunt următoarele: • mutare generație • evaluarea consiliului • min/max • tăierea beta/alfa • Pentru vizualizarea plăcii vom folosi biblioteca chess.js pentru generarea mișcărilor și chessboard.js .Biblioteca de generare a mișcărilor implementează practic toate regulile șahului. Pe baza acestui lucru, putem calcula toate mutările legale pentru un stat de bord dat.
• Utilizarea acestor biblioteci ne va
ajuta să ne concentrăm numai pe cea mai interesantă sarcină: crearea algoritmului care găsește cea mai bună mișcare. Pasul 2: Evaluarea poziției • Să încercăm acum să înțelegem care parte este mai puternică într-o anumită poziție. Cel mai simplu mod de a realiza acest lucru este să numărați rezistența relativă a pieselor de pe tablă folosind următorul tabel: Pasul 3: Căutam arborele folosind Minima • În continuare, vom crea un arbore de căutare din care algoritmul poate alege cea mai bună mișcare. Acest lucru se realizează folosind algoritmul Min/max. • În acest algoritm, arborele recursiv al tuturor mișcărilor posibile este explorat la o adâncime dată, iar poziția este evaluată la sfârșitul „frunzelor” arborelui. • După aceea, revenim fie cea mai mică sau cea mai mare valoare a copilului la nodul părinte, în funcție de faptul dacă acesta trebuie să se deplaseze alb sau negru. (Adică, încercăm să minimalizăm sau să maximizăm rezultatele la fiecare nivel.) Pasul 4: Tăierea alfa-beta • Tăierea alfa-beta este o metodă de optimizare a algoritmului min/max care ne permite să ignorăm unele ramuri din arborele de căutare. Acest lucru ne ajută să evaluăm arborele de căutare min/max mult mai profund, în timp ce folosim aceleași resurse. • Tăierea alfa-beta se bazează pe situația în care putem opri evaluarea unei părți din arborele de căutare dacă găsim o mișcare care duce la o situație mai rea decât o mișcare descoperită anterior. • Tăierea alfa-beta nu influențează rezultatul algoritmului minimax - îl face doar mai rapid. Pasul 5: Funcția de evaluare îmbunătățită • Funcția de evaluare inițială este destul de naivă, deoarece numărăm doar materialul care se găsește pe tablă. Pentru a îmbunătăți acest lucru, adăugăm la evaluare un factor care ține cont de poziția pieselor. De exemplu, un cavaler din centrul plăcii este mai bun (pentru că are mai multe opțiuni și este astfel mai activ) decât un cavaler de la marginea plăcii. • Vom folosi o versiune ușor ajustată a tabelelor pătrate, care sunt descrise inițial în chess-programming-wiki.. Concepte de bază