数据结构和算法-图的基本操作以图的广度优先遍历和深度优先遍历

文章目录

  • 图的基本操作
    • 总览
    • 找边
    • 列出与某顶点相连的边
    • 插入顶点
    • 删除顶点
    • 增加边
    • 顶点的第一个邻接点
    • 顶点的下一个邻接点
    • 设置或者获取某条边的权值
    • 总览
  • 图的广度优先遍历
    • 总览
    • 树的广度优先遍历
    • 图的广度优先遍历
    • 树vs图
    • 图广度优先遍历的代码实现
    • 广度优先遍历序列
    • 遍历序列的可变性
    • 算法存在问题
    • 改进后的 复杂度分析
    • 广度优先生成树
    • 广度优先生成森林
    • 练习:有向图的BFS
    • 小结
  • 图的深度优先遍历
    • 总览
    • 树的深度优先遍历
    • 图的深度优先遍历
    • 算法存在的问题
    • 复杂度分析
    • 深度优先遍历序列
    • 深度优先生成树
    • 深度优先生成森林
    • 图的遍历与图的连通性
    • 小结

图的基本操作

总览

在这里插入图片描述

找边

邻接矩阵直接找图中的某个元素是否为1即可
邻接表要遍历顶点的边链表
在这里插入图片描述
在这里插入图片描述

列出与某顶点相连的边

邻接矩阵找行或列
邻接表找顶点对应的边链表
对于有向图的邻接表的入边时候需要将其他顶点的边链表都遍历
在这里插入图片描述
在这里插入图片描述

插入顶点

此时插入的是与其他顶点都没有连接的顶点
在这里插入图片描述

删除顶点

邻接矩阵设置 顶点中的一个变量为布尔型变量用来标记该顶点是否有效,当删除该节点时,只需将该节点所在行和列设置为0即可
邻接表即遍历所有边链表,将有顶点的边都删除,并修改对于的边链表
在这里插入图片描述
在这里插入图片描述

增加边

在这里插入图片描述

顶点的第一个邻接点

就是遍历到的第一个
在这里插入图片描述
在这里插入图片描述

顶点的下一个邻接点

就是遍历到的第二个
在这里插入图片描述

设置或者获取某条边的权值

在这里插入图片描述

总览

在这里插入图片描述

图的广度优先遍历

总览

在这里插入图片描述

树的广度优先遍历

即找根节点的孩子节点先
在这里插入图片描述

图的广度优先遍历

即先访问节点的相邻节点
在这里插入图片描述

树vs图

图遍历可能访问到原先的节点,但树不会,因为它是一直访问孩子节点的
在这里插入图片描述

在这里插入图片描述

图广度优先遍历的代码实现

在这里插入图片描述
访问后入队,然后出队后再将其相邻且没有访问的节点访问,然后再入队,然后再出队再将其相邻且没有访问的节点访问,如此反复
在这里插入图片描述

广度优先遍历序列

在这里插入图片描述

遍历序列的可变性

不同邻接表对应的遍历序列可能不一样
在这里插入图片描述

算法存在问题

非连通图无法遍历完所有节点
解决方法就是每个节点都广度优先遍历
下面是改进

在这里插入图片描述

改进后的 复杂度分析

从结点树和边数考虑(从访问顶点和找各条边考虑)
在这里插入图片描述
在这里插入图片描述

广度优先生成树

广度优先遍历过程生成的
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

广度优先生成森林

即对各个连通分量广度优先遍历即可
在这里插入图片描述

练习:有向图的BFS

有些点BFS不能遍历完所有的结点
在这里插入图片描述

小结

在这里插入图片描述

图的深度优先遍历

总览

在这里插入图片描述

树的深度优先遍历

在这里插入图片描述

图的深度优先遍历

在这里插入图片描述

算法存在的问题

依然是所有顶点都深度优先遍历一次
在这里插入图片描述

复杂度分析

即可能同时调用V次代码(或者说来自递归工作栈)
在这里插入图片描述
即每个结点最终都会进入一次深度优先遍历函数,这样才可能最终深度优先遍历所有节点
只不过邻接矩阵中对应节点进入函数后时间复杂度为V
而邻接表为E
在这里插入图片描述

深度优先遍历序列

在这里插入图片描述
邻接表不一样,深度优先遍历序列可能不一样
在这里插入图片描述
在这里插入图片描述

深度优先生成树

同样,即将遍历序列的其他边去了即可
在这里插入图片描述

深度优先生成森林

在这里插入图片描述
在这里插入图片描述

图的遍历与图的连通性

在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/221375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深眸科技|轻辙视觉引擎以99.9%视觉检测能力为基准,赋能木材加工

轻辙视觉引擎:轻辙视觉引擎是以低代码为基础,深度学习技术为核心的视觉业务流程编排引擎,用于快速搭建部署复杂视觉检测流程软件方案。 轻辙视觉引擎|轻量级产品实现高效应用 作为深眸科技的核心产品之一,轻辙视觉引…

十进制整数转二进制数

十进制整数转二进制数 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 函 数 名:dec_2_bin % 功 能:十进制整数转二进制数 % 输入参数: % % 1.参数dec:十进制数 % % 2.参数width:用多少位宽表示二进制…

论文润色突显研究亮点 papergpt

大家好,今天来聊聊论文润色突显研究亮点,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧: 标题:论文润色突显研究亮点――提升论文吸引力的关键步骤 一、引言 在学术研究中&#x…

【算法刷题】Day15

文章目录 1. 串联所有单词的子串题干:算法原理代码: 2. 最小覆盖子串题干:算法原理:1、暴力枚举 哈希表2、滑动窗口 哈希表 代码: 1. 串联所有单词的子串 原题链接 题干: 给定⼀个字符串 s 和⼀个字符串…

Vue项目使用WebAssembly之后,Nginx如何解决WebAssembly不支持的问题

在VUE项目中使用WebAssembly之后,打包的项目会出现下面的错误 Uncaught (in promise) TypeError: WebAssembly: Response has unsupported MIME type application/wasm; charsetutf-8 expected application/wasm 可以用以下办法解决 一:单独Nginx配置…

选择排序-排序算法

思路 选择排序(Selection sort)的主要思路是:在要排序的区间内找到一个最大的元素,将它放到数组的最后一个位置,然后在剩余的未排序区间内找到一个最大的元素,将它放到数组的倒数第二个位置。以此类推&…

基于 Flink CDC 构建 MySQL 的 Streaming ETL to MySQL

简介 CDC 的全称是 Change Data Capture ,在广义的概念上,只要是能捕获数据变更的技术,我们都可以称之为 CDC 。目前通常描述的 CDC 技术主要面向数据库的变更,是一种用于捕获数据库中数据变更的技术。CDC 技术的应用场景非常广泛…

抖捧自动直播是什么,系统功能讲解

目前有在做实体行业级商家服务的老板 你还在为不会直播,不敢直播而苦恼吗? 你还在为想做直播,但没空开直播而焦灼吗? 今天,你的问题都可以统统解决 实体行业直播必备黑科技:抖捧AI自动直播 只需要一部手…

使用阿里巴巴同步工具DataX实现Mysql与ElasticSearch数据同步

一、Linux环境要求 二、准备工作 2.1 Linux安装jdk 2.2 linux安装python 2.3 下载DataX: 三、DataX压缩包导入,解压缩 四、编写同步Job 五、执行Job 六、定时更新 6.1 创建定时任务 6.2 提交定时任务 6.3 查看定时任务 七、增量更新思路 一、Linux环境要…

C#教程(一):面向对象

1、介绍 C#是一种多范式编程语言,但其中一个主要的编程范式是面向对象编程(OOP)。面向对象编程有一些特点,而C#提供了丰富的功能来支持这些特点。 2、面向对象特点 封装(Encapsulation): 封装…

Nginx访问FTP服务器文件的时效性/安全校验

背景 FTP文件服务器在我们日常开发中经常使用,在项目中我们经常把FTP文件下载到内存中,然后转为base64给前端进行展示。如果excel中也需要导出图片,数据量大的情况下会直接返回一个后端的开放接口地址,然后在项目中对接口的参数进…

使用shell脚本将一台虚拟机上面数据分发到其他虚拟机上面xsync

目录 1,功能2,注意点3,shell脚本介绍4,bash内容 1,功能 使用shell脚本将一台虚拟机上面数据分发到其他虚拟机上面。 2,注意点 需要修改的地方:hadoop250 hadoop251 hadoop252 hadoop253 hado…

魔搭社区上线Mistral AI 首个开源 MoE 模型 Mixtral8x7B

Mistral AI 近日发布了首个开源 MoE 模型 Mixtral8x7B,并宣布在魔搭社区上线。 Mixtral-8x7B 是一款混合专家模型(Mixtrue of Experts),由8个拥有70亿参数的专家网络组成,在能力上,Mixtral-8x7B 支持32k t…

美颜技术讲解:视频美颜SDK的开发与集成

如今,美颜技术的应用愈发成为吸引用户的一项重要功能。本文将深入探讨视频美颜SDK的开发与集成,揭示其背后的技术原理和实现步骤。 一、美颜技术的背后 美颜技术并非仅仅是简单的滤镜效果,而是一项涉及复杂图像处理和算法的技术。在视频美颜…

wordpress 修改社交图标

要去掉标记的图标,死活找不到在那里配置。后来找到了,下图(wordpress 小白,特此记录)

安装python第三方库后,在pycharm中不能正常导入

python小白学习opencv,使用pip安装完opencv库后import cv2报错,按照如下设置解决: 需要正确设置python解释器路径

Python内置类属性`__cmp__`属性的使用教程

概要 在Python中,__cmp__属性是一个特殊的方法,用于自定义类的实例之间的比较方式。深入了解和熟练运用这一特性,可以使自定义类更加灵活和强大。本教程将详细介绍__cmp__的基本概念、高级用法以及一些注意事项,通过丰富的示例代…

跨境电商群发消息工具定制贵吗?

随着全球电子商务的快速发展,跨境电商已经成为了一种新兴的商业形式。 为了能够更好地与海外客户沟通,许多卖家开始寻找跨境电商群发消息工具,那么,这些工具的定制费用是否昂贵呢? 首先,我们需要明确一点&#xff1…

在线免费压缩pdf文件

在线免费压缩pdf文件,不用登陆哦, https://www.ilovepdf.com/ https://online2pdf.com/#

IP属地变化背后的原因

随着互联网的普及和技术的不断发展,IP属地变化的现象越来越受到人们的关注。近日,有网友发现自己的IP属地发生了变化,引发了广泛讨论。那么,IP属地为什么会发生变化呢? 首先,网络环境的变化是导致IP属地变化…