人工智能技术课程设计报告.doc
《人工智能技术课程设计报告.doc》由会员分享,可在线阅读,更多相关《人工智能技术课程设计报告.doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、人工智能技术人工智能技术课程设计报告课程设计报告学号:学号:姓名:姓名:课程设计题目:课程设计题目:货郎担(旅行商)问题:货郎担(旅行商)问题:设有设有 n n 个城市,城市之间均有道路,一个旅行商从某城市出发,经过其余个城市,城市之间均有道路,一个旅行商从某城市出发,经过其余 n-1n-1 个城市个城市 一次且仅一次,最后回到出发的城市,他如何走才能使他所走的路程最短?一次且仅一次,最后回到出发的城市,他如何走才能使他所走的路程最短? 用用 A*A*算法实现,语言不限算法实现,语言不限算法实现算法实现:本程序使用 A*算法实现 A*算法,作为启发式算法中很重要的一种,被广泛应用在最优路径求解
2、和一些策 略设计的问题中。而 A*算法最为核心的部分,就在于它的一个估值函数的设计上: f(n)=g(n)+h(n) 其中 f(n)是每个可能试探点的估值,它有两部分组成:一部分为 g(n),它表示从起始 搜索点到当前点的代价(通常用某结点在搜索树中的深度来表示) 。另一部分,即 h(n),它 表示启发式搜索中最为重要的一部分,即当前结点到目标结点的估值。 一种具有 f(n)=g(n)+h(n)策略的启发式算法能成为 A*算法的充分条件是: 1) 搜索树上存在着从起始点到终了点的最优路径。 2) 问题域是有限的。 3) 所有结点的子结点的搜索代价值0。 4) h(n)=gvalue=p_min
3、-gvalue+relationp_min-num-1i;p-gvalue=p_min-gvalue+relationp_min-num-1i; p-hvalue=min*(number-p-level-1);p-hvalue=min*(number-p-level-1); p-fvalue=p-gvalue+p-hvalue;p-fvalue=p-gvalue+p-hvalue; 其中 gvaluegvalue:g(n)hvaluehvalue:h(n) fvaluefvalue:f(n) p_min-gvaluep_min-gvalue:起始城市到 X 城的代价 relationp_min
4、-num-1irelationp_min-num-1i:一个二维数组,X 城到 Y 城的代价minmin: min所有两城之间的代价 numbernumber: 城市总数 p-levelp-level:城市节点所处于搜索树的层次,和已访问的城市数同值在本程序中 定义一个结构体 node 用于表示城市节点:struct node int num;int fvalue;/f 值 int gvalue;/g 值 int hvalue;/h 值 int level; /层 struct node *parent;/父节点 struct node *next;/后继 struct node *front
5、;/前驱; 定义一个结构体 final_pathfinal_path 表示 Open 表和 Bestpath 表struct final_path struct node *head; struct node *tail; Open,Bestpath; 其中 OpenOpen 表用于存放扩展出来的节点 BestpathBestpath 表用于在程序的末尾存放最佳路径测试数据的输入使用邻接矩阵表示完全图 使用二维数组 relation100100relation100100存放程序流程:程序流程: 1 将 path 数组中元素值置下标值:pathi=i+1 2 按要求输入邻接矩阵 3 默认从第一
6、个点开始搜索,并将 path0=-1,表示该点已被纳入路径 4 扩展刚刚被纳入路径的节点,扩展的方法为在 path 数组中搜索值不为-1 的元 素,为之创建节点写入数据(包括 g 值,h 值,f 值,parent 节点)并纳入 Open 表中 5 在 Open 表中搜索 f 值最小的节点确定为当前的最优路径点 p_min,并且将上一 次的最优路径点所在的路径上所有节点的 path 表中的元素值改为其下标值, 表示删除原路径,同时将 p_min 所在的路径上所有节点的 path 表中元素值改 为-1,表示创建新路径。 6 回第 4 步循环,直至 path 表中所有的元素值均为-1 退出循环 7
7、由此获得最后一次的最优路径点,利用结构体中的 parent 指针得到最佳路径, 并将路径存放在 Bestpath 表中 8 输出最佳路径 9 程序退出。程序缺陷:程序缺陷: 由于专注于算法的实现,没有设置输入不合法的报错。 所以若要获得正确的结果,在输入路径点个数和邻接矩阵时要正确输入 程序截图:(以程序截图:(以 5 5 个路径点为例)个路径点为例)测试用例测试用例:提供四组测试用例(邻接矩阵表示完全图) ,路径点个数分别是 4,5,5,6 第一组: 0 2 1 3 2 0 4 1 1 4 0 1 3 1 1 0 路径如下: ACDBA第二组:0 1 2 7 5 1 0 4 4 3 2 4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工智能 技术 课程设计 报告
限制150内