【问题标题】:How to create an evaluation function for a board game(wizwoz) result如何为棋盘游戏(wizwoz)结果创建评估函数
【发布时间】:2012-10-19 10:33:09
【问题描述】:

游戏名为wizwoz:

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

我正在编写 alpha-beta 修剪算法并坚持使用评估函数。

有什么帮助吗?最好使用伪代码。

【问题讨论】:

    标签: machine-learning artificial-intelligence game-theory evaluation-function


    【解决方案1】:

    从一个非常简单的评估函数开始。例如,只使用最大组件的当前大小。让 AI 工作后,您可以担心调整评估启发式方法。

    这是示例伪代码(未测试)

    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))
    

    【讨论】:

    • 你能说得更详细些吗?对不起..我们只能考虑相邻的正方形,当它们是相同的颜色时。
    • 我已经检查了相同的颜色。无论如何,代码的细节并不重要,关键是取最大组件的大小。如果你会编程,你应该能够弄清楚如何做到这一点。
    猜你喜欢
    • 2011-07-31
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    相关资源
    最近更新 更多