Python 实现Dijkstra算法_算法图解
2018-01-09 22:17
316 查看
DijkstraAlgorithm.py
# 迪克斯特拉算法: 计算加权图中的最短路径 # graph: 起点start,a,b,终点fin之间的距离 graph = {} graph["start"] = {} graph["start"]["a"] = 6 graph["start"]["a"] = 2 graph["a"] = {} graph["a"]["fin"] = 1 graph["b"] = {} graph["b"]["a"] = 3 graph["b"]["fin"] = 5 graph["fin"] = {} # costs: 起点到 a,b,fin的开销 infinity = float("inf") costs = {} costs["a"] = 6 costs["b"] = 2 costs["fin"] = infinity # parents: 存储父节点,记录最短路径 parents = {} parents["a"] = "start" parents["b"] = "start" parents["fin"] = None # processed: 记录处理过的节点,避免重复处理 processed = [] #find_lowest_cost_node(costs): 返回开销最低的点 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_node #Dijkstra implement node = find_lowest_cost_node(costs) while node is not None: cost = costs[node] neighbors = graph[node] for n in neighbors.keys(): new_cost = cost + neighbors if costs > new_cost: costs = new_cost parents = node processed.append(node) node = find_lowest_cost_node(costs) print(processed)
output(win10+pthon 3.6)
windows下不能直接执行python文件,跳转到对应文件夹后python DijkstraAlgorithm.py
有向加权图
结果
相关文章推荐
- Dijkstra算法-(迪杰斯特拉)算法的迭代实现与优先队列实现 图解算法过程
- 【算法——Python实现】有权图求单源最短路径Dijkstra算法
- [python][numpy]简单K-近邻算法实现
- K-近邻算法python实现
- 求婚拒绝算法(GS算法)的Python实现
- Python和C#基本算法实现对比
- KNN分类算法及python代码实现
- K-Nearest Neighbor(KNN) 最邻近分类算法及Python实现方式
- K近邻(KNN)算法---Python实现(一)
- 感知机算法原理(PLA原理)及 Python 实现
- 基本采样算法及Python实现
- 6.2神经网络算法实现--python机器学习
- 机器学习经典算法详解及Python实现--CART分类决策树、回归树和模型树
- Python徒手实现识别手写数字—图像识别算法(K最近邻)
- python实现:目标优化算法——遗传算法
- 基于像素清晰度的图像融合算法(Python实现)
- 用Python实现的数据结构与算法:链表
- 【Python】基于kNN算法的手写识别系统的实现与分类器测试
- 随机红包生成算法-python实现
- 算法基础之python实现动态规划中数字三角形和最长上升子序列问题