图的学习.

目录

一、图的基本概念

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搭建一…

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

&#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在处理多样…

Vue3+ElementPlus+pinia 小案例

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

UnityShader——基础篇之UnityShader基础

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

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. 引…

机器学习周记(第四十四周: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语句…

Temu(拼多多跨境电商) API接口:获取商品详情

核心功能介绍——获取商品详情 在竞争激烈的电商市场中&#xff0c;快速、准确地获取商品数据详情对于电商业务的成功至关重要。此Temu接口的核心功能在于其能够实时、全面地获取平台上的商品数据详情。商家通过接入Temu接口&#xff0c;可以轻松获取商品的标题、价格、库存、…

Day15 —— 大语言模型简介

大语言模型简介 大语言模型基本概述什么是大语言模型主要应用领域大语言模型的关键技术大语言模型的应用场景 NLP什么是NLPNLP的主要研究方向word2vecword2vec介绍word2vec的两种模型 全连接神经网络神经网络结构神经网络的激活函数解决神经网络过拟合问题的方法前向传播与反向…

什么是REST API

1. 什么是RESTful API REST API&#xff0c;全称 Representational State Transfer&#xff0c;最初由计算机科学家 Roy Fielding 提出。 是遵循 REST 架构规范的应用编程接口&#xff08;API&#xff09;&#xff0c;支持与 RESTful Web 服务进行交互。 又被称作 RESTful API…

深度神经网络——深度学习中的 RNN 和 LSTM 是什么?

引言 自然语言处理和人工智能聊天机器人领域许多最令人印象深刻的进步都是由 递归神经网络&#xff08;RNN&#xff09; 和长短期记忆&#xff08;LSTM&#xff09;网络。 RNN 和 LSTM 是特殊的神经网络架构&#xff0c;能够处理顺序数据&#xff0c;即按时间顺序排列的数据。…

《Python 机器学习》作者新作:从头开始构建大型语言模型,代码已开源

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 自 ChatGPT 发布以来&#xff0c;大型语言模型&#xff08;LLM&#xff09;已经成为推动人工智能发展的关键技术。 近期&#xff0c;机器学习和 AI 研究员、畅销书《Python 机器学习》作者 Sebastian …

Mac M3 Pro 部署Trino-server-449

目录 1、下载安装包 2、解压并设置配置参数 3、启动并验证 4、使用cli客户端连接测试 1、下载安装包 官方&#xff1a;trino-server-449 CLI 网盘&#xff1a; server https://pan.baidu.com/s/16IH-H39iF8Fb-Vd14f7JPA?pwd3vjp 提取码: 3vjp cli https://pan.baidu.…

计算机网络 动态路由OSPF

一、理论知识 1.OSPF基本概念 ①OSPF是一种链路状态路由协议&#xff0c;使用Dijkstra算法计算最短路径。 ②OSPF使用区域&#xff08;Area&#xff09;来组织网络&#xff0c;区域0&#xff08;Area 0&#xff09;是主干区域。 ③路由器通过通告直连网络加入OSPF域。 ④反…

Ubuntu磁盘映射到本地磁盘

远程服务器是 Ubuntu 系统&#xff0c;本地是 windows 系统。 1、安装 samba 服务器 sudo apt update sudo apt install samba smbclient通过如下命令可以看到已经安装成功 $ whereis sambaoutput: samba: /usr/sbin/samba /usr/lib/x86_64-linux-gnu/samba /etc/samba /usr…

CentOS 7、Debian、Ubuntu,这些是什么意思

CentOS 7、Debian、Ubuntu 都是基于 Linux 内核的操作系统&#xff0c;它们各自有不同的特性和用途。以下是对它们的详细解释&#xff1a; CentOS 7 CentOS&#xff08;Community ENTerprise Operating System&#xff09; 是一个基于开源的 Linux 发行版。CentOS 7 是 CentOS …