中国象棋程序设计(五)置换表

中国象棋程序设计(五)置换表

声明:本程序设计参考象棋巫师源码(开发工具dephi 11,建议用delphi 10.3以上版本)。  

这一章主要介绍置换表。本章目标:

  • 实现置换表;
  • 采用置换表走法、杀手走法等多种启发方式。

5.1 置换表   

  没有置换表,就称不上是完整的计算机博弈程序。在搜索过程中,某个搜索结果可能会出现这么多次,这浪费了很多时间。为避免重复搜索,保存搜索结果的表,就是置换表。由于哈希表的读写速度很快,通常置换表就由哈希表来实现。  

  置换表非常简单,以局面的 Zobrist Key mod HASH_SIZE 作为索引值。每个置换表项存储的内容无非就是:A. 深度,B. 标志,C. 分值,D. 最佳走法,E. Zobrist Lock 校验码。置换表结构:

{置换表结构}
type HashItem=record
  ucDepth, ucFlag:Byte;//深度、标志
  svl:SmallInt;        //分值
  wmv, wReserved:Word; //最佳走法
  dwLock0, dwLock1:Cardinal; //Zobrist检验码
end;
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 中国象棋程序设计(五)置换表