圍棋博弈程式的實現與思考(8)——Zobrist雜湊

來源:互聯網
上載者:User

        本來並不想寫著篇,因為英文維基上的zobrist hashing詞條已經夠詳實了。後來發現自己的論文上有圖文並茂的一節介紹zobrist雜湊,想是為湊字數與圖片寫的,貼出來倒也方便:

        Zobrist 雜湊是一種專門針對棋類遊戲而提出來的編碼方式,以其發明者 Albert L.Zobrist 的名字命名。Zobrist 雜湊通過一種特殊的置換表,也就是對棋盤上每一位置的各個可能狀態賦予一個編碼索引值,來實現在極低衝突率的前提下在一個整型資料上對棋盤進行編碼。其編碼步驟描述如下:

        1)  將棋盤分為最小單位(如果將9X9圍棋盤分為81個交叉點),求出每個單位上不同狀態數(如圍棋盤上的 1 個交叉點有 3 個狀態)。

        2)  為每個單位上的每種狀態產生一個一定範圍內(如64位整數)隨機數。

        3)  對於特定的棋局,將每個單位上的狀態對應的隨機數作異或運算,所得即為雜湊值。

        用 Zobrist 雜湊為棋局狀態編碼至少具備兩個優點:

        1)  當隨機數的範圍足夠大時,不同的棋局產生雜湊衝突的機率非常小,在實際應用中通常可以忽略。

        2)  在棋局進行過程中,不必每次重新開始計算棋局的雜湊值,只需計算棋局狀態發生改變的部分。

        以下以一個 的圍棋棋盤為例對 Zobrist 雜湊作進一步說明:

  1. 2X2的圍棋棋盤一共有 4 個單位,每個單位有 3 種狀態(黑子,白子,空點),則為每種狀態產生 1 個 8 位的隨機數: 

    對於如下棋局:

           額,貼得圖文混雜,效果不太好……

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.