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

网页制作与网站开发 实验报告网站建设工作流程

网页制作与网站开发 实验报告,网站建设工作流程,wordpress图片托管,网站开发 方案概要引言 在图论中#xff0c;Floyd-Warshall算法是一种用于计算任意两点之间最短路径的动态规划算法。它适用于加权有向图和无向图#xff0c;可以处理带有负权重边的图#xff0c;但要求图中不能有负权重环。本文将详细介绍Floyd-Warshall算法的定义、步骤及其实现。 Floyd-…引言 在图论中Floyd-Warshall算法是一种用于计算任意两点之间最短路径的动态规划算法。它适用于加权有向图和无向图可以处理带有负权重边的图但要求图中不能有负权重环。本文将详细介绍Floyd-Warshall算法的定义、步骤及其实现。 Floyd-Warshall算法 定义 Floyd-Warshall算法是一种用于计算图中所有顶点对之间最短路径的算法。该算法利用动态规划的思想通过不断更新顶点对之间的最短路径最终得到所有顶点对的最短路径矩阵。 算法步骤 初始化创建一个距离矩阵dist其中dist[i][j]表示顶点i到顶点j的初始距离。如果i和j之间有边则dist[i][j]为边的权重如果i和j之间没有边且i≠j则dist[i][j]为正无穷大如果ij则dist[i][j]为0。更新距离矩阵对于每一对顶点(i, j)通过中间顶点k更新其最短路径。具体来说如果dist[i][j] dist[i][k] dist[k][j]则更新dist[i][j] dist[i][k] dist[k][j]。重复更新重复上述步骤直到所有顶点对之间的最短路径都被计算出来。 示例 假设我们有一个带权有向图顶点集合为 ({A, B, C, D})边和权重集合为 ({(A, B, 3), (A, C, 8), (A, D, -4), (B, D, 1), (B, C, -2), (C, A, 4), (D, C, 7), (D, B, -5)})。 #mermaid-svg-C1rXYKfcNyYoTquN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-C1rXYKfcNyYoTquN .error-icon{fill:#552222;}#mermaid-svg-C1rXYKfcNyYoTquN .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-C1rXYKfcNyYoTquN .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-C1rXYKfcNyYoTquN .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-C1rXYKfcNyYoTquN .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-C1rXYKfcNyYoTquN .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-C1rXYKfcNyYoTquN .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-C1rXYKfcNyYoTquN .marker{fill:#333333;stroke:#333333;}#mermaid-svg-C1rXYKfcNyYoTquN .marker.cross{stroke:#333333;}#mermaid-svg-C1rXYKfcNyYoTquN svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-C1rXYKfcNyYoTquN .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-C1rXYKfcNyYoTquN .cluster-label text{fill:#333;}#mermaid-svg-C1rXYKfcNyYoTquN .cluster-label span{color:#333;}#mermaid-svg-C1rXYKfcNyYoTquN .label text,#mermaid-svg-C1rXYKfcNyYoTquN span{fill:#333;color:#333;}#mermaid-svg-C1rXYKfcNyYoTquN .node rect,#mermaid-svg-C1rXYKfcNyYoTquN .node circle,#mermaid-svg-C1rXYKfcNyYoTquN .node ellipse,#mermaid-svg-C1rXYKfcNyYoTquN .node polygon,#mermaid-svg-C1rXYKfcNyYoTquN .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-C1rXYKfcNyYoTquN .node .label{text-align:center;}#mermaid-svg-C1rXYKfcNyYoTquN .node.clickable{cursor:pointer;}#mermaid-svg-C1rXYKfcNyYoTquN .arrowheadPath{fill:#333333;}#mermaid-svg-C1rXYKfcNyYoTquN .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-C1rXYKfcNyYoTquN .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-C1rXYKfcNyYoTquN .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-C1rXYKfcNyYoTquN .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-C1rXYKfcNyYoTquN .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-C1rXYKfcNyYoTquN .cluster text{fill:#333;}#mermaid-svg-C1rXYKfcNyYoTquN .cluster span{color:#333;}#mermaid-svg-C1rXYKfcNyYoTquN div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-C1rXYKfcNyYoTquN :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 3 8 -4 1 -2 4 7 -5 A B C D Floyd-Warshall算法图解 初始化距离矩阵 A B C D A 0 3 8 -4 B ∞ 0 -2 1 C 4 ∞ 0 ∞ D ∞ -5 7 0通过顶点A更新距离矩阵 A B C D A 0 3 8 -4 B 7 0 -2 1 C 4 ∞ 0 ∞ D 3 -5 7 0通过顶点B更新距离矩阵 A B C D A 0 3 1 -4 B 5 0 -2 1 C 4 7 0 ∞ D 3 -5 2 0通过顶点C更新距离矩阵 A B C D A 0 3 1 -4 B 5 0 -2 1 C 4 7 0 ∞ D 3 -5 2 0通过顶点D更新距离矩阵 A B C D A 0 -1 1 -4 B 5 0 -2 1 C 4 -1 0 -3 D 3 -5 2 0Floyd-Warshall算法实现 下面是用Java实现Floyd-Warshall算法的代码示例 import java.util.Arrays;public class FloydWarshallAlgorithm {private static final int INF 99999; // 表示无穷大的值// 计算任意两点之间的最短路径public void floydWarshall(int[][] graph) {int vertices graph.length;int[][] dist new int[vertices][vertices];// 初始化距离矩阵for (int i 0; i vertices; i) {for (int j 0; j vertices; j) {dist[i][j] graph[i][j];}}// 更新距离矩阵for (int k 0; k vertices; k) {for (int i 0; i vertices; i) {for (int j 0; j vertices; j) {if (dist[i][k] ! INF dist[k][j] ! INF dist[i][k] dist[k][j] dist[i][j]) {dist[i][j] dist[i][k] dist[k][j];}}}}printSolution(dist);}// 打印最短路径矩阵private void printSolution(int[][] dist) {int vertices dist.length;System.out.println(顶点对之间的最短路径矩阵);for (int i 0; i vertices; i) {for (int j 0; j vertices; j) {if (dist[i][j] INF) {System.out.print(INF );} else {System.out.print(dist[i][j] );}}System.out.println();}}public static void main(String[] args) {int[][] graph {{0, 3, 8, -4},{INF, 0, -2, 1},{4, INF, 0, INF},{INF, -5, 7, 0}};FloydWarshallAlgorithm floydWarshall new FloydWarshallAlgorithm();floydWarshall.floydWarshall(graph);} }代码注释 常量定义 private static final int INF 99999; // 表示无穷大的值INF 表示无穷大用于表示顶点之间没有直接连接。 Floyd-Warshall算法 public void floydWarshall(int[][] graph) {int vertices graph.length;int[][] dist new int[vertices][vertices];// 初始化距离矩阵for (int i 0; i vertices; i) {for (int j 0; j vertices; j) {dist[i][j] graph[i][j];}}// 更新距离矩阵for (int k 0; k vertices; k) {for (int i 0; i vertices; i) {for (int j 0; j vertices; j) {if (dist[i][k] ! INF dist[k][j] ! INF dist[i][k] dist[k][j] dist[i][j]) {dist[i][j] dist[i][k] dist[k][j];}}}}printSolution(dist); }floydWarshall 方法实现了Floyd-Warshall算法计算任意两点之间的最短路径。 打印最短路径矩阵 private void printSolution(int[][] dist) {int vertices dist.length;System.out.println(顶点对之间的最短路径矩阵);for (int i 0; i vertices; i) {for (int j 0; j vertices; j) {if (dist[i][j] INF) {System.out.print(INF );} else {System.out.print(dist[i][j] );}}System.out.println();} }printSolution 方法用于打印最短路径矩阵。 结论 通过上述讲解和实例代码我们详细展示了Floyd-Warshall算法的定义、步骤及其实现。Floyd-Warshall算法是一种重要的最短路径算法适用于计算任意两点之间的最短路径。希望这篇博客对您有所帮助 如果您觉得这篇文章对您有帮助请关注我的CSDN博客点赞并收藏这篇文章您的支持是我持续创作的动力 关键内容总结 Floyd-Warshall算法的定义Floyd-Warshall算法的步骤Floyd-Warshall算法的实现及其 代码注释 推荐阅读深入探索设计模式专栏详细讲解各种设计模式的应用和优化。点击查看深入探索设计模式。 特别推荐设计模式实战专栏深入解析设计模式的实际应用提升您的编程技巧。点击查看设计模式实战。 如有任何疑问或建议欢迎在评论区留言讨论。谢谢阅读
http://www.hkea.cn/news/14533126/

相关文章:

  • 百度网站的优缺点wordpress图片上传
  • 做预算的网站资源共享网站开发
  • 买完域名网站怎么设计传奇网页游戏哪个好玩
  • 湖南建设网站公司上海市建筑业官网
  • 电子商务网站建设方案wordpress elementor
  • 企业网站备案名称宝塔默认安装wordpress
  • 网站空间2000m多少钱网站推广优化建设
  • 杭州网站制作平台公司网站后台管理模板免费下载
  • 求个网站这么难吗2022年贴吧wordpress主题替换谷歌
  • 广东网络公司网站自己怎么做响应式网站
  • 更改网站logo地址windows优化大师有用吗
  • 网站建设 深度网婚纱网站模板
  • 网站可以做软件检测吗网站开发方案及报价单
  • 网站维护 收录衡水手机网站建设
  • 做电池的外贸网站wordpress 功能介绍
  • 网站建设 商城达内网站开发学习培训
  • 做网站 搜索引擎网站制作哪个好一些
  • 自己做的表白网站网站前端页面设计
  • 做网站大概要花多少钱创建网站有免费的吗
  • 请人做网站设计的方案教育网站建设网站
  • 青岛网站商城设计平顶山城市建设局网站
  • 昌平网站开发公司wordpress的网站怎么让他上线
  • 北京智能网站建设平台中江网站建设
  • 北京网站seo服务全球速卖通企业类型
  • 可以玩小游戏的网站学做衣服上什么网站
  • wordpress网站关键词设置网站建设 设计提成
  • 免费永久网站制作做一些好玩的个人网站
  • 什么网站可以免费做找客户做seo网站优化价格
  • 将任意网站提交给google搜索引擎中建八局第三建设有限公司网站
  • php网站开发ppt新河网站快排seo