以A*算法作为本程序的算法,利用f=g+h;其中g代表每个结点的深度,h代表该结点与目标结点相差的位置。利用open,close表作为辅助。把每个同一层次的结点放进open表中,再选取最小代价放入close表中。close表中的结点即为最优路径中的一个结点。直到找出目标的结点,然后打印。 ① 判断OPEN表是否为空的函数 ② 求OPEN表中估价函数值最小的结点的函数 ③ 判断初始状态是否可到达目标状态的函数 ④ 求估价函数值p(n)-曼哈顿距离 ⑤ 产生新状态的函数,共四个,空格上/下/左/右
const int CAN_MOVE_ID = 0; const int G_OFFSET = 1; struct node{//接点 int f;//该节点路径评分,一般为g+h int g;//从起始点到该节点的预估距离 int h;//从该节点到终点的曼哈顿距离(忽略障碍水平垂直移动到终点的距离) int row;////该节点所在行 int col;//该节点所在列 node *parent;//该节点的父节点 }; // struct _node{ // node s;//当前接点
This is a demo visualizing the execution of various path finding algorithms. 不同算法的路径搜寻执行过程可视化程序。 包含5个算法 A* (曼哈顿距离) A* (欧式距离) A* (切比雪夫距离) Dijkstra Bi-Directional Breadth-First-Search
Snake-AI,这是一个用 C/C 语言编写的贪吃蛇游戏的人工智能。AI 的目的是让蛇尽可能的吃更多的食物,直到吃满整个地图。想参与这个项目,请查看todos。Demo使用方法编译与运行:$ make $ make run为了解详细使用方法, 请查看主函数main()算法介绍函数Snake.decideNext(): 计算蛇S1的下一个移动方向D计算从蛇S1的头部到达食物的最短路径P1。派一条与蛇S1完全一样的虚拟蛇S2沿路径P1吃掉食物。计算从蛇S2的头部到其尾部的最长路径P2。如果路径P