Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Ako algoritmizovať šachové myslenie?

Včera som hľadal trochu na nete a našiel som nejaké open source šachové programy. Tie sú ale trochu zložité. Je tam veľa súborov a na pohľad človek nevie, na čo je ktorý. Ja by som chcel nejaký algoritmus pre vyhľadanie optimálneho ťahu v šachu. Je možnosť niečo také nájsť? Nemusí to byť naprogramované, stačí aj popis. Najlepšie by bolo, keby v SK alebo CZ jazyku, ale môže byť aj EN. Mám nejakú predstavu, ako by mal algoritmus vyzerať, ale len skôr ako štruktúru. Zaujímalo by ma aj nejaké riešenie. Nie že by som sa chystal naprogramovať šachový program, len ma zaujíma, ako to všetko je naprogramované. Prípadne, či máte niekto konkrétne skúsenosti s nejakým šachovým algoritmom. Tiež by ma zaujímal algoritmus, ktorý sa sa sám učil na svojich chybách. Raz bol podobný samoučiaci algoritmus spomenutý na živě, ale ten sa týkal tuším počítačovej dámy (pohyb dámy len o jedno políčko). No a ešte je tu druhá možnosť.

Tou možnosťou je dekompilácia JAR (alebo JAD?) súboru. Mám totiž jedny šachy ako Java aplikáciu a keby sa podarilo dekompilovať program, možno k niečomu dojdem. Pokiaľ sa nemýlim, v Java programoch ostávajú všetky identifikátory a kompilácia je v skutočnosti len príprava pre šikovnejší interpréter.

Předmět Autor Datum
Možná tady: tisk.asp
Tomix 29.11.2006 19:27
Tomix
Až sa čudujem, že som to včera nenašiel. Toľko odkazov mi prešlo Firefoxom. Ďakujem. Vyzerá to viac…
msx. 29.11.2006 19:29
msx.
Dobre, takže článok je vinikajúci, ale chýba tam viac o šachovom algoritme. To, čo je tam napísané s…
msx. 29.11.2006 19:57
msx.
pokud vim, tak deep blue srovnaval tahy s databazi odehranych sachovych partii a kalkuloval uplne vs…
JR_Ewing 29.11.2006 19:32
JR_Ewing
To znie lákavo, ale ja hľadám niečo čo si bude samé hľadať ťahy. Ako tak pozerám link kolegu, tak zi…
msx. 29.11.2006 19:45
msx.
Sach som robil ako zadanie na vyske, aj vedel rozmyslat (aj ked porazit ho nebol problem). :-D Jeden…
MM.. 29.11.2006 19:53
MM..
Áno, presne tak si to predstavujem. Hlavne neviem ako určovať váhu. Ide mi o toto: 1. Branie a výme…
msx. 29.11.2006 20:09
msx.
Tak analyzuj sachove turnaje a vytvor si nejake vahy, vymysli, to je predsa ta tvoriva/vyvojova cinn…
MM.. 29.11.2006 20:22
MM..
No ide mi presne o reakcie typu P.S.2, teda nie o to, že povieš, toto urob takto, toto takto. Hlavne…
msx. 29.11.2006 20:55
msx.
Ved pisem kukni google, na slova chess algorithm toho musi najst tony. Ono taketo veci (umela inteli…
MM.. 29.11.2006 22:43
MM..
theory.html
MaSo 29.11.2006 21:55
MaSo
Na túto stránku som sa nejakými preklikmi dostal už predvčerom. Beowulf mi je nejaký známy a vidím a…
msx. 30.11.2006 07:02
msx.
Výborný odkaz.
msx. 30.11.2006 21:14
msx.
Pomocou Translatora a vlastného rozumu som trochu porozumel algoritmum MiniMax a AlfaBeta a hľadal s… poslední
msx. 01.12.2006 23:28
msx.

Dobre, takže článok je vinikajúci, ale chýba tam viac o šachovom algoritme. To, čo je tam napísané som vlastne už vedel. Akurát, že tam som sa dozvedel aj koľko strojového času to zaberie.

Edit 1: Aha, pri otvorení hlavnej stránky som našiel aj štvrtý diel. Prečítam si ho teda.

Edit 2: Aha, takže 4. diel nie je to, čo som čakal.

Sach som robil ako zadanie na vyske, aj vedel rozmyslat (aj ked porazit ho nebol problem). :-D
Jeden sposob (relativne jednoduchy) je, ze vyskusas vsetky mozne tahy a kazdemu priradis nejaku "vahu" t.j. aky "dobry" je ten tah (ako urcit tuto hodnotu je trochu veda, to si vymysli sam, tip: sach-mat ma vahu 0x7FFFFFFF :-D), potom vyskusas vsetky mozne protivnikove tahy a zas tvoje a tak do hlbky, podla "urovne" na ktorej ma ten automat hrat, a nakoniec si vyberes jeden tah s najlepsou "vahou". Lepsie algoritmy hodnotia mozno aj tahy supera a prip sa nejakym sposobom "ucia", to je predsa tvoja uloha (ako analytika) ze ako riesit nejaky problem. Naprogramovat to zvladne kazdy, ak mu povies ako ;-)

Na google urcite budu o tom tony, skus hladat: chess algorithm.

Áno, presne tak si to predstavujem. Hlavne neviem ako určovať váhu. Ide mi o toto:

1. Branie a výmena figúrok
2. Akú váhu priradiť šachu (check)
3. Ako zistím, že daný ťah je lepšie zahéodiť, hoci bude mať možno podľa mojich pravidiel rovnakú váhu? Ide o to, že aké pravidlá a situácie do algoritmu pridať, zatiaľ mám len vyššie dve. Samozrejme aj na to som myslel, že mat má váhu ťažkého kalibru.;-)

Napríklad mám šach v telefóne a ten je často v nízkej obtiažnosti ochotný obetovať ľahkú figúrku len za to, že mi dá šach. Tiež som bol prekvapený, keď som ohrozil jeho postavenie (v ďalšom ťahu šach a v nasledujúcom branie) a on sa ani nebránil. Stačilo na mňa zaútočil dámou. Môj ťah by šachisti zaznačili s pridaním ?! za ťah. Čiže nesprávne nastavené váhy. Zaujíma ma hlavne to, čo všetko zohľadniť a aká bude výsledná rýchlosť.

Tak analyzuj sachove turnaje a vytvor si nejake vahy, vymysli, to je predsa ta tvoriva/vyvojova cinnost. Ak ti niekto napise ze sach =5 a vyhodenie damy = 38, a ty to zapises do programu, tak a) nie je to ziadna tvoriva cinnost, b) napisat do programu to mohol uz ten co ti povedal tie cisla :-)
Ak chces nieco tvorit, musis rozmyslat. Najprv si ale treba precitat to co uz je vymyslene, na to je dobry google, v niektorych pripadoch aj nejake stranky patentovych uradov :-)
P.S. Ja som tie vahy zadefinoval len tak zhlavy, prip. potom upravil skusmo, bolo to len zadanie takych sme mali 5 za semester nemal som cas nad tym moc uvazovat :-)

P.S.2. samotny sach (myslim tym poziciu "sach", ked das superovi sach) nie je nijak vynimocny (nic superovi nevezme), akurat ho donuti urobit jeden z niekolko malo tahov, a to by mal ten program prehodnotit v dalsich "vnoreniach" ze ci po tom superovom tahu (on vela moznosti nema) ake mas potom moznosti ty, ci mu mozes nieco vyhodit apod.

No ide mi presne o reakcie typu P.S.2, teda nie o to, že povieš, toto urob takto, toto takto. Hlavne, čo zvažovať, čo nie je až tak podstatné a podobne. V jednej knižke (Skúsiš to S BASICom) bol algoritmus dámy. Presne som mu nerozumel (nešiel som do detailov), ale tiež tam všetko záležalo od váhy a bral sa do úvahy len jeden ťah. Hralo to celkom obstojne, že som vytvoril aj pekné grafické prostredie pracujúce s myškou. Ale to boli ešte 8 bitové časy. Potom som urobil už v DOSe tri obtiažnosti v hre Alma (princíp si požičala známa hra Hexxagon) a tam som to robil tak, že najnižšie obtiažnosť zistila, kedy prefarbí najviac kameňov, stredná zistila, po akom svojom ťahu urobím ťah, kde zoberiem čo najmenej kameňov ja a najvyššia už neviem. Viem len toľko, že to bolo hrateľné vcelku na úrovni.

Ved pisem kukni google, na slova chess algorithm toho musi najst tony. Ono taketo veci (umela inteligencia napr. v hrach) je cela veda, rozmyslaju o tom kdekade kdejake kapacity, na univerzitach atd. Niektore algoritmy su lepsie ine horsie, a u tych horsich potom vznikaju veci ako napr. "sialeni policajti" v hre Driver, kto si tu hru pamata vie o com pisem :))

Na túto stránku som sa nejakými preklikmi dostal už predvčerom. Beowulf mi je nejaký známy a vidím aj navštívené odkazy na tejto stránke. Zvláštne však je, že si tú stránku vôbec nepamätám, že by som ju vôbec otvoril. Pamätám si len nejakého Beowulfa a jeho algoritmus, nič viac. Zrejme som bol taký ospalý, že som si ani neuvedomil, kam klikám.

Pomocou Translatora a vlastného rozumu som trochu porozumel algoritmum MiniMax a AlfaBeta a hľadal som ďalej na Google. Tu je výsledok:

article.php

P.S.: Odklaz pre MM: Ja som sa vyššie pýtal na to, čo treba brať do úvahy, nie na to, ako ohodnotiť ťahy bodmi. To som ti samozrejme vysvetlil. No a v anglickom článku spomenutom vyššie sa píše o bodovaní pozície kráľa, bodovaní strelcov ku koncu hry, bodovanie okupovania políčok blízko stredu a podobne, čiže to sú odpovede na moje otázky. No a hlavne, ďakujem aj za tvoj čas.

Edit: Ak si nájdem čas, tak vytvorím šachový program na spôsob hry Colossus Chess pre Sharp MZ-800 (desuško 8-bitový).

Zpět do poradny Odpovědět na původní otázku Nahoru