热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

数据结构<图>Floyd算法(这次无代码,加入一个算法的实现流程思路)

图结构-----Floyd算法1、前言根据计算机考研中对于求解最短路径算法的出题形式,以Dijkstra算法为重要考点,Dijkstra算法对于求解

图结构-----Floyd算法


1、前言

根据计算机考研中对于求解最短路径算法的出题形式,以Dijkstra算法为重要考点,Dijkstra算法对于求解一个顶点到其他任意的顶点之间的最短路径的问题,可以说是非常实用。
同时对于求解各个端点到其他端点的最短路径的集合这个问题,Dijkstra算法便没有那么优势了,本着学习就要学全面的特点,下面对Floyd算法进行原理讲解,(只讲执行过程,不涉及到算法的代码实现)


2、算法介绍


时间复杂度介绍



  1. 相比于Dijkstra算法,Floyd算法的时间复杂度是非常高的。
  2. 时间复杂度为O(n3),(n的三次方),其时间复杂度是非常的高。

算法执行准备



  1. 首先给出要讲解的题目例子图如下:

在这里插入图片描述
2. Floyd算法的执行过程需要我们在草稿纸上画出,两个矩阵,一个是上图中的边与边对应的权值关系,另一个是节点指向节点的路径显示,因此给出两个矩阵结构图如下:

在这里插入图片描述
3. 准备好初始的矩阵的条件节点后,我们对其进行Floyd算法的执行分析:


Floyd算法执行过程



  1. 首先是选取第二个矩阵中的初始路径,这里以第一行中的A->B为开始操作路径。
  2. Floyd算法第一步---------在A->B选择路径后,加入节点C,对其当前的矩阵中的所有节点进行路径的更新
  3. 更新的原则:若加入了C,使得其中的一个路径长度变短,便更新,否则不更新
  4. 其第一轮更新过程图如下:

在这里插入图片描述
根据上述图片对其进行第一轮的加入C节点进行操作分析:


  1. 找到不带C节点的路径,对于当前的路径长度跟加入C节点后的路径长度进行对比
  2. 若小于当前的路径长度,则更新该位置
  3. 若不小于则保持原型

下面进行第二轮更新,选择加入B节点:其执行图如下:
在这里插入图片描述

以上是第二轮加入B节点进行矩阵更新后的第二轮流程:

最后是最后一轮加入节点A,由于其中一共有三个节点,因此只需要执行三轮,这里有几个节点就要几轮操作。

第三轮更新:加入A节点
执行图如下:
在这里插入图片描述
其Floyd执行算法的流程如下,其思路了解掌握就好,代码时间复杂度n的三次方有点高,有需要可以了解下。

在这里插入图片描述


推荐阅读
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 本文探讨了卷积神经网络(CNN)中感受野的概念及其与锚框(anchor box)的关系。感受野定义了特征图上每个像素点对应的输入图像区域大小,而锚框则是在每个像素中心生成的多个不同尺寸和宽高比的边界框。两者在目标检测任务中起到关键作用。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • 线性Kalman滤波器在多自由度车辆悬架主动控制中的应用研究
    本文探讨了线性Kalman滤波器(LKF)在不同自由度(2、4、7)的车辆悬架系统中进行主动控制的应用。通过详细的仿真分析,展示了LKF在提升悬架性能方面的潜力,并总结了调参过程中的关键要点。 ... [详细]
  • 本文介绍如何使用 Python 提取和替换 .docx 文件中的图片。.docx 文件本质上是压缩文件,通过解压可以访问其中的图片资源。此外,我们还将探讨使用第三方库 docx 的方法来简化这一过程。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 百度服务再次遭遇技术问题,疑似DNS解析故障
    近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
  • 本文详细介绍了《问道》手游在2020年12月31日进行的服务器维护情况,以及此次更新中新增的跨年狂欢活动和寒假活动等内容。同时,文章还涵盖了其他重要的系统优化与修复信息。 ... [详细]
  • Win11扩展卷无法使用?解决扩展卷灰色问题的指南
    本文详细介绍了在Windows 11中遇到扩展卷灰色无法使用时的解决方案,帮助用户快速恢复磁盘扩展功能。 ... [详细]
  • 掌握 Photoshop 是学习网页设计的重要一步。本文将详细介绍 Photoshop 的基础与进阶功能,帮助您更好地进行图像处理和网页设计。推荐使用最新版本的 Photoshop,以体验更强大的功能和更高的效率。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • Python实现照片磨皮效果
    本文介绍如何使用Python和OpenCV库来实现照片的磨皮效果,使图片更加平滑并提升整体美感。 ... [详细]
author-avatar
我是被催族
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有