توضیح
Perft درخت حرکتهای قانونی را از یک وضعیت پیمایش میکند و همهٔ توالیهایی را که به عمقی دقیق میرسند میشمارد. عمق یک یعنی شمارش حرکتهای قانونی موجود در همین لحظه. عمق دو همهٔ پاسخهای قانونی را نیز در بر میگیرد و این الگو ادامه مییابد. هر توالی جداگانه شمرده میشود، حتی اگر دو توالی متفاوت به وضعیت یکسانی روی صفحه برسند. نتیجه برای آن وضعیت و عمق عددی تکرارپذیر است.
کاربرد اصلی آن آزمودن مولد حرکت برنامه است. اگر مجموع با مرجع معتبر تفاوت داشته باشد، یکی از قوانین یا بهروزرسانیهای وضعیت نادرست است. شکلی به نام divide برای هر حرکت آغازین یک زیرمجموع جداگانه گزارش میکند و به توسعهدهنده کمک میکند شاخهای را پیدا کند که اختلاف از آن آغاز میشود.
Perft برای آشکار کردن خطاهای ظریف مربوط به کیش، آنپاسان، یعنی گرفتن ویژهٔ پیاده، ترفیع و ، یعنی حرکت ویژهٔ مشترک شاه و رخ، بسیار مناسب است. همچنین میتواند نشان دهد برنامه پس از بازگرداندن یک حرکت، نوبت، حق قلعه رفتن یا خانهٔ هدف آنپاسان را نادرست بازیابی میکند.
Perft هیچ ارزیابی وضعیت، انتخاب بهترین حرکت یا هرس شاخه انجام نمیدهد. موفقیت در آن تطابق با شمارشهای آزمودهشدهٔ حرکتهای قانونی را نشان میدهد، اما ثابت نمیکند یک قوی بازی میکند. هرچند نام از performance test میآید، هدف مرکزی شمارش درست است و سنجش زمان فقط بنچمارکی اضافی و وابسته به پیادهسازی است.
اشتباههای رایج
Perft و قدرت بازی
Perft قوانین و تولید حرکت را اعتبارسنجی میکند. درک پوزیسیونی، کیفیت ارزیابی یا قدرت تاکتیکی را نمیسنجد.
Perft و هشکردن
پیادهسازی ممکن است برای تشخیص وضعیتها از استفاده کند، اما کلید درست جای شمارش قانونی را نمیگیرد.
مشاهده اصطلاحمنابع
- 1.Perft, Chess Programming Wiki
