套娃圈叉棋

举报
用户已注销 发表于 2022/05/31 22:15:37 2022/05/31
【摘要】 目录 一,套娃圈叉棋 二,解空间分析 1,节点 2,解空间结构 三,复杂度分析 1,总节点数目 2,关键节点数目 四,思路分析 一,套娃圈叉棋 在圈叉棋的基础上,加上套娃的规则: 每人有9个棋子,3大3中3小,较大的可以把较小的套住。 二,解空间分析 1,节点 节点包含的信息有: 9个格子的状...

目录

一,套娃圈叉棋

二,解空间分析

1,节点

2,解空间结构

三,复杂度分析

1,总节点数目

2,关键节点数目

四,思路分析


一,套娃圈叉棋

圈叉棋的基础上,加上套娃的规则:

每人有9个棋子,3大3中3小,较大的可以把较小的套住。

二,解空间分析

1,节点

节点包含的信息有:

  • 9个格子的状态,每个格子有7种状态(空白、双方的大中小棋子)
  • 轮到谁下
  • 双方手里剩下的棋子数量

双方手里剩下的棋子数量可以推算出轮到谁下。

2,解空间结构

这是一个无环的有向图,开局作为起点,到任意节点都有唯一路劲存在。

如果去掉方向,那么得到的无向图就有圈了。

三,复杂度分析

1,总节点数目

9个格子的状态有7^9=40353607种,双方手里剩下的棋子数量有(4*4*4)^ 2 = 4096种情况,一共有40353607*4096=1653亿种情况。

考虑到双方手里剩下的大棋子的数量其实也可以推算出来,那么就只有40353607*16*16=103亿种情况。

数目还是有点大,动态规划的备忘录存103亿种状态,需要的内存太大。

2,关键节点数目

所有局面最终都会走向三种局面:

  • 胜负已分,但是还有空格。
  • 所有棋子都用完了,平局,但是还有空格。
  • 没有空格。

其中,前两种局面应该是很少的,关键是第三种,没有空格的局面。

没有空格的局面,方手里剩下的小棋子就没用了,所有只有6^9 * 4 * 4 * 2 = 3.2亿种情况。

之所以要乘2,是因为要区分轮到谁下了。

如果每种情况用4字节来表示,那么一共需要大概1G的内存。

四,思路分析

首先,我们可以先把所有的关键状态的胜负全部求出来,然后以此为基础再求其他状态的胜负。

文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nameofcsdn/article/details/125057136

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。