代码之家  ›  专栏  ›  技术社区  ›  zista

AI Snake BFS问题

  •  2
  • zista  · 技术社区  · 12 年前

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

    2 回复  |  直到 12 年前
        1
  •  0
  •   ckb    12 年前

    你必须观察的距离,看看你是否被困在里面,这总是取决于蛇的大小/位置。唯一能100%确定的方法是提前搜索所有招式,避免导致蛇被包围的招式。也就是说,你可能会有更好的运气 depth-first search 首先是广度,因为它可以迅速找到死胡同(如果存在的话)。然后避免这些动作。在第二个例子中,深度优先会很快发现向上移动是一条死胡同。

        2
  •  0
  •   Ben    12 年前

    我认为你需要搜索游戏树的深度移动次数与蛇包围自己时可以包含的方形区域有关。例如,长度为12的蛇:

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

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

    蛇可以包含的最大区域是:(长度/4-1)^2。当这是分数时,你可能想四舍五入。