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