社区
数据结构与算法
帖子详情
A*算法能不能保证得到最优解?
NewStarSE
2005-06-25 10:59:43
我在陆汝今(钅今)的书上看到的结论是说保证能得到最优解。但蔡自兴的书上说是不能保证得到最优解。
到底谁对?
...全文
4044
21
打赏
收藏
A*算法能不能保证得到最优解?
我在陆汝今(钅今)的书上看到的结论是说保证能得到最优解。但蔡自兴的书上说是不能保证得到最优解。 到底谁对?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
熊主任
2005-07-26
打赏
举报
回复
看西交那本人工智能证明a*算法能求出最优解地证明时,必须注意有一个假设前提,那就是估价函数是最优的。所以我认为可以这么理解,如果用这个算法在合理的时间内找到合理的解,它就是a*算法,反之就不是。
ZeroGts
2005-07-25
打赏
举报
回复
1
蔡、傅是这么说的:算法要是可采用的,需要满足4个充分条件,除了前面提到的3个条件,还有一个:在目标节点处,需要f(n)≡f*(n),而A*算法并没有这一限制,所以不能保证得到最优解。
由
1、估值函数:f(n)=g(n)+h(n)
3、h(x)≤h*(x),对于任意的节点x都成立
可知在目标节点处有h(x)≤h*(x)=0,h(x)=0,f(n)=g(n)+0=f*(n)。所以f(n)≡f*(n)这个条件是有的。
那么A*可以保证最优解。
zorro09
2005-07-18
打赏
举报
回复
看陆汝钅今的书的人说能。看蔡自兴的书的人说不能。
ZeroGts
2005-07-17
打赏
举报
回复
在适合的环境中正确地使用A*可以保证最优解;
否则就是错误的A*,也就不是A*了。
ensoniq
2005-07-14
打赏
举报
回复
楼主再做点贡献吧,把几个函数的定义重新再明确一下。
另,要否定最优解最有说服力的办法还是举出反例,这个有没有的?
熊主任
2005-07-12
打赏
举报
回复
如果选中了一个好的估价函数,那么就算找不到最优解那也能找到一个相当不错的解,否则很容易退化成深度优先搜索,那么效率和找到的结果可能就都不理想了。
NewStarSE
2005-06-30
打赏
举报
回复
没人了?
NewStarSE
2005-06-29
打赏
举报
回复
TO: ensoniq
f(n)是由g(n)和h(n)两部分构成,而g(n)一般是取的实际发生的耗费,这个值显然有:g(n)≥g*(n),所以通常都不必考虑它。
不过在目标节点处,是不是能保证g(x)≡g*(x)呢?如果等式恒成立,则在目标节点处必有f(n)≡f*(n),那么条件4就是多余的。反之就有f(n)〉f*(n),蔡的考虑就是对的。
写到这里,终于明白了:A*算法并不要求g(x)≡g*(x),这也是作者们的分歧所在。但我现在认为也许这一条件已经隐含在其它条件中,我再想一想,也欢迎各位继续讨论。
thirdapple
2005-06-28
打赏
举报
回复
蔡是对的
NewStarSE
2005-06-28
打赏
举报
回复
看各位的,越看越晕。我干脆把书上的抄下来,请各位发表高见。
先看A*算法的定义(这个应该是公认的):
1、估值函数:f(n)=g(n)+h(n)
g(n)是已经发生的耗费,h(n)是将要发生的耗费的估值
2、f(n)单调非减
3、h(x)≤h*(x),对于任意的节点x都成立
4、从优先队列的队头取出节点
(a)检测该节点是否为目标节点,是,则求得解,返回该节点。
(b)不是目标节点,则根据f(n)的大小展开子节点到优先队列中(还有一些细节,省了)
5、重复第4步,至队列为空
陆是这么说的:由于H*算法是可采用的(即求出的第一个可行解就是最优解),而A*算法只不过是将与H*算法的限制(即h(x)≤h*(x))用于A算法而得到的,所以A*算法也是可采用的,即A*算法保证得到最优解。
蔡、傅是这么说的:算法要是可采用的,需要满足4个充分条件,除了前面提到的3个条件,还有一个:在目标节点处,需要f(n)≡f*(n),而A*算法并没有这一限制,所以不能保证得到最优解。
信谁的呢?
galois_godel
2005-06-28
打赏
举报
回复
看你怎么搜了,你可以搜可行解,这时找到的就不一定是最优解,如果你搜索的最优解,那就可以保证
sun3411
2005-06-28
打赏
举报
回复
决定于h(n)吧
h(n)<=实际该点到目标最近距离
能得到最优解
h(n)==0就是广度优先搜索
h(n)>实际该点到目标最近距离 不能得到最优解 效率较高
ensoniq
2005-06-28
打赏
举报
回复
请教下,目标节点处h(n)和h*(n)难道不是都为0吗?f(n)怎么会不等于f*(n)呢?那么什么情况下第四个条件不成立?
NowCan
2005-06-27
打赏
举报
回复
我记得是有条件的,和启发函数有关。但是具体的忘了。
Tranquillo
2005-06-27
打赏
举报
回复
可以,如果存在
tatbaby
2005-06-27
打赏
举报
回复
如果解存在,保证找到的最优解
这个 王永庆的《人工智能与原理》里面给了证明……不过我没去看他怎么证的。不过前提是,你设计的算法确实是A*算法,哈哈
fireofhell
2005-06-27
打赏
举报
回复
如果存在的话,就可以找到
mathe
2005-06-27
打赏
举报
回复
不能保证
NewStarSE
2005-06-27
打赏
举报
回复
UP
thirdapple
2005-06-27
打赏
举报
回复
我觉得,从A*算法本身而言,只要启发函数能够保证无后效性就可以保证得到最优解
加载更多回复(1)
A*
算法
flexas3代码
A*(A-Star)
算法
是一种静态路网中求解最短路最有效的方法。公式表示为: f(n)=g(n)+h(n),其中f(n) 是节点n从初始点到目标点的估价函数,g(n) 是在状态空间中从初始节点到n节点的实际代价,h(n)是从n到目标节点最佳路径的估计代价。
保证
找到最短路径(
最优解
的)条件,关键在于估价函数h(n)的选取:估价值h(n)<= n到目标节点的距离实际值,这种情况下,搜索的点数多,搜索范围大,效率低。但能
得到
最优解
。如果 估价值>实际值, 搜索的点数少,搜索范围小,效率高,但
不能
保证
得到
最优解
。
高级人工智能课程作业.rar
【2 搜索】 搜索定义五要素:状态空间,后继函数,初态/终态,路径耗散,目标测试;解(p4) 路径规划问题的3种形式化方法:网格化,扫描线,障碍物边界点(p28-37) 搜索树的边界——FRINGE集合:已访问过(处理过)的后继节点中未扩展的! 节点扩展≠节点产生,对节点扩展也可能不产生新的节点! 搜索
算法
性能的评估:完备性(有解时返回,无解时fail),最优性,时空复杂度(p48,详见提纲) 【3 盲搜索】 图搜索允许状态重复访问->
保证
获得
最优解
->无解时可能永远停不下来 树搜索避免状态重复访问->状态有限时完备->不
保证
解最优 避免状态重复访问的方法:CLOSED表存储访问过/扩展过的状态,OPEN表存储未扩展的状态 状态空间无限 或 有限+允许重复访问->不完备;有限+不允许重复访问->完备但并非最优 【4 启发式搜索】 盲搜索:从FRINGE集合中选择节点次序是随机的 启发式搜索:从FRINGE集合中选择最优节点进行扩展 节点的两种评估函数:A*
算法
,贪婪
算法
(p5,19考试) A*
算法
:完备+最优(每步都是最优+h一致时每步都是至今最优)+越精确扩展节点越少
内功修炼之数据结构与
算法
内容简介: 无论你是从事业务开发,还是从事架构设计,想要优化设计模式,数据结构与
算法
是必备的一门学科,本课程使用Java来讲解数据结构和
算法
,考虑到数据结构和
算法
较难,授课采用图解加
算法
游戏的方式。内容包括: 稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、
算法
的时间复杂度、冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序、基数排序(桶排序)、堆排序、排序速度分析、二分查找、插值查找、斐波那契查找、散列、哈希表、二叉树、二叉树与数组转换、二叉排序树(BST)、AVL树、线索二叉树、赫夫曼树、赫夫曼编码、多路查找树(B树B+树和B*树)、图、图的DFS
算法
和BFS、程序员常用10大
算法
、二分查找
算法
(非递归)、分治
算法
、动态规划
算法
、KMP
算法
、贪心
算法
、普里姆
算法
、克鲁斯卡尔
算法
、迪杰斯特拉
算法
、弗洛伊德
算法
马踏棋盘
算法
。为什么学数据结构与
算法
?
算法
是一个程序员真正的核心竞争力。无论用哪种语言做开发,
算法
从程序角度而言都是灵魂内核般的存在。程序的躯体可以各式各样,但是内核一定要追求高效整洁。同时掌握了
算法
,大厂名企的Offer不再是梦寐以求的梦想,而让程序高效且健壮,也不再是难以完成的技术难题。所以无论是为提升自我内功修炼,还是提升程序灵魂内核健全,学习
算法
,都是现有可供选项里的
最优解
。课程大纲:为了让大家快速系统了解数据结构与
算法
知识全貌,我为你总结了「数据结构与
算法
框架图」,帮你梳理学习重点,建议收藏!! CSDN学院Java答疑群:
A*
算法
最优解
提取
算法
A*
算法
最优解
提取
算法
EmilMatthew (EmilMatthew@126.com) [ 类别 ]
算法
,人工智能[推荐指数]★★★★[ 摘要 ]本文就“启发式搜索
算法
引论------A*
算法
理论与实践”一文中的
最优解
提取
算法
的不足处进行了改进,提出了一个通用的A*
算法
的
最优解
提取
算法
。[ 关键词 ] A*,
最优解
提取,AS
#
算法
A*
算法
与搜索
授课视频:
算法
设计与分析(进阶篇) 5.3 1.A*简介 A
算法
试图寻找best-First
算法
的
最优解
,什么情况下可能是
最优解
? A
算法
和分支界限的不同? 分支界限
算法
的策略主要是剪掉
不能
得到
最优解
的侧枝 A*
算法
的核心是告诉我们在某些情况下, 我们得 到的解一定是优化解, 于是
算法
可以停止,试图尽早地发现优化解 ,常使用Best-first策略求解优化问题 2. A*
算法
2.1 A*
算法
...
数据结构与算法
33,007
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章