توضیح
کاهش عمق حرکتهای دیرهنگام که به صورت LMR کوتاه میشود، از ترتیب حرکتها بهره میگیرد. یک با استفاده از هیوریستیکها، یعنی قواعد عملی و آمار انباشتهٔ جستوجو، گزینههایی را که امیدبخشتر به نظر میرسند زودتر بررسی میکند.
توالی پایه
- موتور ابتدا حرکتهایی را که بهتر مرتب شدهاند جستوجو میکند و مرجعی موقت میسازد.
- یک حرکت آرام، معمولاً حرکتی که نه میگیرد و نه کیش میدهد، در بخش بسیار دیرتر فهرست ابتدا با عمق کاهشیافته آزمایش میشود.
- اگر این آزمایش نتیجهای بهطور غیرمنتظره قوی برگرداند و از کران امتیازی جستوجو عبور کند، شاخه دوباره با عمق بیشتر جستوجو میشود.
کاهش به معنای حذف نیست. بررسی عمیقتر اهمیت دارد، زیرا ممکن است حرکتی واقعاً قوی بد مرتب شده باشد. اندازهٔ کاهش میتواند به عمق باقیمانده، جای حرکت در فهرست، کیش یا گرفتن بودن آن، تعلقش به واریانت اصلی، یعنی خطی که در حال حاضر بهترین دانسته میشود، و سابقهٔ ثبتشدهٔ حرکتهای مشابه بستگی داشته باشد.
پیادهسازیهای امروزی بسیاری از این شرایط را تنظیم میکنند. کاهش بیش از حد تهاجمی زمان ذخیره میکند، اما ممکن است حرکت آرام و قدرتمندی را از دست بدهد یا خطاهای مرتبط با را تشدید کند.
کاربرد و بافت
LMR جستوجویی گزینشی است: به جای اعمال دقیقاً یک عمق یکسان بر همهٔ شاخهها، تلاش را نابرابر توزیع میکند.
اشتباههای رایج
کاهش و هرس
LMR یک شاخه را با عمق کمتر جستوجو میکند و ممکن است دوباره به آن بازگردد، در حالی که هرس با برقرار شدن شرطی شاخه را کاملاً حذف میکند.
حرکت دیرهنگام و حرکت در اواخر بازی
دیرهنگام به جای حرکت در ترتیب جستوجوی یک گره اشاره دارد، نه به حرکتی که نزدیک پایان بازی انجام شود.
منابع
- 1.Late Move Reductions, Chess Programming Wiki
- 2.search.cpp, Stockfish
