第七章 狄克斯特拉算法
来源:互联网 发布:千寻软件下载 编辑:程序博客网 时间:2024/06/08 04:53
第七章 狄克斯特拉算法
7.1使用狄克斯特拉算法
7.2术语
7.3换钢琴
7.4负权边
7.5实现
7.6小结
7.1使用狄克斯特拉算法
从第六章的问题,引入,如果我们不只是算从A到B的最短路径,还要算最快到达,完成其中每一段路径都需要时间,我们给每段路径都加上时间,每条边乘上时间算最后的总和,才知道哪一条路径是最快的----图论里的问题
就是从无全图变为有权图
7.2术语
狄克斯特拉算法不能算有环的图,会进入无限死循环
1.权重,每条边关联数字的图,这些数字称为权重,图称为加权图,没有权重的图称为非加权图
计算加权图的最短路径使用狄克斯特拉算法,计算非加权图的最短路径使用广度优先搜索
2.环
有环的路径不会是最短路径
狄克斯特拉算法只能计算有向无环图
7.3换钢琴
举了例子
最短路径并不一定是指物理距离,可能是某种度量指标
7.4负权边
不能计算负权边(为什么呢?)导致这种算法不管用,计算负权边的算法是贝尔曼福德算法
7.5实现
graph={}graph["start"]={}graph["start"]["a"]=6graph["start"]["b"]=2graph["a"]={}graph["a"]["fin"]=1graph["b"]={}graph["b"]["a"]=3graph["b"]["fin"]=5graph["fin"]={}infinitely = float("inf")costs={}costs["a"]=6costs["b"]=2costs["fin"]=infinitelyparents={}parents["a"]="start"parents["b"]="start"parents["fin"]=Noneprocessed=[]def find_lowest_cost_node(costs): lowest_cost=float("inf") lowest_cost_node=None for node in costs: cost = costs[node] if cost<lowest_cost and node not in processed: lowest_cost=cost lowest_cost_node=node return lowest_cost_nodenode=find_lowest_cost_node(costs)print(node)while node is not None: cost=costs[node] neighbors=graph[node] for n in neighbors.keys(): new_cost = cost + neighbors[n] if costs[n]>new_cost: costs[n] = new_cost parents[n]= node processed.append(node) node = find_lowest_cost_node(costs) print(costs)
7.6小结
广度优先搜索用于在非加权图中查找最短路径。
狄克斯特拉算法用于在加权图中查找最短路径。
仅当权重为正时狄克斯特拉算法才管用。
如果图中包含负权边,请使用贝尔曼福德算法。
狄克斯特拉算法用于在加权图中查找最短路径。
仅当权重为正时狄克斯特拉算法才管用。
如果图中包含负权边,请使用贝尔曼福德算法。
阅读全文
0 0
- 第七章 狄克斯特拉算法
- 《算法导论》第七章 quicksort
- 算法导论 第七章 排序
- 牛客算法--第七章
- 算法导论:第七章 快速排序
- 算法导论读书笔记 第七章 快速排序
- 算法导论第七章:快速排序
- 算法导论第七章学习笔记
- 算法入门经典(第七章)
- 【算法导论】第七章之快速排序
- 算法导论 第七章:快速排序
- [算法导论]第七章《快速排序》
- 算法导论第七章课后答案
- 算法导论第七章最后思考题
- 算法导论第七章___快速排序
- 算法导论 python代码 第七章
- 算法导论第七章总结:快速排序
- 算法导论 第七章:快速排序(Quicksort)
- cv::addWeighted 进行图片融合
- 为蹭AWS热点,朋友圈八卦鸡汤数量惊人,但终究敌不过AWS寥寥数百字
- 网易2017春招编程题:工作安排 [python]
- 猫狗算法(每日一道算法题)
- 当当网价格系统架构分析
- 第七章 狄克斯特拉算法
- 常用数据库存储引擎的特点
- 投资赚钱,休闲食品行业那些值得投资?
- 网易2017春招编程题:消除重复元素 [python]
- Java数据结构与算法解析(十七)——斜堆
- RNN(循环神经网络)
- token
- java面试之项目面试问题--不看面试会后悔的
- 网易2017春招编程题:读棋盘 [python]