启发式游戏综述

目录

一,独立游戏

二,启发式游戏

三,启发式策略

四,独立游戏的通用模型

1,状态空间

2,状态转移

3,状态空间 VS 解空间,解点 VS 解路径

4,状态空间的基本结构

5,策略模型

6,模型实践


一,独立游戏

游戏最常见的划分方式就是网络游戏和单机游戏,独立游戏的概念我也不是很清楚,应该和单机游戏差不多吧,但是感觉独立游戏更小,场景单一,但是耐玩。

比如一笔画,我愿称之为独立游戏,但是单机的植物大战僵尸,我觉得不是。

游戏吸引人的关键之一,在于求胜欲

为了胜利,有很多方法,可以砸钱,可以好好学数学和算法,掌握高深理论,也可以反复磨炼,提升手速和技巧。

我为什么只喜欢独立游戏

第一,它不需要砸钱,只需要技巧。

第二,它的进度条是和时间解耦的,我可以玩到37关之后卸载,五年之后再继续玩第38关,这种事情我经常干,尤其是学了某种新算法之后。

我偏爱哪种独立游戏

我喜欢的独立游戏,是那种只有思维技巧,没有操作技巧的游戏,比如一笔画,华容道,我可以盯着一个画面三分钟,然后执行下一步操作。而永不言弃这种音乐游戏,神庙逃亡这种跑酷游戏,也挺好玩的,但不属于我的真爱。

PS:扫雷也是我的真爱,这个如果不追求极致的速度,就不需要操作技巧,只需要思维技巧。

二,启发式游戏

启发式搜索-CSDN博客一文中,我提到经典搜索和启发式搜索的区别。

同样的,像数独这种游戏,更偏重于每一步都能得到确定的信息,目标也是非常具体的甚至唯一的,而像华容道这种游戏,更偏重于一种抽象的策略,目标也是相对不那么具体的。

所以,我把它们分别称为确定式游戏、启发式游戏

三,启发式策略

确定式游戏往往有确定式策略,甚至可以直接编程求出来。

而启发式游戏可以既有确定式策略,又有启发式策略。

在学会了C++设计模式中的模板方法模式23种设计模式_设计模式23模式介绍_csuzhucong的博客-CSDN博客之后,我突然思如泉涌,于是写了本文,把思路整理了下来。

我借用了模板方法模式,建立了独立游戏的通用模型,

有了清晰了模型之后,启发式策略就因运而生。

四,独立游戏的通用模型

之所以建立这个模型,主要有两个技术积累:

一是我的本科毕设作品,棋类游戏的通用框架本科毕业设计——基于C++的棋类游戏自动生成工具的设计与实现_c++做毕设有什么-CSDN博客,不过这个主要是开发框架,而我现在一边写博客一边建立的,是思考攻略的通用框架,

二是拟阵拟阵_csuzhucong的博客-CSDN博客,受到了先辈的鼓舞,对建立通用模型来描述问题的统一求解方案有了更多的兴趣和信心。

模型内容:

1,状态空间

对于俄罗斯方块,每一个肉眼可见的画面,就是一个状态,而空荡荡没有一个格子的画面,就是初始状态。

对于纪念碑谷,冒险者的位置,和所有机关的状态,共同构成一个游戏状态。这个游戏的高明之处在于,在绝大部分场景下,状态空间是多维空间中的一条曲线,冒险者的位置即可确定整个状态

总之,游戏会有很多状态,而独立游戏往往只有有限多的状态

2,状态转移

独立游戏往往有1个初始状态,1个或多个目标状态,游戏的目标就是找到从初始状态到达目标状态的方法。

独立游戏往往只允许依次进行一种或多种操作,不允许同时叠加操作,而每次操作,都是一次状态转移,最终转移到目标状态。

3,状态空间 VS 解空间,解点 VS 解路径

算法中的解空间是每个可能的解就是空间中的一个点,算法的目标是找到一个点。

本文的状态空间是操作过程中的每一个中间状态,所以解不是一个点,而是一条路径。

4,状态空间的基本结构

状态空间的结构,是我们对游戏进行划分的重要依据。

(1)是有向图还是无向图

一般有向图是有死亡状态的,比如推箱子把箱子推到了角落就再也出不来了,而无向图肯定是没有死亡状态的,比如纪念碑谷,是不存在到了某个状态就输了的情况的。

(2)连通性

首先初始状态和目标状态当然是连通的,其次根据连接的情况,可能会有一些经典的结构,比如直线型,放射型,强连通型,环形等等

分析结构有助于我们发现下一跳,和其他手段结合起来可以推测出一些中间状态,

我们确信或者几乎确信这些状态是必经状态,或者至少会有一条解路径经过这些状态,那么我们就成功的把问题分解为若干小问题了。

(3)环

有向图如果有环,至少可以确定环内转移操作是没有风险的,无向图如果有环,那也是我们分析状态空间结构的重要依据。

而有向图如果有无向环,即从一个点到另外一个点有两条不同的有向路径,那我们就知道解并不是唯一的。

(4)其他图论特征

常见的图论特征包括出入度、二分图等等

出入度主要就是关注出度或者入度特别高的点,二分图主要就是关注,如果整个图就是一个二分图加一条线段连接起来,那么这条线段就是必经之路。

5,策略模型

在状态空间的基础之上,策略可以分为三类:

(1)全局状态分析策略

比如什么状态是死亡状态,什么状态是必经状态,以此为依据进行分解问题的策略就是全局策略。

全局策略是基本具有马尔可夫性质的,策略输出是下一跳。

(2)局部启发式策略

局部启发式策略,告诉我们每一个阶段的小目标是什么。

相比于具有马尔可夫效应的全局策略,局部策略是和当前状态强相关的,基于特征推导最优策略,得到接下来若干次操作的一个大概行动方向。

局部启发式策略分为三部分,一是我们需要什么辅助信息?二是怎么样启发式地推算出这个信息?三是这个辅助信息如何指导我们找到解?

有些游戏,需要什么辅助信息是比较明显的,有些游戏甚至连这个都需要天赋才能感悟出来。

(3)单点处理策略

单点处理策略,告诉我们在遇到某种强特征状态时,对应的比较具体的若干次操作是什么。

6,模型实践

我以水排序谜题水排序谜题_水排序游戏推算java_csuzhucong的博客-CSDN博客为例,实践并完善了这个模型。

我按照这个模型把汽车华容道汽车华容道_汽车华容道580题目合集-CSDN博客稍微修改了一下,其中的策略都能对应上本模型。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值