Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 解决钉洞游戏_Algorithm - Fatal编程技术网

Algorithm 解决钉洞游戏

Algorithm 解决钉洞游戏,algorithm,Algorithm,在美国南部的饼干桶餐馆里,人们经常在桌子上发现“钉子拼图”。董事会 从15个洞和14个钉子开始,所以一个洞是空的。球员们跳过去继续比赛 将钉子插入空孔中,每次移除跳出的钉子。解决这个难题意味着结束 在原来的空洞里只有一个钉子 例如: X-pegs O-hole O <- Position A X X X X X <- move that peg to position A X X X X X X X X X X <- Position A

在美国南部的饼干桶餐馆里,人们经常在桌子上发现“钉子拼图”。董事会 从15个洞和14个钉子开始,所以一个洞是空的。球员们跳过去继续比赛 将钉子插入空孔中,每次移除跳出的钉子。解决这个难题意味着结束 在原来的空洞里只有一个钉子

例如:

X-pegs O-hole

    O <- Position A
   X X
  X X X <- move that peg to position A
 X X X X
X X X X X

    X <- Position A
   X O <-That peg is removed
  X X O 
 X X X X
X X X X X
X形销钉O形孔

在这场比赛中有32768个可能的位置(15个洞,每个洞可以有一个或没有一个钉子)。构建一个图,其中每个节点都是一个位置,每个向量都是从一个位置到另一个位置的可能过渡。然后在图形中搜索您感兴趣的两个节点之间的路径


构建此图后,确定任何起始位置是否不可赢(不包括通过“孤立”的桩而不可赢的位置,其他桩无法到达)。这场游戏中有32768个可能的位置(15个洞,每个洞可以有桩或没有桩)。构建一个图,其中每个节点都是一个位置,每个向量都是从一个位置到另一个位置的可能过渡。然后在图形中搜索您感兴趣的两个节点之间的路径


构建此图后,确定任何起始位置是否不可赢(不包括通过“孤立”的桩而不可赢的位置,其他桩无法到达)将是一件有趣的事情(并且很容易)。

相关:如果从顶部位置的桩开始,并向后操作,则更容易解决。跳过一个洞,把钉子插回去。蛮力深度搜索会很快找到答案。相关:如果你从顶部开始,然后向后搜索,解决起来就容易多了。跳过一个洞,把钉子插回去。一个蛮力深度搜索会很快找到答案。当然有不可能获胜的位置,否则游戏就没有多大意义了。如果你的意思是只有14个钉子的仓位,那么这是一个有趣的问题。@n.m.你认为可能有14个钉子的仓位是不可能赢的吗?那也不算什么比赛。@n.m:所有14个起跑位置都可以赢。实际上只有4个独特的起始位置。其他的是镜子或这四个的旋转。@AlexD,在第一次移动后,移除了两个钉子。正如Jim Mischel指出的,你可以在所有起始位置做旋转变换,从根本上压缩图形。好的,另一个好的观点!如果你想快速解决钉洞游戏,这是一种方法。这将是一个使用Zobrist哈希之类的东西的好地方。。。异或当前棋盘及其所有镜像/旋转的签名,然后将其用作查找表中的键,以避免在图中添加冗余节点。当然存在无法获胜的位置,否则游戏将没有多大意义。如果你的意思是只有14个钉子的仓位,那么这是一个有趣的问题。@n.m.你认为可能有14个钉子的仓位是不可能赢的吗?那也不算什么比赛。@n.m:所有14个起跑位置都可以赢。实际上只有4个独特的起始位置。其他的是镜子或这四个的旋转。@AlexD,在第一次移动后,移除了两个钉子。正如Jim Mischel指出的,你可以在所有起始位置做旋转变换,从根本上压缩图形。好的,另一个好的观点!如果你想快速解决钉洞游戏,这是一种方法。这将是一个使用Zobrist哈希之类的东西的好地方。。。异或当前电路板及其所有镜像/旋转的签名,然后将其用作查找表的键,以避免向图形中添加冗余节点。