首页 > 其他分享 >图的结构和模型——矩阵表示

图的结构和模型——矩阵表示

时间:2023-06-14 23:44:28浏览次数:39  
标签:begin 有向图 end 模型 矩阵 times ij bmatrix 结构

图是一种数据结构和模型,在计算机中存储图的最简单有效方式就是矩阵。矩阵作为表达图有效工具和手段,也便于运用代数的方法研究图的性质(这才是重点!),例如,我们可以通过矩阵计算结果,判定图的连通性/可达性等问题。

一、邻接矩阵(adjacency matrix)

定义1 设 G = (V,E)是一个,节点集合$ V = { v_1, v_2, \dots, v_n}$,令 $ A(G) = [a_{ij}]_{n\times n}$​,其中:

\[a_{ij} =\begin{cases} 1 \quad &若[v_i, v_j] \in E\\ 0\quad &若[v_i, v_j] \notin E \end{cases} \]

则称A(G)为\(G\) 的**邻接矩阵。

【例1】设G1​ 是有向图、G2​ 是无向图,分别如下图(a)和(b)所示,写出G1​,G2​ 的邻接矩阵。

**解: **

\(A(G_1)\) \(A(G_2)\)
$\begin{bmatrix} 1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0\\ 1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 1 \end{bmatrix} $ \(\begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & 0 & 1 & 0\\ 1 & 1 & 0 & 1 \\ 1 & 0 & 1 & 1 \end{bmatrix}\)

当结点编号次序不同时,同一个图所得的邻接矩阵可能不同,但可以通过有限次的行、列变换而得到相同的邻接矩阵(同构的图?)。
通过图的邻接矩阵运算,可以判断图的一些性质。设G=(V,E) 是有向图, $|V| = n $ ,\(A\)是G 的邻接矩阵。

1.1 \(AA^T\)的元素的意义

可知,\(b_{ij} = \sum^n_{k = 1} a_{ik} a_{jk}​\) ,如上图所示,则在G中恰好有\(b_{ij}\)个结点,从\(v_i\) 和\(v_j\)​ 均有边引出到这些节点\(v_{k_1}, v_{k_2}, \dots, v_{k_n}\)。特别地,当\(i =j\)时\(b_{ij}\)表示 \(v_i\)的出度。

1.2 \(A^{2} = A\times A\)的元素的意义

若有\(b_{ij} = \sum^n_{k = 1} a_{ik}a_{kj}\),则从\(v_i\)​ 到\(v_j\)​ 长度为2 的路有\(b_{ij}\) 条。特别地,当\(i=j\)时\(v_i\)​ 到自身长度为2 的回路有 $b_{ij} $条。

1.3 有向图的路(path)

【例2】对于有向图G=(V,E),用 G 的邻接矩阵计算从顶点 \(v_3\)到 \(v_1\) 的所有有向通路

解:图G 的邻接矩阵为:

\[A=\begin{bmatrix} 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 1 \\ 0 & 1 & 0 & 1 \\ 1 & 1 & 0 & 0 \end{bmatrix} \]

由\(A[3][1] = 0\) 知(下标从1开始),从顶点\(v_3\)到 \(v_1\)没有长度为 1 的通路。再计算$A^2 $:

\[\begin{aligned} A^2[3][1] &= A[3][1] \times A[1][1] + A[3][2] \times A[2][1] \\ &+ A[3][3] \times A[3][1] + A[3][4] \times A[4][1] \\ &= 0 \times 0 + 1 \times 0 + 0\times 0 + 1 \times 1 = 1 \end{aligned}\]

得到从顶点\(v_3\)​ 到\(v_1\)的长度为 2 的有向路为\((v_3, v_4, v_1)\)。显然,它也是一条通路。再计算\(A^3\):

\[A^3 =\begin{bmatrix} 1 & 2 & 0 & 1\\ 1 & 2 & 2 & 2 \\ 1 & 3 & 1 & 2 \\ 1 & 2 & 1 & 2 \end{bmatrix} \]

由 $ A^3[3][1] = 1 $知,从顶点 \(v_3\)​ 到\(v_1\) 的长度为3的路有1条。根据计算过程:

\begin{aligned} A^3[3][1] &= A^2[3][1] \times A[1][1] + A^2[3][2] \times A[2][1] \\ &+ A^2[3][3] \times A[3][1] + A^2[3][4] \times A[4][1] \\ &= 1 \times 0 + 1 \times 0 + 1\times 0 + 1 \times 1 = 1 \end{aligned}
得到从顶点\(v_3\)到\(v_1\)​ 的长度为3的有向路为:从顶点\(v_3\)​ 到\(v_4\)​ 的一条长度为2的路接上\((v_4, v_1)\) 。再根据计算过程:
\begin{aligned} A^2[3][4] &= A[3][1] \times A[1][4] + A[3][2] \times A[2][4] \\ &+ A[3][3] \times A[3][4] + A[3][4] \times A[4][4] \\ &= 0 \times 0 + 1 \times 1 + 0\times 1 + 1 \times 0 = 1 \end{aligned}
得到从顶点\(v_3\) 到\(v_4\) 的一条长度为2 的有向路是\((v_3,v_2, v_4)\)。所以,从顶点\(v_3\)​ 到\(v_1\)​ 的长度为 3的有向路是 \((v_3, v_2, v_4, v_1)\) 。显然,它也是一条通路。

因为对于4个节点的有向图,当路的长度超过3 时,必定不是通路,所以从顶点\(v_3\)​ 到\(v_1\) 的通路共有两条:\((v_3, v_4, v_1)\)和$(v_3, v_2, v_4, v_1) $ 。

二、可达矩阵

定义2 设G=(V,E)是一个,节点集合\(V = \{ v_1, v_2, \dots, v_n\}\),令\(P(G) =[p_{ij}]_{n \times n}\) ,其中:

\[p_{ij} =\begin{cases} 1 \quad &若从 v_i可达 v_j\\ 0 \quad &若从 v_i不可达 v_j \end{cases} \]

则称 \(P(G)\) 为G 的可达矩阵

可达矩阵用于描述一个图中,任一节点到另一节点之间是否存在路。由于在图中「两个结点之间有路」,则「必存在长度小于等于 \(n−1\) 的通路」。另外,一般认为「同一个结点到自身可达」。因此,可用以下公式计算 $$P(G) = [p_{ij} ]_{n\times n} = A^0 \lor A^1 \lor \cdots \lor A^{n - 1}$$
其中,\(A^0\) 是$ n\times n$的单位矩阵, \(∨ \lor ∨\) 是析取(或逻辑加/并)运算。即「顶点 \(v_i\)到达\(v_j\)有长度为零的路、或有长度为1 的路、……、或有长度为 \(n−1\) 的路」,这些路可能是通路、可能不是,但其中至少存在一条通路

【例4】设有向图D=(V,E),请回答下列问题。

(1)图 D 中\(v_1\)到\(v_3\) 长度为3的通路有多少条?
(2)图 D 是哪种类型的连通图?
解:
(1) D 的邻接矩阵及其幂次为:

\(A^0\) \(A^1\) \(A^2\) \(A^3\)
$\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} $ \(\begin{bmatrix} 0 & 1 & 1 & 1\\\ 1 & 0 & 1 & 0\\ 0 & 0 & 0 & 1\\ 0 & 0 & 0 & 0 \end{bmatrix}\) \(\begin{bmatrix} 1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 2 \\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 \end{bmatrix}\) \(\begin{bmatrix} 0 & 1 & 1 & 2\\ 1 & 0 & 1 & 1\\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 \end{bmatrix}\)

由 \(A^3[1][4] = 2\) 知, $v_1 $ 到\(v_4\)​ 共有两条长度为3的路,计算过程如下:

\begin{aligned} A^3[1][4] &= A^2[1][1] \times A[1][4] + A^2[1][2] \times A[2][4] \\ &+ A^2[1][3] \times A[3][4] + A^2[1][4] \times A[4][4] \\ &= 1 \times 1 + 0 \times 0 + 1 \times 1 + 1 \times 0 = 2 \end{aligned}

\begin{aligned} A^2[1][1] &= A[1][1] \times A[1][1] + A[1][2] \times A[2][1] \\ &+ A[1][3] \times A[3][1] + A[1][4] \times A[4][1] \\ &= 0 \times 0 + 1 \times 1 + 1 \times 0 + 1 \times 0 = 1 \end{aligned}

\begin{aligned} A^2[1][3] &= A[1][1] \times A[1][3] + A[1][2] \times A[2][3] \\ &+ A[1][3] \times A[3][3] + A[1][4] \times A[4][3] \\ &= 0 \times 1 + 1 \times 1 + 1 \times 0 + 1 \times 0 = 1
\end{aligned}
即这两条长度为 3 的路为\((v_1,v_2, v_1, v_4)\)和\((v_1,v_2, v_3, v_4)\) 。其中\((v_1,v_2, v_3, v_4)\) 是一条通路,所以 D 中 \(v_1\)到\(v_4\)长度为 3的通路有一条。
(2)计算 D 的可达矩阵。显然D 不是强连通的,因为\(v_3\)到 $ v_1$是不可达的;D是单侧连通的(即对于任意顶点偶对,至少一个节点到另一个节点是可达的)。

\(P\) \(P^T\) \(P\or P^T\)
\(P = A^0 \lor A^1 \lor A^2 \lor A^3 =\begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \\0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 1 \end{bmatrix}\) \(\begin{bmatrix} 1 & 1 & 0 & 0 \\ 1 & 1 & 0 & 0 \\ 1 & 1 & 1 & 0 \\ 1 & 1 & 1 & 1 \end{bmatrix}\) \(\begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \end{bmatrix}\)

三、赋权矩阵

加权有向图的带权邻接矩阵

若为有向图D=(V,E)的每条边赋予一个权数,则称D为加权有向图。
设D=(V,E)是一个简单加权有向图,$V={ν_1​,ν_2​,...,ν_n\​},则D的邻接矩阵 \(A=(a_{ij})_{n×n}\)​,其中

\[a_{ij}= \begin{cases} w\_{ij},若(v_i,v_j)\in E且w_{ij}是它的权\\ 0,若i = j\\ \infty,若(v_i,v_j)\notin E \end{cases} ​\]

【例5】给出有向图D=(V,E)的赋权矩阵。

图D 权矩阵

四、关联矩阵

4.1 无向图的关联矩阵

设 G=(V,E)是一个无向图,\(V=\{v_1​,v_2​,...,v_n\}\),\(E=\{e_1,e_2,...,e_m \}\),则 G的关联矩阵 \(M=(m_{ij})_{n×m}\),
其中

\[m_{ij}=\begin{cases} 2,若e_j 是v_i 上的环\\ 1 , 若v_i 与 e_j 相关联\\ 0,若v_i 与 e_j 不相关联 \end{cases} \]

无向图的关联矩阵每一列的元素之和为2,且第\(i\)行的元素之和是\(ν_i\)​的次数,简单图的关联矩阵是(0,1)矩阵。

【例6】给出无向图D=(V,E)的关联矩阵。

无向图 关联矩阵

4.2 有向图的关联矩阵

设 G=(V,E)是一个有向图,\(V=\{v_1​,v_2​,...,v_n\​}\),\(E=\{e_1,e_2,...,e_m\}\),则 G的关联矩阵\(M=(m_{ij})_{n×m}\)​,
其中

\[ m_{ij}= \begin{cases} 1,若v_i 是e_j的起点\\ -1 , 若v_i 是e_j的终点\\ 0,其他 \end{cases} $$​ 有向图的关联矩阵每一列之和为零;每一行“1”的数目是对应顶点的出次,“-1”的数目是对应顶点的入次;完全为“0”的行对应的顶点是孤立点。 **【例7】**给出有向图D=(V,E)的赋权矩阵。 | 有向图 | 关联矩阵 | | ---- | ---- | | ![](/i/l/?n=23&i=blog/2835440/202306/2835440-20230614233516723-505906790.png) |![](/i/l/?n=23&i=blog/2835440/202306/2835440-20230614233544211-212753348.png) | ###参考文献 [离散数学】图论 第七章(3) 图的矩阵表示](https://memcpy0.blog.csdn.net/article/details/121672837?spm=1001.2101.3001.6650.17&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-17-121672837-blog-104685794.235%5Ev38%5Epc_relevant_anti_t3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-17-121672837-blog-104685794.235%5Ev38%5Epc_relevant_anti_t3&utm_relevant_index=21) [系列之图论(2):图的矩阵表示](https://blog.csdn.net/weixin_44225182/article/details/121043870)\]

标签:begin,有向图,end,模型,矩阵,times,ij,bmatrix,结构
From: https://www.cnblogs.com/haohai9309/p/17478300.html

相关文章

  • R语言HAR和HEAVY模型分析高频金融数据波动率|附代码数据
    全文链接:http://tecdat.cn/?p=19129最近我们被客户要求撰写关于HAR和HEAVY模型的研究报告,包括一些图形和统计输出。在本文中,在学术界和金融界,分析高频财务数据的经济价值现在显而易见。摘要它是每日风险监控和预测的基础,也是高频交易的基础。为了在财务决策中高效利用高频数据......
  • m基于MPC模型预测控制算法的永磁直线同步电机控制系统simulink仿真,MPC分别使用工具箱
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要MPC(ModelPredictiveControl)模型预测控制算法是一种先进的控制算法,能够有效地解决非线性、多变量、约束条件等复杂系统的控制问题。永磁直线同步电机是一种高性能、高效率的电机,广泛应用于机器人、医疗设备、工业......
  • m基于MPC模型预测控制算法的永磁直线同步电机控制系统simulink仿真,MPC分别使用工具箱
    1.算法仿真效果matlab2022a仿真结果如下:  2.算法涉及理论知识概要      MPC(ModelPredictiveControl)模型预测控制算法是一种先进的控制算法,能够有效地解决非线性、多变量、约束条件等复杂系统的控制问题。永磁直线同步电机是一种高性能、高效率的电机,广泛应用于机......
  • 【剑指Offer】19、顺时针打印矩阵
    【剑指Offer】19、顺时针打印矩阵题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4X4矩阵:12345678910111213141516则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.解题思路:由于是按照从外到内的顺序依次打......
  • 【数据结构】部分易考知识点回顾
    期末实验考试一共线性表、树和查找、图、排序四道题。据说需要重点复习二叉树的遍历与哈希表。目前还没写完,龟速更新中。。。线性表&栈&队列顺序栈表达式求值核心逻辑核心算法是一个循环,每次读入一个元素:可能是一个数或一个符号(运算符、左右括号和结束符)括号包着的是一......
  • 不用写代码神器!教你用4行命令轻松使用nnUNet训练自己的医学图像分割模型
    给定某个数据集,nnU-Net完全自动执行整个分割过程,包括数据预处理到模型配置、模型训练、后处理到集成的整个过程,而不需要人为干预。此外,训练好的模型还可以应用到测试集中进行推理。博主强烈建议:做医学图像分割的任何人,都必须要会使用nnU-Net理由2个:首先用nnU-Net测试一下。看一下该......
  • nnUNet实战一使用预训练nnUNet模型进行推理
    nnU-Net到底怎么使用,好不好用,我们看一个实战例子本次实战项目为使用预训练nnU-Net模型进行推理数据集:医学分割十项全能的前列腺数据集(Prostate)本系列还有1论文解读-nnU-Net:Self-adaptingFrameworkforU-Net-BasedMedicalImageSegmentation(附实现教程)2nnU-Net如何安......
  • 深度学习用于疾病预后-第二课第二周第1-5节-基于树的模型用于医学预后
    本周,我们将使用决策树(DecisionTrees)构建我们的第一个机器学习模型。树(trees)在医学应用中非常有用的的原因是:1️⃣它们处理连续和分类数据的能力,2️⃣它们的可解释性以及训练速度。我们将使用树来模拟在医学数据中观察到的非线性(non-linear)关系。当然,我们将构建我们的第一个基于机......
  • django 更改了modules.py 数据库模型,但是 python3 manage.py makemigrations 提示无
    现象:明明改了modules.py文件。删了appname/migrations/下所有内容。而且也删除了django模型变更记录表django_migrations中appname项目的记录 原因:删多了: appname/migrations/下所有内容。__init__.py不能删,需要重新创建一个,否则识别不了包了  ......
  • 如何度量两幅图像的相似度--结构相似度 SSIM 原理及代码
    本文目录文章目录1.什么是SSIM2.SSIM有什么用3.使用pytorch计算SSIM3.1二维图像SSIM计算3.1.1准备工作3.1.2官网的第一个案例3.1.3官网的第二个案例3.2在图片上写字,并制作GIF3.2.1使用Python在图片上写字3.2.2制作GIF3.33D图像的SSIM计算和loss1.什么是S......