当前位置: 首页 > news >正文

建设部网站资质升级公示企业信息系统开发

建设部网站资质升级公示,企业信息系统开发,东莞seo,网站集约化建设讲话稿目录 一、前言 二、FLoyd算法 1、最短路问题 2、Floyd算法 3、Floyd的特点 4、Floyd算法思想#xff1a;动态规划 三、例题 1、蓝桥公园#xff08;lanqiaoOJ题号1121#xff09; 2、路径#xff08;2021年初赛 lanqiaoOJ题号1460#xff09; 一、前言 本文主要…目录 一、前言 二、FLoyd算法 1、最短路问题 2、Floyd算法  3、Floyd的特点 4、Floyd算法思想动态规划 三、例题 1、蓝桥公园lanqiaoOJ题号1121 2、路径2021年初赛 lanqiaoOJ题号1460 一、前言 本文主要讲了最短路问题以及解决最短路问题的Floyd算法概念与两道简单的相关例题。 二、FLoyd算法 1、最短路问题 最广为人知的图论问题。简单图的最短路径① 树上的路径任意2点之间只有一条路径 ② 所有边长都为 1 的图用 BFS 搜最短路径复杂度O(nm) 普通图的最短路径① 边长不一定等于 1而且可能为负数 ② 算法Floyd、Dijkstra、SPFA 等各有应用场景不可互相替代 【最短路算法比较】 2、Floyd算法  最简单的最短路径算法代码仅有5行存图最简单的矩阵存图易懂比暴力的搜索更简单易懂效率不高不能用于大图在某些场景下有自己的优势难以替代。 def Floyd():for k in range(1,n1):for i in range(1,n1):for j in range(1,n1):if dp[i][k]dp[k][j]dp[i][j]:dp[i][j]dp[i][k]dp[k][j] 3、Floyd的特点 Floyd算法“多源” 最短路算法一次计算能得到图中每一对结点之间 (多对多) 的最短路径。Dijkstra、 Bellman-Ford、 SPFA算法单源” 最短路径算法 (Single sourceshortest path algorithm)一次计算能得到一个起点到其他所有点 (一对多) 的最短路径。在截止目前的蓝桥杯大赛中Floyd算法是最常见的最短路径算法。4、Floyd算法思想动态规划 动态规划求图上两点 i、j 之间的最短距离按 “从小图到全图” 的步骤在逐步扩大图的过程中计算和更新最短路。 定义状态dp[k][i][j]i、j、k 是点的编号范围 1~n。状态 dp[k][i][j] 表示在包含 1~k 点的子图上点对 i、j 之间的最短路。 状态转移方程从子图 1~k-1 扩展到子图 1~k dp[k][i][j] min(dp[k-1][i][j], dp[k-1][i][k] dp[k-1][k][j]) 虚线圆圈包含1~k-1点的子图。dp[k-1][i][j]虚线子图内的点对 i、j 的最短路dp[k-1][i][k]dp[k-1][k][j]经过 k 点的新路径的长度即这条路径从 i 出发先到 k再从 k 到终点 j。比较不经过 k 的最短路径 dp[k-1][i][j] 和经过 k 的新路径较小者就是新的 dp[k][i][j]。 k 从 1 逐步扩展到 n最后得到的 dp[n][i][j] 是点对 i、j 之间的最短路径长度。初值 dp[0][i][j]若 i、j 是直连的就是它们的边长若不直连赋值为无穷大。i、j 是任意点对计算结束后得到了所有点对之间的最短路。 【方程的简化】这里留个眼 dp[k][i][j] min(dp[k-1][i][j], dp[k-1][i][k]dp[k-1][k][j]) 用滚动数组简化 dp[i][j]min(dp[i][j], dp[i][k] dp[k][j]) 【Floyd算法总结】 1在一次计算后求得所有结点之间的最短距离。2代码极其简单是最简单的最短路算法。3效率低下计算复杂度是 O(n^3)只能用于 n 300 的小规模的图。4存图用邻接矩阵 dp[][] 。因为 Floyd 算法计算的结果是所有点对之间的最短路本身就需要 n^2 的空间用矩阵存储最合适。5能判断负圈。负圈若图中有权值为负的边某个经过这个负边的环路所有边长相加的总长度也是负数这就是负圈。在这个负圈上每绕一圈总长度就更小从而陷入在负圈上兜圈子的死循环。Floyd算法很容易判断负圈只要在算法运行过程出现任意一个 dp[i][j]0 就说明有负圈。因为 dp[i][j] 是从 i 出发经过其他中转点绕一圈回到自己的最短路径如果小于零就存在负圈。三、例题 1、蓝桥公园lanqiaoOJ题号1121 【题目描述】 小明来到了蓝桥公园。已知公园有 N 个景点景点和景点之间一共有 M 条道路。小明有 Q 个观景计划每个计划包含一个起点 st 和一个终点 ed表示他想从 st 去到 ed。但是小明的体力有限对于每个计划他想走最少的路完成你可以帮帮他吗 【输入描述】 输入第一行包含三个正整数 N, M, Q。第 2 到 M1 行每行包含三个正整数 u, v, w表示 u、v 之间存在一条距离为 w 的路。第 M2 到 MQ-1 行每行包含两个正整数 st, ed其含义如题所述。 1N400, 1MN*(N-1)/2, Q10^3, 1u, v, st, edn, 1w10^9 【输出描述】 输出共 Q 行对应输入数据中的查询。若无法从 st 到达 ed 则输出 -1。 def floyd():global mpglobal Nglobal Mglobal Qfor k in range(1,N1):for i in range(1,N1):for j in range(1,N1):mp[i][j]min(mp[i][j],mp[i][k]mp[k][j])N,M,Qmap(int,input().split()) mp[[1100000000]*(M2) for _ in range(N2)] for _ in range(M):u,v,wmap(int,input().split())wmin(mp[u][v],w) #考虑重边选最小权值那条mp[u][v]wmp[v][u]w floyd() for _ in range(Q):st,edmap(int,input().split())if mp[st][ed]1100000000: #st无法到达edprint(-1)elif sted: #有可能兜一圈回到起点呢所以要特判print(0)else:print(mp[st][ed]) 2、路径2021年初赛 lanqiaoOJ题号1460 填空题 【题目描述】 小蓝的图由 2021 个结点组成依次编号1至2021。对于两个不同的结点 a, b如果 a 和 b 的差的绝对值大于 21则两个结点之间没有边相连如果 a 和 b 的差的绝对值小于等于 21则两个点之间有一条长度为 a 和 b 的最小公倍数的无向边相连。例如结点 1 和结点 23 之间没有边相连结点 3 和结点 24 之间有一条无向边长度为 24结点 15 和结点 25 之间有一条无向边长度为75。 请计算结点 1 和结点 2021 之间的最短路径长度是多少。 【常规的floyd】运行时间长达30分钟 from math import * def lcm(x,y):return x//gcd(x,y)*y #求最小公倍数 dp[[int(0x3f3f3f3f3f3f3f3f) for _ in range(2022)] for _ in range(2022)]def floyd():global dpfor k in range(1,2022):for i in range(1,2022):for j in range(1,2022):dp[i][j]min(dp[i][j],dp[i][k]dp[k][j])for i in range(1,2022):for j in range(1,2022):if abs(i-j)21:dp[i][j]lcm(i,j) floyd() print(dp[1][2021])【简化版floyd】 from math import * def lcm(x,y):return x//gcd(x,y)*y #求最小公倍数 dp[[int(0x3f3f3f3f3f3f3f3f) for _ in range(2022)] for _ in range(2022)]def floyd():global dpfor k in range(1,2022):#for i in range(1,2022):for i in range(1,2):for j in range(1,2022):dp[i][j]min(dp[i][j],dp[i][k]dp[k][j])for i in range(1,2022):for j in range(1,2022):if abs(i-j)21:dp[i][j]lcm(i,j) floyd() print(dp[1][2021])我们只求点 1 到其他点的最短路就行这实际上这变成了 Bellman-ford 算法。 【Bellman-ford更简洁的写法】 from math import * def lcm(x,y):return x//gcd(x,y)*y #求最小公倍数 dp[int(0x3f3f3f3f3f3f3f3f)]*2022 #dp[i]:点i到点1的最短路径 d[1]0 for i in range(1,2022): #点ifor j in range(i1,i22): #和i有边的点jif j2021:breakdp[j]min(dp[j],dp[i]lcm(i,j)) #更新最短路 print(dp[2021])以上FLoyd算法的入门与应用 祝好
http://www.laogonggong.com/news/125591.html

相关文章:

  • 网站建设投资规划国外外贸平台有哪些
  • 怎样免费做外贸网站wordpress禁用更新提示
  • 想要自己做一个网站怎么做青岛网站建设方案案例
  • 企业为什么要网站建设中高端网页设计开发
  • 北师大网页制作与网站建设期末考试vs2008怎么做网站
  • 西安网站优化服务网站建设找星火龙
  • 网站建设原创软文刘涛现在哪个网站做直播
  • 网站服务类型有哪些深圳市顺建建设工程有限公司网站
  • 做网站需要准备哪些深圳seo优化排名
  • 做招聘网站代理商需要多少钱wordpress风格化页面
  • 做外贸网站基本流程个人备案网站 内容
  • 公众号自己做电影网站网易企业邮箱电话
  • 公司网站怎样备案公众号小程序制作平台
  • 河南省做网站的企业建设历史文化旅游宣传网站
  • 福州建设公司网站网站建设跑业务
  • 北京做网站哪个好企业为什么要审计
  • 单位网站维护 网站建设岗位广州娱乐场所最新通知
  • vue大型网站怎么做路由视频网站怎么建设
  • 本地搭建网站网站后台青岛电商网站建设
  • 网站常用字体织梦网站关掉wap
  • 可以做微课PPT模板 网站小程序定制开发方案
  • 网站建设与管理是干什么的网络域名侵权十大案例
  • 承德网站建设咨询昆明网络建设
  • wordpress获取当前文章所属分类河源网站制作1993seo
  • 网站链接做二维码wordpress内容模板
  • 株洲市区网站建设公司wordpress博客数据放在哪里的
  • photoshop 做网站如何加速wordpress反应速度
  • 建公司网站的详细步骤马鞍山建设网站
  • 网站排名seo智能建站系统免费版
  • 视频网站应该怎么做宁波外贸进出口公司