最短路径

Floyd算法 (弗洛伊德)

允我心安 提交于 2019-11-30 12:39:26
定义 弗洛伊德最短距离算法(Floyd Shortest Path Algorithm)又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。 原理 我们的目标是寻找从点 i 到点 j 的最短路径。 从任意节点 i 到任意节点 j 的最短路径不外乎2种可能。 ①直接从 i 到 j。 ②从 i 经过若干个节点 k 到 j。 令 Dis(i,j) 为节点 i 到节点 j 的最短路径的距离。 对于每一个节点k,我们检查 Dis(i,k) + Dis(k,j) < Dis(i,j) 是否成立,如果成立,则Dis(i,j) = Dis(i,k) + Dis(k,j)。 所以,当我们遍历完所有节点 k,Dis(i,j)中记录的便是 i 到 j 的最短路径的距离。 ❗弗洛伊德不能处理负权图。 若求 1->3 的最短路,此情况则会陷入1->2->3->1->2->3->1->2->3......死循环。 实现 #include<bits/stdc++.h> using namespace std; const int maxn=1005; const int inf=0x3f3f3f3f; int n,m,e[maxn][maxn]; void floyd(); int main() { int i,u,v,w; fill(e[0],e[0]+maxn*maxn,inf

北京地铁出行路线规划

淺唱寂寞╮ 提交于 2019-11-30 07:42:28
一、任务 1.实现一个帮助进行地铁出行路线规划的命令行程序。下图是北京地铁线路图 二、需求分析 1.设计线路和站点的存储格式并能够显示地铁线路和站点 2.查询指定站点和线路 3.查询两个站点的最短路径并给出换乘信息。 三、设计思路 1.将图中的地铁线路信息等用一个文本文件的形式保存起来,应用程序可以通过读取这个文件。 2.用Dijkstras算法计算两个站点的最短路径。 3.输出最短路径上的站点和线路信息。 4.设计界面。 四、实现计划 Personal Software Process Stages Time(hour) · 需求分析 (包括学习新技术) 3 · 生成设计文档 2 · 代码规范 (为目前的开发制定合适的规范) 3 · 具体设计 2 · 具体编码 5 · 代码复审 2 · 测试(自我测试,修改代码,提交修改) 2 五、总结 这个任务的核心是两个站点的最短路径,要考虑换乘并优化最短路径的算法。 对于数据的存储要选择合理的方式。同时界面操作要简洁。 来源: https://www.cnblogs.com/31701043luoyu/p/11571782.html

地铁出行路线规划

我的梦境 提交于 2019-11-30 05:54:05
地铁出行路线规划 需求分析 1.需将地铁线路信息存于txt文件中 2.设计读取信息,接受用户输入,输出结果函数 3.设计算法计算用户输入的起点与终点之间的最短路径 4.查找地铁具体站点或线路信息 5.程序分析优化 实现思路 1.将所有站点信息按照下表格式保存 站点名 线路号 站点序号 换乘线路号 天通苑北 5 1 0 立水桥 5 4 13 大屯路东 5 7 15 惠新西街南口 5 9 10 2.设计dijkstras算法计算最短路径,设计一个查询的函数输出用户查询的站点信息 3.输出最短路径上的站点名及线路号或是具体站点,线路的信息 4.设计ui 开发计划 PSP 2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 2h Development 开发 · Analysis · 需求分析 (包括学习新技术) 2h · Design Spec · 生成设计文档 1h · Design Review · 设计复审 (和同事审核设计文档) 1h · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 1h · Design · 具体设计 2h · Coding · 具体编码 2h · Code Review · 代码复审 2h · Test · 测试

个人项目——地铁最短路径简要分析

老子叫甜甜 提交于 2019-11-30 05:31:34
github 个人博客 一、项目计划: 实现一个帮助进行地铁出行路线规划的命令行程序。 二、项目需求: 1.该程序能够准确地读出.txt文件 中的数 据,文件格式简洁易懂、可灵活扩展 2.在某号线路上,能够查询各个站点的信息,输出该号线路上所有站点信息 3.在出发站与目的站之间输出一个最短路径 4.用PSP记录在程序的各个模块上实际花费的时间。 PSP表如下: PSP 2.1 Personal Software Process Stages Time Planning 计划 1d · Estimate · 估计这个任务需要多少时间 1d Development 开发 14d · Analysis · 需求分析 (包括学习新技术) 3h · Design Spec · 生成设计文档 1h · Design Review · 设计复审 (和同事审核设计文档) 1h · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 3h · Design · 具体设计 7d · Coding · 具体编码 4d · Code Review · 代码复审 1d · Test · 测试(自我测试,修改代码,提交修改) 1d Reporting 报告 3h · Test Report · 测试报告 1h · Size Measurement · 计算工作量 1h ·

天津地铁线路最短路径计算项目规划

ぃ、小莉子 提交于 2019-11-30 04:29:21
天津地铁线路路径查询项目规划 一、项目介绍 实现一个帮助进行地铁出行路线规划的命令行程序。 二、项目完成预估表 PSP 2.1 Personal Software Process Stages Time Time Planning 计划 · Estimate · 估计这个任务需要多少时间 1day Development 开发 · Analysis · 需求分析 (包括学习新技术) 3day · Design Spec · 生成设计文档 1day · Design Review · 设计复审 (和同事审核设计文档) 1day · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 1day · Design · 具体设计 1day · Coding · 具体编码 2day · Code Review · 代码复审 1day · Test · 测试(自我测试,修改代码,提交修改) 1day Reporting 报告 · Test Report · 测试报告 1day · Size Measurement · 计算工作量 1day · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 1day All Time 合计 三、项目需求分析 需求1:实现一个支持显示地铁线路与计算换乘的程序

地铁出行路线规划设计

左心房为你撑大大i 提交于 2019-11-30 04:20:32
地铁出行路线规划设计 1.任务 实现一个帮助进行地铁出行路线规划的命令行程序。该程序具有线路查询、最短线路查询等功能。 2.具体实现 1.语言: Java 2.数据结构: 图 3.算法: Dijkstra最短路径算法 4.前端界面: Swing 5.数据格式 : //subway.txt 1 站点1 站点2 站点3 ... 2 站点1 站点2 站点3 ... 3.站点1 站点2 站点3 ... 6.具体思路 创建地铁站点类、地铁线路类,将数据从txt文件中读入程序中 将各个站点抽象为无向图的一个节点,线路之间用路径表示 输出线路时只需输出地铁线路类的某个实例 利用Dijkstra算法进行最短路径查找 3.需求分析 1.利用 -map 参数来获得对应的自定义地铁文件(命名为 subway.txt) java subway -map subway.txt 2.支持一个新的命令行参数 -a 进行地铁线路查询,并通过命令参数 -o 进行输出 java subway -a 1号线 -map subway.txt -o station.txt 3.利用参数 -b 查询两个站点之间最短(经过的站点数最少)路线,并输出 subway.exe -b 洪湖里 复兴路 -map subway.txt -o routine.txt 4.项目计划表 PSP 2.1 Personal Software

地铁线路项目设计与分析

一笑奈何 提交于 2019-11-30 04:09:21
地铁线路项目设计与分析 一、项目介绍 实现一个帮助进行地铁出行路线规划的命令行程序 二、项目计划表 PSP2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 2h Development 开发 · Analysis · 需求分析 (包括学习新技术) 6h · Design Spec · 生成设计文档 3h · Design Review · 设计复审 (和同事审核设计文档) 3h · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 3h · Design · 具体设计 3h · Coding · 具体编码 6h · Code Review · 代码复审 2h · Test · 测试(自我测试,修改代码,提交修改) 5h Reporting 报告 · Test Report · 测试报告 2h · Size Measurement · 计算工作量 2h · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 3h 合计 40h 三、项目需求分析 1、实现地铁线路信息的获取 设计一个存储线路信息的文件,例如subway.txt 支持采用参数 -map 作为标志,来获取对应的自定义地铁文件

地铁线路项目需求简要分析

若如初见. 提交于 2019-11-30 03:35:21
需求:   1. 实现一个命令行程序   2. 参数:     -map:来获得对应的自定义地铁文件(命名为 subway.txt),从而得到地铁线路图的信息 java subway -map subway.txt     -a:指定用户希望查询的地铁线路     -o:指定输出的文件 java subway -a 1号线 -map subway.txt -o station.txt     -b:求取最短路径,该参数加两个地铁站点名称分别作为出发与目的 java subway -b 洪湖里 复兴路 -map subway.txt -o routine.txt       输出文件格式: 3 洪湖里 西站 6号线 复兴路   3. 测试:写出至少10个测试用例确保你的程序能够正确处理各种情况 初步思路:   数据文件设计(subway.txt):   将地图以文本格式输入,格式为(地铁线路号 站点名称 可换成地铁线路号) 1 刘园 0 1 西横堤 0 1 果酒厂 0 1 本溪路 0 1 勤俭道 0 1 洪湖里 0 1 西站 6 ...... 2 天津站 39 (特殊情况,三线交叉) ......   读取txt文件后,用Json格式存储 { "1号线": [ { "siteName":"刘园" , "transfer":"0" }, { "siteName":"西横堤" ,

地铁线路规划

喜夏-厌秋 提交于 2019-11-30 03:18:14
一、预期计划 1、选择合适的文件储存地铁路线的信息。 2、设计关于地铁信息的IO程序。 3、用户可以查询地铁信息。 4、可以推荐输入站点之间的最短路径。 5、代码复审已经性能测试。 二、需求分析 1、将地铁的具体信息储存在文件中,包括站点名称、线路名称等,要确定文件的格式,保证文件能够方便读取。 2、用户输入指定线路或者起始站和终点站,系统要给出相应的推荐线路,列出途径的站点。 3、提供查询功能,输入线路名称后系统输出这条线路上的全部站点。 三、设计思路 1、最关键的算法是查找最短路径,即在图中找出两个点的最短路径,将地铁线路图设置为无向图,站点之间距离相同,统计各条路径经过的站点数量来判断最短路径。 当然也可以用广度优先算法。出现异常情况,如没有起始站或终点站,没有这条路线之类情况时要返回错误提示。 2、查找线路通过返回存储文件中的相同路线名上的所有站点实现,建立表格的格式很重要。 3、本次大作业我鉴于我C的能力不太好,我选择用java来编写。 来源: https://www.cnblogs.com/standby0630/p/11550126.html

python算法数据结构

余生长醉 提交于 2019-11-29 23:50:29
下载链接: https://www.yinxiangit.com/710.html python算法和数据结构的深入学习 第一章:当我们在讨论算法的时候,我们在讨论什么? 1-1 我们究竟为什么要学习算法 1-2 课程介绍 第二章:排序基础 2-1 选择排序法 2-2 使用模板(泛型)编写算法 2-3 随机生成算法测试用例 2-4 测试算法的性能 2-5 插入排序法 2-6 插入排序法的改进 2-7 更多关于O(n*2)排序算法的思考 第三章:高级排序问题 3-1 归并排序法 3-2 归并排序法的实现 3-3 归并排序法的优化 3-4 自底向上的归并排序算法 3-5 快速排序法 3-6 随机化快速排序法 3-7 双路快速排序法 3-8 三路快速排序法 3-9 归并排序和快速排序的衍生问题 第四章:堆和堆排序 4-1 为什么使用堆 4-2 堆的基本存储 4-3 Shift Up 4-4 Shift Down 4-5 基础堆排序和Heapify 4-6 优化的堆排序 4-7 排序算法总结 4-8 索引堆 4-9 索引堆的优化 4-10 和堆相关的其他问题 第五章:二分搜索树 5-1 二分查找法 5-2 二分搜索树基础 5-3 二分搜索树的节点插入 5-4 二分搜索书的查找 5-5 二分搜索树的遍历(深度优先遍历) 5-6 层序遍历(广度优先遍历) 5-7 删除最大值,最小值 5-8