Magyarázat
A perft egy állásból kiindulva bejárja a szabályos lépések fáját, és megszámol minden olyan sorozatot, amely pontosan az adott mélységig jut. Az egyes mélység a jelenleg rendelkezésre álló szabályos lépések számát jelenti. A kettes mélység minden szabályos ellenfélválaszt is tartalmaz, és így tovább. Minden sorozat külön számít, még akkor is, ha két különböző sorozat ugyanahhoz a táblálláshoz vezet. Az eredmény az adott állásra és mélységre nézve reprodukálható szám.
Elsődleges célja egy program lépésgenerátorának ellenőrzése. Ha az összeg eltér egy megbízható referenciaeredménytől, valamelyik szabály vagy az állás frissítésének módja hibás. A divide nevű változat minden kezdőlépéshez külön részösszeget közöl, így segít megtalálni azt az ágat, ahol az eltérés kezdődik.
A perft különösen jól tárja fel a sakkokkal, az en passanttal, vagyis a gyalog különleges ütésével, a promóciókkal és a , vagyis a király és a bástya különleges közös lépésével kapcsolatos finom hibákat. Azt is megmutathatja, ha a program egy lépés visszavonása után hibásan állítja helyre a lépésen lévő felet, a sáncolási jogokat vagy az en passant célmezőt.
A perft nem értékel állásokat, nem választ legjobb lépést, és nem metsz ágakat. Sikeres teljesítése ezért azt bizonyítja, hogy a program egyezik az ellenőrzött szabályoslépés-számokkal, de azt nem, hogy egy erősen játszik. Bár a név a performance test kifejezésből ered, a helyes számlálás a központi cél; a sebesség mérése külön teljesítményteszt, amely a megvalósítástól függ.
Gyakori félreértések
Perft és játékerejűség
A perft a szabályokat és a lépésgenerálást ellenőrzi. Nem méri a pozíciós megértést, az értékelés minőségét vagy a taktikai erőt.
Perft és hashelés
Egy megvalósítás használhat az állások felismerésére, de a helyes kulcs nem helyettesíti a szabályos lépések megszámlálását.
Kifejezés megtekintéseForrások
- 1.Perft, Chess Programming Wiki
