【问题标题】:AI Snake BFS IssueAI Snake BFS 问题
【发布时间】:2012-09-24 18:27:57
【问题描述】:

我正在努力解决蛇拳本身的问题。我相信如果我使用广度优先搜索(BFS)进行移动,它可以大大降低被装箱的风险。我的问题是我应该寻找多少可能的空白空间(连接)以确保这一举动不会导致我自己拳击。

【问题讨论】:

    标签: graph artificial-intelligence robotics breadth-first-search


    【解决方案1】:

    您必须查看的距离以查看您是否被装箱始终取决于蛇的大小/位置。 100%确定的唯一方法是提前搜索所有动作,并避免导致蛇被装箱的动作。也就是说,您可能会使用depth-first search而不是广度优先获得更好的运气,因为它可以快速找到一个死胡同(如果它存在的话)。然后避免这些动作。在您的第二个示例中,深度优先会很快发现“向上”移动是一条死胡同。

    【讨论】:

    • DPS 一直持续到它到达死胡同,或者(可能)达到深度限制。所以它会一直探索,直到它走到死胡同。第 1 步:抬头,第 2 步:抬头(只有 1 步可用),第 3 步:抬头,第 4 步:抬头,第 5 步:死路,因为没有合法的移动。
    • 算法也必须增加游戏。所以每次它“向上移动”时,蛇的尾巴也会移动。如果左边的长度是5,那么它就会知道它不会导致死胡同。
    • 是的,但前提是死胡同是不可避免的。此示例与您的第二个示例类似,但即使向上移动 1 个空格,死胡同仍然是可以避免的。好吧,它不会让我粘贴它。但是如果你将蛇的底部 5 部分移到左边的部分之上,那么你就有了这个例子。
    【解决方案2】:

    我认为搜索游戏树所需的移动深度与蛇环绕自身时可以包含的正方形区域有关。例如,一条长度为 12 的蛇:

    ----
    |00|
    |00|
    91--
    

    如果蛇向上(向北),它仍然可以生存,但前提是它向东移动。如果它再次向北移动,它就会死去。

    蛇可以包含的最大区域是:(length/4 - 1)^2。当这是小数时,您可能需要四舍五入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多