GTQ与Hex游戏分析:工具应用与策略探索
1. GTQ:游戏树分析的语言与工具
1.1 查询解析
查询使用递归下降解析器进行解析,为每个查询构建单独的解析树。解析树由不同类型的解析节点组成,多数解析节点在求值时返回布尔值,表示对应表达式在游戏树中任意给定节点的求值结果是真还是假。通常,游戏树节点的求值结果取决于该节点存储的属性值。
例如,对于查询“type 等于 PVNode 且 depth 大于或等于零”,只有满足这些条件的节点,查询结果才为真,否则为假。
对于包含 count 函数的查询,需要特殊处理。因为 count 函数基于多个节点累积的数据返回计数,所以这类查询必须在遍历完表达式作用域内的所有数据节点后才能求值。此时,除了属性值,还必须提供一个包含查询作用域(如子树)累积计数信息的特殊结构,即计数器。节点表达式只能包含一个 count 函数,而子树表达式和子节点表达式可以包含多个,对于这些表达式,需要一个计数器结构列表。
1.2 查询执行
查询执行算法仅对游戏树进行一次遍历,在此过程中收集回答查询所需的所有信息。算法如下:
Algorithm 1. DFT-QUERY-EVAL(node)
1: queryInst = null
2: if nodeExpr.evaluate(node) then
3:
queryInst = new QueryInstance(subtreeExpr, childExpr)
4:
queryInstStack.push(queryInst)
5: children