智能贪吃蛇的实现方法介绍

  小小贪吃蛇游戏本身倒是不难,而想要实现贪吃蛇智能化却是相当困难。下面将简单介绍实现智能贪吃蛇的两种方法。


Hamilton(哈密顿)

  这个方法就是我上个博客想要实现智能考虑的方法,平均步数要比第二种方法多,但成功率是100%啊!(1000次实验)。一个回路,若它通过图的每一个节点一次,且仅一次,就是哈密顿回路。存在哈密顿回路的图就是哈密顿图。哈密顿图就是从一点出发,经过所有的必须且只能一次,最终回到起点的路径。要满足两个条件:
1. 封闭的环
2. 是一个连通图,且图中任意两点可达

  • 经过图(有向图或无向图)中所有顶点一次且仅一次的通路称为哈密顿通路。
  • 经过图中所有顶点一次且仅一次的回路称为哈密顿回路。
  • 具有哈密顿回路的图称为哈密顿图,具有哈密顿通路但不具有哈密顿回路的图称为半哈密顿图。
  • 平凡图是哈密顿图。

  在上一个博客中,我已经,构建出一个基本环路。若进行完善,我们能够得到一些较小的环。绕着这些环行走,蛇能够以较小的行动路径吃到一个果子。同时蛇又能够自然的从小环路走到大环路中。构造小环路的方式不是唯一的,好的构造方法能够让我们尽快的吃到果子。

智能贪吃蛇的实现方法介绍_第1张图片


贪心算法(Greedy Algorithms)

  贪心算法在解决问题的策略上目光短浅,只根据当前已有的信息就做出选择,而且一旦做出了选择,不管将来有什么结果,这个选择都不会改变。换言之,贪心法并不是从整体最优考虑,它所做出的选择只是在某种意义上的局部最优。贪心算法对于大部分的优化问题都能产生最优解,但不能总获得整体最优解,通常可以获得近似最优解。
该算法存在问题:
1. 不能保证求得的最后解是最佳的;
2. 不能用来求最大或最小解问题;
3. 只能求满足某些约束条件的可行解的范围。

  简单来说,就是走一步看一步。上一篇博客中的伪代码就是这一思路,很容易把自己逼进死胡同,这也就是为什么1000次实验中成功率仅有27.4%了

智能贪吃蛇的实现方法介绍_第2张图片

你可能感兴趣的:(介绍)