Algorithm 查找可以生成提供的Connect-4板状态的任意一个移动序列

Algorithm 查找可以生成提供的Connect-4板状态的任意一个移动序列,algorithm,recursion,2d-games,Algorithm,Recursion,2d Games,给定矩阵a(6x7)中的有效板状态,其中 我试图想出一种算法,它可以返回任何有效的移动序列,从而生成给定的板状态 可以假设红色总是开始比赛 例如: A = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 0 0 0 r 0 0 0 0 0 0 y 0 0 0 0 0 r r 0 0 0] Valid sequence of moves:- 44443 44443表示-> 第一个玩家在第4列移动, 然后第

给定矩阵a(6x7)中的有效板状态,其中

我试图想出一种算法,它可以返回任何有效的移动序列,从而生成给定的板状态

可以假设红色总是开始比赛

例如:

A = [0 0 0 0 0 0 0
     0 0 0 0 0 0 0
     0 0 0 y 0 0 0
     0 0 0 r 0 0 0
     0 0 0 y 0 0 0
     0 0 r r 0 0 0]

Valid sequence of moves:- 44443 
44443表示->
第一个玩家在第4列移动,
然后第二个玩家移动到第4列。。。 (将列编号作为1索引)

我的方法:-
-)首先通过非空位置数的奇偶性找出最后一块石头的颜色。让该颜色为最后一种颜色
-)然后从板上取出一块最上面的彩色石头,递归地继续前进,如果找不到任何彩色石头,则返回

虽然这种方法可以在不到16^21步的时间内解决7*6板的问题。
(编辑:感谢@Prune纠正了这个上限)

问题1)上述方法的步骤数是否有更好的界限?

问题2)有没有更好的方法?

不要把它看作是Connect-4,而是在同一个棋盘上玩纸牌游戏。 你的目标是移除所有的石头。你有清除石头的规则;现在,如果你有一个很好的函数来评估任何董事会职位,它将改进搜索树

由于您交替删除颜色,因此

  • 规则:任何移除都必须使至少一块其他颜色的石头暴露在外
  • 启发:在暴露的红色和黄色石头之间保持平衡
  • 启发:如果一列只包含一种颜色的石头,那么从该列中移除石头是最后的选择
这也将导致评估功能中的第二个术语:如果你的石头可用性失衡,请确定一列,在那里你需要奖励挖掘以获得稀缺的颜色

对于这么小的棋盘,我猜一个相对简单的启发式方法将为任何实际的游戏位置提供一个有效的解决方案,而不需要回溯:两个玩家的合理策略将促进易于导航的石头混合


这足以让你动起来吗?

不要把它看作是Connect-4,而是在同一块板上玩纸牌游戏。 你的目标是移除所有的石头。你有清除石头的规则;现在,如果你有一个很好的函数来评估任何董事会职位,它将改进搜索树

由于您交替删除颜色,因此

  • 规则:任何移除都必须使至少一块其他颜色的石头暴露在外
  • 启发:在暴露的红色和黄色石头之间保持平衡
  • 启发:如果一列只包含一种颜色的石头,那么从该列中移除石头是最后的选择
这也将导致评估功能中的第二个术语:如果你的石头可用性失衡,请确定一列,在那里你需要奖励挖掘以获得稀缺的颜色

对于这么小的棋盘,我猜一个相对简单的启发式方法将为任何实际的游戏位置提供一个有效的解决方案,而不需要回溯:两个玩家的合理策略将促进易于导航的石头混合


这足以让你移动吗?

什么是初始棋盘状态以及游戏是如何进行的?我已经为游戏规则添加了wiki链接。缺少一个细节:如果有效位置是获胜位置,则必须在序列中的最后一步完成四连胜,因为在游戏结束后继续玩是不合法的。我很困惑——当你的步子被束缚时,你怎么能得到6^7?您有多达7个选项可供首次删除(假设董事会未填满)。从
N
可能性中选择移除只能为下一步产生
7-N+1
选择:对手的移除。@Prune。是的,我的思维过程中有个错误。因此,上限可以是16^21。对吗?初始棋盘状态是什么?游戏是如何进行的?我已经为游戏规则添加了wiki链接。缺少一个细节:如果有效位置是获胜位置,则必须在序列中的最后一步完成四连胜,因为在游戏结束后继续玩是不合法的。我很困惑——当你的步子被束缚时,你怎么能得到6^7?您有多达7个选项可供首次删除(假设董事会未填满)。从
N
可能性中选择移除只能为下一步产生
7-N+1
选择:对手的移除。@Prune。是的,我的思维过程中有个错误。因此,上限可以是16^21。是吗?但是,考虑最后一个动作是一个胜出的动作,在一个专栏中获胜的方式是4,那么第一个被移除的石头应该来自包含相同颜色的所有石头的柱子。这是一个规则。但是,考虑最后一个动作是一个胜出的动作,在一个专栏中获胜的方式是4,那么第一个被移除的石头应该来自包含相同颜色的所有石头的柱。右:因此,声明“你有去除石头的规则”。这是规则之一。
A = [0 0 0 0 0 0 0
     0 0 0 0 0 0 0
     0 0 0 y 0 0 0
     0 0 0 r 0 0 0
     0 0 0 y 0 0 0
     0 0 r r 0 0 0]

Valid sequence of moves:- 44443