离散数学实验三 · 最短路径计算

article/2025/8/29 11:01:08

一、实验目的

通过本实验的学习理解Dijkstra算法,并且编码实现最短路径问题。

二、实验内容

Dijkstra算法的理解;

算法概念:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,之后每求得一条最短路径 , 就将加入到集合S中,直到全部顶点都加入到S中,算法结束。),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点v到S中各顶点的最短路径长度不大于从源点v到U中任何顶点的最短路径长度。此外,每个顶点对应一个距离,S中的顶点的距离就是从v到此顶点的最短路径长度,U中的顶点的距离,是从v到此顶点只包括S中的顶点为中间顶点的当前最短路径长度。

三、Python代码部分

import numpy as npMAX = float('inf')#输入邻接矩阵
node=eval(input("请输入图像的节点数量:"))
matrix = []
for i in range(0, node):temp = []temp=input("请输入图像邻接矩阵的第"+str(i+1)+"行(若节点之间没有连接请输入“inf”):").split()matrix.append(temp)#将矩阵的属性转换为整数
matrix_ = np.array(matrix)
matrix_ = matrix_.astype(np.float)def Dijkstra(matrix, start_node):matrix_length = len(matrix_)  # 矩阵一维数组的长度access_node = [False] * matrix_length  # 访问过的节点数组Excellent = [MAX] * matrix_length  # 最短路径距离数组Excellent[start_node] = 0  # 将起始节点的最短路径修改成0# 将访问节点中未访问的个数作为循环值while access_node.count(False):min_value = MAX #节点的暂时最小路径min_value_index = -1# 获取未循环的最小值下标for index in range(matrix_length):if not access_node[index] and Excellent[index] < min_value: #如果没有访问过这个节点并且这个节点的最佳路径小于暂时最小路径min_value = Excellent[index]    #录入目前路径min_value_index = index# 将访问节点数组对应的值修改成Trueaccess_node[min_value_index] = True# 更新最短路径距离数组。for index in range(matrix_length):Excellent[index] = min(Excellent[index], (Excellent[min_value_index] + matrix_[min_value_index][index]))return Excellentret = Dijkstra(matrix, 0)
ret_ = np.array(ret,dtype=np.int)
for i in range(len(ret)):print("从节点0到节点",i,"的最佳路径距离为:",ret_[i])

四、运行结果演示


http://chatgpt.dhexx.cn/article/2oLJ4E2I.shtml

相关文章

离散数学 习题篇 —— 等价关系的计数

题目&#xff1a; 集合A(1≤∣A∣≤100)上不同的等价关系一共多少个&#xff1f; 输入格式: 一行&#xff0c;一个整数n&#xff08;1≤n≤100&#xff09;&#xff0c;表示集合A的元素个数。 输出格式: 集合A上不同等价关系的个数模1097&#xff0c;即输出其个数模1000000007。…

《离散数学》期末练习题

《离散数学》期末练习题 一、填空题 1、若p&#xff0c;q为二命题&#xff0c;p→q真值为0 当且仅当 。 2、A{1,{2,3}}&#xff0c;则幂集P(A) 。 3、对于公式x(P(x)∨Q(x))&#xff0c;其中P(x)&#xff1a;x1&#xff0c;Q(x)&#xff1a;x2&#xff0c;当个体域为{1,2}时…

离散数学——命题逻辑

命题逻辑 命题命题的表示 命题联结词否定词&#xff1a;┐(&#xff5e;&#xff0c;Negation)合取词&#xff1a;∧(Conjunction)析取词&#xff1a;∨(Disjunction)条件词&#xff1a;→(条件,Conditional)双条件词&#xff1a;↔(等值&#xff0c;Biconditional)联结词的注意…

离散数学 (II) 习题 9

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1、 i 是虚数单位&#xff0c;即 i^2^ −1。考虑如下的 4 个二阶方阵&#xff1a;图一G {A, −A, B, −B, C, −C, D, −D} 是由矩阵组成的集合。(1) 请验证 G 对…

-离散数学-期末练习题解析

一、 选择题二. 填空题三、 计算题四、 简答题五、 证明题六、应用题 一、 选择题 下列句子中&#xff0c;&#xff08; &#xff09;是命题。 A . 2是常数 B. 这朵花多好看啊&#xff01; C. 请把们关上&#xff01; D. 下午有会吗&#xff1f; A 命题是能判断真假的陈述句 B…

离散考试题计算机,离散数学试题及答案_离散数学试题库_离散数学试卷及答案...

离散数学试题及答案 一、填空 20% (每小题2分) 1、 P:你努力,Q:你失败。“除非你努力,否则你将失败”的翻译为 “虽然你努力了,但还是失败了”的翻译为 。 2、论域D={1,2},指定谓词P 则公式?x?yP(y,x)真值为。 2、 设S={a1 ,a2 ,?,a8},Bi是S的子集,则由B31所表达…

离散数学期末复习知识总结

为了方便考试复习&#xff0c;下面的内容摘自离散数学期末复习—学习笔记_Half_up-298415的博客-CSDN博客 1.命题逻辑的基本概念 1.1 命题与连接词 ~考察命题的概念 。判断是不是命题 命题&#xff1a;&#xff1a;命题是陈述句&#xff0c;有唯一的解&#xff08;就是有解并…

离散数学 习题篇 —— 谓词公式练习

集合A,B由输入的一系列整数构成&#xff0c;对表达式 ∀ x ( x ∈ A → ∃ y ∃ z ( y ∈ B ∧ z ∈ B ∧ ( y z x ) ) ) ∀x(x∈A→∃y∃z(y∈B∧z∈B∧(yzx))) ∀x(x∈A→∃y∃z(y∈B∧z∈B∧(yzx))) 求值并输出结果。 输入格式: 4行。 第一行是一个整数N&#xff08;1≤…

离散数学期末习题

前言&#xff1a; 本文适用于应对HUEL离散数学期末考试&#xff0c;重点整理了HUEL离散数学期末考试范围内的题型&#xff0c;既可以应对HUEL离散数学期末考试&#xff0c;亦可以作为数据结构与算法的预备知识。 如何联系我&#xff1f;wei.haoranoutlook.com 目录 例题【数…

离散数学习题

离散数学习题 图论命题逻辑谓词逻辑集合与关系函数代数系统 图论 1. C 解析&#xff1a;根据邻接矩阵的定义进行表示 2.下面是前缀编码的是&#xff08;D &#xff09; A、010,110,01,101 B、111,000,110,11 C、10, 000, 101, 01 D、00,10,110,011 3. A 4. C 5. B 6. C 7.对于…

离散数学(本)复习题

离散数学(本) 试题一、单项选择题(每小题3分&#xff0c;本题共15分) 1&#xff0e;若集合A&#xff1d;{a&#xff0c;b}&#xff0c;B&#xff1d; {a&#xff0c;b&#xff0c;{a&#xff0c;b}}&#xff0c;则( )&#xff0e; 2&#xff0e;集合A&#xff1d;{1&#xf…

《离散数学》速成-练习题答案(含题目)

《离散数学》速成 https://blog.csdn.net/aiqq136/article/details/113445181 课时1 课时2 课时3 课时4 课时5 课时6 课时7 课时8 课时9 课时10 课时11 课时12 课时13 课时14

Xftp6--远程上传下载文件的好帮手

前言 Xftp6用于向Linux传输文件 具体操作步骤为&#xff1a; 1、下载安装Xftp6并安装 2、获取LinuxIP地址&#xff0c;Linux环境下终端输入&#xff1a;ifconfig&#xff0c;获取IP地址 3、打开Xftp&#xff0c;输入ip地址&#xff0c;&#xff0c;协议为SFTP,端口号为22&…

Xshell6 + Xftp6 绿色破解

Xshell6和Xftp6破解版 百度云链接 &#xff1a;https://pan.baidu.com/s/110LNltAF-tbluuZY6McFBw 提取码 &#xff1a; irpg 解压完如下 xshell 第一步 第二步 搞定 就可以打开不止于4个窗口 Xftp6一样操作就OK&#xff01;无需别的操作 简单 原文&#xff1a;https://blog…

使用Xftp6上传文件显示状态错误

问题 在使用Xftp6上传文件到VMware中的CentOS6.5中时一直失败&#xff1a; 网上说法是目录权限的问题 解决 通过chmod命令修改目录权限。比如我现在需要将jdk安装包上传到CentOS下/usr/local/java目录下&#xff0c;现在就需要将/usr/local/java目录权限进行修改 # 进入上一…

下载安装免费版Xshell6及Xftp6

前言 在操作Linux系统时&#xff0c;Xshell和Xftp6是个人特别喜欢的工具&#xff0c;但发现公司很多同事都不会&#xff0c;或者软件需要购买才能使用&#xff0c;其实有提供个人免费版&#xff0c;虽然有所限制&#xff0c;但完全够用&#xff0c;所以分享下 标题 进入官网&…

软件分享系列之【xftp6免费中文版下载安装】并持续分享中...

目录 一、Xftp6 简介二、Xftp6 下载三、Xftp6 安装教程 一、Xftp6 简介 Xftp是一个功能强大的SFTP、FTP 文件传输软件。使用了 Xftp 以后&#xff0c;MS Windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。Xftp 能同时适应初级用户和高级用户的需要。它采用了标…

Xftp6+Xshell6+XmanagerPowerSuite安装教程

Xftp6Xshell6安装 1.下载2.安装 1.下载 建议使用MobaXterm工具 https://blog.csdn.net/WeiHao0240/article/details/104497718 2.安装

电脑总是弹出Xftp 6无法访问你试图使用的功能所在的网络位置

最近电脑总是跳出这样的消息&#xff0c;这是由于我们的Xftp没有卸载干净导致的。 看了其他CSDN的文章&#xff0c;发现没什么用&#xff0c;因为控制面板里面压根看不到XFTP 解决办法 机缘巧合之下发现一个软件可以完美解决这个问题 软件&#xff1a;windows installer clea…

xshell6和xftp6安装后无法打开提示升级到最新版本

一、Xshell 6 提示 “要继续使用此程序,您必须应用最新的更新或使用新版本” 解决办法&#xff1a; 使用二进制编辑器 UltraEdit 修改nslicense.dll文件 文件位置&#xff1a;xshell 安装根目录 具体步骤 步骤1&#xff1a;下载UltraEdit编辑器 步骤2&#xff1a;使用Ultr…