Rybka

20. 09. 2008


Novoborský server  http://www.novoborsky-sk.cz/
Uveřejnil 20.8.-22.8.2008 sérii mých tří článků Rybka, Rybka, Rybka...
Dodatky jsem shrnul v textu Rybka do hloubky, který vyšel 4.9.2008.
Zde je kompletní znění všech článků včetně diskuze čtenářů.

Rybka, Rybka, Rybka...
Emil Vlasák  www.vlasak.biz

Šachový software do roku 2005

I největší géniové královské hry, jako Tal, Fischer nebo Kasparov, museli projít jakýmsi učňovským obdobím. V té době dozrávali a zároveň ostatní šachisté dostali čas přijmout příchod nové hvězdy. Těžko si představit, že by se náhle objevil neznámý pětadvacetiletý hráč, který najednou hned od začátku poráží všechny etablované velmistry. Podobnou vývojovou křivku mají i šachové programy; musí se několik let piplat a dolaďovat na turnajích, než proniknou do špičky.

Končí rok 2005 a ve světě šachového softwaru je ještě klid a pořádek. Vedoucí postavení drží programy Junior (A. Ban, S. Bushinsky, Izrael) a Shredder (S. Mayer-Kahlen řečený SMK, Německo). Nahlédnutím do přiložené tabulky mistrovství světa se můžete přesvědčit, že právě tyto dva – mimochodem velmi rozdílné – programy si v posledním desetiletí téměř výhradně rozdělují světový titul.

Rok

Název

Místo

Pořadí

10/1995

13.WMCCC

Paderborn, GER

MChess, Genius, Ferret

05/1995

8.WCCC

Hong Kong HKG

Fritz, Socrates, Frenchess

10/1996

14.WMCCC

Jakarta, INA

Shredder, Ferret, Nimzo

10/1997

15.WMCCC

Paříž, FRA

Junior, Virtual chess, Shredder

06/1999

9.WCCC

Paderborn, GER

Shredder, Ferret, Fritz

08/2000

17.WMCCC

Londýn, GBR

Shredder, Fritz, Rebel

08/2001

18.WMCCC

Maastricht, NED

Junior multi, Quest,  Shredder single

07/2002

10.WCCC

Maastricht, NED

Junior, Shredder, Brutus

11/2003

11.WCCC

Graz, AUT

Shredder, Fritz, Junior

07/2004

12.WCCC

Ramat-Gan, ISR

Junior, Shredder, Diep, Fritz

08/2005

13.WCCC

Reykjavík, ISL

Zappa, Fruit, Sjeng, Shredder

05/2006

14. WCCC

Turin, ITA

Junior, Shredder, Rybka

06/2007

15.WCCC

Amsterdam, NED

Rybka, Zappa, Loop

10/2008

16.WCCC

Beijing, CHN

???

Mistrovství světa od roku 1995.

Číslování je poněkud zmatené, kromě WCCC (World Computer Chess Champ) existovala  kategorie mikro (WMCCC). Oba turnaje nakonec splynuly.

Rybka přichází

Dne 30.11.2005 se na známém americkém diskusním fóru TalkChess objevuje následující příspěvek (samozřejmě anglicky):  

Můj motor Rybka bude dokončen za týden nebo dva a je o 90-150 ELO silnější než Shredder. Testeři mohou dostat beta verzi. Z Budapešti zdraví Vass.

Takových senzací jsem v životě zažil; nicméně napsali jsme, dostali a ono to opravdu fungovalo! Ano, naprosto neznámý program, který se ještě nenaučil slabé proměny a má až směšné mezery v koncovkách, ve střední hře doslova smetl veškerou konkurenci.
Západní svět se bleskurychle naučil nové slovanské slovo; ruští emigranti všem ochotně vysvětlili, že Rybka znamená „small fish“.

Kdo je Vašík?

Na webu jsem tehdy napsal, že jde nepochybně o klon Fruitu, silného programu, ke kterému autor dává zdrojový kód. K mému překvapení jsem obdržel mail od autora, který toto tvrzení popírá. Navíc mne lehce lámanou češtinou informuje, že je Vašík Rajlich, a jeho děda byl dlouholetým předsedou šachového oddílu v Táboře.

Rychle se ukázalo, že Vašík není žádným nýmandem. Narodil se v USA v roce 1971 českým rodičům, kteří byli vysoce kvalifikovanými matematiky; otec později pracoval v počítačích. Hned po narození se vrátili do Prahy, ale po 11 letech se stěhují zpět do USA. Vašík studoval počítače na legendární MIT (Massachusetts Institute of Technology, Boston), kde se v šedesátých letech minulého století prováděly první experimenty se šachovým programováním. Později pracuje jako softwarový vývojář pro Texas Instrumentes a Ford a ve firmách v Německu. V letech 1997-2003 se intenzivně věnuje šachové hře, kde získal titul mezinárodního mistra (ELO FIDE kolem 2300 s maximem 2384 v roce 2002).

Koncentrace programátorské a šachové kvalifikace Vašíka tedy zřejmě předčí jakoukoli konkurenci; SMK je sice vystudovaným informatikem, ale závodně hrál pouze na klubové úrovni.

Od roku 2003 vyvíjí Vašík dva roky v Maďarsku na plný úvazek svůj šachový program; financování celé záležitosti zůstává jednou ze záhadných stránek Rybky.

Když už jsme u curriculum vitae, v roce 2006 se Vašík po pětileté známosti žení v Polsku s Iwetou Radziewicz (nar. 1981), ženskou velmistryní; nyní ji najdete na ELO listině jako Rajlich (2417).

 

Vašík vpravo se svým největším soupeřem SMK na Livingstonu960

Vývoj Rybky v kostce

Ještě v roce 2005 začal Vašík Rybku prodávat, přičemž zboural několik zaběhlých zvyklostí.  Opovrhl zavedenými distributory a dodával výhradně jen UCI motor na svém webu www.rybkachess.com. Dále prohlásil, že běžný roční vývojový cyklus je příliš pomalý a nabídl za cenu Rybky sérii updatů. V některých okamžicích z něj byli sběratelé a testeři doslova na mrtvici. Večer spustili turnaj s verzí 1.2 „i“ a do rána byla ke stažení „j“ a „k“.

Kromě herních motorů byl od verze 1.0 dodáván a příležitostně vylepšován také tzv. WinFinder.

Win není obligátní zkratkou všudypřítomných Windows, ale znamená také anglicky výhru. WinFinder je tedy specializovaný „hledač výhry“. Není to žádná převratná novinka, podobné nastavení měl třeba už Rebel. Když prostě programu prozradíte, že v pozici je kombinace, jde její nalezení výrazně rychleji. V Rybce 3 je celá záležitost dovedena k dokonalosti. Je možné jí totiž „zavelet“, aby se zabývala jen tahy s určitým hodnocením.

Stručnou historii vývoje si můžete prohlédnout v přiložené tabulce.

Datum

Verze

poznámka

11/2005

beta

první zmínky

12/2005

1.01 beta

řada pořadových čísel bety

03/2006

1.1

 

05/2006

1.2i až n

1.2i je 1.2f odolná proti  ilegální pozici
1.2n je 1.2i, umí libovolný počet variant

06/2006

2.0 beta

 

07/2006

2.1

 

08/2006

2.1+Encyklopedie

první krabice od Convekty

11/2006

2.2

 

12/2006

2.2n

od 08/2008 zdarma

02/2007

2.3

ohlášena PocketRybka

06/2007

2.32

velmi používaná verze

08/2008

3.0

mnoho distributorů

Historie verzí Rybky

 Tabulka ukazuje,  že Vašík poměrně rychle opustil své původní ideály a  zabočil do vyjetých kolejí. Začalo to zpožďováním updatů, což je v softwaru naprosto běžný jev. Dohoda s Convektou pak znamenala, že se Rybka objevila na trhu i v klasických krabicích na CD/DVD. Rybka byla integrována do prostředí ve stylu ChessAssistanta, krabice často obsahovala další produkt, například přibalenou Encyklopedii zahájení.

Bohužel  „convekťácké“ rozhraní je poměrně komplikované a málo intuitivní a když k tomu připočteme absenci češtiny a českého manuálu, řada našich šachistů měla problémy tyto produkty používat.

Krabicové verze byly také špatně slučitelné s rychlými updaty. V červnu 2006 skončila verze 2.x a začalo čekání na verzi 3.0, které trvalo déle než rok.

V nedohlednu je zatím dlouho slibovaná verze pro PocketPC. Convekta už měla připravené rozhraní, ale nakonec jí došla trpělivost a v lednu 2008 ho začala prodávat jako PocketChampion s poměrně slabým motorem Delfi.

 Počítačové turnaje a zápasy

Hned při uvedení se Rybka bezpečně usadila v čele počítačových ELO listin. Někteří testeři evidují poctivě všechny verze a je vůbec problém uvidět na první stránce jejich seznamů nějaké jiné jméno.

Tzv. „švédská“ listina SSDF, která léta provázela počítačový šach, je v hluboké krizi, jak se přesvědčíte nahlédnutím na http://ssdf.bosjo.net/. Směrodatné jsou dnes

CEGT http://www.husvankempen.de/nunn/  a

CCLR http://www.computerchess.org.uk/ccrl/404/

V počítačových turnajích ale Rybka až tak suverénní není. Malý počet partií a sportovní štěstí totiž pořád dokáže převahu Rybky kompenzovat.

Tak na mistrovství světa 2006 byla Rybka předstižena po prohře se Shredderem.  Spike pokořil Rybku v Thürlingenu 2006 a Hiarcsu se to povedlo hned dvakrát – na významných turnajích v Paderbornu 2007 a Thürlingenu 2008.

Největším neúspěchem je určitě prohra v prestižním zápase se Zappou v Mexiku. Tady Rybka nejspíš doplatila na opakované použití dlouhé varianty ve španělské, která jí moc nesedí.

Paradoxní je, že  tento nepodařený zápas si musel Vašík těžce vybojovat. FIDE chtěla původně – paralelně s mistrovstvím světa mužů – uspořádat zápas Junior-Fritz. Vašík ale v otevřeném dopise namítl, že je mistrem světa a vede všechny prestižní počítačové ELO listiny. Navíc nabídl  cenový fond 100.000 USD pro program, který Rybku porazí, když dostane bod náskok.

Dopis vyvolal značnou pozornost a nemohl být ignorován. Následovala jednání o podmínkách zápasu Rybka-Junior. Ta však uvázla na neshodě, zda je nutné paralelní počítač Juniora stěhovat do Mexika. Nakonec se (naneštěstí pro Vašíka) hrálo se Zappou a (naštěstí pro Vašíka) za normálních podmínek o nízký honorář.

Datum

Turnaj

Výsledek

Poznámka

12/2005

15.IPCCC Paderborn

1.Rybka 5.0, 2-4. Gandalf, Zappa, Spike, Shredder 4.5

tradiční turnaj

05/2006

6.ICT Leiden

1.Rybka 8.5, 2.Sjeng 7.5, 3.Shredder 6.5

nizozemské mistrovství

06/2006

14.WCCC Turin

1.Junior 8.0, 2-3. Shredder, Rybka 7.5, 4.Zappa 7.0

mistrovství světa prohra se Shredderem

11/2006

15.Thürlingen

1.Spike 7.0, 2.Rybka 7.0, 3.Junior 6.5, 4.Loop 5.5, 5.Shredder 4.5, 6.Fritz, 4.0, 7.Hiarcs 3.0, 8.Zappa 3.0

německé mistrovství, horší BH

02/2007

OnlineMasters

CSS

Rybka mistrem

finále skupin Rybka-Rybka se ani nehrálo

05/2007

7.ICT Leiden

1.Rybka 7.5, 2. Zappa 7, Hiarcs 6.0

 

06/2007

16.WCCC Amsterdam

1.Rybka 10.0, 2 Zappa 9.0, 3 Loop 7.5,
4 Shredder 7.0

Rybka poprvé mistrem světa

08/2007

3.Livingston Chess960

1.Rybka, 2.Shredder, 3.Spike, 4.Jonny

mistrovství světa FRC

09/2007

Mexico zápas při MS mužů

Zappa – Rybka 4.5 - 3.5

špatně pojaté zahájení

10/2007

7.ICT Leiden

1.Rybka 8, 2-3. Hiarcs, Diep 6.5

 

11/2007

16.Thürlingen

1.Rybka 7.0, 2. Zappa 6.0, 3. Naum 5.5 4. Shredder 5.5, 5. Junior 5.5

velmi silný turnaj

12/2007

17. IPCCC –Paderborn

1.Hiarcs 5.5, 2.Rybka 5.5, 3.Toga 5.0

horší BH

02/2008

OnlineMasters

1.Rybka,  2.Fritz

těžké finále s Fritzem

05/2008

17.Thürlingen

1.Hiarcs 6.5/9, 2-3. Rybka, Toga 6

příliš mnoho remíz

06/2008

8.ICT Leiden

1.Rybka 8.5,  2. DeepSjeng 8.0, 3.Hiarcs 6.5

 

08/2008

4.Livingston Chess960

1.Rybka, 2.Shredder, 3.Naum, 4.DeepSjeng

mistrovství světa FRC

Významnější turnajová vystoupení Rybky

 Zápasy s lidmi

Rybka v zápasech s lidmi doslova exceluje. Dokonce i profesionálové už vzdali myšlenku hrát s ní jako rovný s rovným a přistupují na různé handicapy.

GM Jaan Ehlvest (2603) prohrál v 03/2007 zápas s Rybkou 2.5-5.5 tempem 45 min+10 sec. Rybka měla vždy bílé, ale v každé z 8 partií jí chyběl jeden z pěšců a2-h2. Velmistr už prohrával 0-3.

Ve druhém zápasu 07/2007 měl Ehlvest v normálních partiích stále bílé a dvakrát tolik času (90+30 - 45+15), stejně ale prohrál 1.5-4.5.

GM Joel Benjamin (2577) prohrál 08/2007 s Rybkou 3.5-4.5. Rybka opět hrála postupně bez různých pěšců, ale ještě k tomu měla při chybějícím věžovém nebo střelcovém černé kameny.

U příležitosti zápasu v Mexiku 09/2007 sehrála Rybka exhibici s GM Robertem Fontainem (2554) tempem 25 min+10 sec a porazila ho suše 2-0.

A opět GM Benjamin prohrává 01/2008 s Rybkou 2-6. Velmistr hrál všechno bílými a remíza se mu započítávala jako výhra. Neuvěřitelné!

Dobrého výsledku v tomto kontextu dosáhl GM Roman Dzindzichashvili (2548), specialista na počítačový šach. 03/2008 remízoval 4-4, když dostal dopředu tah a pěšce. Rybka hrála jen černými postupně bez pěšců a7-h7.

Dzindzichashvili si zahrál ještě odvetu 07/2008. Tentokrát prohrál 1.5-2.5, když Rybka hrála jen černými bez pěšce f7.

To už je ale zřejmě krajní mez, kam se dá s gramotným hráčem zajít. Za pokus dávat celého jezdce (Rybka bílými bez Jb1) ji potrestal FM John Meyer (2284) 06/2008  4-0.

 Vývoj trojky finišuje

K vývoji Rybky 3 byl přizván známý americký IM Larry Kaufman (ELO 2376, max 2424). Nedělá žádnou podřadnou práci, je plně odpovědný za hodnotící funkci, kterou už Vašík ze svého hlediska považuje za černou skříňku.  Sám se pak plně soustřeďuje na vylepšení algoritmů hledání, které jsou podstatou úspěchu Rybky.

Knihovnu zahájení napsal holandský specialista Jeroen Noomen (2199). Má to být to nejlepší, co bylo pro šachový program kdy vytvořeno; respektuje stav světové teorie do 06/2008 a hodnocení variant je sladěno se stylem Rybky.

Dávno předem bylo oznámeno, že Convekta připravuje pro Rybku 3 nové rozhraní, vtipně pojmenované Aquarium.

Aquarium mělo být pro prosté uživatele stravitelnější než plný Assistant, což se bohužel podařilo jen částečně. Ovládání je stále příliš složité; například zavedení Noomenovy knihovny vyžaduje téměř vědeckou činnost. Chybí také možnost snadné lokalizace do jiných jazyků.

Aquarium podporuje nové funkce, které motor Rybky 3 nabízí pro analýzu. Jde o „rozdvojení“ motoru (shared analysis), řízení vícevariantového módu,  metodu Monte Carlo a pokročilé funkce s hash tabulkami.

 Demo Aquaria si můžete stáhnout na http://aquariumchess.com/AquariumDemo/AquariumDemoSetup.exe. Motory v něm ovšem běží jen 2 sekundy a otevřete jen krátké databáze. Web Convekty je http://www.chessok.com/.

 Bomba ovšem vybuchla začátkem srpna 2008, pár dní před uvedením. Rybku totiž zcela nečekaně nabídla také ChessBase v prostředí Fritze, rovněž upraveného pro podporu nových funkcí. ChessBase je nakonec také jediné místo, kde koupíte Noomenovu knihovnu, která se dodává ve  zvláštním balení.

 Web ChessBase je www.chessbase.com, popis vlastností Rybky 3 s ukázkami obrazovek http://chessbase.com/newsdetail.asp?newsid=4793 .

 Rybka všude!

Rybka je najednou skoro všude. Z četných dotazů soudím, že normální uživatelé jsou tímto stavem poněkud dezorientováni, proto si dovolím shrnout.

Rybku 3 můžete získat:

 - Jako UCI motor na webu Vašíka stažením. To je nejlevnější možnost, ale nedostanete se k některým pokročilým funkcím. Zde je webový odkaz

http://www.rybkachess.com/index.php?auswahl=Purchase+Rybka

- U ChessBase koupí krabice. Knihovna se dodává zvlášť a jinde ji legálně nedostanete.

- U Convekty nejen s Aquariem, ale i s novým ChessAssistantem 10. Stažením nebo za příplatek  v krabici.

 Každý z dodavatelů nabízí hned dvě varianty, jedno- a víceprocesorovou.

Víceprocesorová Rybka je vhodná pro dvou- a čtyřjádrové procesory (například Intel Core2Duo a Quad-Core nebo AMD Phenom X3, X4), stojí ovšem tradičně dvakrát tolik a u ChessBase má také tradiční název –  DeepRybka.

Aby to nebylo tak jednoduché, popsané varianty jsou dodány pro 32 i 64bitové systémy. Normální člověk zatím potřebuje verzi 32bit, majitelé Windows 64bit jsou obvykle dostatečně odborně zdatní, aby použili optimální variantu.

A k úplnému zmatení má každý motor ještě 4 modifikace – normal, dynamic, human a 960, lišící se stylem hry. „960“ je vyladěn pro Fischer random chess, „human“ pro hru s lidmi a další dvě verze jsou pro analýzy a počítačový šach. Zatím není jasné, která je silnější.

 Verze 2 zdarma

Zároveň Vašík nabídl verzi 2.2n ke stažení zdarma. To je rozhodnutí sporné a řada komentátorů ho dokonce označila za neetické.

V malém světě šachových vývojářů je to totiž až příliš tvrdý a bezprecedentní tah vůči konkurenci. Naštve zřejmě i některé uživatele, kteří teprve nedávno za dvojku zaplatili. A do třetice může samotnému Vašíkovi snížit prodej jeho nové verze.

Stále totiž platí zákon „o betonové zdi“  Dr. Donningera (Nimzo, Hydra). Když se proti ní rozeběhnete hlavou, tak je vlastně jedno, jestli bude mít tloušťku tři nebo čtyři metry.

A Rybka 2.2 ty tři metry má, tak proč platit za víc?

Verzi 2.2n stáhnete na www.rybkachess.com/free/Rybka22n2.zip.

 Síla nové Rybky

Vašíkovi můžeme vyčítat ledacos, ale v odhadech zvýšení síly hry nelhal. Nová Rybka drtí konkurenci neuvěřitelnou převahou.

Z řady publikovaných výsledků vybírám zápasy testera Orlando de la Vega (FRA), který je v poslední době velmi aktivní. Jde sice o bleskové partie, ale zápasy jsou dobře dokumentované a za srovnatelných podmínek je otestována odolnost proti Rybce většiny špičkových motorů.

Rybka 3 - Rybka 2.3.2a     30.0 : 20.0  (+ 19,= 22,-9)
Rybka 3 - Fritz 11         34.0 : 16.0  (+ 25,= 18,-7)
Rybka 3 - HIARCS 12        37.0 : 13.0  (+ 29,= 16,-5)
Rybka 3 - Shredder 11      39.5 : 10.5  (+ 31,= 17,-2)
Rybka 3 - Deep Sjeng 3.0   40.0 : 10.0  (+ 34,= 12,-4)
Rybka 3 - Naum 3.1         41.0 :  9.0  (+ 34,= 14,-2)
Rybka 3 - Fruit 05/11/03   43.0 :  7.0  (+ 45,= 5,- 0)
Rybka 3 - Toga II 1.4.2JD  44.5 :  5.5  (+ 42,= 5,- 3)

Podmínky testů: Intel T2370, hash 128 MB/128 MB,  Shredder Classic 3, Windows Vista, bleskovky 40/5',  knihovna Shreddera použitá jen do hloubky 5 tahů,  25 různých zahájení náhodně vybraných prostředím.

Autor nemá svůj web a výsledky publikuje na fóru CCS (Computer Schach und Spiele), přehled je na http://f23.parsimony.net/forum50826/messages/188002.htm.

A to ještě není zahrnut vliv nové knihovny zahájení. První zprávy hovoří o dalším růstu 200 ELO bodů, což je ale evidentně nadnesené.

Zařazení komentovaných ukázek a partií by vyžadovalo samostatný článek a šachově kvalifikovanějšího autora. Proto jsem aspoň připravil ke stažení databázi partií Rybky, kde najdete většinu výše citovaných turnajů, zápasů a akcí s lidmi.

Stáhnout databázi partií

 Problémy

Rybce, jako každému „mladému“ motoru, chybí znalosti z koncovek. Neumí například správně zhodnotit tak elementární věc, jako  je falešný střelec.

Námitka, že záležitost spraví nasazení tablebasí, neobstojí. Když například přibudou bezvýznamní pěšci, remíza nebude rozeznána.

Zcela naivní jsou představy Rybky o bezpěšcových koncovkách.  Rybka neshledává rozdíl mezi SSJxV a SJJxV, ačkoliv první konstelace je teoreticky vyhraná a druhá remízová.

Vašík po četné kritice sice dodělal do programu možnost slabých proměn, ale nevzal v úvahu střelce.

Proto je nasazení Rybky ve studiích problematické a já sám raději stále používám dvojici Hiarcs a Shredder, v odůvodněných případech doplněnou Fritzem.

 Jak je to s „klonováním“?

Otázka klonu Fruita, kterou jsem s Vašíkem řešil hned v prvních dnech, není dosud zcela uzavřená. Začátkem roku 2008 se objevil velmi silný ruský program Strelka 2.0 Jurije Osipova,  ke kterému jsou k dispozici zdrojové texty.

Strelku a další volné motory najdete na adrese http://sdchess.ru/download_engines.htm

Vašík ji smetl ze stolu tvrzením, že jde téměř o stoprocentní disassemblovaný klon Rybky 1.0.

Gian-Carlo Pascutto (DeepSjeng) však píše, že v kódu Strelky jsou evidentně vidět tři styly – Fruit, Beowulf a Rybka. Takže pokud je Strelka stoprocentním klonem Rybky a přitom ve Strelce jsou pasáže z Fruitu, těžko může být Rybka „čistá“.

Záležitost zpochybnil také Orlando de la Vega publikováním výsledku Strelka 2.0 B - Rybka 1.0 Beta 32-bit    29.5 - 20.5  (+ 21,= 17,- 12).

Více o celé věci najdete česky na http://www.vlasak.biz/evcnews.htm#Strelka_080113

Pravda je jako obvykle někde uprostřed. Zatímco pionýři šachového programování museli v potu tváře ladit generátory tahů a hledací algoritmy, aby vůbec fungovaly; dnešní začínající programátor si napřed všechno prohlédne funkční a hotové. Nejen ve zmíněném Fruitu, ale i v několika dalších programech. A pak pouze vybírá a zdokonaluje. To samo o sobě ho katapultuje o několik let dopředu, i když se nedá říci, že by něco přímo opsal.

Vašík v roce 2003 už také určitě věděl, že 64bitové systémy stojí přede dveřmi. Proto neměl problém rozhodnout se pro poměrně nezvyklou bitboardovou koncepci programu. V důsledku toho Rybka běží na 64bitových systémech prakticky „zadarmo“ o 40 procent rychleji, zatímco takový Hiarcs nebo Fritz bude muset být od základu přepsán, pokud k tomu autoři vůbec najdou sílu.

Těsně před uvedením Rybky 3 se Larry Kaufman pustil do SMK a veřejně ho obvinil, že vylepšuje Shreddera zkoumáním Fruitu a Rybky. Tím docela popudil veřejné mínění, zejména ve vlivném Německu. SMK, mimo jiné autor celého UCI standardu, k tomu trefně a decentně napsal: Rybka není jediné centrum počítačového šachu a jsou i jiné cesty zlepšování než kopírovat Fruit/Strelku/Rybku.

 Proč je vlastně tak dobrá?

Kruh se uzavírá a vracíme se k úvodnímu problému, jak může být Rybka tak dobrá. Už jsme si ujasnili super-kvalifikaci autora i problém převzetí zkušeností ze starších programů. To samo o sobě ale prostě stačit nemohlo. Za necelé tři roky panování Rybky jsem viděl různé teorie o její síle, ale žádná není dostatečně jasná a průkazná. Nicméně určité indicie se nashromáždily.

Vašík musel narazit na nějaký „kámen mudrců“, který umožňuje programu bez velkých šachových znalostí dosáhnout neuvěřitelně efektivního a hlubokého propočtu.

Posledním takovým objevem byla nultahová heuristika, která posunula programy o 200-300 ELO bodů. V devadesátých letech minulého století měli ovšem šachoví programátoři hlavní společný cíl posunout nevalnou úroveň tehdejších programů, proto si nápady předávali. Nultahovou heuristiku popsal Dr. Donninger v ICCA Sept1993 a tak mohla být využita podle uvážení všemi konkurenčními programy. Zato Vašíkovi se zatím výborně daří svůj nápad  před konkurencí utajit.

Zajímavým námětem k přemýšlení je délka spustitelného souboru. 32bitová Rybka má kolem 2.5 Megabajtu, zatímco programům prokazatelně nabitým šachovými znalostmi stačí polovina až třetina této velikosti; taktiku Junioru dokonce desetina. Co se skrývá v tak velkém prostoru? Geniální urychlovací index nebo jen „vata“, znesnadňující  zpětnou analýzu?  

Vyskytl se názor, že Rybka v sobě skrývá několik konkurenčních motorů. Podobnou ideu ale zkoušel SMK veřejně (pod názvem Tripple Brain) a nijak zvlášť se neosvědčila.

Postavte si základní pozici a zahrajte 1.a4 a5. To je stará osvědčená metoda jak rychle a bez námahy dostat pozici mimo knihovnu zahájení. Spusťte nekonečnou analýzu různých motorů a sledujte jejich indikovanou rychlost v kN/s (tisíce propočtených pozic za sekundu). Na mém počítači Intel Core2Duo 6320 dostávám

Junior   1580 kN/s
Fritz    1290 kN/s
Shredder  420 kN/s
Hiarcs    330 kN/s
Rybka 2.3 110 kN/s
Rybka 3.0  30 kN/s

Pochopitelný a legitimní je  rozdíl mezi „taktiky“ Juniorem a Fritzem a „znalostními“ programy Shredderem a Hiarcsem. Údaje Rybek jsou ovšem evidentně nereálné.

Vašík prostě švindluje, aby ztížil krokování a zpětnou analýzu kódu. Podobně se zdá, že skutečnosti neodpovídá ani Rybkou indikovaná hloubka propočtu.

Analyzujete-li často interaktivně s různými programy, všímejte si, jak ten-který motor mění názor.

Vypadá to, že Rybka zdaleka nejčastěji setrvává na prvním dojmu, jakoby už od počátku správný tah znala.

Podobně se odlišují někteří silní lidští hráči od průměrných. Zatímco v lidském šachu takový dar šetří především čas a síly, u programů umožňuje pomocí tzv. alfa-beta odseknutí výrazně prohloubit propočet a vidět tak dál, než konkurence.

Jak to ovšem Vašík opravdu dělá, nezjistil zatím nikdo. Záhadou zůstává i proč, vždyť Rybky nepochybně leží od samého začátku na „pitevním stole“ konkurence. Snad jde o nějakou složitější metodu třídění tahů, založenou na matematické statistice, která je sama o sobě špatně pochopitelná.

Diskuse pod článkem

2008-08-28 16:59:51 | Pavel Háse

Počet uzlů není podstatný, protože ho každý motor počítá jinak. Podstatná je vždy hloubka. A zde se motory liší selektivitou, takže třeba Zappa má sice jednu z nejnižších ve stejném čase, ale v některých variantách se selektivním výběrem může dostat dál, než třeba Junior. A hraje roli i pozice. Loop má např. nějakou chybu v generátoru tahů. Zatímco po zmiňovaném 1.a4 a5 se do hloubky 16 dostane daleko dříve, jak Zappa, v nepravděpodobné pozici B: Kh8,Dg8,Pe7,f7,g7,h7 - Č:Ka1, Db1, Pa2,b2,c2,d2 je najednou třikrát pomalejší než Zappa. Má potíže, pokud se v pozici objeví více dam stejné barvy. Dlouho jsem si lámal hlavu, proč Loop občas někdy záhadně na několik minut zatuhne a dospěl jsem právě k problému s více dámami.

2008-08-28 16:51:15 | Pavel Háse

opět pro Thomas: V podstatě platí, že nejlepším způsobem analýzy je vždy rozvětvená korespondenční (nebo hluboká poziční v jiném překladu analýza. V anglické verzi menu je to Deep position analysis. Vše ostatní je nespolehlivé, i když se to někdy může trefit. Jak IDeA v Akváriu, tak Monte Carlo u ChessBase, nebo obyčejný infinite(nekonečný běh) kdekoliv. Platí, že posun ve variantě po určitém čase, třeba po 1h, dává lepší výsledek, než celonoční běh. Problém je v tom, že pokud se ta korespondenční analýza dost rozvětví a ještě se nastaví dlouhý čas na tah, zabere to klidně třeba týden.

2008-08-28 16:43:51 | Pavel Háse

pro Tomas: Nejsem si jistý, zda ta Noomenova knihovna stojí za vyhazování peněz :). Docela slušné knihy se dají stáhnout zdarma, např. Sedatův Perfect13. A asi bude brzy verze 14 (www.sedatchess.com). Podle mně tohle CB přehnala. Ostatně, mám koupenou Deep Rybku 3 a tam nějaká Noomenova kniha je, prý asi o 2/5 menší, jak ta komerční. V testech knihoven u Sedata mají nejlepší výsledek Playchessové speciály, ale tam je problém v tom, že stáhneš obrovskou knihovnu, která pak např. proti 1.e4 hraje jen Caro-Kann (myslím, že Compmaster).

2008-08-27 07:32:08 | Alice

Základ Noomenovy knihovny jsou partie z Playchess - takze zahajeni jsou poplatne tam hranym partiim, takze celkem logicky vedlejsi varianty a nepopularni zahajeni nemaji v knihovne misto. Noomenova knihovna ma priblizit Playchessovske varianty okolnimu svetu (a neco malo zinkasovat)

2008-08-26 21:09:37 | rybka 3 book

Nevím, doufal jsem, že to bude něco nového a dobrého, mám v plánu si ji koupit k rybce 3, nikoli pro hru, ale pro přípravu, analýzu. Na jednu stranu velká škoda, jestli podceňuje málo hraná zahájení, ale hlavně aby byla spolehlivá alespoň v kritických variantách. Sidelajny už se vyřeší přinejhorším až "na místě". Navíc motor taky něco vymyslí, když už se dostane ven z teorie... Zvažoval jsem i Fritz powerbook, ale neznám, a tak jsem věřil víc Noomenovi. Nejzrádnější na přípravu asi stejně zůstane klíč a statistiky v megadatabázi :))

2008-08-26 18:16:37 | Bond(James)

Já si ověřuju varianty v zahájení hlavně po taktické stránce, strategie už je čistě na mě a k tomu stačí jakýkoliv dobrý motor s permanentní analýzou (asi 30 sec na pozici)

2008-08-26 18:10:21 | Alice

Rybka 3 book od Noomena je zajimava jen pro par konkretnich variant ci zahajeni (najdorf, meranska), pro vedlejsi varianty a zahajeni se dockate jen zklamani

2008-08-26 17:05:16 | to Tomas

Pořídit si rybka 3 book, ta bude špičková. Jinak k zahození není funkce deep analysis, ale pozor, ty motory bez knihoven hrají občas pěkně divný šachy...

2008-08-25 14:24:54 | Tomas

Existuje navod jakym zpusobem je nejlepsi analyzovat pozice v zahajeni pomoci Rybky (nebo jineho motory)? Diky

2008-08-23 19:57:07 | pepa

Alice: Dobrá poznámka ohledně vícejádrových/víceprocesorových systémů. Šachový program se na nem chová v podstatě nedeterministicky. Průběh a tím pádem i výsledek hledání je ovlivněn interakcí mezi jednotlivými výpočetnímy vlákny a jejich časovým souběhěm. Ten je však určen operačním systémem, který vláknům přiděluje procesorový čas, a může být proto pokaždé jiný. Takže třeba při testování, za jak dlouho "vyřeší" program danou posici, by se měl spustit vícekrát. PJ: To je, myslím, popsáno dobře. Už jste začal kódovat?

2008-08-23 18:51:04 | PJ

Děkuji mnohokrát panu Vlasákovi za inspiraci. Rozhodl jsem se prozkoumat střeva šachového motoru hlouběji, popsat principy těm věci neznalým a tak vznikl článek: www.deskoliberec.cz/napiste-si-svuj-vlastni-sachovy-motor.html

2008-08-23 11:31:02 | Bond(James)

Já jsem teda WinFinder v akci neviděl, ale předpokládám, že je to čistě taktický engine na hledání vítězných kombinací. Tam je technika propočtu pochopitelně úplně jiná než při strategickém propočtu, kde každý tah má potenciální smysl (u taktického propočtu se počítají pouze "hlasité" tahy). Každý engine pro praktickou hru se snaží oba tyto principy optimálně spojit (já jsem v tomhle zatím v začátcích). Jinými slovy ELO pro čistě taktický engine opravdu nemá význam.

2008-08-23 10:07:18 | Alice

2pepa: velmi spravne, proto Winfinder nikdy nebude mit "ELO" lepsi nez Rybka (mala technicka - Winfinder je poplatny Rybe 2.x), ale bude resit vetsinu pozic s "hadanim" tahu rychleji nez Ryba, z tohoto duvodu rychlost nalezeni nejlepsiho tahu nema zadnou primou souvislost s ELEm (v ramci sachovych enginu i vcetne vzeti do uvahy pouziteho HW je pojem ELO stejne ponekud problematicky definovany a jedna se o dost problematicke cislo - napr. diky moznosti pouziti ruznych knihoven, tempa, ponder on/off atd.). 2james: ani dnes nelze zcela tvrdit, ze PC provadi sled linearnich instrukci - jednak dochazi k paralelnimu zpracovavani a jednak napriklad u MP enginu jsou nektere vysledky nekonstanti - tj. pri pouziti MP muze byt cas na vyreseni pozice v rozmezi 10-30s, kdezto pri pouzit jednojadroveho systemu tento cas bude prakticky vzdy reprodukovatelny (rekneme treba 15s).

2008-08-22 23:16:08 | pepa

A proč myslíte že Vašík nabízí speciální WinFinder? Protože program zaměřený na to aby rychle našel řešení takovýchto posic bude prostě poněkud nevyvážený a celkově slabší při normální hře. Tak to prostě je a WinFinder to potvrzuje. Nemůžete mít všechno v jednom. Pomůžu si možná trochu stupidní ale celkem platnou analogií ze sportu. Nejlepší program musí být takový desetibojař - Šebrle, zatímco WinFinder je třeba oštěpař Železný. Nemůžete po něm chtít aby skákal o tyči a běhal přes překážky + 7 dalších věcí na úrovni Šebrleho. Ale stejně tak nemůže být Šebrle top vrhačem, běžcem, skokanem. V tom všem je z hlediska špičkových specialistů jen průměr i když lepší než 99.99% normální populace. Pro program je důležitější aby zahrál 10 dobrých byť ne nejlepších tahů ale bez chyby než 2 geniální, 7 dobrých a 1 špatný. Ostaně to věděl už Capablanka ... :-).

2008-08-22 23:15:04 | mozek

Náš mozek je vlastně neobyčejně výkonný na to, že má takt pouze 7Hz, ale je to tím, že má skvělou neuronovou infrastrukturu až takhle budem dělat počítače, tak to bude skvělý. Ale jen to vymyslet, jak to udělat :-)))

2008-08-22 23:00:58 | Bond(James)

Myšlení člověka a počítače je diametrálně odlišné - počítač provádí lineární sled instrukcí a pracuje s exaktními informacemi, zatímco mozek zpracuje neurčitou informaci jejím porovnáním s relacemi všech informací, uložených v paměti. Jakákoliv další infomace přitom mění stav celého systému (jen velmi nepatrným způsobem, větší dopad mají pouze informace, které se často opakují - proces získávání zkušeností). Každá informace je analogová a tedy defakto "nekonečná". Fraktální analýzou pomocí holografické projekce (každá část je zároveň celkem - jinými slovy, jednotlivé informace nejsou v mozku uloženy zvlášť ale jakoby jedna přes druhou) dosahuje mozek téměř nekonečného výkonu a výsledkem je okamžité pochopení pozice, aniž bychom tušili, jak jsme k němu vlastně došli (neboť tyto operace se provádějí na podvědomé úrovni).

2008-08-22 22:42:43 | Zugzwang

Ještě jednu rejpavou poznámku před spaním :)) Co je dobré v jedné posici, nemusí být dobré v druhé, ok. Ale mat je dobrej vždycky :)) Já bych tu úlohu vyřešil z hlavy, celkem rychle. S šachovnicí bleskově. Tak jestli má ta potvora mít o sedum stovek vyšší elo, pak by to měla vidět taky, ne? No ale viděla to...

2008-08-22 22:08:58 | pepa

To koukám: U velmistrů bude jejich NPS v řádu jednotek za vteřinu a taky se jim při hraní většinou nikdo nesměje, takže 30 tisíc ...

2008-08-22 22:05:12 | pepa

Vyřešení jedné konkrétní posice v určitém čase může být často jisté štěstí. Co je dobré v jedné posici nemusí být dobré v jiné. Otázka celkové síly je vždy statisika velkého množství posic či lépe partií. Proto se pro testování programů při vývoji nedoporučuje používat řešení nějaké sady zkušebních posic, ale radši hraní co největšího počtu partií třeba i bleskových (Vašík používá partie s CELKOVÝM limitem 1 vteřina). Proto vám vysoké ELO programu nezaručí, že nějakou posici vyřeší dříve než program s nižším Elem. Ovšem v případě Rybky je to celkem pravděpodobné :-).

2008-08-22 22:00:03 | koukám

Jsem si chtěl odzkoušet Rybku 3, tak jsem jí stáhl a když jsem viděl 30 kN/s , tak jsem si myslel, že si někdo vystřelil, ale pak jsem uvědomil že Rybka má normálně rychlosti počítání menší :-) , tak sjem dal zápas proti Shredder 11 a vyhrála 2:0

2008-08-22 21:58:53 | Zugzwang

2Alice - pořádně jsem tě s tím hádáním tahů nepochopil, ale nalezení matu bych do souvislosti s ELO určitě dal...

2008-08-22 21:51:40 | Zugzwang

pepa: Mohla vzniknout i tahem Kb6xa6, ale Martin nám ukázal daleko přesvědčivější řešení :)) Alice: Představa, že v přípravě analyzuju stejnou pozici jako můj soupeř, mě motor ukazuje -0.31 a soupeři #12 mě poněkud děsí :)))) Bond(James): Ano, já vím že na silnějším stroji to jde rychlej :)) Ten poměr je ale zajímavej. Pepova rybka tu úlohu vyřešila za 1:19, moje ne ani za 10min. Tak že co je to rating motoru?! Některé motory budou na rozdílných HW skákat výkonem víc, některý míň.

2008-08-22 21:45:17 | Alice

2James-Tam preci nebylo nic o HW. Ten kdo ma vyssi IQ tak mu pri Clovece nezlob se taky porad nepadaji 6. Neboli neexistuje zadny vzorec ktery dava do souvislosti "hadani tahu" a ELO

2008-08-22 20:51:13 | Bond(James)

Prece se nebudeme hadat o takove elementarni pravde, ze cim vic pozic motor spocita (neboli na cim vykonnejsim HW bezi), tim je silnejsi (samozrejme umera neni prima ale kazdopadne to jde nahoru)

2008-08-22 20:15:31 | Martin

vsem strelcomilum - zkuste B: Kd3, pg5, h6, C: Kb3, pa3, b4, g6 (BNT+-)

2008-08-22 19:43:46 | pepa

Taky díky. Ale ta posice mohla vzniknout jedině tahem Kb6a6 a pak je otázka, proč radši nevzít Pb7 :-))))). Takže z praktického hlediska mě to nějak nepřesvědčuje, že by to bylo nutné. Ohledně toho matu myslím, že jednak mohl být podstatný rozdíl ve velikosti hashe, specielně v této dlouhé variantě, a druhak že nalezení nebo spíše dopočítání takového matu nesvěčí o celkové hrací síle programu

2008-08-22 19:38:38 | Alice

sila motoru (vyjadreno pomoci ELA) nema zadny vliv na vyhledani matu v 19 v konkretni pozici

2008-08-22 19:27:17 | Zugzwang

Tak dobře, Bílý Ka4,Pb7,d6 Černý Ka6,Pa7,d7 :-) Dík za test, ten mat 19 tahem mi to nenašlo ani za 10 minut, dost svědčí o tom, jak obrovský je rozdíl mezi sílou motorů na odlišných HW.

2008-08-22 19:17:28 | pepa

Jo a k té divoké posici s matem v 19 tazích: zkoušel jsem Rybku 2.2n2 a Glaurung 2.1, oboje na Core2 Pentiu 1.6GHz s 1GB hashe a oba dva našli mat 19. tahem za 1m 19s.

2008-08-22 19:09:14 | pepa

Díky, proměna v jezdce je zřejmá (i když mě napadla spíš z taktického hlediska kvůli vidličce), ale pro střelce může být jediným důvodem pat. Takže jestli máte tu posici, tak sem s ní!

2008-08-22 18:58:42 | Zugzwang

No našel jsem i pozici, ve které je nasazení střelce jediný vyhrávající tah... :))

2008-08-22 18:47:39 | Zugzwang

pepa: koukal jsem že v 1. části článku o rybce tak trochu pochybuješ o nutnosti proměny pěšce ve střelce :)) Tak třeba Kh4,Jh5,Pf7;Kg6,Ph7,h6? Nasazení jezdce je mate in 57, to s table možná vyreklamuju, i když při přesné hře (maje na mysli ostražitost na 50tahové pravidlo) spíš asi ne. Nasazení střelce každopádně mate in 32 - nejlepší tah. Ostatní remis :))

2008-08-22 18:35:30 | pepa

Asi máte pravdu, já to sleduju spíš tak zpovzdálí přes diskuse na Computer Chess Clubu a papouškuju co se tam objevilo. Mimochodem zrovna teď se tam docela tvrdě diskutuje o tom, co zmínil pan Vlasák, že Rybka je přepsaný Fruit. Těžko říct. S tou Monte Carlo metodou jsem se vskutku špatně vyjádřil, ale každopádně ji využívali právě při testování a ladění. Rybky mám jen dvě free - starou 1 nevím kolik a teď tu "novou" 2n2. Ohledně velikosti souboru je otázka, jestli je to (prováděcí) kód, data, nebo jen další vrstva maskování :-)))))

2008-08-22 18:13:19 | 2 pepa

MonteCarlo analyza neni v "Rybce 3". Je to pouze nastroj GUI (at od Convekty ci Chessbase) vyuzivajici funkce "randomizer" Rybky - ta jiz byla ve verzi 2.32a. Nyni dostala jen praktictejsi obal. Zjevne tabulky neobsahuji jen pomery materialu - pri vsi bohatosti by to bylo preci jen par materialnich vztahu, naopak se da celkem dobre na pribuznych pozicich predvest, jak Ryba tvrdosijne trva na urcitych tazich- pak lze celkem predpokladat, ze ony "tabulky", ktere nebyly zmineny v clanku obsahuji preci jen mnohem vice. Mmch jestli se divam dobre - narust velikosti exe mezi verzi 1.0 preview a 1.01 Beta 11 cini asi 60% (z 2.5 na 4MB) - tezko Vasik i pri sve pili od stolu za 6 tydnu napsal 1.5MB zkompilovaneho kodu. Do hlavy se vkrada pak uz jen myslenka, ze tento pridany kod byl spise "vygenerovan" nez jennapsan.

2008-08-22 18:02:21 | pepa

Ad Alice: Pokud vím, tak ty tabulky se netýkají umístění figur, ale různých poměrů materiálu na šachovnici a korekce běžného oceňování materiálu. Kaufman na to téma dělal už předtím nějaké výzkumy pomocí statistiky výsledků partií při daném materiálu a Vašík jeho výsledky patrně využil. Jde o to, že běžný program má hodnoty figur jako konstantu a prostě spočítá jednotlivé figury, sečte, vynásobí a hotovo. Rybka zřejmě má v té tabulce pro různé poměry materiálu uložené přinejmenším korigované ocenění materiálu, případně další věci potřebné při oceňování. Takže ví lépe, které figury kdy a jak měnit atp. Možná na to využili i tu Monte Carlo analýzu, která je teď v Rybce 3. Ono může být tajemství úspěchu Rybky nejenom v nějakém jednom převratném vyhledávacím triku, ale také třeba v nové metodice testování a ladění programu.

2008-08-22 17:39:29 | Alice

2James - takhle "fungoval" jediny sachovy engine - Botvinnikuv Pioner - nakonec podle všeho jen na papíru. Ryba samozrejme prochazi vsechny tahy - nedochazi k zadnemu jednoduchemu vyberu. K orezavani stromu dochazi ve vsech enginech. Autor nezahrnul do clanku informaci od Osipova - autora Strelky, ktery z casti dekompiloval Rybku 1 a upozornil na tabulky umisteni figur (pametnici vedi, ze Fritz 3 mel moznost definovat a zavadet tabulky umisteni figur) ktere ve Strelce castecne vyuzil. Stejne tak vykazovani poctu pozic/sek je umele snizeno - Kaufmann tvrdi, ze x10 je celkem objektivni cislo.

2008-08-22 17:14:27 | Bond(James)

Podle mého názoru funguje Rybka tak, jak by si všichni autoři šachových motorů představovali - v každé pozici zkoumá jen několik nejsilnějších tahů a díky tomu dosahuje daleko větších hloubek při menším počtu variant Př: 4 polotahy plošně = cca 2,5 mil. pozic zatímco při 8 nejlepších tazích = 4 tisíce pozic. Jediný problém je, jak dopředu určit nejlepší tahy - a v tom bude zřejmě tajemství Rybky, tady optimální oceňovací fce.

2008-08-22 17:09:20 | HonzaS

Pěkný a hluboký článek, pan Vlasák je borec počítačového šachu!

2008-08-22 15:52:19 | Zugzwang

vozovna: To jsem přece já :)) Nevýhoda tahu.

2008-08-22 15:50:58 | Zugzwang

Jestli je tu nějaký zájemce udělat malý testík propočítávacího algoritmu s konkurenčním motorem: Docela by mě zajímalo, jak taktici (Fritz, Junior,...) vyřeší tuto pozici: Bílý: Kg1;Dc1;Sg6;Pb2,d6,f2,h4,h7; Černý: Kg7;Sa4,e8,d4;Ja3,c6,c7;Pa7,c2,d3,e4,f5 Rybka 2.3.2 32bit 64MB, celeron 1.5GHz našla mat ve 23tazích za 46s, ve 21tazích za 65s, nejrychlejší mat (19 tahem) nenašla ani po desítiminutovém hledání. Její systém propočtu je velmi podobný tomu lidskému, hledá ty nejvynucenější varianty, které se příliš nevětví. Nejkratší mat v sobě nese 1 tichý tah, s kterým si rybka z dálky neví moc rady a najde jej až po odtahání několika prvních tahů...

2008-08-22 15:42:38 | vozovna

Mohl by někdo popsat obecně co je to zugzwang

2008-08-22 15:40:30 | pepa

:)))))))))) Tak to já musel zahrabat v knihovně, odfouknout prach a nalistovat rejstřík ....

2008-08-22 15:37:16 | Zugzwang

No co je to profylaxe vím až moc dobře, Můj systém bych zvládl odrecitovat na jedničku :)) Je pravda že se asi bude jednat o dvě odlišné věci, i když jejich podobnost mi nikdo nevymluví ;-)

2008-08-22 15:19:39 | pepa

Snad tím nebudu únavný, ale ještě jednou se vrátím k nultahu. Ona to není věc, která by nějak souvisela se "šachovým" obsahem hry, ale je to čistě věc obecná, kterou můžete stejně tak uplatnit třeba v piškvorkách či jiné hře s nulovým součtem (hráči se střídají v tazích, moje výhoda=nevýhoda soupeře). Jediný výchozí předpoklad je opravdu ten, že jsem-li na tahu, pak můžu svou posici vždy buď ne-li zlepšit tedy alespoň nezhoršit. Víc není k jejímu fungování potřeba. Nimcovičova profylaxe je věc šachové strategie. Podle jeho definice: "Profylaxe jsou opatření mající za cíl zabránit některým jevům nežádoucím z posičního hlediska." A dál to rozvádí do čistě šachových pojmů. Jak ale správně poznamenává pan Vlasák, šachisté tuto vlastnost intuitivně využívají také, i když poněkud jiným způsobem.

2008-08-22 14:25:01 | pepa

Ad Zugzwang & Nimcovič: Opravdu? Můj systém jsem kdysi, ač coby šachista jsem beznadejně zamrznul na úrovni klubový packal, tak trochu studoval, a nějakou souvislost profylaxe s nultahovou heuristikou nevidím. Řekl bych, že jde o dvě zcela různé věci.

2008-08-22 14:06:55 | Zugzwang

Emil Vlasák: Nultahová heuristika byla poprvé popsána v knize Můj systém (1925) pod názvem profylaxe, i když to tu už pepa tak trochu naznačil... To rozhodně nevymysleli programátoři.

2008-08-22 13:51:38 | pepa

Ad Emil Vlasák: ona je ta myšlenka, jak to často bývá, v zásadě úžasně prostá, takové to Kolumbovo vejce. Je spíš s podivem, že se začala používat až po 20-30 letech (první šachové programy řekněme v šedesátých letech, nultah začátek devadesátých). I když asi to bylo také tím, že malé hloubky prohledávání, které byly tehdy dosažitelné, by stejně nedávaly k jeímu uplatnění prostor. Zajímalo by mě, co má v rukávu Vašík. Jestli je to taky nějaká jedna zásadní myšlenka, nebo spíš spousty drobných, ale perfektně vyladěných triků.

2008-08-22 13:25:13 | pepa

Ad Zugzwang: ano, samozřejmě. Posice po provedení nultahu se zkoumá s redukovanou hloubkou hledání proti normálu (obvykle o dva až tři půltahy), takže provedení té práce navíc (nultahu) něco stojí, ale velice málo s možným ziskem. Prostě mnohem (řádově) více se získá než ztratí. Riziko hrozí v posicích zugzwangu, kde neplatí nutný předpoklad fungování nultahu, totiž že pokud jsem na tahu, můžu vždy svým tahem posici alespoň nezhoršit. Pokud to není v programu nějak ošetřeno, je program někdy v posicích, kde se zugzwang vyskytuje, totálně "slepý".

2008-08-22 12:59:24 | Emil Vlasák

Sisoji, o listinách motorů jsem psal v minulém pokračování. SSDF už není, co bývala.

2008-08-22 12:57:31 | Emil Vlasák

Pepo, díky, pěkně popsáno. Kdysi ještě před počítači, jsem analyzoval s velmi silným hráčem a vyslovil názor, že moje pozice je velmi výhodná. On řekl dobře, hraj dva nebo tři tahy za sebou a ukaž, co chceš. Zjistil jsem, že ani po plánovaném převodu figur ho nemohu moc ohrozit. Nultahová heuristika tedy nevznikla vyloženě v hlavách programátorů.

2008-08-22 12:47:34 | Zugzwang

Díky mě ale i null-move metoda potřebuje určitou dobu na zkoumání těchto "slepých větví", jen se tím motor nezabývá až tak do detailu a nějaký čas tam motor opravdu získá.

2008-08-22 12:11:42 | pepa

Nullmove v kostce: drive, nez zacnu zkoumat v posici sve vlastni tahy, predam "na zkousku" pravo tahu souperi. Ten tak vlastne muze udelat dva tahy za sebou. Pokud mu tato výhoda nestaci k získání převahy, usoudím, že už ten jeho první tah nebyl dost dobrý a nebudu se zatěžovat zkoumáním svých vlastní tahů. V průměru se tak dají získat zhruba dva půltahy v hledání navíc. Hloubka propočtu: přesně tak, to číslo závisí na algoritmu každého programu, takže jeho význam může být různý.

2008-08-22 11:37:30 | rybka 2.3.1 Arena

sisoj: listina SSDF

2008-08-22 11:13:34 | sisoj

Existuje nějaký přehled Elo tabulky motorů, obdoba žebříčku ratingu pro motory?

2008-08-22 10:27:12 | tramvaj

A co že vlastně ta hloubka propočtu udává? Délku nejkratší varianty, nebo nejdelší, nebo dokonce průměr? Vzhledem k ořezávání nesmyslných větví toto číslo nemůže být jednotné.

2008-08-22 10:10:02 | trolejbus

Nejsem si tou nultahovou heurestikou 100% jistý, ale snad by se mohlo jednat o způsob profylaktického myšlení stroje -kdyby byl soupeř na tahu..., tak já mu to překazím... :)) Souhlasím s autorem článku, že rybka často správný tah vidí už od začátku a zřídka svůj první dojem mění. A to i u složitých taktických variant.

2008-08-22 08:04:24 | vozovna

Mohl by někdo popsat obecně princip nultahové heuristiky?

2008-08-28 16:27:25 | Pavel Háse

pro Lama: Motor se z nabídky odstraní smazáním vytvořeného UCI souboru. Je v adresáři Pro Fritz 10/11 C:Documents and Settings"Uživatel"Data aplikacíChessBaseEngines.UCI V prostředí Deep Rybka 3 ho mám v C:Program FilesCommon FilesChessBaseEngines.uci (Možná to bylo způsobeno rozdílným nastavením istalace "Just Me"/Everyone, to bych musel ještě zkusit na nějakém dalším počítači, proč ty adresáře jsou různé. Zatímco v DR3 vidím i UCI motory zprovozněné ve F11, v prostředí F11 jsem neviděl novou Rybku, dokud jsem si do toho starého adresáře ten soubor *.uci a *.uci_b nezkopíroval)

2008-08-21 18:58:43 | exot

Díky za Rybku!

2008-08-21 15:23:13 | Emil Vlasák

Pane "updaty" 1. Není pravda, že bych Vašíka neměl rád. Počítačovým šachem se zabývám dlouhá léta a pouze se snažím v záplavě nekritického nadšení informovat objektivně. Ostatně když si prohlédnete mé starší recenze z Československých šachů, vždycky jsem se snažil ukázat programy a dění kolem z různých stránek. 2. Vezměte si Československý šach 7/2008 str. 194 a tady Výhradní zastoupení firmy CONVEKTA pro Českou a Slovenskou republiku (raději nejmenuji) nabízí jako NOVINKY Rybku 2.1 (!!). To je síla, co. A pak mi ti lidí píší, že se v tom nevyznají, jestli bych mohl opatřit český manuál a já nevím co ještě. Takže každý nemá takový přehled a divil byste se, kolik těch truhlíků jen u nás je...

2008-08-21 14:25:03 | Štěpán

Tak jsem se koukl na to demo akvária, vůbec se mi nelíbí. Díky bohu se rybky ujala i chessbase, prostředí konvekty mi už u chess asistenta dělalo velké problémy a žádnou podstatnou změnu tady nevidím. Spousta plovoucích oken, odkazů, žádné pořádné menu, naprosto nepřehledné a neintuitivní. Mám z toho trochu pocit, že bych musel přečíst celou knihu, abych uměl využít všechny jeho funkce. Když už se ale rozhodnu číst nějakou knihu, rozhodně to nebude manuál k akváriu :) Jelikož jsem velkej fanda rybky, zajímalo by mě, co si myslíte o novém prostředí ve srovnání se standardem CB,Fritz,... Rád bych slyšel nějaké argumenty pro akvárium

2008-08-21 14:15:18 | bolek

Bond: opraveno

2008-08-21 14:05:35 | Bond(James)

P.S. Ten odkaz na databázi partií mi nějak nefachčí :-(

2008-08-21 12:55:03 | lama

a když ten motor jednou přidám, jak se pak z té nabídky odstraní?

2008-08-21 12:50:39 | Štěpán

to Scratchy007: Četl jsem o analýze Monte Carlo jako že rybka sama proti sobě sehraje spoustu partií z dané pozice a výsledek analýzy MC je pak statistika výsledků těchto partií. Máte už někdo zkušenosti s tím akváriem? Podobnost s CA 10, "zavedení knihovny zahájení jako vědecká činnost", to mě (ani spoustu běžných uživatelů) zrovna nenadchlo. Pokud ale chessbase vyvinula prostředí 100% pro rybku, pak by toto mohla být správná volba.

2008-08-21 12:48:34 | updaty

Pane Vlasaku, vy evidentne Vasika moc rad nemate, ale co, i to je treba :) A jestli nekdo koupil Rybku 2 v poslednich trech mesicich, tak je nedockavy truhlik a budiz mu pravem nadeleno, ze ted ji ma jeho/jeji soused zadarmo.

2008-08-21 12:14:07 | Scratchy007

Musíte motor zavést: pustit Fritze, najet si na kolonku Engine (v české verzi Motory), kliknout na Create UCI engine (v české tam bude slovo UCI). Poté zadáte cestu k motoru (je to jeden z dvou stažených souborů ). BTW: Co je to metoda Monte Carlo?

2008-08-21 12:06:21 | +

Na soupisky je asi ještě moc brzo...

2008-08-21 12:02:19 | re: nejede

A co si přečíst instrukce na těch stránkách www.rybkachess.com. Předpokládám, že ten stažený zip obsahuje pouze engine. Ten je potřeba umístit do nějakého user-interface programu. Viz třeba www.rybkachess.com/index.php?auswahl=Installation

2008-08-21 11:46:24 | nejede

Bohužel mi nejede nainstalovat Rybka 2.2.Stáhnu jí v pohodě, ale poté prostě nic, máte někdo stejný problém??

2008-08-21 11:44:10 | Petr

chci se zeptat. Uz jsou nekde k videni soupisky extraligy a 1. ligy na tuto sezonu???Diky

2008-08-21 11:13:54 | -

+ : já jezdím jenom na hory a tam o bazén nezavadíš ( znám ho jen z televize ) ale jest-li chceš přitáhnu ti nějakého yetiho nebo yetici, s kterou si můžeš založit rodinu a pak si toho žraloka můžete dát jako svatební chod

2008-08-21 11:00:53 | +

Tak dej bacha, abys NEBYL NUCEN vykoupat se v bazénu kde ten žralok bude připraven speciálně pro tebe. Bude to rychlé, plavecké schopnosti nebudeš potřebovat :-)

2008-08-21 10:32:55 | -

+ : já se koupu jenom ve vaně, neumím plavat, takže žraloka asi nepotkám ten čeká na tebe

2008-08-21 10:17:36 | +

- : aby si žralok nestáh tebe

2008-08-21 10:01:44 | -

+ : stáhni si třeba i žraloka

2008-08-21 08:46:15 | +

Tak já si tu dvojkovou rybku stáhnu, dík za odkaz, Emčo.

2008-08-22 20:06:04 | pepa

Díky, tahle posice vypadá realisticky narozdíl od té v diskusi pod 3. částí článku, která může vzniknout jen díky "spoluprácí" soupeřů.

2008-08-22 19:54:15 | jano markos

isteze je taka pozicia. na balkone v ramci podvecernej siesty ma napadla tato: BKh1, ph7, b4,c6,d5 CKb6, pa2,c7,d6,b5 Vyhrava len 1.h8-S!

2008-08-22 12:19:43 | pepa

Když jsme u tech proměn, existuje vůbec nějaká posice, kde by proměna ve střelce byla nutná?

2008-08-21 15:43:31 | -

+ : vtipálek nejsem ale pokud vím tak ryba nohy nemá proto nemůže běžet nýbrž plavat ...

2008-08-21 12:05:03 | +

-, Koukám, že pán je vtipálek....

2008-08-21 10:40:56 | -

+ :) nepoběží ale poplave

2008-08-21 08:26:25 | Alice

2 +: Ano

2008-08-21 08:16:40 | +

Poběží mi Rybka v prostředí Fritze 9, Emčo ?

2008-08-21 07:32:36 | Alice

pro updaty: samozrejme ze nemoznost promenit pesce ve strelce po dovrseni pole promeny nam stale zustalo. A najdou se dalsi

2008-08-20 18:07:40 | Sicco

to ?: ked pozries turnaje k jul 2002 tak tam je jeden za ktory stupa 55 bodov a tento hral este s ratingom 2250 cca takze uz bol poslany skor ako ostatne v tomto obdobi (pravdepodobne) a tak tymto prekrocil 2400 i ked celkovo za obdobie klesal...

2008-08-20 17:03:27 | Emil Vlasák

Pro pana "updaty". Když Vašík 2005/6 kritizoval roční cyklus vývoje, tak měl na mysli koho? Nejspíš Fritze, Hiarcs nebo Shredder, programy s desetiletou tradicí. Takže ne já, ale Vašík opomněl, že "vylepsovat vec na zacatku je snazsi...". Jinak článek má další díly, kde se dočtete, že Rybku můžete koupit třeba i přímo u Vašíka. To už je třetí hlavní. A ChessBase a Convekta mají opravdu mnoho distributorů.

2008-08-20 16:06:28 | ?

Jenomže když se podíváte na Rajlicha ratings.fide.com/tourarc.phtml?codt=2&field1=2011190 , tak to stejně nevychází... jedině opravdu v průběhu turnaje, že by to bylo...

2008-08-20 14:44:02 | Gambit

?: 2400 nemusel mít na zveřejněné FIDE listině, ale mohl si to nechat zaevidovat u rozhodčího v průběhu turnaje, pokud tu hranici překonal.

2008-08-20 14:43:09 | jimmy

hrac nemusi dosiahnut 2400 aby dostal IM .. staci aby po nejakom turnaji prekracoval tuto hranicu a FIDE mu to uzna .. cize ak ma 2390, a v turnaji 1 stupa 20b, rata sa to ze splnil podmienku ratingu cez 2400, aj ked na turnaji 2 klesol o 30b, a FIDE rating na dalsej listine mu vyjde pod 2400 .. a sranda je, ze si moze "zabookovat" cez 2400, aj ked tuto hranicu prekroci niekedy behom turnaja a v zvysnych partiach hra tak zle, ze nakoniec klesa :)

2008-08-20 13:56:09 | distributor

no dalsia moznost si ju "stiahnut" z ruskych stranok :)

2008-08-20 13:49:52 | Bond(James)

Za Rybku by snad dostal titul supervelmistra :-) BTW Taky se o něco podobného pokouším - vyvíjím motor Blue Shark, který by měl rybku sežrat i se šupinama, ale zatím to nehrozí...

2008-08-20 13:31:17 | ?

Jaktože je Rajlich IM, když neměl elo 2400? To dostal za rybku?

2008-08-20 12:43:37 | updaty

Autor opomiji skutecnost, ze vylepsovat vec na zacatku je snazsi, nez vylepsovat vec, ktera jiz dobra je. Nebo si je autor vedom nejakych zasadnejsich bugu v posledni komercni verzi Rybky, ktere by nebyly opraveny? 08/2008 mnoho distributoru. To znamena co? Bud si Rybku koupite od Chessbase nebo od Convekty. Tedy vseho vsudy dva distributori. Prve je s Playchess uctem na rok zdarma, druhe je s analytickym nastrojem nazvanym Aquarium.

Háse k článku

Dobrý den, během posledních dvou dní jsem si pročetl Vaše články o Rybce.

- Ale Fritz už se vůbec nedá považovat za rychlého taktika, kdepak. To jsou už jen Junior, Tiger, možná trochu i Naum, Loop a Sjeng. Poslední rychlý hloupý Fritz byla 5.32, od verze 6 je jasně vidět postupný posun ke znalostem. Dnes to je znalostní motor, v méně otevřených pozicích se dokázal s Rybkou 2 docela poměřovat, podobně jako Zappa, zásluhou znalostí. Jen ta Deep verze chybí, ale na mých starých počítačích s 1CPU je F11 výborný.

- Špatné zahájení proti Zappovi. Jasně, báli se zavřené Sicilské, v tom je Zappa dobrý. A třeba Caro-Kannu po 3.e5 prý Rybka 2 nerozumí (JD). Asi se mělo hrát něco třeba slabšího, ale otevřenějšího, než Španělská v hlavní variantě. Skandinávská, třeba Sc5 ve Španělské, nebo Ruská, tu podle mě hraje Rybka docela dobře.

- Kaufman se, myslím, už podílel na verzi 2.3, možná začal už s 2.2. Ostatně celé poziční hodnocení už prvních Rybek dle Osipova vychází z nějakých Kaufmanových tabulek, kdesi uveřejněných.

- Moje teorie, co se hodnocení pozice týká: Rybka má nějaké statistické tabulky, pravděpodobně z velké databáze nejlépe počítačových partií - nedělají hrubky, na základě kterých při hodnocení načítá offsetem "plovoucí" hodnoty figur v závislosti na pěšcové struktuře. To by vysvětlovalo to velké tělo enginu. Na teorii "pohybových bitmap", jak byl na ni odkaz na Vašem webu, věřím méně, i když i na tom by cosi být mohlo. Ani navzájem se to nevylučuje, může mít obojí. Jirka Dufek psal, že zatímco varianty B9 hraje výborně, některé jiné struktury neumí (o R2). To je asi jeden z důvodů velkého zlepšení trojky, Kaufman doplnil své dílo.

- Nějaký nový zázrak ohledně odsekávání tam bude asi také, zrovna včera to psal i Hyatt na talkchess, protože jen lepším pozičním hodnocením se takový posun nedá vysvětlit. Už první a druhá verze Rybky předčily svou konkurenci schopností prohlubovat propočet, obvykle méně, než dvojnásobek předchozího času. Podíl času, vynaložený na kontrolu hlavní varianty na nové úrovni proti času na odsekání zbytku je úžasný. A Trojka to, zdá se, ještě vylepšila. Nejlepší konkurence (Shredder, Hiarcs, Zappa, Fritz, Toga/Fruit, Naum, Sjeng, Loop, Junior) kolísá mezi hodnotami 2-2.5, pod 2 se dostanou zřídka. Průměrné motory typu Smarthinka se pak blíží skoro ke 3. U starého MChess Pro to býval pětinásobek, bez přepsání kódu ten program nemá šanci, až ho snad Hirsch příští rok pustí jako UCI do světa. Ne pokaždé Rybka trefí nejlepší tah, občas ho i ona musí změnit. U předchozích verzí to obvykle dělala později a s větší ztrátou času, než konkurence. Rybka 3 mi v tomto připadá mnohem lepší, mění hlavní variantu podstatně rychleji, než předchozí verze, nebo se mi to alespoň zdá. Tady musel zapracovat Vašík. To je druhý a třetí důvod toho značného zlepšení od dvojky. Rovněž je to asi příčina, proč se některým korespondenčním hráčům R1 a R2 neosvědčovaly, jsou-li zvyklí používat často multivariant, potom ten Rybku zdržoval více, jak konkurenty, právě kvůli těm pomalým změnám variant (a podobnému hodnocení většiny tahů, ty rozdíly byly menší, jak u konkurence, takže se v multi režimu varianty střídaly častěji). Trojky se to zřejmě už netýká. Navíc její současný náskok je takový, že to teď bez ní nepůjde tak jako tak. Hraji teď na FICGS, R3 nahradila Zappu a nemohu si na ni stěžovat. Je pravda, že multi režim používám zřídka, mám-li pochybnosti, raději pustím kor-analýzu. Multirežim jen v odůvodněných případech, když se chci přesvědčit, o kolik se liší konkurenční varianta ve stejné hloubce. Pracuji hlavně na 32bitech, protože doma se hrají turnaje, ale i tak je docela znát, kdo ze soupeřů R3 ještě nemá. V nějakých partiích jsem odflákl zahájení, protože jsem dlouho nehrál a teď zírám, jak se za 12 let proměnil koršach. Zásluhou R3 jsem asi z potíží venku.

IDeA z Akvária i Monte Carlo jsou jen hračky, i když to v určitém druhu pozic, kde o nic nejde, může dát přesné výsledky. Hlavně žádná taktika, já zkoušel Polugajevského (v Akváriu) a na talkchess je pak příklad na remízovou koncovku KDpxKDVpp, kde MC dává 90 procent straně s dámou - konkrétně 8/5k1p/5q2/8/1R6/6P1/5P2/6K1 b - - 0 0. Tady jsem já zkoušel MC v základní pozici. Vedle celkem normálních 1.c4, Jf3, d4 a nepravidelném Jc3 se tam objeví v širokém režimu i e3 (nejlepší výsledek!), d3 a dokonce a3 a h3, ale nikoliv 1.e4. Zajímavá nechuť k tomuto tahu, to u předchozích verzí myslím nebylo. Asi to souvisí s tou Kaufmanovou snahou naučit Rybku pokud možno nestrkat Jb1 před c pěšce. To takový Minimax uměl vždy a já se kdysi při jeho klonování docela nadřel, než jsem ho přinutil spočítat jako nejlepší 1.e4 :).

Je asi pravda, že Rybka mění svou hlavní variantu asi méně často, než soupeři, např. Shredder poměrně často "přehazuje výhybku" tam a zpět. A když už R. tah zavrhne, málokdy se k němu v další hloubce vrátí.

Co se základu od Fruita týká, na tom možná něco bude. Stejně jako na švindlu o hloubce a uzlech, zejména to druhé je skoro jisté. Byl by to i docela dobrý způsob zamaskování podílu cizího kódu. Chybějících slabých proměn jsem si ani nevšiml, ono to zase při běžné partii tolik nevadí. Pokud by byl pat, tak většinou může tempovat, takže partii nezahodí. Alespoň jsem žádný takový případ neviděl.

Před časem jsem si za tím účelem hrál po letech s Minimaxem, co to udělá, když měření uzlů přesunu do procedury hodnocení pozice? Pak by se počítaly jen uzly, kde proběhlo celé oceňování, nepočítaly by se ty, které nebyly hodnoceny kvůli tzv. hledání klidu, nebo velkému rozdílu materiálu (Minimax nehodnotí pozice, pokud materiální rozdíl přesahuje 2 pěšce, myslím). V základní pozici byl rozdíl jen asi 10 procent, v ostré Polugajevského variantě potom mnohem více. Ale Rybka ukazuje stále podobné hodnoty, nezávisle na druhu pozice, takže přesunutím počítadla uzlů jinam to asi nebude.

Sitwala Mungunda - A short history of the anti-rybka inquisition  

Vas came on the computer chess scene with a weak Rybka, joined the CCC and asked questions from some of the old timers here and got answers, he looked at the fruit code and then he produced Rybka 1.0 which he claimed was 100 elo stronger than the mighty Shredder. He was almost laughed out of the CCC. Then the testing results started coming in and he was right. Rybka was blowing all the hitherto feared chess programs out of the water. His is a story of he came, he saw, he conquered.

Vas decided to go commercial with Rybka and reduced participation in CCC discussions. He soon had his own Rybka forum and built a following of Rybka fans. The fans become a sort of search group for bugs and weaknesses and they kept Vas’s feet to the fire with a constant barrage of criticism and ideas which he worked on promptly issuing a series of updates. Vas become the most accessible commercial programmer in history, which was interesting to watch because he was a commercial programmer while at the same time being a sort of “people’s programmer” at the head of fan group dedicated towards a vision of producing the strongest chess engine possible or perhaps solving chess. This led to the growth of the strength of Rybka in leaps and bounds. Soon the chessbase engine room was being called by some people as the Rybka room. This has continued to this day when the dominance of Rybka has become as some people have said, “insane”.

Obviously the programmers who represented the old paradigm were not going to enjoy this. Sometime during the time of Rybka 2.0 someone asked a question to programmers on CCC to share how they felt watching their brain child and life’s work being beaten senseless by Rybka, he got a volley of angry retorts along the line of “shut up stupid kid!”, and he did shut up, but for the first time it was clear that some egos that had taken years to build had been busted and there was a festering anger somewhere below the surface and soon or later it would break out.

Soon it become obvious from discussions in the CCC that programmers were shifting the direction of their energies less from implementing their own ideas into their programs and more on trying to figure out what exactly made Rybka stronger than their programs. The easiest route was to ask Vas, but Vas had stopped participating in the CCC. This was annoying. A number of comments and complaints were heard suggesting that it was bad and wrong what Vas did, coming to the CCC asking questions and learning things and after learning going commercial and not sharing with others what he had learned. The logic was: he knows something we don’t know, he must have got it here because he was here, and therefore he is in debt to tell us what he knows. The possibility that he has no obligation to do so or that what he learnt is the core of Rybka as a commercial entity and that he needs to protect that to make a living is considered a non-defense. This was the first skirmish.

Then next skirmish: In the absence of vas telling people the secret of his gprogram, energies shifted to theoretical speculation on how Rybka works. There where endless debates on whether Rybka was strong because it out-searched other engines or because it was more knowledge based. There were theories on how it searched and on what and how its knowledge was structured. To answer these theoretical questions people tried to analyse Rybka’s PV and node output to try and extract inferences of its inner workings. They hit a brick wall. Rybka’s output was not following the normal academic conventions and standard definitions of PVs and nodes and its output was useless for purposes of peering into its inner workings. Discussions about Rybka’s node count “obfuscation” raged for months. How dare Vas use none standard ways of calculating nodes? A node should be a node so that rival programmers have a fair chance of knowing how the engine … , no, so that customers who have paid for the engine are given correct information about how deep the engine searches. Vas is not being professional by doing things his own way rather than how the rest of the chess programming profession do things. One of the fiercest accusers of Vas, who always demands yes or no answers from vas, was challenged by someone who knows his own node count practices to say publicly whether or not his program adheres to the standard he wanted Vas to follow. He failed to answer this question and failed to dispute this public charge of hypocrisy that was put before him. Instead he told the person that what he knows was privileged and he should not have asked about it publicly in the forum. He instead offered to share his way of counting nodes “to the Vas camp” if Vas please could agree to show him how Rybka counts nodes. This deal offer was declined. Another interesting thing with this hue and cry about Vas’s node count from programmers was that ordinary customers are contented and happy that they were getting their full elo’s worth of the money they had paid and don’t feel cheated in any way by how nodes are counted. All international competitions and testing groups are showing that chess programs written by people who adhered to the so called gold standards of coding PVs and node counts were having their butts kicked blue by Rybka.

Third skirmish: And then in comes Strelka. A hacker was claiming to have managed to decompile Rybka and was making the source code available to the general public under the name strelka. At last, programmers could finally look at Rybka’s code and learn its secrets. The holy grail of chess programming would at last be in the open for any rival programmer who wanted to catch up with rybka to analyse. Unfortunately the hacker had mixed the decompiled code with other code from other programs such as fruit. It was not clear which parts ware original Rybka code and which parts were from other programs. Anyway people poured over the Strelka code to discover what made Rybka different. Antony Cozzie, one of the most feared programmers looked at the Strelka code and his conclusion was that to his surprise it was a simple unremarkable program, with little chess knowledge, but optimised for fast search. No one else has given a statement of what makes Rybka strong from an analysis of Strelka code. Looks like not much was leant from that code and this road may have reached a dead end. There are also challenges on the value and utility of what you find. Even if you figure out how Rybka works from Strelka code, if those ideas are dramatically original your engine would be a clone. To make things worse Strelka is said to be based on Rybka 1.0 where as the current Rybka 3.0 has had more than 2 years of work and is vastly more powerful, hence it will take a long time for your engine to catch the strength of Rybka 3.0. To have any chance of being competitive you should at least start with a clean copy of Rybka 3.0 source code.

Fouth skirmish: “Hay wait, didn’t Vas say he learnt from fruit source code when developing Rybka? Isn’t fruit under the GPL licence? Doesn’t the GPL licence say if you get even a single line from fruit code you have to make your whole program open source? Ureka! This means if you can prove that Rybka has even a single line of code from fruit you can make noise and unending accusations of him having violated the GPL licence of fruit. Can’t you see? If Vas got a single line from fruit the entire set of Rybka’s, including version 3.0 consists of clones regardless of what work Vas put into them and we can demand that he should hand over the entire source code to us, at last we can have his source code. What? A hacker has compared Strelka and Rybka binaries and has found similarities with fruit? Good job. Let the shaming game begin. Unlike us patented geniuses who single handedly invented every single idea in our programs, which we have worked on for the past 4 to 5 decades (see how knowledgeable we are?), Vas is a common thief with no originality. At last we can knock him off his pedestal of honor and steal his thunder. We can do what our programs failed to do, checkmate vas! Our programs, even if they are 500 elo weaker than Rybka, will shine again for their sublime originality, who cares about solving chess? Any one with proof to support our objectives is welcome. Original mediocrity and scientific stagnation is better than learned excellence and scientific progress.” This is the current line of attack against Vas. This logic aims at disgracing Vas and gives no recognition to his contribution to chess whatsoever. This logic of protecting property rights is bogus because while on the surface it makes quasi-legal sense most people know that it is a Trojan horse for other motives and it ignores the history of how knowledge makes progress. How much has any chess programmers paid Alan Turing or Claude Shannon? How much are Toyota, BMW, Landrover etc paying to the family of the guy who invented the internal combustion engine? How much have the electronics and computer companies paid to the family of the guys who invented the transistor? How much are aircraft manufacturers paying the family of the guy who invented the Aircraft? Why aren’t all these cloners being dragged through the hot coals? Because there comes a time, even in the academic world, when innovative use of existing knowledge gets recognized as a new contribution to knowledge. Rybka is now qualitatively and quantitatively different from Fruit. Or are we saying Rybka has not been an innovation? Has computer chess regressed, stagnated or progressed with the advent of Rybka?

This whole Anti-Vas crusade has now become a no-holds-barred assault to an extend where it has gone full circle, which is confusing: Self titled defenders of property rights, originality, ethics and truth; respected longstanding CCC members who say they stand on the side of high programming standards and progress in chess programming, are in open alliance, debating in lock step and basing their judgment on the work of hackers, reverse engineers, and self confessed cloners. Whence cometh this new unity? Gentlemen, fruit code is still out there as open source, remember? Let’s go read it and tinker with it, who knows, maybe in less time than it takes monkeys hammering at a type writer to come out with what I have written here, we will come out with a program stronger than Rybka. Nah, forget it, we are too knowledgeable to learn anything from fruit, our sole interest is to investigate GPL infringements and enforce GPL rules as an end in itself. We want vas to make his programs open source code first and then we will prove our case later, see? Sensibly Fabien who is alleged to have been wronged by Vas has not embroiled himself in this campaign. Reasonably so because he has already been publicly honored by Vas for his contribution to chess programming and, from a chess programming advancement stand point, he is probably more proud of Vas as his student than he is of Vas’s vehement critics.

http://64.68.157.89/forum/viewtopic.php?topic_view=threads&p=211615&t=23249

Zach Wegner – For Vass

Vas,

You agreed to answer any questions about similarities between Rybka 1.0 and Fruit. I am glad that you have agreed to do such, and I hope you take the time to answer each of the concerns that I and others have.

This list of similarities between Rybka 1.0 and Fruit was compiled in the past day or so. It's by no means complete, and there are other issues that I've found that I haven't totally verified yet. Each item in this list may be a small similarity that other engines also have, but the idea is to show how many of them are. At some point it will have to be decided whether it all is just a coincidence or not. For those that ask for proof, I'm going to try to set up a web page with snippets of disassembly compared to the Fruit code for each claim made here. Any assistance that anyone has in doing this would be greatly appreciated. It would also help to point out low-level similarities between Strelka and Fruit. These would be verified against Rybka 1.0 by myself or someone else before posting.

I will add, Vas, that some have questioned our motives in presenting these questions. I believe that Rybka started its life as Fruit. I don't wish that you stop. You have obviously done some amazing things with Rybka, and I want them to continue just for the sake of advancement. I just want everyone to play by the rules. If you started with Fruit, there's no problem with that, you just need to be forthcoming about it and abide by the license. I'm not even interested in the legal aspect of all this, that would be for others to handle if necessary.

COMMAND INTERPRETER:
--The UCI 'go' parser is virtually identical (as shown by Rick Fadden), including the time control code

SEARCH:
--Does not use fractional extensions
--In the root function, for initializing the search, the order of steps is:
Generate legal moves
Setjmp
Limit depth if num_moves == 1 to 4
Increment hash age
Reset killers
Reset history
Look up hash move
Score and sort moves
--Use identical easy move logic: if (depth == 1 && best_score > second_best + 150) easy=true;
--both use flags in the root function bad_1 and bad_2

EVAL:
--Piece square tables are of the form [12][64][2], where the last entry is game stage

TRANS:
--Stores both a minimum and maximum bound in the hash table, and depths for both
--Stores only 32 bits of the hash key
--Stores a quantity called "move depth"
--For the replacement scheme, a value is calculated that is trans_age[entry] - depth, where trans_age contains the difference of the current date and the entry's date mod DateSize (4 in Rybka, 16 in Fruit). This is multiplied by 256. In Rybka, the table has the values already multiplied by 256, and in Fruit, it is multiplied on the fly.
--Both use a bucket system with 4 entries

BOARD REPRESENTATION:
--Uses an "undo_t" to store moves that it made, which are only kept on the system stack, not in regular memory.
--Only game history stored is a stack of hashkeys
--The index of this game history is stored as an int, not a pointer
--Two values, "opening" and "endgame" are stored in the board, containing sums of piece square tables
--The masks for hashing castling status are WK=1, WQ=2, BK=4, BQ=8
--For hashing of castling status, the hashkey is updated by CastleHash[oldflags ^ newflags], rather than the more natural CastleHash[oldflags] ^ CastleHash[newflags]
--Both have separate make_null and undo_null functions


http://zct.sourceforge.net  http://chessprogramming.wikispaces.com

Zdrojáky

http://pagesperso-orange.fr/ct_chess/Fruit-Rybka/start_go.html  Rybka beta x Fruit

Rybka do hloubky

4. 9. 2008

Seriál o Rybce jsem psal velmi jednoduchým stylem, aby si ho mohli přečíst i obyčejní šachisté. Z toho důvodu jsem měl pochybnosti o posledním dílu, který byl přece jenom relativně dost odborný; několikrát jsem ho proto zjednodušoval a zkracoval. Proto mne příjemně překvapila diskuze pod touto částí; jak počtem příspěvků, tak jejich kvalitou a zasvěceností. Přišlo také několik zajímavých mailů.

Chyba v tabulce MS

Kopírováním jsem zanesl chybu do tabulky MS. Jak je vidět z návazností, Turin 2006 byl 14. WCCC. Tato chyba se také přenesla do tabulky výsledků. Omlouvám se.

Slabá proměna ve střelce

Zatímco slabá proměna v jezdce může mít opodstatnění v jeho odlišném chodu (typicky Ke8 Pd7 – Ke6 Db7, 1.d8J+!), tahy věže a střelce jsou podmnožinou tahů dámy. Jediným důvodem (vedle zesměšnění zarputilého soupeře) je tedy vynucení nebo zabránění patu. Tady je jedna „studie z partie“ od Maria Matouše.









Mario Matouš
Krabbé 60JT 2003, 4. čestné uznání
bílý vyhraje

Mario velmi dbá na řešitele. Jeho pozice jsou reálné, hra běží velmi přirozeně 1.h7 Dh1+ 2.Kb6 Dxh4 3.Se6+ Ka3 4.h8S!!, ale o to víc pak šokuje pointa. Nešlo 4.h8D Dxd4+! s patem. 4...Dg5 5.Sb2+ Kb4 6.Shc3 mat.

A pro fajnšmekry přidávám jednu z nejzajímavějších pozic na toto téma. Ta je sice od pohledu poněkud „umělá“, ale dobře řešitelná. Čas od času ji úspěšně používám na soustředění mládeže našeho oddílu; chovance vždy dost potrápí, ale nakonec – po odhalení pointy – i dobře pobaví.

 HTML clipboard








A. Hurting
Schackvarlden 1943
bílý remizuje

1.a8S+! Kc8 2.b7+ Kd7 3.Dd5+ Ke7 4.De5+ Kf8 5.Dxg7+ Kxg7 6.h8S+! Kf8 7.g7+ Kf7 pat.

Rybka samozřejmě takovým pozicím nerozumí vůbec, což ji pro studiové analýzy značně degraduje.

Vývojový cyklus programu nebo spíš cash-flow?

Pan „updaty“ upozorňuje, že v začátcích programu je třeba víc updatů, než u starých zavedených verzí. To je částečně pravda, ale podstata problému je v něčem jiném.

Předpokládám, že třeba SMK i po dlouhých letech vývoje nefunguje tak, že by se celý rok poflakoval a pak 20 dní finišoval po nocích, aby holt měl zase novou verzi. I on průběžně experimentuje, přidává nové šachové znalosti, ladí hledací algoritmy a posouvá program po 5 ELO bodech dopředu. V principu by tedy mohl také poskytnout update každé dva měsíce. Jenže musí z něčeho žít a co by pak prodával? Celý rok tedy vylepšuje „do šuplíku“ a až se mu nashromáždí 50-80 ELO, může si dovolit jít na trh s novou verzí a zase něco vydělat. To asi Vašíkovi došlo poněkud později.

 

Nultahová heuristika a profylaxe

Heuristika je obecně jakási objevná (heuréka!) metoda řešení problému, která je sice prakticky užitečná, ale nemá obecnou platnost matematického algoritmu a občas proto i selhává.

Nultahovou heuritisku popsal pěkně „Pepa“. Vychází obecně z předpokladu, že ve většině šachových pozic je právo tahu výhodou. Zatáhnu tah A a nevidím, co by měl dělat soupeř. Proto – proti pravidlům – jeho tah vynechám (nulový tah) a udělám tak vlastně dva tahy za sebou. Když to nic moc nepřinese, prohlásím tah A za slabý, odpověďmi soupeře neztrácím vůbec čas a raději hned zkouším jiný můj tah B. Některé programy aplikují nulové tahy rekurzivně (opakovaně), což jim umožňuje velmi hluboký selektivní propočet.

Bude-li ovšem soupeř po tahu A v zugzwangu (česky v nevýhodě tahu), pak mi to zcela unikne. To bych totiž musel zjistit, že všechny jeho tahy vedou ke zhoršení pozice; ale podle heuristiky je přece vůbec nezkoumám!

„Skamarádit“ nultahy s zugzwangem je tedy jako smířit oheň s vodou. Fritz se o to pokouší se střídavými úspěchy už patnáct let. Obvykle se používají další heuristiky, podle kterých se může zugzwang vyskytnout jen v koncovkách s jednou figurou, to se pak nultahová heuristika vypíná. Ale šachy jsou příliš bohaté a záludné, zde je klasický příklad.

 HTML clipboard








podle Bondarenka 1963
mat 3. tahem

Na diagramu je typická pozice, kde mat třetím tahem 1.Sd5! e4 2.Kh3! e3 3.Sxg2 vidíte možná okamžitě. Ne tak řada programů.

Vyzkoušejte starší „Fricky“. Legendární blicař 5.32 je úplně mimo. Sedmička mat vidí, osmička zase ne, desítka ano, jedenáctka ne. Pokud vám to vychází trochu jinak, máte některý z motorových updatů; i chování fritzovských podverzí se totiž často lišilo.

Zkoušku nesloží ani Zappa Paderborn, zatímco Zappa Mexico je v pořádku. Naum 2.2 najde, 3.0 nikoli. Loop nevidí hned v několika verzích. Bohužel nehezky propadá i můj oblíbenec Hiarcs, když výhru nenajde žádná novější verze 10, 11 nebo 12.

Rybka 2.32 je OK; zato Rybka 3 viditelně „zadrhne“. Sice jen jednu nebo dvě sekundy (podle kvality stroje), ale při obrovských rychlostech a vynucených tazích černého to znamená poměrně rozsáhlé tápání. To je důkaz, že bez nultahové heuristiky se neobejde ani Vašík. Nultahy vyloženě odmítal jen Richard Lang, mnohonásobný mistr světa v 80. letech minulého století.

Richard se už ale špičkovým PC šachem dávno nezabývá. Věnuje se tomu, co uměl nejlépe – úspornému šachovému programování malých zařízení. Svého ChessGenia vám nabídne prakticky ke každému telefonu nebo PDA www.chessgenius.com.

Jak jsem ukázal v diskuzi, nultahová metoda se nezrodila v hlavách programátorů. Podobně dávno uvažují někteří zkušení šachisté, kteří jen nepočítají varianty ale v určitých pozicích „myslí v obrázcích“.

Naproti tomu přirovnání k Nimcovičově profylaxi podle mého názoru moc nesedí. Nimcovič kryl „do zásoby“ strategicky důležité body. Vycházel přitom z jiné heuristiky, že totiž takto postavené kameny mají jakousi vnitřní harmonii, která zafunguje i poté, co se například pozice otevře. Souvislost s nultahovou heuristikou ovšem nevidím.

Monte Carlo

Metoda Monte Carlo spočívá v tom, že se z výchozí situace vnitřně v počítači sehraje velmi mnoho náhodných partií a z jejich výsledků se situace statisticky vyhodnotí. Říkám úmyslně „situace“ a ne pozice, protože metoda MC se v programování her léta používá například v backgammonu nebo pokeru.

V backgammonu se metoda obvykle nazývá rollout. Profesionální hráči mají doma několik počítačů, které prakticky nepřetržitě „rolloutují“ sehrané partie. Výsledky jsou pak hlavním studijním materiálem. Také pokerová literatura obsahuje nejrůznější pravděpodobnostní tabulky získané počítačovou emulací.

Možná už tušíte hlavní problém. Jde totiž o případy, kde padání kostek nebo rozložení karet vnáší do hry prvek náhody. Exaktní analýza je proto velmi obtížná nebo dokonce nemožná, zato „montecarlové“ partie se už z principu jedna od druhé významně odlišují.

Šachy jsou ale případ přesně opačný. Fritz umožnil už dávno příkazem Speciality >> Analýza >> Dohrávky nechat opakovaně dohrávat pozici, dokonce různými motory. Tato funkce se ale moc nepoužívala, protože bez náhodného prvku jsou partie často až příliš podobné.

Z toho důvodu má Rybka v motoru už od minulé verze zabudovanou funkci Randomizer, kdy hraje variabilně v zadaných mezích hodnocení. Její přesný popis najdete zde a zbytek je opravdu už jen záležitost rozhraní.

Analýzu Monte Carlo spustíte ve Fritzovi podobně jako dohrávání, tedy Speciality >> Analýza >> Monte Carlo. Zadáte hloubku, do jaké se má pozice dohrávat a kvalitu výsledného stromu (Úzký, Střední, Široký).

Zprvu jsem měl dojem, že funkce prostě nefunguje. Je ale třeba chvíli vydržet. „Přípravné práce“ totiž trvají až několik minut, kdy se zdánlivě nic neděje. Pak se najednou zavedou další motory a vysokou rychlostí se začne před vašima očima vytvářet strom.

Moji počáteční skepsi nakrátko zastínilo nadšení, jak chytře je ta věc realizována na vícejádrových počítačích. Tady se totiž nepoužije DeepRybka, jak by člověk při povrchní mechanické úvaze očekával. Místo toho se zavede zvolený počet single Rybek – až do počtu jader. Zatímco efektivita paralelního běhu DeepRybky je relativně slabá, při Monte Carlo se tak využijí jádra prakticky na sto procent.

Nicméně stejně je to asi nakonec nanic. Jirka Dufek mi napsal: Zkoušel jsem přes noc MC na mé korespondenční partii - a žádné relevantní výsledky jsem nedostal. Jen asi 14.000 nesmyslných partií, protože nedošlo k větvení v prvním půltahu - a to jsem dával volbu "broad". Z tohoto důvodu to vidím jako plošně nepoužitelné.

Také Pavel Háse soudí, že Monte Carlo a IDeA (z Aquaria) jsou jen hračky, které mohou být užitečné jen v určitých zvláštních pozicích.

 

Co je uvnitř Rybky?

Děkuji za podnětnou připomínku, že mnou uvedená délka EXE souboru verze 3 – 2.5M – je minimum v celém vývoji Rybky. Některé předchozí verze měly až 6M a updaty velmi kolísaly. Tento aspekt mi trochu unikl a ještě jasněji naznačuje, že většina toho místa bude skutečně jen maskovací výplň. Ale i malá část se dá smysluplně využít. Že jsou v Rybce rozsáhlé tabulky, proskočilo už několikrát – obvykle z ruských kruhů.

Rusové jsou velmi dobří v programování a zpětné analýze a mají na to zřejmě také dost času. Je docela s podivem, že dosud nevyrobili špičkové šachové motory; původ Strelky je přece jen poněkud problematický. Asi je to dáno především historickým zaostáváním v oblasti hardwaru.

Jedním z nejzajímavějších nápadů v diskuzi byla vzpomínka na Fritze 3, který obsahoval tabulky polí a kamenů. Fritz uměl rozeznat více než sto typických pěšcových konstelací (zablokovaná Francie, izolovaný pěšec,..). Konstelace měly svůj kód, který program při hře indikoval. Ke každé takové konstelaci si mohl uživatel připravit tabulku, kde každý typ kamene měl různou sílu na jednotlivých polích šachovnice. Tak – prakticky bez ztráty výpočetního výkonu – se program „naučil“ umisťovat figury na správná místa. Později tato možnost zmizela, údajně jako „oběť“ převodu pod Windows a do motorové koncepce. Fritz ale podobné struktury určitě používá a zdokonaluje i nadále, jen jeho autor Frans Morsche (Nizozemí) nechtěl, aby mu konkurence viděla do kuchyně. Podobné tabulky ostatně najdete i ve zdrojácích Fruitu.

Frans patřil do party Richarda Langa; také on začínal úspornými programy pro speciály Mephisto, kde se počítal každý bajt. To se přeneslo i do začátků jejich kariéry v PC-šachu. Motor Fritze 1 (fritz.bin) měl pouhých 29 kbajtů (setina Rybky3!), taktický 5.32 kolem 150kb. V prvním období „nabírání znalostí“ se verze 6-9 dostaly na 450k a nové 10-11 přibraly na 900 kb. Na rozdíl od Rybky je ale celý prostor skoro určitě využit účelně. Frans také velmi dbá, aby doplňování znalostí co nejméně brzdilo rychlý propočet; to jsme ostatně viděli při testování kN/s v základním článku.

Dovedu si představit, že je možné vytvořit asociace nejen na pěšcové řetězy, ale i na určité vzorky postavení kamenů.

Kramnik nedávno v rozhovoru uvedl, že musí denně vidět několik zajímavých pozic, které mu připravuje trenér. Tím si zdokonaluje jakousi knihovnu vzorků, umístěnou v mozku. V té pak při hře hledá analogie, často třeba i podvědomě.

Plnění tabulek by Vašík skutečně těžko dělal ručně. Už tvůrci DeepBlue popsali, že koeficienty oceňovací funkce vytvořili automatickým adaptivním procesem. Stručně řečeno, opakovaně „proháněli“ motorem databázi kvalitních partií, až dostali nejvyšší shodu s hranými tahy. Tak nějak lze jistě „vyladit“ i tabulky polí a kamenů.

V této souvislosti Jiří Dufek a Pavel Háse upozornili na roli Larry Kaufmana. Ten pracuje s Vašíkem už od verze 2.x, dokonce existovala speciální varianta 2.32 LK. O Larrym je navíc známo, že už delší dobu pracuje právě na podobných tabulkách.

Proč je tak dobrá

Pavel Háse píše: Základem úspěchu je zcela jistě prohlubování propočtu. Spusťte novou Rybku v jakékoliv pozici a pozorujte, jak se dostává do hloubky. Největší podíl zabere kontrola hlavní varianty a následuje rychlé odsekávání ostatních tahů. Zdá se, že tento poměr je mnohem lepší, než u konkurence. Druhá možnost je pozorovat, po jakých intervalech dokončí program jednotlivé hloubky. U Rybky se ten poměr obvykle pohybuje v intervalu 1,5-2,0, zatímco u konkurence většinou tak 1,9-2,5. Čím starší program, bez nových technik, tím hůře. Starý MChessPro potřeboval dokonce zhruba pětinásobek.

Tomu se říká selektivita a má samozřejmě i své nevýhody; může se přehlédnout silný, ale na pohled špatný tah. Tím by se vysvětlovalo, že na studie se Rybka příliš neosvědčuje.

Mladším čtenářům bych rád připomněl, že MChess Marthy Hirsche (USA) měl v počátcích PC šachu (přelom 80. a 90. let) podobně výlučné postavení, jako dnes Rybka. Marthy se nedávno nechal slyšet, že v roce 2009 dá k dispozici MChess jako UCI motor. Bude to jistě zajímavé srovnání. Pavel Háse je názoru, že s koeficientem kolem 5 nemá MChess dnes šanci a musel by být značně inovován.

Klonování a GNU licence

Diskuse o tom, zda je Rybka klonem Fruitu, neutichají a zapojily se do ní známé osobnosti jako Anthony Cozzie (Zappa), Christophe Théron (Tiger), Robert Hyatt (Crafty) nebo Chris Whittington (Superchess ještě na ZX Spectrum, Chess System Tal).

Dopis mladého programátora Zacha Wegnera (Questions for Vas) a přehledný srovnávací výpis části kódu obou programů do značné míry usvědčují Vašíka z toho, že Rybku napsal editováním Fruitu. Jeho dodatky a změny jsou ovšem tak značné, že už se asi o klasický klon skutečně nejedná.

Hodně se také diskutuje o tom, zda Vašík porušil tzv. GNU licenci Fruitu. Podrobnosti o GNU licenci si můžete přečíst česky na cs.wikipedia.org/wiki/GNU_General_Public_License.

Stěžejním bodem pro náš případ je, že zdrojové kódy mohou být sice volně upravovány a používány, šířeny však mohou být opět jen jako GNU. A to Rybka evidentně není.

 

Rybka a rozdělení světa

Jeden z diskutujících napsal, že zřejmě Vašíka nemám příliš rád. Nemyslím a koneckonců to ani není důležité. Ve skutečnosti mnoho lidí potřebuje svého „hrdinu“ a jeho kritika se jim nelíbí. To není na adresu diskutujícího, jde o celosvětový stav. Vážným zájemcům bych doporučil ke čtení dopis Sitwala Mungunda.

Autor z exotické Zambie se nezabývá technickými, ale spíš společenskými aspekty fenoménu Rybka a jeho text je mimochodem dobře hodnocen i na „rybím“ fóru.

Svět PC-šachu se rozdělil na „protivašíkovskou inkvizici“ a jeho obdivovatele. Členové inkvizice přestali programovat a testovat a místo toho na Talkchessu Vašíka napadají. Příznivci odešli z Talkchessu na Vašíkovo „rybí“ fórum, kde často diskutuje i sám autor Rybky.

Pravda je – jako vždy – samozřejmě někde uprostřed.

Vašík – díky jednomu, dvěma nápadům – stojí na ramenou několika generací programátorů a testerů. Ať už klonoval nebo ne, rozhodně od nich získal zadarmo tuny myšlenek, zkušeností a dokonce i hotových modulů. Sám se ale podělit nechce a jistá rozmrzelost zbytku světa je proto pochopitelná. Na druhou stranu podnikání a obchodování je stále drsnější; nápady se dobře platí, takže si na podobný vývoj musíme zvykat i v šachovém softu.

  

příspěvky k článku

2008-09-06 09:25:01 | Tom Rösner

Jistě, můj příklad se netýkal přímo našeho tématu. Jen jsem chtěl upozornit, že jednou možná příjde doba, kdy se uživatel bude muset zajímat, jestli je jeho legální soft skutečně legální. Ostatně před několika lety šokovala svět slavná dohoda Microsoft & Novell o vzájemné spolupráci a patentovém neútočení (např. na koncové zákazníky, kteří nakupovali v dobré víře ;-) , načež se svými prohlášeními přispěchali jednak RedHat, která prohlásil, že za svými zákazníky stojí a případné prohrané spory bude sanovat z vlastních zdrojů, a dále Sun (aspoň pokud si dobře vzpomínám), který prohlásil, že je na oplátku připraven odpovědět stejnou mincí Misrosoftu, který pro změnu vědomě porušuje jeho (stejně nesmyslné) patenty. Ostatně na IT portálech je spousta informací k tomuto problému, takže jste je určitě zaznamenal. A jen pro příklad, aby čtenáři alespoň trochu tušili, jaké že to patenty se porušují v jedné nejmenované zemi mezi Kanadou a Mexikem? Víte třeba, že Microsoft si před čtrnácti dny patentoval používání kláves PageUp a PageDown pro pohyb v dokumentech? Viz: www.zive.cz/Bleskovky/Microsoft-si-patentoval-Page-Down-a-Page-Up/sc-4-a-143277/default.aspx . Z toho až mrazí....

 

2008-09-05 23:13:44 | Pavel Háse

pro Tom Rösner: Jestli to dobře chápu, nepíšete o nelegálních programech a OS, nýbrž o patentu. Teoretický příklad, např. když někdo s třeba s pomocí disassembleru prostuduje MS-Office a začne nabízet podobný kancelářský balík o polovinu levněji, to máte na mysli? Nejsem si jistý, zda by legálního uživatele takového balíku mohl MS úspěšně žalovat, vše by skončilo na tvrzení o nákupu v dobré víře, řekl bych (nejsem právník). Nehledě o tom, že ani americké patentové právo nezabránilo právě MS v přebírání nápadů, ne-li přímo kopírování Mac OS. A zpět k Rybce, plagiátorství Rybky není prokázáno (to srovnání výpisů jsem ale ještě neviděl), věrohodným důkazem nemohou být tvrzení Osipova, který sám vlastně porušil licenční podmínky disassemblerem. Natož pak Pascutta.Jak ten přišel na tu podobnost s málo známým Beowulfem, to by mi opravdu zajímalo. To by se musel zkoumat kód - a to by byl Vašík hloupý, kdyby něco takového v současnosti hodně zaostávající konkurenci ukazoval.

 

2008-09-05 17:22:42 | Bond(James)

Je třeba Vašíka mírně přiožrat a třeba se přizná (jako tuhle Maník...)

 

2008-09-05 16:35:57 | Tom Rösner

Pavel Háse: cituji - "Nějaké klony a licence zajímají hlavně autory. Mě zajímá, abych měl lepší program, než konkurenti, jakým způsobem ho autor, nebo plagiátor vytvoří, je mi úplně fuk." Dovolím si oponovat. Vybavuji si, že čas od času Microsoft vyhrožuje, že za porušování svých patentů (mimochodem, mnohdy dost pochybných) zažaluje nikoliv vývojáře, nýbrž koncové zákazníky (!!). Pravda, americké patentové právo je v EU momentálně nevymahatelné, ale kdo ví, co nás čeká za pár let. Jistě nikdo z nás nepochybuje, že softwarový gigant umí účinně lobbovat. Kapr: To, že je svobodný kód snadno zneužitelný, žádného piráta neomlouvá. Tečka

 

2008-09-05 10:52:35 | kapr

Alice: Tak ono to srovnávat s vyloupením banky moc srovnávat nejde. Spíš to vidím tak, jako by banka půjčovala anonymním zájemcům libovolně velkou sumu peněz a spoléhala na čestné slovo, že ji to neznámý vrátí i se smluveným úrokem. GPL si doslova říká o to, že to někdo zneužije. A dokazování toho není zrovna jednoduchá věc, téměř nemožná.

 

2008-09-05 10:45:08 | Tom Rösner

James Bond: vzpomínám si na scénu z filmu Kulový blesk, kdy Rudolf Hrušínský říká: "Milá paní, to co říkáte zní naprosto logicky, zákon ale hovoří jasně....". Nejde navíc o to, že někdo vydělává na prodeji GPL softwaru, toto licence v žádném případě nezakazuje. Licence jen prostě nedovoluje čachrování s GPL kódem, aby si jej (nebo kteroukoliv, třeba i nevýznamnou část) kdokoliv uzavřel a prsknul tam svůj copiright. Pokud by byl Fruit licencován pod licencí MIT, nebyl by problém kód uzavřít, MIT licence uzavření dovoluje, ale to sem vlastně nepatří. Jen tak mimochodem, to je třeba důvod, proč Bill Gates má rád MIT, zatímco GPL upřímně nenávidí. Proč asi?

 

2008-09-05 10:01:37 | Alice

2Bond. Stejnou logikou muzu vyloupit banku a pak zit napr. z uroku a z investic ukradenych penez - prekvapive po nekolika letech puvodni kapital vubec nebudu potrebovat. Jde o pochopeni GPL licence - pokud ji nepochopis, tak nema cenu diskutovat.

 

2008-09-05 09:57:04 | Bond(James)

Ale on přece nevydělává na tom, že něco zkopčil, ale že něco nového vyvinul. Samotná kopie by mu nevynesla ani floka.

 

2008-09-04 23:19:03 | Radikál

Jestli Venda zkopíroval Fruit, porušil GNU licenci a teď na tom vydělává, tak by měl jít do vězení. Každý kdo pochází z Čech je vychytralý a myslí jen na sebe - to je pro mě důkaz.

 

2008-09-04 19:59:21 | kapr

Koukl jsem na ten odkaz, moc tomu nerozumím. Ale příjde mi to fakt odporný, jak pořát rybu tahají do všemožných sra***. Počítačový šach zas až tolik nesleduju a zajímá mě hlavně v té podobě, že mi pomáhá ve vlastních výkonech. Ale co je moc, to je moc. Pěkně to tu napsal Pavel Háse. Rybka se mistrem světa nestane pouze v případě, že ji nepřipustí k bojům. Danailov může Kramnika znervózňovat a urážet. Ale rybku? 110001001110, tu takový věci nezajímají :)) Kopie open-source programu poráží člověka i konkurenci černýma bez pěšce f7 :)) Určitě :)) Většina lidí a šachoví profesionálové však ví své, rybka je nejlepší... Na spodu té stránky je: First they ignore you, then they laugh at you, then they fight you, then you win. – Mahatma Gandhi. Tak do toho, rybko!

 

2008-09-04 19:27:22 | Scratchy007

Je možné, že částěčně okopčil Fruita, ale to je těžko dokazatelné. Rozhodně to ale nebyla hlavní příčina úspěchu.

 

2008-09-04 19:06:38 | Pavel Háse

Nějaké klony a licence zajímají hlavně autory. Mě zajímá, abych měl lepší program, než konkurenti, jakým způsobem ho autor, nebo plagiátor vytvoří, je mi úplně fuk. Rychlé odsekávání nasvědčuje nějaké nové metodě řazení tahů, nebo optimalizaci kódu. Zrovna generátor od Fruita asi neopsal - Rybka může být i 64bitová, zatímco Fruitovi taková kompilace nepřinese téměř nic. Tak co zbývá? Nějaké základy pro jeho vlastní oceňovací funkci (tu má zřejmě o dost lepší), správa hash, přístup k tb a knihovně (tu R. nativní nemá, takže neopsal), základy pro jeho efektivnější afabetu. Já si myslím, že 100% to prokázané není. A celý ten humbuk vidím tak, že neschopná konkurence si chce prohlédnout kód, aby se páni dozvěděli, na co nepřišli sami. Zejména Théron je těžce nedůvěryhodný. Kdysi něco podobného zkoušeli na Reula, během MS.

 

2008-09-04 18:57:39 | Bond(James)

Jestli se zachoval morálně a v souladu s právem, to já samozřejmě netuším, jenom tvrdím, že svými úpravami dotáhl zmiňovaný program minimálně o třídu výš a to je obdivuhodné.

 

2008-09-04 18:33:52 | kapr

Tom Rösner: No já vím, že to dobráci z GNU dělají za podobným účelem jak píšete, ale... Představte si, že někdo vystaví obraz Mony Lisy na volně dostupném, nehlídaném, místě s dobrým úmyslem, aby se na něj mohla podívat široká veřejnost. 1000 lidí se podívá, a pak obraz najednou zmizí... :)) Tento problém je již tak trochu za hranicí NSS, i Microsoft byl obviněn, že si něco "vypůjčil" z OpenOficce. Ale je pravda, že kdyby se dokázalo, že Vašík podváděl, asi bych ho už tolik neobdivoval a veškeré mé city by se přenesly už jenom na rybku :))))))))) Jenže díky bohu to je téměř nedokazatelné. S pozdravem Kapr

 

2008-09-04 18:08:25 | Tom Rösner

James Bond: "A co on sám zveřejní ze svých algoritmů a postupů je čistě na něm". Není, přečtěte si na Wikipedii heslo o GNU GPL, viz článek. Ostatně věta pana Vlasáka "Stěžejním bodem pro náš případ je, že zdrojové kódy mohou být sice volně upravovány a používány, šířeny však mohou být opět jen jako GNU. A to Rybka evidentně není" vše vysvětluje. Kapr: "Pokud to dobře chápu, GNU zveřejnila zdrojáky fruita a díví se, že si je někdo obšlehne a zdokonalí :))" Nechápete to dobře, licence GNU GPL hovoří jasně. Kdokoliv SMÍ svobodně upravovat kódy, zveřejněné pod licencí GPL, ale šířit je MUSÍ opět pod licencí GPL. Někteří zde zřejmě absolutně nechápou principy, na kterých stojí tzv. Svobodný software. Zveřejní-li vývojář svůj pracně vytvořený software pod GPL (třeba proto, že na další vývoj nemá čas), dělá to proto, aby kdokoliv z komunity vývojářů jeho software vylepšil, vylepšený následně komunitě vrátil, z čehož bude nakonec ve výsledku profitovat i původní autor, bude moci používat lepší software, než by byl schopen napsat on. Nedělá to proto, aby někdo jeho kód schramstnul, prohlásil ho za svůj a následně parazitoval na práci původního autora. Proto je zde licence GNU GPL. V žádném případě tímto neříkám, že se tohoto neetického chování (v podstatě počítačového pirátství) dopustil i autor Rybky, proto jsem ve svém předchozím příspěvku napsal, že "...je momentálně na tahu, aby vyvrátil důvodné podezření z krajně neetického porušení svobodné licence...".

 

2008-09-04 17:01:10 | Tr

Vašík není nejlepší - nejlepší je jeho Rybka:)

 

2008-09-04 16:54:11 | Alice

Zadnu GNU nic nezverejnla.Uvadene ELO napr. 3100 ci v ELO listinach jako CEGT nelze porovnavat s lidskym. Vasikova Ryba samozrejme prohrala - a to se Zappou. Doporucuji si projit dostupne zdroje, oba tabory se dost tezce urazely a napadaly a Vasik si nabehl - i kdyz za to muze take Jeroen Noomen, Dagh Nielsen (knihovna) a napr. diky upravam Kaufmannovym Ryba nevyhrala koncovku s 3 pesci vic.

 

2008-09-04 16:42:47 | kapr

Pokud to dobře chápu, GNU zveřejnila zdrojáky fruita a díví se, že si je někdo obšlehne a zdokonalí :)) To je jako rozházet na náměstí peníze a říct, že si je nikdo nesmí vzít. Samozřejmě to myslím trochu s nadsázkou, ale jen trochu. A že je na Vašíka konkurence už nabroušená, když někdo vydá jednu z verzí rybky jako free verzi, není se moc čemu divit :-) Byznys je tvrdej job. Všechny ty řeči o podvodech svědčí o tom, že žádný z konkurentů není schopen Vašíka porazit na 64 polích... Možná kopíroval, možná ne, já mu fandím. Rybka je konec konců po robotovi druhé nejpoužívanější české slovo ve světě (aspoň v tom šachovém :) A pokud je tak snadný naklonovat fruita na 3100, proč to napadlo jen Vašíka? Snad né proto, že je jediný nemorální člověk :))

 

2008-09-04 16:36:10 | Alice

2Bond.Zjevne nepochopeni zminovaneho problemu. Nejde o to, proc je Ryba nejlepsi, ale o to, ze pokud byl pouzit jakkoliv velky kus kodu Fruita (pripadne cehokoliv) ktery je pod licenci GPL, pak musi autor zverejnit se dilo vcetne zdrojovych kodu.

 

2008-09-04 16:21:44 | Bond(James)

Každý programátor vychází z toho, co dosáhly generace před ním. A co on sám zveřejní ze svých algoritmů a postupů je čistě na něm. A co se týče causy klon - pokud by Rybka byla klonem jakéhokoliv programu, tak by nemohla být nejlepší.

 

2008-09-04 15:13:20 | Alice

Prakticky dokonale dovrseni predchozi trilogie od p. Vlasaka. Pripadne poruseni GPL lze vzit alespon v teoreticke rovine za prokazane, nicmene pochybuji, ze za to Vasika nekdo vytaha za usi. Myslim ze i diky tomu, jak se myslim neslo na CCC, Letouzey prenechal prava k Fruitovi komu (?) - no Vasikovi.... :-)

 

2008-09-04 14:13:36 | Tom Rösner

Komerční počítačový šach je mi šumafuk (vystačím si se Scidem a Craftym), ale porušení GPL rozhodně ne. Autor Rybky je momentálně na tahu, aby vyvrátil důvodné podezření z krajně neetického porušení svobodné licence. Jsem zvědav, jak se celá věc vyvine. Nezbývá mi nicméně, než poděkovat panu Vlasákovi za sérii nesmírně kvalitních článků. Díky!

 

2008-09-04 10:16:53 | MaX

Spíš už rok (a marně) držím palec ostatním programatorům. Pryč jsou doby, kdy hra enginu na playchess byla sranda. Strašně rád vzpomínám na dobu Shredra9, Fritze 8xy, Toga 1.3, Deep Junior. Mango Fruit, Apple Fruit :) Tohle všechno je pryč. Hlavně ať neskončíme jak ve filmu Terminátor, tam dal šachový programator možnost vzniknout robotům a Arnold už je dneska z formy :)