# Warshall-Floyd算法 **Repository Path**: ltsuei/floyd-algorithm ## Basic Information - **Project Name**: Warshall-Floyd算法 - **Description**: Python编写Warshall-Floyd算法 - **Primary Language**: Python - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-02 - **Last Updated**: 2022-03-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python ## README # Warshall-Floyd算法 #### 介绍 Python编写Warshall-Floyd算法 - 1.*版本为纯WF算法文件 - 2.*版本和3.*版本为UI界面版本 #### 重要的参与库 1. PyQt5.QtCore 2. PyQt5.QtWidgets #### 发行版本 ##### v1.0 :tw-2757: 提醒:未进行大量数据测试,并不知道准确度 :tw-2757: - 下载.exe文件,两种数据输入方式,双击运行即可 ### :tw-2b55: 1系列 #### 1.0版本 ##### 使用说明 1. 下载 "WF算法1.0.py文件 2. 运行文件,根据输入提示输入指定数据 3. 终端打印出数据 ##### 版本介绍 1. 完成基础算法,测试数据与结果相同 2. 输入格式: 第一项输入为点数 循环输入,第二三项为两个点的代表数字,第四个为两点之间的距离 输入0退出循环,完成数据输入 3. 结果为最终距离矩阵和路由矩阵 ##### 版本缺点 1. 输入方式繁杂 2. 无可视化界面,交互能力低 #### 1.1版本 ##### 更新说明 更新WF算法,纯函数形式,可以直接调用 #### 1.2版本 ##### 更新说明 1.0和1.1版本代码有误,测试第一个数据的时候未出错 更新WF算法代码,终端打印过程 #### 1.3版本 ##### 更新说明 新增中间过程矩阵的返回,存储在字符串process_matrix中 #### 1.4版本 ##### 更新说明 新增所有两点之间的最短距离和路由 ### :tw-274c:2系列 **_2系列版本作废_** #### 2.0版本 ##### 使用说明 1. 下载"uimain.py","uioutput.py","WF1.py"文件到同一目录下 2. 运行uimain.py文件 - 输入总点数和总路径 - 按下输入路径按钮 - 在表格里输入所有的路径,其中点Dot_one和点Dot_two为两个连线的点,路径长度path_length为两点的距离 - 按下输出矩阵得出初始化距离、路由矩阵以及最终距离、路由矩阵 3. 单独运行"WF1.py"文件能够单独进行WF算法,注释的为输入的方式,与1.0版本相同 distance_W和route_R为初始距离矩阵和路由矩阵,主函数里是一种例子进行演示 4. 分别单独运行"uimain.py","uioutput.py"文件,都可以显示出界面 ##### 版本介绍 1. 设计完成UI界面 1. 输入的点数和路径的数量由用户决定 ##### 版本缺点 1. 一处BUG未解决: 运行"uimain.py"文件,按下"输出矩阵"按钮后,进入第二个页面,再按下"返回输入"按钮无法成功返回 :weary: :fa-chevron-left: 尝试::fa-chevron-right: 直接运行"uioutput.py"文件,按下"返回输入"按钮能够返回到"uimain.py"文件的界面中,但是经过3-5秒后界面消失,程序终止。 #### 2.1版本 ##### 更新说明 1. 2.0版本上更新,多文件代码放在同一文件下,下载原文件即可使用 ##### 版本缺点 1. 在没有数据输入的时候,进入第二个界面能够进行返回输入端 2. BUG:输入数据后"返回输入"按钮失效 3. 后期更新维护复杂繁琐 #### 2.2版本 ##### 更新说明 1. 解决2.1版本的BUG BUG位置: 删除如下代码 ``` item = QtWidgets.QTableWidgetItem() self.firstR_table.setHorizontalHeaderItem(i, item) self.firstR_table.setVerticalHeaderItem(i, item) ``` 2. 简化代码 ##### 版本缺点 1. 前后端代码未分离 ### :tw-2b55: 3系列 #### 3.0版本 ##### 使用说明 1. 下载所有.py文件,保存在同一目录下,运行mainUi.py文件,根据提示输入数据 2. .ui文件是用PyQt5设计的界面 3. testData.py为测试用的数据文件 ##### 更新说明 新增加输入的方式,中间的过程矩阵也同样在输出中展示 ##### 版本缺点 1. 前后端代码未分离 #### 3.1版本 ##### 更新说明 同步1.4算法代码版本,增加所有两点之间的最短距离和路由