刷题总结1.17 下午

第五题的平面图,偶图不理解

第三题为什么使用克鲁斯卡尔算法?

旅行商问题(Traveling Salesman Problem,TSP)是一个著名的组合优化问题,描述的是一个旅行商要在给定的一系列城市之间找到最短的路径,使得每个城市只访问一次,并最终回到起点城市。

旅行商变种问题是对旅行商问题的一些扩展或变化,通常包括以下几个方面:

1. 多旅行商问题(Multiple Traveling Salesman Problem,mTSP):在这个问题中,有多个旅行商需要分别访问一系列城市,每个旅行商只能访问一次每个城市,并且所有旅行商最终都需要回到起点。

2. 权重旅行商问题(Weighted Traveling Salesman Problem,wTSP):在这个问题中,每个城市之间的路径都有一个权重或成本,旅行商需要找到一条最短路径,使得路径上的权重之和最小。

3. 限制旅行商问题(Constrained Traveling Salesman Problem,CTSP):在这个问题中,除了要找到最短路径外,还要满足一些其他的限制条件。例如,某些城市之间可能有一些限制,旅行商需要遵守这些限制。

4. 动态旅行商问题(Dynamic Traveling Salesman Problem,DTSP):在这个问题中,城市之间的路径或权重可能会随着时间的推移而发生变化。旅行商需要在每次访问城市时重新计算最短路径。

这些是旅行商问题的一些常见的变种,每个变种都有不同的解决方法和算法。对于复杂的问题,通常需要使用启发式算法或元启发式算法来求解最优解。

以下是旅行商问题的一些变种问题:
1. 对称旅行商问题:所有城市之间的距离都是对称的,即从城市A到城市B的距离等于从城市B到城市A的距离。
2. 非对称旅行商问题:城市之间的距离是非对称的,即从城市A到城市B的距离可以不等于从城市B到城市A的距离。
3. 多旅行商问题:旅行商需要经过的城市被分成多个集合,每个集合由不同的旅行商访问。
4. 限制条件下的旅行商问题:添加了一些额外的限制,例如旅行商需要在特定的时间内完成旅行,或者需要遵循特定的路线规则等。

在同等顾客数量下,可行解数量最多的旅行商问题是多旅行商问题因为多旅行商问题允许将城市划分为多个集合,将旅行任务分配给多个旅行商,从而增加了可行解的数量。其他变种问题都是将所有城市都由同一个旅行商访问,因此可行解的数量较少。

迪杰斯特拉算法和弗洛伊德算法都是用于求解最短路径的算法,但是它们的具体过程稍有不同。

迪杰斯特拉算法:
1. 初始化:将起点标记为已访问,距离值设为0,将其它顶点的距离值设为无穷大。
2. 遍历起点的邻接顶点,更新起点到邻接顶点的距离值。
3. 选择当前距离值最小的顶点作为下一个访问顶点,并标记为已访问。
4. 以新访问的顶点为中转点,更新和它相邻的未访问顶点的距离值,如果通过中转点到达未访问顶点的距离值更短,则更新距离值。
5. 重复第3步和第4步,直到所有顶点都被访问。

弗洛伊德算法:
1. 初始化:将图中的边权值赋给对应的距离矩阵。
2. 对距离矩阵进行n次迭代,其中n是图中顶点的个数。
3. 在每次迭代中,检查通过第k个顶点的路径是否存在更短的路径,如果存在则更新距离矩阵中的距离值。
4. 迭代完成后,距离矩阵中存储的就是任意两点之间的最短路径。

总结:迪杰斯特拉算法是以单源最短路径为目标,每次选择距离起点最近的顶点进行更新,直到所有顶点都被访问。而弗洛伊德算法是以所有点对之间的最短路径为目标,通过多次迭代更新距离矩阵,直到得到最终的最短路径结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/409762.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL下对[库]的操作

目录 创建数据库 创建一个数据库案例: 字符集和校验规则: 默认字符集: 默认校验规则: 查看数据库支持的字符集: 查看数据库支持的字符集校验规则: 校验规则对数据库的影响: 操作数据…

HCIA——10实验:跨路由转发。静态路由、负载均衡、缺省路由、手工汇总、环回接口。空接口与路由黑洞、浮动静态。

学习目标: 跨路由转发、负载均衡、环回接口、手工汇总、缺省路由、空接口与路由黑洞、浮动静态 学习内容: 跨路由转发静态路由、负载均衡、缺省路由、手工汇总。环回接口空接口与路由黑洞、浮动静态 目录 学习目标: 学习内容&#xff1a…

基于Springboot的摄影分享网站系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的摄影分享网站系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

linux基础学习(2):磁盘管理、分区、格式化

1.一些基本概念 一块磁盘从加入到可使用,需要经过3个阶段:分区-格式化-挂载。 1.1分区方式 linux有2种分区方式: (1)mbr:最大支持2.1T硬盘,最多支持4个分区。这4个分区可以全部为主分区&…

【java八股文】之计算机网络系列篇

1、TCP/IP和UDP模型 TCP/IP分层(4层):应用层,传输层,网络层,数据链路层 网络的七层架构 (7层):应用层,表示层,会话层,传输层&#xff…

C++核心编程——文件操作

本专栏记录C学习过程包括C基础以及数据结构和算法,其中第一部分计划时间一个月,主要跟着黑马视频教程,学习路线如下,不定时更新,欢迎关注。 当前章节处于: ---------第1阶段-C基础入门 ---------第2阶段实战…

2个堆叠的条形图+4个折线图,echarts配置

1、代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>第一个 ECharts 实例</title><!-- 引入 echarts.js --><script src"https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js">&l…

C语言天花板——指针(经典题目)

指针我们已经学习的差不多了&#xff0c;今天我来给大家分享几个经典的题目&#xff0c;来让我们相互学习&#x1f3ce;️&#x1f3ce;️&#x1f3ce;️ int main() {int a[4] { 1, 2, 3, 4 };int* ptr1 (int*)(&a 1);int* ptr2 (int*)((int)a 1);printf("%x,%…

linux 内核ARM64启动

基于linux5.15内核翻译理解 Essentially, the boot loader should provide (as a minimum) the following: Setup and initialise the RAMSetup the device treeDecompress the kernel imageCall the kernel image1、安装与初始化物理内存 (必须的) boot loader需要初始化物理…

【Linux实用篇】Linux常用命令(2)

目录 1.3 拷贝移动命令 1.3.1 cp 1.3.2 mv 1.4 打包压缩命令 1.5 文本编辑命令 1.5.1 vi&vim介绍 1.5.2 vim安装 1.5.3 vim使用 1.6 查找命令 1.6.1 find 1.6.2 grep 1.3 拷贝移动命令 1.3.1 cp 作用: 用于复制文件或目录 语法: cp [-r] source dest ​ 说明: …

【Python数据可视化】matplotlib之设置子图:绘制子图、子图共享x轴坐标、调整子图间距、设置图片大小

文章传送门 Python 数据可视化matplotlib之绘制常用图形&#xff1a;折线图、柱状图&#xff08;条形图&#xff09;、饼图和直方图matplotlib之设置坐标&#xff1a;添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值matplotlib之增加图形内容&#x…

vscode安装和基本设置

目录 vscode安装和基本设置1.HTML标签2.标签属性3.HTML基本结构4.安装vscode5.安装Live Server插件6.HTML注释7.文档说明8.HTML字符编码9.HTML设置语言10.HTML标准结构 vscode安装和基本设置 1.HTML标签 标签 又称 元素&#xff0c;是HTML的基本组成单位。标签分为&#xff1…