贪吃蛇的AI算法有最优解吗

题主补充了最优解定义,所以补充说明一下。我们已经预先知道食物出现顺序了,这样就可以把棋盘情况(有蛇/空格)、蛇头位置和当前食物位置这两项一并描述成一个状态(或者局面)。首先呢这个状态空间是有限的,并且状态之间是可以转移的,遍历整个状态空间一定可以找到最优解。然后是状态空间的大小的问题:这样的状态空间所包含的状态总数是指数阶的(蛇头n^2,食物n^2,棋盘状态2^(n^2)),我暂时没想到什么好的节省描述棋盘情况的状态表示,因此很有可能这是个np……但无论如何,状态空间是有限的。有限意味着一定可以通过遍历整个状态空间来求得最优解(可行性)。但如果是np,那么计算时间可能无法忍受……————————————————————啥叫最优?能长长到填满整个格子?找个可以遍历每一个点的环出来就行了,就一条固定路线都ok,保证吃到填满。
■网友
如果是吃满地图的话,有吧,策略就是:始终保持头和尾能连接的情况下看能不能吃到食物,不能的话找出头到尾巴的最长路径(可能只要不是最短路径就行,最短路径可能造成一直追逐尾巴),沿着这条路走,知直到保持头尾有连接的情况下能吃到食物(吃到后也要保持头尾能连接),这样应该能吃满地图。我以前看的这个http://www.hawstein.com/posts/snake-ai.html


    推荐阅读