图结构算法学习(一)——有向图
有向图概念基础
- 什么是有向图
- 有向图相关术语
- 邻接矩阵
- 邻接矩阵的定义
- 邻接矩阵表示法
- 无向图的邻接矩阵
- 有向图的邻接矩阵
- 有权图(网)的邻接矩阵表示法
- 邻接矩阵储存法
- 用邻接矩阵表示法创建无向网
什么是有向图
定义:有向图是一副具有方向性的图,是有一组顶点和一组有方向的边组成的,每条方向的边都连接着一对有序的顶点。
全部由无向边构成图称为无向图
有向图相关术语
出度:有某个顶点指出的边的个数称为该顶点的出度。
入度:指向某个顶点的边的个数称为该顶点的入度。
度:入度+出度,称为该顶点的度。
注意:自环(起点和终点为同一顶点),此时出度算一度,入度也算一度。
如上图所示,顶点A的出度为2,入度为1,度为3
有向边:一条有向边的第一个顶点称为它的头,第二个顶点称为它的尾。将有向边画为由头指向尾的一个箭头。
有向环:一条至少含有一条边,且起点和终点相同的有向路径。
有向路径:由一系列顶点组成,对于其中的每个顶点都存在一条有向边,从它指向序列中的下一个顶点。
注意:一副有向图中两个顶点v和w可能存在以下四种关系:
1:没有边相连;
2:存在从v到w的边v->w;
3:存在从w到v的边w->v;
4:即存在w到v的边,也存在v到w的边,即双向链接;
邻接矩阵
邻接矩阵的定义
设图G=(V,E),其中顶点集V=v1,v2,…,vn,边集 E=e1,e2,…,eε。用aij表示顶点vi与顶点vj之间的边数,可能取值为0,1,2,…,称所得矩阵A=A(G)=(aij)n×n为图G的邻接矩阵。
邻接矩阵可以描述有向图和无向图。
翻译:邻接矩阵是用来表示各个顶点之间连接关系的数组
邻接矩阵表示法
第一步:建立一个顶点表(记录各个顶点信息)和一个邻接矩阵(表示各个顶点之间关系)。
设图A=(V,E)有n个顶点,则顶点表为
第二步:建立邻接矩阵
图的邻接矩阵是一个二位数组A.arcs[n][n],定义为:
A. arcs[i][j]={1,如果 ⟨i,j⟩∈E或者 (i,j)∈E0,否则 \text { A. } \operatorname{arcs}[i][j]= \begin{cases}1, & \text { 如果 }\langle i, j\rangle \in E \text { 或者 }(i, j) \in E \\ 0, & \text { 否则 }\end{cases} A. arcs[i][j]={1,0, 如果 ⟨i,j⟩∈E 或者 (i,j)∈E 否则
无向图的邻接矩阵
无向图的邻接矩阵如图,其中第1行第2列的“1”表示V~1~与V~2~有连接关系。相对的,第2行第1列的“1”表示V~2~与V~1~有连接关系。
分析1:无向图的邻接矩阵是对称的;
分析2:顶点i的度=第i行(列)中1的个数;
注:完全图的邻接矩阵中,对角元素为0,其余1。
有向图的邻接矩阵
有向图的邻接矩阵与无向图略有不同,因为有向图中的边具有方向含义。因此要做出以下定义:
第i行含义:以结点vi为尾的弧(即出度边);
第i列含义:以结点vi为头的弧(即入度边)。
分析1:有向图的邻接矩阵可能是不对称的;
分析2:顶点的出度 = 第 i 行元素之和
顶点的入度 = 第 i 列元素之和
顶点的度 = 第 i 行元素之和 + 第 i 列元素之和
有权图(网)的邻接矩阵表示法
加权后的邻接矩阵定义为:
A. arcs[i][j]={Wij<vi,vj>或 (vi,vj)∈VR∞无边 (弧 )\text { A. } \operatorname{arcs}[\mathrm{i}][\mathrm{j}]=\left\{\begin{array}{cc} \mathrm{W}_{\mathrm{ij}} & <\mathrm{vi}, \mathrm{vj}>\text { 或 }(\mathrm{vi}, \mathrm{vj}) \in \mathrm{VR} \\ \infty & \text { 无边 }(\text { 弧 }) \end{array}\right. A. arcs[i][j]={Wij∞<vi,vj> 或 (vi,vj)∈VR 无边 ( 弧 )
如上图所示,矩阵中的“1”变为了相应边的权值。而“0”变为了“∞”
邻接矩阵储存法
用两个数组分别存储顶点表和邻接矩阵
#define Maxlnt 32767 //表示极大值,即 ∞
#define MVNum 100 //最大顶点数
typedef char VerTexType; //设顶点的数据类型为字符型
typedef int ArcType; //假设边的权值类型为整型 typedef struct{VerTexType vexs[MVNum]; //顶点表 ArcType arcs[MVNum][MVNum]; //邻接矩阵int vexnum,arcnum; //图的当前点数和边数
}AMGraph; //Adjacency Matrix Graph
用邻接矩阵表示法创建无向网
【算法思想】
(1)输入总顶点数和总边数。
(2)依次输入点的信息存入顶点表中。
(3)初始化邻接矩阵,使每个权值初始化为极大值。
(4)构造邻接矩阵。
本文参考以下博客:
有向图和无向图,SuperiorPluto.
【图结构专题】有向图,惜暮.
邻接矩阵,diviner_s.
图结构算法学习(一)——有向图相关推荐
- 数据结构基础:图结构的学习笔记
1.图的定义 图是比树更加复杂的数据结构,在图的结构当中,任意两个节点之间都有可能有直接关系,所以图中一个节点的前驱和后继的数目是没有限制的. 2.图的用途 用于描述各种复杂的数据对象,在自然科学.社 ...
- java流类图结构_java学习之IO流(学习之旅,一)
个人在学习IO流的时候看到如下所示java 流类图结构的时候,我的感想是,这么多··处于蒙的状态. Java流类图结构 这么多,没有分类不好学,那我们就慢慢一口一口的吃,这样每天学习一点就好了,其实很 ...
- C++ | 数据结构 | 图结构的讲解与模拟实现 | DFS与BFS的实现
文章目录 前言 常见概念总结 图的模拟实现 邻接矩阵和邻接表的优劣 图的模拟实现(邻接表) 广度优先遍历(BFS) 深度优先遍历(DFS) hpp代码展示 前言 在聊图的结构之前,我们可以先从熟悉的地 ...
- ESL第十七章 无向图模型 学习/推断/成对马尔可夫独立/全局马尔可夫性、协方差图/高斯图/修改回归算法/图结构估计/图lasso、【受限】玻尔兹曼机/泊松对数线性建模/迭代比例过滤/对比散度
目录 17.1 导言 17.2 马尔可夫图及其性质 17.3 连续变量的无向图模型 17.3.1 图结构已知的参数估计 17.3.2 估计图结构 17.4 离散变量的无向图模型 17.4.1 图结构已 ...
- 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)
数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...
- 数据结构与算法学习笔记——图 C++实现
数据结构与算法学习笔记--图 C++实现 1 概念 2 图的表示方法 3 算法 3.1 拓扑排序 3.2 图的搜索算法 3.2.1 广度优先搜索(BFS) 3.2.2 深度优先搜索(DFS) 3.3 ...
- 【数据结构与算法】详解什么是图结构,并用代码手动实现一个图结构
本系列文章[数据结构与算法]所有完整代码已上传 github,想要完整代码的小伙伴可以直接去那获取,可以的话欢迎点个Star哦~下面放上跳转链接 https://github.com/Lpyexplo ...
- 一步一步写算法(之图结构)
原文:一步一步写算法(之图结构) [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 图是数据结构里面的重要一章.通过图,我们可以判断两个点之间是 ...
- 分别用邻接矩阵和邻接表实现图的深度优先遍历和广度优先遍历_数据结构与算法学习笔记:图...
图: 图结构区别于线性结构和树型结构,区别可见下图 逻辑上的图(graph)结构由顶点(vertex)和边(edge)组成. 一个图结构G包含顶点集合V和边集合E,任何两个顶点之间可以有一个边表示两者 ...
最新文章
- 滑坡的剖面图怎么用计算机绘制,cad怎么画滑坡剖面
- react中使用scss_我如何将CSS模块和SCSS集成到我的React应用程序中
- Excel,此文件中的某些文本格式可能已经更改,因为它已经超出最多允许的字体数。...
- GridView跨行合并单元格
- 职场宝典:63种能力让你职场步步高升
- 防止cpu 一直被占用 sleep(0) 和 yield
- 最近有粉丝向我请教Java泛型,于是重温了一下,希望学弟面试顺利
- P3911 最小公倍数之和
- 华为轮值董事长徐直军:5G不是原子弹 不伤害人
- git常用命令与常见错误
- 常见Linux命令(非文件操作)
- linux 批量更改三四级目录 扩展名,Linux批量更改文件后缀名
- source命令用法详解
- 国美易卡MVCC读取,国美易卡DB_ROW_ID唯一值
- 酷6 期待“化茧成蝶”
- android app签名方法
- Python 如何实时绘制数据
- CSS line-height属性
- 我的世界电脑版怎么下载java_我的世界端游java版怎么下载
- 基于 Apache Druid 的实时分析平台在爱奇艺的实践