Sakk algoritmus
történelmi áttekintés A sakkprogramozás hosszú ideje kihívást jelent az emberiség számára. Már a 18. században szenzációt jelentett Kempelen Farkas „A Török” nevű gépezete, amely kitűnő eredménnyel győzte le kihívóit - sajnos később azonban kiderült, hogy a gép egy emberi játékost rejtett magában, így ez még nem a sakkprogramozás igazi kezdete volt.
A gondolkodó gép nagyon népszerű elképzelés volt már ebben az időben is, és a tudósok úgy gondolták, hogy a sakkozás problematikája megfelelő kihívás az intelligens számítógépek számára. Egy angol tudós, Alan Turing 1947-ben megírta az első sakkozni képes programot, de számítógép híján toll és papír segítségével tesztelte. ’49-ben Claude Shannon leírta a máig használt alapvető algoritmusokat. az ’60-es években készített sakkprogramok már képesek voltak legyőzni egy amatőr játékost. 1967-ben indult el először sakkversenyen számítógép. A ’70-es évektől gép-gép sakktornákat indítottak, amely a tudósokat tovább ösztönözte. Ekkorra kialakult a két alapvető megközelítés: tudás-alapú és “brute force” jellegű. 1977-ben a Belle nevű eszköz már 160.000 pozíciót vizsgált másodpercen- ként. Ekkor megjelentek a máig használt algoritmusok elődei is. A ’90-es években egyre több különböző mikroprocesszorra épülő sakkozó gép készült és már nagymester szintű játékosokkal is összemérték tudásukat. Az igazi nagyon áttörést az IBM által fejlesztett Deep Blue jelentette, amely az első ember által készített gép volt, amely megverte az aktuális sakkvilágbajnokot. Az 1997-es Kasparov elleni győzelem bebizonyította, hogy a számítógépek jobb sakkjátékosok lehetnek, mint bármely ember.
Minimax Tegyük fel, hogy van arra mód, hogy minden egyes pozícióról eldönthetjük, hogy az melyik játékosnak kedvez. Ha a pozíció A játékosnak kedvez, akkor az valamilyen pozitív számmal értékelhető, ha B-nek, akkor negatívval. Ha mindkettőnek ugyanolyan jó, akkor az értelem szerűen 0 pont. A kiindulóállapot “döntetlen”, azaz 0 pont. Innen minden játékos hozzáadhat vagy kivonhat pontokat. Az A játékos célja, hogy maximálja, a B játékosé, hogy minimálisra leszorítsa a pontokat. A keresés során minden lehetséges lépéssort egy számmal értékelünk, majd a legoptimálisabbat kiválasztjuk. A probléma ezzel, hogy a keresési tér hatalmas, azaz rengeteg féle lépés létezik, hiszen a keresés komplexitása exponenciális.
Lépések kiértékelése A legegyszerűbb megoldás az úgynevezett „Material Balance” módszer, amely egyszerű. A cél, hogy a bábuink értéke maximális legyen, valamint, hogy az ellenfélnek minél nagyobb veszteséget okozunk.