图的学习.

目录

一、图的基本概念

1.1图的种类

1.2顶点的度、入度和出度

1.3边的权和网

1.4路径、路径长度和回路

二、图的存储结构

2.1邻接矩阵法

2.2邻接表法

2.3十字链表

2.4邻接多重表

三、图的遍历

3.1广度优先搜索

3.2深度优先搜索

四、图的应用

4.1最小生成树

4.1.1普里姆算法

4.1.2克鲁斯卡尔算法

4.2最短路径

4.2.1迪杰斯特拉算法

 4.3拓扑排序

 4.4关键路径


一、图的基本概念

1.1图的种类

①有向图:v,w表示顶点,顶点间的边是有方向的。

②无向图:v,w表示顶点,顶点间的边没有方向。

③简单图:不存在重复边,不存在顶点到自身的边。

④多重图:存在重复边,存在顶点到自身的边。

⑤完全图:(简单完全图)

对于无向图,任意两个顶点之间都存在边,边的条数:(n*(n-1))/2

对于有向图,任意两个顶点之间都存在方向相反的两条弧,边的条数:n*(n-1)

子图: 顶点和边是另一个图的子集的图。

第二个图的顶点和边都是第一个图的子集,所以图2是图1的子图。

生成子图:顶点相等,边是另一个图的子集的图。

第二个图的顶点和第一个图相等,边是它的子集,所以图2是图1的生成子图。

连通图:图中任意两个顶点都是连通的。

极小连通子图:既要保持图连通又要使得边数最少的子图。

⑧生成树:包含图中全部顶点的一个极小连通子图。(边数=顶点数-1)

图2是图1的生成树。

1.2顶点的度、入度和出度

度:一个顶点连接的边数

①对于无向图:其全部顶点的度的和等于边数的2倍

②对于有向图:

·入度是以顶点v为终点的有向边的数目,出度是以顶点v为起点的有向边的数目;

·顶点的度=入度和出度之和;

·有向图的全部顶点的入度之和与出度之和=,并且=边数。

1.3边的权和网

权:边上带有数值,这样的图称为带权图或网

1.4路径、路径长度和回路

路径:顶点到另一个顶点的路线

路径长度:顶点到另一个顶点的距离

回路:从某一个顶点出发,最后又回到这个顶点

二、图的存储结构

2.1邻接矩阵法

行列与顶点有关,与边无关

①对于无向图:A[i][j]=1,(vi,vj)存在;A[i][j]=0,(vi,vj)不存在 (对称矩阵)

②对于有向图:A[i][j]=1,(vi,vj)存在;A[i][j]=0,(vi,vj)不存在

③对于带权图:A[i][j]=权值,(vi,vj)存在;A[i][j]=0或无穷大,(vi,vj)不存在

问:

①n个顶点的无向连通图用邻接矩阵表示时,该矩阵至少有2(n-1)个非零元素。

(有n-1条边,每条边表示两次)

②带权有向图G用邻接矩阵A存储,则顶点i的入度等于A中第i列非零非无穷元素之和,出度即为A中第i行非零非无穷元素之和

2.2邻接表法

①对于无向图

存储空间=O(|V|+2|E|) ,顶点存储1次,而边存储了2次。

②对于有向图

存储空间=O(|V|+|E|),边和顶点都只存储了1次。

特点:

①对于稀疏图,采用邻接表表示能够节省空间

②图的邻接表表示不唯一

③在有向图的邻接表表示中,求一个给定顶点的出度只需计算其邻接表中的结点个数。

头结点指的是顶点,表结点指的是边。

2.3十字链表

针对无向图的邻接表法结点的入度难,采用十字链表法改进

2.4邻接多重表

针对无向图中邻接表边存储2次的问题,采用邻接多重表法改进。

三、图的遍历

定义:从图中的某一点出发,按照某种搜索方法沿着图中所有顶点访问一次且仅访问一次

算法:广度优先搜索,深度优先搜索

3.1广度优先搜索

类似于二叉树的先序遍历,类似于树的层次遍历,例:

3.2深度优先搜索

类似于树的先序遍历,例:

注:如果从一个无向图的任意顶点出发进行一次广度和深度优先搜索即可访问所有顶点,那么该图一定是连通图。

四、图的应用

4.1最小生成树

带权连通无向图中,所有生成树中权值之和最小的生成树。

4.1.1普里姆算法

①任取一顶点,去掉所有边

②选择一个与当前顶点集合距离最近的顶点,并将该顶点和相应的边加入进来,同时不能形成回路。

③重复②,直至图中所有顶点都并入。

4.1.2克鲁斯卡尔算法

①去掉所有边

②选边(权最小,且不构成回路)

③重复②,直至图中所有顶点都并入

 最小生成树边数=顶点数-1

4.2最短路径

4.2.1迪杰斯特拉算法

 4.3拓扑排序

·AOV网:顶点表示活动,<Vi,Vj>

·每个顶点出现且只出现一次,若存在一条从顶点A到顶点B的路径,则在排序中顶点B出现在顶点A的后面。

算法实现:

①从AOV网中选择一个没有前驱的顶点并输出

②从网中删除该顶点和所有以它为起点的有向边

③重复①②直到当前AOV网为空或当前网中不存在无前驱的顶点为止

 

4.4关键路径

·AOE网:以顶点表示事件,以有向边表示活动,以边上的权值表示完成该活动的开销

·关键路径:从开始顶点到结束顶点的所有路径中,具有最大路径长度的路径

·关键活动:关键路径上的活动

算法实现:

①令ve(源点)=0,求最早发生时间ve()

ve()=Max{ve(j)+weight(vj,vk)} (从前往后算)

②令vl(汇点)=ve(汇点),求最迟发生时间vl()

vl()=Min{vl(j)-weight(vk,vj)} (从后往前算)

③根据ve()值求所有弧的最早开始时间e()

e()=ve()

④根据vl()值求所有弧的最迟开始时间l()

l()=vl()-weight(vk,vj)

⑤求AOE网中所有活动的差额d(),找出所有d()=0的活动构成关键路径

d()=l()-e()

例:

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

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

相关文章

VSCode 安装Remote-SSH

1、打开扩展商店安装Remote-SSH 快捷键&#xff1a;CtrlShiftX 2、配置ssh连接 打开命令面板&#xff08;CtrlShiftP&#xff09; 输入"Remote-SSH: Connect to Host"并选择。 输入你的Ubuntu服务器的IP地址或主机名。 3、连接到ubuntu服务器 如果是第一次连接&…

FPGA结构相关简介

一、芯片分类 ​FPGA属于数字芯片的一种&#xff0c;下面是根据世界半导体贸易统计协会WSTS的一个半导体分类&#xff0c;可以看到FPGA所属的类别。 二、FPGA的发展史 ​下图为FPGA的发展历史 三、FPGA的结构分类 下面是从三个角度进行划分 四、参考资料 《FPGA原理与结构》—…

【课程总结】Day10:卷积网络的基本组件

前言 由于接下来的课程内容将围绕计算机视觉展开&#xff0c;其中接触最多的内容是卷积、卷积神经网络等…因此&#xff0c;本篇内容将从卷积入手&#xff0c;梳理理解&#xff1a;卷积的意义、卷积在图像处理中的作用以及卷积神经网络的概念&#xff0c;最后利用pytorch搭建一…

1169 正方形

简单- 时间限制&#xff1a; 1000MS内存限制&#xff1a; 256MB分数&#xff1a;100OI排行榜得分&#xff1a;10(0.1*分数2*难度) 考点&#xff1a;选择结构 描述 有一个正方形&#xff0c;四个角的坐标分别是&#xff08;1&#xff0c;-1&#xff09;&#xff0c;&#xff…

proactor模式

Proactor模式是一种异步I/O的设计模式&#xff0c;它允许程序直接发起一个异步I/O操作并立即返回&#xff0c;而不需要等待该操作完成。一旦I/O操作实际完成&#xff0c;系统会通知相应的完成处理程序&#xff08;Completion Handler&#xff09;&#xff0c;该处理程序随后执行…

构建未来应用的核心,云原生技术栈解析

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、云原生技术栈 1、容器和容器编排 1.1 Docker 1.2 Kubernete…

ULTRAINTERACT 数据集与 EURUS 模型:推动开源大型语言模型在推理领域的新进展

在人工智能的浪潮中&#xff0c;大型语言模型&#xff08;LLMs&#xff09;已经成为推动自然语言处理技术发展的关键力量。它们在理解、生成语言以及执行复杂任务方面展现出了巨大的潜力。然而&#xff0c;尽管在特定领域内取得了显著进展&#xff0c;现有的开源LLMs在处理多样…

js中数组去重的方法

数组去重有的方法&#xff1a; 1、用 ES6 中的 Set 数据结构&#xff1a; let array [1, 2, 2, 3, 4, 4, 5]; let uniqueArray [...new Set(array)]; console.log(uniqueArray); // [1, 2, 3, 4, 5]2、这种方法利用了 Set 对象不允许包含重复项的特性。你也可以使用 ES5 的…

Vue3+ElementPlus+pinia 小案例

Vue3ElementPluspinia 小案例 1、初始化项目 使用脚手架快速创建Vue3应用&#xff1a;https://cli.vuejs.org/zh/ 脚手架自动整合了vue-router路由、ts、前端工程化等库&#xff1b; 安装脚手架工具 npm install -g vue/cli检测安装是否成功 vue -V创建项目&#xff1a; …

数据结构之B树:深入了解与应用

目录 1. B树的基本概念 1.1 B树的定义 1.2 B树的性质 1.3 B树的阶 2. B树的结构 2.1 节点结构 2.2 节点分裂 2.3 节点合并 3. B树的基本操作 3.1 搜索 3.2 插入 3.3 删除 4. B树的应用 4.1 数据库索引 4.2 文件系统 4.3 内存管理 5. B树的优势和局限 5.1 优势…

力扣42.接雨水

力扣42.接雨水 前后缀数组 对于每个一个位置 求其前面最高高度pre_max[i] max(pre_max[i-1] , h[i])和后面最高高度suf_max[i] max(suf_max[i1] , h[i])当前i处的水容量 为min(pre_max[i] , suf_max[i]) - h[i] class Solution {public:int trap(vector<int>& …

Docker配置与使用

Docker配置与使用 目录&#xff1a; 简介 安装Docker 基本命令 镜像管理 容器管理 数据卷管理 网络管理 Dockerfile编写 示例&#xff1a;搭建一个简单的Web应用 简介 Docker是一个开源的应用容器引擎&#xff0c;可以让开发者将应用程序及其依赖环境打包到一个可移植…

UnityShader——基础篇之UnityShader基础

UnityShader基础 UnityShader概述 材质和UnityShader 总的来说&#xff0c;在Unity中需要配合使用材质(Material)和 Unity Shader 才能达到需要的效果&#xff0c;常见流程为&#xff1a; 创建一个材质创建一个 Unity Shader&#xff0c;并把它赋给上一步中创建的材质把材质…

linux 服务控制新旧指令对比

以 http 为例 任务旧指令新指令使服务自动启动chkconfig --level 3 httpd onsystemctl enable httpd.service使服务不自动启动chkconfig --level 3 httpd offsystemctl disable httpd.service检查服务状态service httpd statussystemctl status httpd.service&#xff08;详细…

Android模拟器linux内核的下载,编译,运行,驱动开发测试

Android模拟器linux内核的下载&#xff0c;编译&#xff0c;运行&#xff0c;内核模块开发 1.下载适合Android模拟器的内核 git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/goldfish.git git branch -a git checkout android-goldfish-4.14-gchips 新建一个目录…

【2024最新版】Java JDK安装配置全攻略:图文详解

目录 1. 引言2. 准备工作2.1 **确定操作系统**2.2 **检查系统要求**2.3 **下载JDK安装包**3. 安装步骤&#xff08;以Windows系统为例&#xff09;4. 配置环境变量4.1 jdk配置验证4.2 **配置JAVA_HOME环境变量**4.3 **配置Path环境变量**4.4 验证jdk是否配置成功 5. 结语 1. 引…

深入了解Java异常处理

在Java编程中&#xff0c;异常处理是一个至关重要的概念。通过正确地处理异常&#xff0c;程序员可以编写出健壮且易于维护的代码&#xff0c;提升程序的可靠性。本文将详细介绍Java的异常处理机制&#xff0c;包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义…

Linux下的路由配置详解与实例

引言 在Linux系统中&#xff0c;路由配置是确保网络通信顺畅的关键环节。无论是简单的家庭网络还是复杂的企业网络&#xff0c;正确配置路由都是至关重要的。本文将详细介绍Linux下的路由配置&#xff0c;包括路由的基本概念、路由表的查看与配置方法&#xff0c;并通过具体实例…

机器学习周记(第四十四周:Robformer)2024.6.17~2024.6.23

目录 摘要ABSTRACT1 论文信息1.1 论文标题1.2 论文摘要1.3 论文引言1.4 论文贡献 2 论文模型2.1 问题描述2.2 Robformer2.2.1 Encoder2.2.2 Decoder 2.3 鲁棒序列分解模块2.4 季节性成分调整模块 摘要 本周阅读了一篇利用改进 Transformer 进行长时间序列预测的论文。论文模型…

浅析MySQL-基础篇01

目录 执行一条select语句&#xff0c;发生了什么&#xff1f; MYSQL执行流程是怎么样的&#xff1f; 第一步&#xff1a;连接器 第二步&#xff1a;查询缓存 第三步&#xff1a;解析SQL 解析器 第四步&#xff1a;执行SQL 预处理器 优化器 执行器 执行一条select语句…