Best-First-Search算法
来源:互联网 发布:淘宝网忘了密码怎么办 编辑:程序博客网 时间:2024/06/04 20:12
缩写起来是跟广度优先搜索一样的BFS,实际上不同。此BFS按照类似Dijkstra的流程运行,不同的是它能够评估任意结点到目标点的代价。与选择离初始结点最近的结点不同的是,它选择离目标最近的结点。BFS不能保证找到一条最短路径。然而,它比Dijkstra算法快的多,因为它用了一个启发式函数(heuristic function)快速地导向目标结点。
看看维基百科的解释:Best-First-Search
最佳优先搜索是宽度优先搜索的扩展,基本思想是将节点表按据目标的距离进行排序,再以节点的估计距离为标准选择待扩展的节点。
算法步骤:
1. 用N表示已经排序的初始结点表(从小到大)
2. 如果N为空集,则退出并给出失败信号
3. n取为N的首结点,并在N中删除结点n,放入已访问结点列表
4. 如果n为目标结点,则退出并给出成功信号
5. 否则,将n的后继结点加到N中,记为N’,对N’中的结点按距目标的估计距离排序,并返回第2步
在搜索的过程中一般会用到评估函数f(n),表示从初始节点S经过n到达目的节点t的最佳路径代价f*(n)的估计:
从S到n的最佳代价g*(n)的估计g(n),g(n) ≥ g*(n),即局部最小≥ 全局最小
从n到t 的最佳代价h*(n)的估计h(n),若对所有结点n,都有h(n)≤h*(n),则算法A一定能找到一条到达目标结点的最佳路径,此时算法A称为算法A*。
f(n) = g(n) + h(n)作为f*(n) = g*(n) + h*(n)的估计,估计值越小的点希望越高,应该优先扩展,所以可以在此处维持一个优先队列。
1 0
- Best-First-Search算法
- best-first search
- best-first search--转
- best-first search--【转】
- weka: best first search
- Heuristic Search之Greedy Best First Search
- 最佳优先搜索(Best-First Search)
- sift特征匹配源码学习(Best Bin First Search)
- Best-First Search Algorithm (Draft by Andrew Jungwirth)
- 广度优先搜索算法(Breadth-First-Search,BFS)
- 深度优先搜索算法(Depth first search)
- 用clojure写的depth first search算法
- 算法:图的深度优先遍历(Depth First Search)
- 算法:图的广度优先遍历(Breadth First Search)
- 广度优先搜索算法(Breadth-First-Search)
- 深度优先搜索算法(Depth-First-Search)
- 广度优先搜索算法(breadth First Search, BFS)
- BFS—— Breadth First Search 广度优先算法
- nginx源码分析之http解码实现
- android-进阶-黑盒测试
- 15款macbook pro下安装jdk-8
- Maximum Subarray - LeetCode
- The Swift Code之应用程序的启动过程
- Best-First-Search算法
- Java实现最长公共子序列
- 原码, 反码, 补码 详解
- 关于 zend studio 中有些php 内置函数没有提示,或是有‘小黄色感叹号’
- 全志A20电阻屏调试
- phonegap 对键盘的隐藏与显示
- 安装完MySQL 后必须调整的 10 项配置
- Hive总结(十)Hive 输入输出适配类(输出CSV,XML)
- Android中不同的Context及使用注意(转载)