12.23_黑马数据结构与算法笔记Java

目录

230 图 DFS

231 图 BFS

232 图 拓扑排序

233 图 拓扑排序 检测环

234 图 拓扑排序 DFS

235 图 Dijkstra 算法描述

236 图 Dijkstra 算法实现

237 图 Dijkstra 改进 记录路径

238 图 Dijkstra 改进 优先队列

239 图 Bellman Ford 算法描述

240 图 Bellman Ford 算法实现

241 图 Floyed Warshall 算法描述

242 图 Floyed Warshall 算法实现1


231 图 BFS

12.23_黑马数据结构与算法笔记Java_第1张图片

先遍历最近的,再慢慢遍历出去。 

12.23_黑马数据结构与算法笔记Java_第2张图片

232 图 拓扑排序

12.23_黑马数据结构与算法笔记Java_第3张图片

 12.23_黑马数据结构与算法笔记Java_第4张图片

12.23_黑马数据结构与算法笔记Java_第5张图片

12.23_黑马数据结构与算法笔记Java_第6张图片

12.23_黑马数据结构与算法笔记Java_第7张图片

12.23_黑马数据结构与算法笔记Java_第8张图片

233 图 拓扑排序 检测环

12.23_黑马数据结构与算法笔记Java_第9张图片

有了环之后,没有办法用拓扑排序,因为例如上面的例子,微服务框架的入度没有办法减为0 ,因此微服务框架没有办法加到队伍里面去,因为2、那里说了,只加入入度为0的东西。因此,后面的实战项目也没有办法排序。 

12.23_黑马数据结构与算法笔记Java_第10张图片

将加进去队列里面的值和graph进行对比,看看数量相不相等,相等的话就是没有环,不相等就说明有元素没有加进去队列,也就是说明有环。 

234 图 拓扑排序 DFS

12.23_黑马数据结构与算法笔记Java_第11张图片

12.23_黑马数据结构与算法笔记Java_第12张图片

12.23_黑马数据结构与算法笔记Java_第13张图片

 如何检测环?

12.23_黑马数据结构与算法笔记Java_第14张图片

235 图 Dijkstra 算法描述

12.23_黑马数据结构与算法笔记Java_第15张图片

12.23_黑马数据结构与算法笔记Java_第16张图片

12.23_黑马数据结构与算法笔记Java_第17张图片

236 图 Dijkstra 算法实现

12.23_黑马数据结构与算法笔记Java_第18张图片

12.23_黑马数据结构与算法笔记Java_第19张图片

 

12.23_黑马数据结构与算法笔记Java_第20张图片

12.23_黑马数据结构与算法笔记Java_第21张图片 

 

237 图 Dijkstra 改进 记录路径

12.23_黑马数据结构与算法笔记Java_第22张图片

不用每一次用contains访问list,因此效率更高 

12.23_黑马数据结构与算法笔记Java_第23张图片

238 图 Dijkstra 改进 优先队列

用优先级队列去改进代码,直接取头元素就好。

12.23_黑马数据结构与算法笔记Java_第24张图片

12.23_黑马数据结构与算法笔记Java_第25张图片

12.23_黑马数据结构与算法笔记Java_第26张图片

239 图 Bellman Ford 算法描述

12.23_黑马数据结构与算法笔记Java_第27张图片

对于有负边的情况,就会出现错误。因此,要运用新的解决方案。

12.23_黑马数据结构与算法笔记Java_第28张图片

240 图 Bellman Ford 算法实现

12.23_黑马数据结构与算法笔记Java_第29张图片

求最短路径

12.23_黑马数据结构与算法笔记Java_第30张图片

 但是,如果是负环,也就是说它形成了一个环,并且,路径加起来为负数,这样的情况下最小路径是无解的。

241 图 Floyed Warshall 算法描述

12.23_黑马数据结构与算法笔记Java_第31张图片

12.23_黑马数据结构与算法笔记Java_第32张图片

242 图 Floyed Warshall 算法实现1

12.23_黑马数据结构与算法笔记Java_第33张图片

你可能感兴趣的:(数据结构与算法,笔记,算法,数据结构,深度优先,java,后端,广度优先)