Machine learning 如何为棋盘游戏(wizwoz)结果创建评估函数

Machine learning 如何为棋盘游戏(wizwoz)结果创建评估函数,machine-learning,artificial-intelligence,game-theory,evaluation-function,Machine Learning,Artificial Intelligence,Game Theory,Evaluation Function,游戏名为wizwoz: 两名球员,红色(简称r)和红色 黄金(简称g)最初选择两个值n和k。用k创建n×n板 “r”和“k”随机放置在板上。从玩家r开始,每个玩家将 他/她的字母(“r”代表玩家r,“g”代表付款人g)在棋盘上的一个空白方块中。 棋盘填满后,每个玩家的分数等于棋盘上最大的连通区域 填充该玩家颜色的棋盘(其中一个连接区域是任意两个区域的一个) 区域中的正方形存在仅由N/S/E/W移动组成的路径)。与 得分最高者获胜,并获得他/她的得分与得分之间的差额 另一个玩家的。下面显示了两个已

游戏名为wizwoz:

两名球员,红色(简称r)和红色 黄金(简称g)最初选择两个值n和k。用k创建n×n板 “r”和“k”随机放置在板上。从玩家r开始,每个玩家将 他/她的字母(“r”代表玩家r,“g”代表付款人g)在棋盘上的一个空白方块中。 棋盘填满后,每个玩家的分数等于棋盘上最大的连通区域 填充该玩家颜色的棋盘(其中一个连接区域是任意两个区域的一个) 区域中的正方形存在仅由N/S/E/W移动组成的路径)。与 得分最高者获胜,并获得他/她的得分与得分之间的差额 另一个玩家的。下面显示了两个已完成游戏的示例,其中最大的 每个玩家的连接区域。注意,在第二个示例中,两个 每个带2个r的截面未连接

我正在写alpha-beta剪枝算法,并坚持使用求值函数


有什么帮助吗?伪代码更可取。

从一个非常简单的求值函数开始。例如,只需使用最大组件的当前大小。在ai工作之后,您可能会担心如何调整评估启发式

下面是示例psedoocode(未测试)


你能再详细一点吗?对不起。。我们也只能考虑相邻的方形当它们是同一颜色时,我已经检查了相同的颜色。无论如何,代码的细节并不重要,关键是只考虑最大组件的大小。如果你能编程,你应该能够想出如何做到这一点。
components = {k:set([k]) for k in board}
def contract(k1, k2):
    if color(k1) != color(k2):
        return
    new = components[k1]
    if k2 not in new:
        new.union_update(components[k2])
        for x in components[k2]:
            components[x] = new

for x,y:
    contract(board[x,y], board[x,y+1])
    contract(board[x,y], board[x+1,y])

return max(map(len, components))