Syzygy lưu trữ thông tin của nó như thế nào?


10

Từ khi đọc mọi thứ tôi tìm thấy cho đến nay, tôi biết rằng Syzygy sử dụng cả tệp thắng / hòa / thua và tệp từ xa đến không, nhưng tôi không tìm thấy bất kỳ thông tin nào về định dạng tệp nội bộ mà các tệp này sử dụng. Tôi đang tìm kiếm lời giải thích gritty nitty cấp thấp.

Câu trả lời:


13

Vì không có một ấn phẩm toàn diện duy nhất, điều này dựa trên mã thăm dò , trình tạocác giải thích khác nhau từ Ronald de Man (tác giả của trình tạo).


Khi thăm dò khá nhiều bất kỳ cơ sở bảng nào (còn gọi là bản đồ băm nén khổng lồ):

  1. Vị trí được chuẩn hóa ...
  2. ... Ánh xạ tới một chỉ số nguyên.
  3. Chỉ mục được tra cứu trong một bảng xác định "khối" nào thuộc về nó.
  4. Khối được giải nén cho đến khi có thể lấy thông tin cho chỉ mục.

Sau đó, thường có một số mã "bên ngoài" của việc thăm dò, ít nhất là để giải quyết các vụ bắt giữ người qua đường.


Bắt đầu với mã bên ngoài cho WDL. Các bảng tổng hợp sử dụng tối ưu hóa dựa trên quan sát sau: Nếu một vị trí có một giá trị đạt được một giá trị cụ thể (ví dụ: là chiến thắng), thì bản thân vị trí đó có ít nhất giá trị đó (ví dụ: chiến thắng). Trong trường hợp này, bảng có thể lưu trữ giá trị thấp hơn tùy ý, tùy theo mức nào là tốt nhất để nén và điều này có thể dễ dàng sửa bằng cách kiểm tra các phụ đề để chụp.

Để có được DTZ, đầu dò WDL cần được thực hiện trước tiên. Nếu vị trí được vẽ, thì DTZ bằng 0 và bảng có thể lưu trữ mọi thứ, tùy theo cách nào là tốt nhất để nén. Nếu di chuyển tốt nhất là chụp (mà chúng ta có thể nhớ từ đầu dò WDL), thì DTZ là +/- 1 hoặc +/- 101 tùy thuộc vào WDL và bảng có thể lưu lại bất cứ thứ gì, tùy theo cách nào là tốt nhất để nén.

Các bảng cầm đồ chứa 4 phụ đề, một cho mỗi tệp của "cầm đồ hàng đầu" (sau khi chuẩn hóa).

Các bảng WDL (phụ) là hai mặt, tức là về cơ bản chúng chứa hai bảng riêng biệt cho mỗi bên của trò chơi cuối (trừ khi vật liệu là đối xứng).

Bảng DTZ chỉ lưu trữ một bên để di chuyển. Vì vậy, một tìm kiếm 1 lớp ngắn có thể được yêu cầu để tính toán DTZ cho phía bên kia.


(1) Về việc chuẩn hóa: Có nhiều cách có thể thực hiện và không dễ để biết trước cách nào sẽ dẫn đến nén tốt nhất. Máy phát điện chỉ thử các hoán vị khác nhau. Thứ tự cuối cùng của các mảnh được lưu trữ trong tiêu đề của tệp bảng.

(2) Một số tổ hợp. Thách thức là không có khoảng trống lớn cho các vị trí không thể. Mặc dù nó khá khó khăn, tôi không nghĩ Syzygy làm gì đặc biệt ở đây. Về mặt khái niệm, các mảnh hoặc nhóm các mảnh được đặt trên bảng theo thứ tự được chỉ định trong tiêu đề.

(3) Giá trị nén được lưu trữ trong các khối. Kích thước khối được chỉ định trong tiêu đề bảng. Ánh xạ bảng lập chỉ mục cho các khối là thưa thớt, vì vậy nó cho phép nhảy rất gần với khối chính xác và sau đó yêu cầu quét tiến hoặc lùi ngắn để tìm khối chính xác. Một khối có thể lưu trữ giá trị cho tối đa 65536 vị trí.

(4) Các bảng Syzygy sử dụng nén tùy chỉnh dựa trên RE-PAIR . Một tính năng quan trọng là nó thực sự cho phép tận dụng các cơ hội để lưu trữ các giá trị tùy ý đã được xác định ở trên. Giải nén rất nhanh và có thể dừng ngay khi giá trị cho chỉ số mong muốn có sẵn.

Tùy chọn, các bảng DTZ có thể yêu cầu một bước khác f (wdl, giá trị được lưu trữ) = giá trị thực. Bản đồ DTZ bổ sung này được tham chiếu trong tiêu đề bảng và chính nó là một bảng có các mục nhập 8 bit. (Vô tình điều này hóa ra là không đủ cho các kết thúc 7 phần, ngay cả với các con tốt, vì vậy bây giờ có một cờ khác cho phép các mục 16 bit).

Đối với các giá trị DTZ, nếu trình tạo xác định rằng tất cả các giá trị cho một bảng nhỏ hơn 100, thì không cần phải có một nửa số lần di chuyển chính xác để đảm bảo phát hoàn hảo. Thay vào đó, nó đặt một lá cờ trong tiêu đề bảng và làm tròn nửa bước thành toàn bước để tiết kiệm không gian.

Ngoài ra, rõ ràng không cần lưu trữ dấu hiệu, hoặc phần bù bổ sung +/- 100 cho các kết thúc bị nguyền rủa vì điều này có thể được suy ra từ giá trị WDL.

Vì giải nén rất nhanh, không cần bộ đệm. Thay vào đó, các công cụ có thể dựa vào bộ đệm trang của hệ điều hành để lưu trữ các khối (vẫn được nén).


Các bảng 6 mảnh chứa thông tin WDL và DTZ cho 3.787.154.440.416 vị trí duy nhất trong 150 Gigabyte, vì vậy ~ 0,3 bit cho mỗi vị trí.

Tất cả trong tất cả các bảng Syzygy được cải thiện theo các định dạng cơ sở bảng trước đó trong ít nhất 3 trong số các khu vực này, làm cho nó có định dạng rất nhỏ gọn và nhanh chóng. Thật đáng ngạc nhiên là máy phát điện cũng khá nhanh.

Và tất nhiên sử dụng DTZ50 là một lựa chọn thực dụng, bởi vì đây là thông tin vừa đủ để tiến bộ một cách đáng tin cậy và cho phép chơi hoàn hảo (kết quả cuối cùng) cả có và không có quy tắc 50 di chuyển. Tuy nhiên, dựa trên những thay đổi đối với Cfish được xuất bản cho đến nay (hiện tại, RdM đang hoạt động trên các bảng DTM), nhiều kỹ thuật cũng sẽ áp dụng cho DTM.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.