BFS用于找到每个边的权值是一样的图的最短路径,如果图中每个边的权值不一样了,就用到了UCS。

参考了https://blog.csdn.net/jdh99/article/details/80872364

算法思路:

1.数据结构

frontier: 优先队列,用来存储到达当前顶点花费的代价,这里的代价是目前最小的代价,后面如果有到达该点的更短路径,则更新这个代价。探索点的时候,每次都从这个优先队列里面挑出那个代价最小的点,然后扩展该点。

explored:用一个数组来存储就行,存放的是已经探索过的点。

father:数组,用来存储当前点的父节点是谁,以便用于找到这个路径,如果不需要求路径,只需要最短路径的长度,就用不到这个father数组

2. 算法流程

(1)将起始点加入到frontier中,将与frontier相连的点进行探索,每个点的代价(后面用cost替代)是从起点到该点的距离,然后将所有的点加入到frontier里面

(2) 从frontier里面挑出cost最小的点A,判断该点是不是终点,如果是终点算法结束。如果不是终点,探索与该点相连的所有点,每个点的cost是A点的cost加上A点到B点的路径的权重。如果B点是已经出现在frontier里面了,比较一下原来的cost与新生成的cost哪个更小,然后将最小的cost赋值给B点,并更新它的父节点。

(3) 如果frontier为空还没有找到终点,则没有到达终点的最短路径

3. example

  • 将A点加入到frontier里面
  • 从frontier里面将A点拿出来放到explored里面,判断一下A点是不是终点(这里的终点是C点),这里不是,然后探索与A相连的点。A点到D点的cost是A点的cos(起始点的cost为0)加上A点到D点的权重,一共是2,也就是说D点的cost为2,同理B点的cost为3,将D点与B点加入到frontier里面。
  • 从frontier里面找出cost最小的点,这里是D点,将D点放到explore里面,然后探索D点,方法与上一步一样。将C点加入到frontier里面,这里C点的cost是8,虽然我们已经找到了终点,但是这条路径可能不是最优的,所以需要继续探索其他路径。直到我们在frontier里面找到了终点,且终点是frontier里面cost最小的点,那么此时终点的cost才是最小的cost,我们找到最短路径,然后结束算法。
  • 从frontier里面找cost最小的点,这里是B点,将B点放到explored里面,然后将E点加入到frontier里面
  • 从frontier里面找cost最小的点E,将E放入到explored里面,此时C点为cost花费最小的点,此时有个问题,因为C点已经在frontier里面了,所有这里就用到了上面提到的更新节点的cost,比较一下新生的cost与原来的cost那个更小,原来是8,现在是7,现在更小,所以更新C点的cost为7
  • 从frontier里面找cost最小的点,这里是C点,且C点是我们要找的终点,到此算法结束,我们找到最短路径,值为7

Uniform Cost Search (UCS)相关推荐

  1. 【人工智能】一致代价搜索(Uniform Cost Search, UCS) Python实现

    带环检测的一致代价搜索(Uniform Cost Search, UCS) Python实现 罗马尼亚旅行问题 求从城市Arad到城市Bucharest的最短路径 States:表示当前所处的城市: ...

  2. CS 188 (4) Uniform Cost Search( 统一代价搜索算法)

    本文要实现 Uniform Cost Search( 统一代价搜索算法) ,首先搜索总成本最小的节点,  统一代价搜索算法搜索到达目标. PriorityQueue实现一个优先级队列的数据结构,每个插 ...

  3. 自动驾驶汽车的规划与控制

    1. 概念与意义 自动驾驶汽车作为一个复杂的软硬件结合系统,其安全,可靠地运行需要车载硬件,传感器集成.感知.预测以及规划控制等多个模块的协同配合工作.感知预测和规划控制的紧密配合非常重要.这里的规划 ...

  4. A* Search Algorithm

    A* Search Algorithm 写在前面:第一次写博客,以后想把遇到的有意思的算法或者小知识记录下来.纯原创,部分图片来自课堂PPT,出自UCR,CS170课件.转载请声明出处. 算法简介 A ...

  5. AI(人工智能:一种现代的方法)学习之:无信息搜索(uninformed search)算法——广度优先搜索、深度优先搜索、Uniform-cost search

    文章目录 参考 搜索算法 深度优先搜索 depth-first search 性能分析 完整性 complete 最优性 optimal 时间复杂度 空间复杂度 广度优先搜索 breadth-firs ...

  6. Project 1:Search in Pacman(吃豆人搜索实验)(一)

    题目链接http://ai.berkeley.edu/search.html Q1: Depth First Search Q2: Breadth First Search Q3: Uniform C ...

  7. 搜索算法Search开篇

    最近在学高级人工智能这门课,老师第二节课就讲的很硬核啊,老师讲解了一系列的搜索算法,现在做一下笔记和总结部分.(搜索这一讲是自动化所吴老师讲的,很厉害) 我们一般讲搜索都是讲路径规划问题,就是怎么从初 ...

  8. 基于搜索的路径寻找方法(Dijkstra, A*和Jump Point Search)

    对解空间的定义 先看我们会遇到的一个问题.上图描述了在地图中不同机器人的形状和尺寸.因为形状和尺寸的差异让碰撞检测问题变得非常复杂.很自然我们会想能不能仅用一个点来描述机器人呢?忽略掉形状和尺寸的差异 ...

  9. 启发式路径搜索算法介绍

    作者丨Arwin(Haowen Yu) 来源丨古月居 前言 启发式搜索(Heuristically Search)又称为有信息搜索(Informed Search),它是利用问题拥有的启发信息来引导搜 ...

最新文章

  1. 股市币市:数据分析与交易所最新公告(20190301)
  2. 学霸女孩放弃保研再次高考,原因让人泪目…
  3. LeetCode集锦(八) - 第26题 Remove Duplicates From Sorted Array
  4. Django 2.2 LTS 发布,长期支持版来了
  5. Spring和JSF集成:导航
  6. 不使用第三个变量交换两个变量
  7. 平板电脑必装十大软件_电脑越用越卡?这5个必装软件,分分钟帮你恢复火箭般的速度...
  8. 如何将枯燥的大数据呈现为可视化的图?
  9. 面向深度学习研究人员的自然语言处理实例教程
  10. 双击事件 转载 http://blog.sina.com.cn/s/blog_739365a30100vk8p.html
  11. Atitit 自然语言处理(NLP)的应用 与 搜索引擎 目录 1.1. 搜索引擎并不是自然语言处理(NLP)的唯一应用。 2 1.2. NLP的应用 2 1.3. 社交网站信息流, 2 1.4.
  12. Redis的集群原理
  13. opencv存取视频的编码格式 fourcc
  14. 象牙大钢琴II压缩版-Synthogy Ivory by JR Samples II Kontakt
  15. maven 阿里下载源 setting.xml
  16. 史上最详细的UE4安装教程(没有之一,就是史上最详细,不服气你来打我呀)
  17. 小学计算机编程学什么,小学生编程都学什么
  18. 【评测】MP SARS-CoV-2单抗、重组蛋白
  19. 10019---mybatis的缓存机制(一级缓存二级缓存和刷新缓存)
  20. QT-通用的软件界面框架,好看且实用

热门文章

  1. 【原创:EI 排版】
  2. 【DevFest 2020】主会场日程安排新鲜出炉,更有圆桌对话探讨行业热点!_ 主会场
  3. 程序员在平台兼职接单,月入30K,方法我全写出来了!(附接单渠道和注意事项)
  4. 程序员接单方法与流程
  5. iReport内容显示不全
  6. VMWare ESX命令行学习笔记
  7. 新浪微博开放平台研究-实现微博自动评论(上)
  8. 日志框架LOG4J2系列二——log4j2配置文件
  9. 晨曦,墟市的情怀。kobe man
  10. Linux 物理卷(PV)、逻辑卷(LV)、卷组(VG)管理