图论——最短路径

news/2024/7/15 18:05:00 标签: 图论, 算法

目录

  • Dijkstra 算法
  • Floyd-Warshall's algorithm
  • 用动态规划求解问题
  • 项目计划

Dijkstra 算法

Dijkstra’s algorithm(迪杰斯特拉算法)是一种用于解决图中单源最短路径问题的贪婪算法。该算法由荷兰计算机科学家Edsger Dijkstra于1956年提出。它主要用于计算从一个起始顶点到图中所有其他顶点的最短路径。

算法步骤如下:

初始化: 创建一个集合S,用于存储已找到最短路径的顶点,以及一个数组dist,用于存储从起始顶点到各个顶点的最短路径长度。将起始顶点的距离设置为0,其他顶点的距离设置为无穷大。将所有顶点标记为未访问。

找到最短路径: 从未访问的顶点中选择距离起始顶点最近的顶点,将其标记为已访问,并更新与该顶点相邻的顶点的最短路径距离。更新的规则是如果通过当前选定的顶点可以得到更短的路径,就更新距离数组dist。

重复: 重复步骤2,直到所有顶点都被访问。在每次迭代中,都选择未访问的顶点中距离起始顶点最近的顶点。

最终结果: 一旦所有顶点都被访问,dist数组中存储的值就是从起始顶点到每个顶点的最短路径长度。

Dijkstra算法的关键优势是它可以在非负权重的有向图中


http://www.niftyadmin.cn/n/5357584.html

相关文章

01神经网络的理论及实现

感知机的缺点就是需要设置合适的权重,而权重的设置都是人工操作的。 1、从感知机到神经网络 重新画出感知机的模型,在图上加上偏置,由于偏置始终为1,所以颜色加深。 图1-1 感知机模型 引入新函数(激活函数)&#xff…

Java中缓存介绍

一、什么是缓存 1、Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问 2、凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache 二、缓存的分类 1、基于…

故障诊断 | 一文解决,SVM支持向量机的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,SVM支持向量机的故障诊断(Matlab) 支持向量机(Support Vector Machine,SVM)是一种常用的监督学习算法,用于分类和回归分析。SVM的主要目标是找到一个最优的超平面(或者在非线性情况下是一个最优的超曲面),将不同类别的样本分开…

Android studio 六大基本布局详解

1. 线性布局&#xff08;LinearLayout&#xff09; 线性布局是一种按照水平或垂直方向排列子视图的布局&#xff0c;可以通过设置权重来调整子视图的大小比例。 <LinearLayoutxmlns:android"http://schemas.android.com/apk/res/android"android:layout_width&q…

Python一些可能用的到的函数系列123 ATimer2-时间偏移

说明 之前确定了时间轴&#xff08;千年历&#xff09;&#xff0c;以及时间的转换方法。其中时间轴的数据将会存储在集群&#xff0c;以及通过RedisOrMongo保存部分常用的数据。 本次讨论时间偏移的度量问题。 内容 1 两种形式 我们提到时间时&#xff0c;通常会有两种方…

Redis简单阐述、安装配置及远程访问

目录 一、Redis简介 1.什么是Redis 2.特点 3.优势 4.数据库对比 5.应用场景 二、 安装与配置 1.下载 2.上传解压 3.安装gcc 4.编译 5.查看安装目录 6.后端启动 7.测试 8.系统服务配置 三、Redis远程访问 1.修改访问IP地址 2.设置登录密码 3.重启Redis服务 …

python 解决线性规划问题 (深入浅出数据分析-第三章 题目)

题目&#xff1a; 有一个商家下个月要卖两种产品 总原料是 50000 A 产品卖出一只 利润是 5元 B 产品卖出一只 利润是 4元 现在原料&#xff08;原料是 50000&#xff09;只能一次生产 500 A产品或者 400 B 产品 生产A产品需要消耗 100 原料 生产B产品需要消耗 125 原料 由于时间…

【力扣经典面试题】121. 买卖股票的最佳时机

题目描述 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最…