第七章 狄克斯特拉算法

devtools/2025/3/25 2:48:44/

狄克斯特拉算法找出的是总权重最小的路径

术语介绍:

狄克斯特拉算法用于每条边都有关联数字的图,这些数字称为权重。

带权重的图称为加权图,不带权重的图称为非加权图。

计算非加权图的最短路径,可使用广度优先搜索。要计算加权图中的最短路径,可使用狄克斯特拉算法

不能将狄克斯特拉算法用于包含负权边的图。

#实现
graph = {}
graph["you"] = ["alice","bob","claire"]
graph["start"] = {}
graph["start"] ["a"] = 6
graph["start"] ["b"] = 2
graph["a"] = {}
graph["a"] ["fin"] = 1
graph["b"] = {}
graph["b"] ["a"] = 3
graph["b"] ["fin"] = 2
graph["fin"] = {}#创建开销表的代码如下:
infinity = float("inf")
costs = {}
costs["a"] = 6
costs["b"] = 2
costs["fin"] = infinity#创建父节点表的代码如下:
parents = {}
parents["a"] = "start"
parents["b"] = "start"
parents["fin"] = None
#创建一个数组,用于记录处理过的节点
processed = []
def find_lowest_cost_node(costs):lowest_cost = float("inf")lowest_cost_node = Nonefor node in costs:cost = costs[node]if cost < lowest_cost and node not in processed:lowest_cost = costlowest_cost_node = nodereturn lowest_cost_node
#开始狄克斯特拉算法的实现
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[n]if costs[n] > new_cost:costs[n] = new_costparents[n] = nodeprocessed.append(node)node = find_lowest_cost_node(costs)


http://www.ppmy.cn/devtools/169099.html

相关文章

cursor无限续杯软件操作教程

软件使用教程&#xff1a; 在这里插入图片描述 软件界面&#xff1a; 破解流程&#xff1a; 1.退出 cursor 软件的账号&#xff0c;点击 log out 按钮&#xff0c;可以手动退出并关闭软件。 2.删除账号&#xff0c;点击按钮会自动打开网页&#xff0c;手动删除即可。 3.确保…

Web 小项目: 网页版图书管理系统

目录 最终效果展示 代码 Gitee 地址 1. 引言 2. 留言板 [热身小练习] 2.1 准备工作 - 配置相关 2.2 创建留言表 2.3 创建 Java 类 2.4 定义 Mapper 接口 2.5 controller 2.6 service 3. 图书管理系统 3.1 准备工作 - 配置相关 3.2 创建数据库表 3.2.1 创建用户表…

知识蒸馏:让大模型“瘦身“而不失智慧的魔术

引言&#xff1a;当AI模型需要"减肥" 在人工智能领域&#xff0c;一个有趣的悖论正在上演&#xff1a;大模型的参数规模每年以10倍速度增长&#xff0c;而移动设备的算力却始终受限。GPT-4的1750亿参数需要价值500万美元的GPU集群运行&#xff0c;但现实中的智能设备…

k8s中service概述(二)NodePort

NodePort 是 Kubernetes 中一种用于对外暴露服务的 Service 类型。它通过在集群的每个节点上开放一个静态端口&#xff08;NodePort&#xff09;&#xff0c;使得外部用户可以通过节点的 IP 地址和该端口访问集群内部的服务。以下是关于 NodePort Service 的详细说明&#xff1…

[c语言日寄]基于C语言的命令行通讯录管理系统

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…

Linux与HTTP中的Cookie和Session

HTTP中的Cookie和Session 本篇介绍 前面几篇已经基本介绍了HTTP协议的大部分内容&#xff0c;但是前面提到了一点「HTTP是无连接、无状态的协议」&#xff0c;那么到底有什么无连接以及什么是无状态。基于这两个问题&#xff0c;随后解释什么是Cookie和Session&#xff0c;以…

基于 ABAP RESTful 应用程序编程模型开发 OData V4 服务

一、概念 以个人图书管理为例&#xff0c;创建一个ABAP RESTful 应用程序编程模型项目。最终要实现的效果&#xff1a; 用于管理书籍的程序。读取、修改和删除书籍。 二、Data Model-数据模型 2.1 创建项目基础数据库表 首先&#xff0c;创建一个图书相关的表&#xff0c;点…

LeetCode 解题思路 23(Hot 100)

解题思路&#xff1a; BFS 初始化&#xff1a; 需要一个返回结果的列表 List 和一个队列 Queue&#xff0c;将根节点加入队列。循环处理每一层&#xff1a; 记录当前层的节点数。依次处理当前层的所有节点&#xff0c;将子节点加入队列。处理完当前层后&#xff0c;将最后一个…