离散数学大作业 

——利用Floyd算法计算两城市间最优路径及距离 

代码在最下面

一.提出问题

在交通网络非常发达、交通工具和交通方式不断更新的今天,人们在出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需要的时间等问题也感兴趣。对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。图中的顶点表示城市,边表示城市之间的交通关系。这个交通系统可以回答出行旅客提出的各种路径选择问题。例如,问题之一:“一位旅客要从 A 城到 B 城,他希望选择一条路径最短”。设计一个程序,实现对两个城市最短路径的查询。

二.模型化

精力有限,顾及不到所有城市在地图上选取了18个城市作为图的结点,

代码实现过程用汉字比较繁琐,所以在此将18个城市标号0-17进行路径问题的计算

为了尽量体现Floyd算法的计算过程,在次假定只有结点周围的且不超过1000km的城市有有向边,边的长度设为百度地图所搜索到的最短路程,剩余的城市间距离设置为最大值5000km,即不可直接到达。

例如合肥的有向边链接了郑州、南京、武汉、南昌,虽然合肥离上海、杭州也很近,但在此为了突出Floyd算法,不赋予该两座城市之间的边,而是借助南京这个结点到达。

(人手搜索,按序号找,手敲的,真的累死我了啊啊啊啊啊啊啊)

之后通过Floyd算法计算各个城市间最短距离,并且记录路径,最后格式化输出。

三.  编程实现

1、城市代号与名字匹配结构体构建

结构体Vnode,用于存储城市名字字符串,之后再通过城市代号,达到输出汉字的效果,使呈现更明确

2、静态变量

(啃了之前写noj数据结构实验11题的老本)

int lu[maxnum][maxnum][maxnum]:第一个值设为a,第二个值设为b,第三个值设为c,a,b用于定位某个节点到某个节点,c用于记录路线,即,数组用于记录某个节点到各个节点最短路径的途经节点。
wei[maxnum][maxnum]:用于记录lu[maxnum][maxnum][maxnum]数组的路径最前端此时位于第几个位置,便于更新途径节点

3、主函数模块

函数调用关系如图

4、城市名初始化函数模块

(没选到的城市无意冒犯,全部省会弄下来我会死的

Floyd算法实现实际问题——18个城市间最优路线规划相关推荐

  1. Floyd算法应用-医院选址问题

    1)问题描述 n个村庄之间的交通图可以用有向网图来表示,图中边<vi, vj>上的权值表示从村庄i到村庄j的道路长度.现在要从这n个村庄中选择一个村庄新建一所医院,问这所医院应建在哪个村庄 ...

  2. 最短路径之Floyd算法

    Floyd-Warshall算法,简称Floyd算法,用于求解任意两点间的最短距离,时间复杂度为O(n^3). 输出权值大小及路径: #include <iostream> #includ ...

  3. 基础算法题——城市间最短路程(Floyd算法)

    Floyd算法 通过一个图的权值矩阵求出它的每两点间的最短路径矩阵. 其状态转移方程如下:map[i,j]:=min{map[i,k]+map[k,j],map[i,j]} 问题描述 现已知有N(N& ...

  4. 7-1 城市间紧急救援 (25 分)(最短路径:斯特拉算法)

    7-1 城市间紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道 ...

  5. 基于无向图的城市间快递派送算法

    1.题目分析 1.1题目简介   假设你为快递公司设计快递投递路线优化程序.(1)每个市有个中转分发点,有些城市之间有直通路线,有些城市之间没有直通路线:(2)城市与城市之间的运费计算公式为:距离*1 ...

  6. L2-001 城市间紧急救援 (25分)(迪杰斯特拉算法)

    L2-001 城市间紧急救援 (25分)(迪杰斯特拉算法) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一 ...

  7. 图的所有顶点间的最短路径(Floyd算法)

    问题描述 对每一对顶点vi ≠ vj,求出vi与vj之间的最短路径和最短路径长度 Floyd算法 Floyd(Floyd-Warshall)算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中 ...

  8. 怎么使用计算机算法,浅谈如何在用计算机来更好的实现Floyd算法

    [摘 要]本文主要介绍了数学建模中的一个常用的方法(Floyd算法).我们首先介绍了邻接矩阵的定义.其次,阐述了Floyd算法的具体内容以及Floyd算法的改进.最后,给出了Floyd算法的广泛应用, ...

  9. 弗洛伊德算法c语言path,Floyd算法(弗洛伊德算法)

    算法描述: Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法.从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按 ...

  10. 最短路径的求解方法(Dijkstra、Floyd算法)

    用带权的有向图表示一个交通运输网,图中: 顶点--表示城市 边--表示城市间的交通联系 权--表示此线路的长度或沿此线路运输所花的时间或费用等 问题:从某顶点出发,沿图的边到达另一顶点所经过的路径中的 ...

最新文章

  1. ipad编程软件python-iPad可用的软件编程软件有吗?
  2. matlab的讲稿ppt,Matlab初步(讲稿200508)之四
  3. 数据结构与算法之RandomPool结构和岛问题
  4. 21行代码AC_【蓝桥杯】承压计算(解题通法+技巧)
  5. Linux下多显卡选择绘制实验记录
  6. 【SpringBoot 2】(一)基础知识了解学习
  7. extjs 中动态给gridpanel 复选框赋值
  8. JAVA获取安卓系统下usb_Android 获取 usb 权限的两种方法
  9. 透视Datatable
  10. 4.3.8 使用模板
  11. 0909操作系统初感
  12. inside MPQ
  13. Linux打补丁遇到Hunk# succeeded at提示
  14. 【标准算例数据源】作业车间、流水车间、柔性作业车间、其它
  15. linux 保存bmp 图片
  16. github 创建工程
  17. Android gradient 三色渐变背景 Shap
  18. 如何判断是否受到DDOS攻击?被攻击该如何解决?
  19. LWIP (chapter 2.01) pbuf数据包缓存
  20. 中标麒麟ky10 server版rpm安装redis6.2.6

热门文章

  1. 产品设计体会(五五)
  2. 阿里云消息服务(MNS)简单介绍
  3. LWN:5.18合并窗口第一部分!
  4. html彩色条,html5 canvas彩色流动线条动画特效
  5. php shopex,用PHP为SHOPEX增加日志功能代码
  6. TeeChart Pro ActiveX教程(十九):TeeChart工具集(六)
  7. ASIC设计流程相关
  8. B bearBaby loves sleeping
  9. Excel如何把同类数据合并到同一单元格
  10. C语言程序出现malloc(): corrupted top size异常中止