A*搜索算法AStar_BFS

算法原理: 利用优先队列(优先级属性每一个结点的估计函数值+当前的路径消耗值)后进先出的性质来一层层的遍历。最佳优先搜索的最广为人知的形式称为 A* 搜索。它对结点的评估结合了到达此结点已经花费的代价,和从该结点到目标结点所花代价。由于结合了从开始结点到结点 n 的路径代价和从结点 n 到目标结点的最小代价路径的评估值,因此评估函数值等于经过结点 n 的最小代价解的估计代价。
算法时间空间复杂度分析:时间复杂度:O(b^m ),空间复杂度:O(b^m )

算法步骤:
1)将开始结点压入优先队列中;
2)取出队列结点当前拓展结点,设置为已访问;
3)判断当前结点是否为目标结点,若是则输出路径搜索结束,否则进行下一步;
4)访问当前结点的所有相邻子节点;
5)判断该该子节点是否被访问过,若已经访问过则回到2),若还未访问过则继续下一步6);
6)对于每一个子节点,获取其相关信息值并进行路径更新,将其子节点的父亲结点指向当前结点,返回2);
7)对新的队列进行一次优先级排序;
8)若优先队列为空还未找到目标结点,返回搜索失败;

package 实验一;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;public class AStar_BFS extends BuildGraph{public void ShortestPath(){ShortestPath(start,end);}public Queue<Vertex> SortTest(Queue<Vertex> queue){List<Vertex> list=new ArrayList<>();while(!queue.isEmpty()){list.add(queue.poll());}Collections.sort(list, new Comparator<Vertex>(){@Overridepublic int compare(Vertex o1, Vertex o2) {// TODO Auto-generated method stubreturn (o1.dist+o1.h)<(o2.dist+o2.h)? -1:((o1.dist+o1.h)==(o2.dist+o2.h)? 0:1);}});int i=0;while(i<list.size()){//System.out.println(list.get(i).h);queue.add(list.get(i));i++;}return queue;}public void ShortestPath(Vertex startNode,Vertex endNode){//初始化Queue<Vertex> queue = new LinkedList<>();//startNode.dist=0;queue.offer(startNode);//将源点dist设置为0并入队列while(!queue.isEmpty()){Vertex v = queue.poll();explored.put(v.vertexLabel, 1);if(v.vertexLabel==endNode.vertexLabel){System.out.println("AStar_BFS Route:");showPath_A(v,startNode);return;}for(int i=0;i<v.child.size();i++){Vertex current=v.child.get(i).endVertex;//System.out.println(explored.get(current.vertexLabel));if(explored.get(current.vertexLabel)==0){current.dist=v.dist+v.adjEdges.get(v.child.get(i));queue.offer(current);current.preNode=v;}}queue=SortTest(queue);}System.out.println("AStar_BFS Route:"+" Failure!");return;}
}

A*搜索算法AStar_BFS相关推荐

  1. C语言局部搜索算法(爬山法,模拟退火法,遗传算法)求解八皇后问题

    C语言局部算法求解八皇后问题 写在前面 八皇后问题及局部搜索算法 爬山法(hill-climbing searching) 算法介绍 代码实现 退火法(simulated annealing) 算法介 ...

  2. grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)

    2019独角兽企业重金招聘Python工程师标准>>> 1. 简单介绍 在用于查找子字符串的算法当中,BM(Boyer-Moore)算法是目前被认为最高效的字符串搜索算法,它由Bob ...

  3. 二进制搜索算法_使用安全摄像机镜头解释二进制搜索算法

    二进制搜索算法 by Julia Geist Julia·盖斯特(Julia Geist) 使用安全摄像机镜头解释二进制搜索算法 (Binary Search Algorithms explained ...

  4. 算法基础知识科普:8大搜索算法之二叉搜索树(上)

    前几天,我们介绍了在顺序存储结构上构建的搜索算法,如二分搜素,插补搜索等,这种结构适合于静态搜索,但对于动态搜索会涉及到大量记录的移动导致效率的降低.这样我们自然会想是否能够利用链式的存储结构,这样在 ...

  5. 算法基础知识科普:8大搜索算法之顺序搜索

    基本概念和术语 搜索表(Search Table):是由同一类型的数据元素(或记录)构成的集合. 关键字(Key):是数据元素中某个数据项的值,用它可以标识一个数据元素.若此关键字可以唯一地标识一个记 ...

  6. 低耗时、高精度,微软提基于半监督学习的神经网络结构搜索算法

    作者 | 罗人千.谭旭.王蕊.秦涛.陈恩红.刘铁岩 来源 | 微软研究院AI头条(ID:MSRAsia) 编者按:近年来,神经网络结构搜索(Neural Architecture Search, NA ...

  7. 广度优先搜索算法(有向图和无向图)

    广度优先搜索算法的思想:以v作为源点出发访问其他节点,首先使用队列存储节点,再从队列中取出节点,遍历查找v和其他连通的节点,将和v连通的节点并且未被访问过的节点入队,遍历完和v连通的节点:再从队列中取 ...

  8. 阿里文娱搜索算法实践与思考

    作者:若仁,来自:DataFunTalk 导读:视频搜索是涉及信息检索,自然语言处理 ( NLP ),机器学习以及计算机视觉 ( CV ) 等多领域的综合应用场景,随着深度学习在这些领域的长足进展以及 ...

  9. 干货 | 拒当调参师工程师:超参数搜索算法一览

    https://www.toutiao.com/a6683809735214367239/ 2019-04-25 20:35:22 机器学习训练模型的过程中自然少不了调参,许多机器学习工程师都戏称自己 ...

最新文章

  1. m个足球放入n个篮子中或者放苹果问题
  2. 一起谈.NET技术,保护您的 Silverlight 应用程序的安全
  3. 12.3、Libgdx的图像之截屏
  4. Spring Boot中对自然语言处理工具包hanlp的调用详解
  5. 互联网IP路由的逐跳全局最优化原则-Dijkstra算法证明
  6. PHP在函数体中传递与接收参数
  7. MMDB ip地址库操作
  8. WinSCP+PuTTY搭配使用 ,解决Windows连接Linux系统文件传输和终端登陆
  9. numpy基础笔记01
  10. 更改matplotlib中x或y轴上的“刻度频率”?
  11. 最长上升子序列o(nlogn)复杂度一种简单易懂的理解
  12. C#之double内存
  13. Unity3D(七)声音
  14. 【JAVA】第十一届蓝桥杯省模拟赛答案(本科组)
  15. 修改了Excel默认打开方式后仍然使用WPS打开的解决办法
  16. 微信投票小程序怎么弄(微信活动投票小程序制作方法)
  17. 【数据处理】 python 极速极简画图——频数(率)分布直方图
  18. 学生信息管理系统作业
  19. 24岁女孩与30多岁成熟有家男人
  20. 网站如何锁定用户,超级浏览器有办法解决吗?

热门文章

  1. 学废Unity的小妙招
  2. 记录高德地图H5导航
  3. 【hackerrank】World CodeSprint 11 T6
  4. python 发送匿名邮件或无发件人
  5. 2022年全球气候金融产品研究报告
  6. 在 Jupyter Notebook 中使用R语言
  7. Unity最详细的动画总结包含IK反向动力学,AvatarMask骨骼遮罩,模型导入错误解决,MatchTarget
  8. Xshell6安装与使用
  9. MySQL Partition 相关使用总结
  10. 【原创】【狗眼看股】【2008-4-14】紧急更正:反弹的条件已不具备,后市看跌...