图的矩阵表示


(2) ( aij ) 表示从结点 vi到结点 vj的长度为 2 的路的数
a
( 3) ij
aik a
k 1
( 2) kj
(a ) 即 一般地有
( 3) ij nn
( A(G)) ( A(G)) ( A(G))
3
2
。
(l ) (aij ) nn
a11 a12 a a 22 21 l ( A(G )) a n1 a n 2
用图形表示图的方法,关于结点间的通路很容 易在图形中看出来,但在邻接矩阵中就需经过计算, 不过,可以在计算机中处理。设有向图G的结点集 V={v1,v2,…vn} ,它的邻接矩阵为: A(G)=(aij)n×n , 现在我们来计算从结点vi到结点vj的长度为2的路的 数目。注意到每条从结点vi到结点vj的长度为2的路 的中间必经过一个结点 vk ,即 vi→vk→vj(1≤k≤n) , 如 果 图 中 有 路 vivkvj 存 在 , 那 么 aik=akj=1 , 即 aik· akj=1 , 反 之 如 果 图 G 中 不 存 在 路 vivkvj , 那 么 aik=0 或 akj=0 ,即 aik· akj=0 ,于是从结点 vi 到结点 vj 的长度为2的路的数目等于:
7-3 图的矩阵表示
矩阵是研究图的一种有力工具,特别是利用计 算机来处理有关图的算法时,首先遇到的难题是 如何识别图?在前面我们也用有向图来表示集合 A 中元素的关系 R ,这种图被称为关系图,表示 了集合A中元素的邻接关系,只要将集合A中的元 素进行编号,这样的邻接关系同样可以用矩阵表 示。识别一个图等价于识别一个矩阵。我们要讨 论前面的有关图的概念,如何在矩阵中表达出来。
我们讨论的是简单图,并令图的结点已经 编号。 定义7-3.1 设 G=〈V , E〉为简单图,它有 n 个结点 V={v1,v2,…vn } ,,则 n 阶方阵 A(G)=(aij) 称为G的邻接矩阵。 其中
1, vi adj v j ; aij 0, vi nadj v j , 或 i j .
当一个图是有向图时,亦可用结点和边的关 联矩阵来表示。 定义7-3.4 给定简单有向图 G=〈V , E〉 , V={v1,v2,…vp} , E={e1,e2,…eq} , p×q 阶 矩 阵 M(G)=(mij) , 其中
1, 在G中vi 是e j的起点 mij 1, 在G中vi 是e j的终点 0, 在G中v 不关联e i j
从本例的计算可以看到,如果把邻接矩阵 看作是结点集V上关系R的关系矩阵,则 可达性矩阵P即为MR+,因此可达矩阵亦 可用Warshall 算法计算。 Warshall 算法略。
上述可达性矩阵的概念可以推广到无向图 中,只要将无向图的每一条边看成是具 有相反方向的两条边,这样,一个无向 图就可以看成是有向图。无向图的邻接 矩阵是一个对称矩阵,其可达矩阵称为 连通矩阵,也是一个对称矩阵。 对于一个无向图 G ,除了可用邻接矩阵以 外,还对应着一个称为图G的完全关联矩 阵,假定图G无自回路,如因某种运算得 到自回路,则将它删去。
图7-3.1 图的邻接矩阵及置换
0 0 A(G1 ) 1 1 1 0 1 0 0 1 0 0 0 1 1 0 0 1 A(G2 ) 1 0 0 0 1 1 1 0 0 0 1 0 1 0
一般地说,我们把一个n阶方阵A的某些列 作一置换,再把相应的行作同样的置换, 得到一个新的 n 阶方阵 A’ ,我们称 A 和 A’ 为置换等价。有向图的结点,按不同次 序所写出来的邻接矩阵是彼此置换等价 的,今后我们略去这种元素次序的任意 性,可取任何一个邻接矩阵作为该图的 矩阵表示。
可达性矩阵表明了图中任意两个结点间是 否至少存在一条路以及在任何结点上是 否存在回路。 一般地讲可由图G的邻接矩阵A得到可达性 矩阵 P 。即令 Bn =A+A2+…+An ,在从 Bn 中将不为 0 的元素改为 1 ,而为零的元素 不变,这样改换的矩阵即为可达性矩阵P。
例题1 见P292
上述计算可达性矩阵的方法还是比较复杂, 因为可达性矩阵是一个元素为 0或1的布尔 矩阵,由于在每个 Al 中,对于两个结点间 的路的数目不感兴趣,它所关心的是该两 个结点间是否有路存在,因此我们可将矩 阵 A , A2 , … , An 分别改为布尔矩阵 A , A(2) , … , A(n) ,故 P= A∨A(2)∨…∨A(n) , 其中A(i)表示在布尔运算下A的i次方。
adj 表示邻接,nadj 表示不邻接。
图7-3.1
例如图7-3.1 (a)的邻接矩阵为:
0 1 A(G ) 1 1 1 1 0 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 0
当给定的简单图是无向图时,邻接矩阵为 对称的,当给定的图是有向图时,邻接 矩阵不一定对称。图G的邻接矩阵显然与 结点标定的次序有关,例如在图 7-3.1 的 两个图 (b) 与图 (c) 中的结点 v1 和 v2 的次序 对调, 那么新的邻接矩阵由原来的邻接矩 阵的第一行和第二行对调, 第一列和第二 列对调而得到。
a1n a11 a12 l 2 a 2 n a 21 a 22 a nn a n1 a n 2
a1n a2n a nn
上述这个结论对无向图也成立。
定理7-3.1 设A(G)为图G的邻接矩阵,则(A(G))l中的 i行j列元素等于G中联结vi与vj的长度为l的路的数目。 证明 对l施归纳法 当l =2时,由上得知是显然成立。 设命题对l成立,由 ( A(G)) l 1 A(G) ( A(G)) l n 故 ( l 1) (l )
从邻接接矩阵 A 中表示了图的基本概念和许多图 的性质。第i行的元素是由结点vi出发的边所决 定的,第i行第j列为1的的元素,表示了在vi和vj 之间有边相连,即存在 (vi , vj) ;第i 行中值为 1 的元素的数目等于从vi出发的出度;第j列中值 为1的元素的数目等于从vj进入的入度。 如果给定的图是零图,则其对应的矩阵中所有的 元素都为零,它是一个零矩阵,反之亦然,即 邻接矩阵为零矩阵的图必是零图。
定义7-3.2 令G=〈V,E〉是一个简单有向图,|V|=n, 假定 G 的结点已编序,即 V={v1,v2,…vn} , 定义一个n×n矩阵 。其中
P ( pij )
1, 从vi到v j 至少存在一条路 P ij 0, 从 vi到v j 不存在路 称矩阵P 是图 G的可达性矩阵。
(a )
( 2) ij nn
目。 (2) ( aii ) 表示从结点 vi到结点 vi的长度为 2的回路的 数目。 从结点vi到结点vj的一条长度为3的路,可以看作 从结点vi到结点vk的长度为1的路,在联结从结 点vk到结点vj的长度为2的路,故从结点vi到结 点vj的一条长度为 3 的路的数目: n
定义7-3.3 给定无向图 G ,令 v1,v2,…,vp 和 e1,e2,…,eq 分别记为G的结点和边,则矩阵 M(G)=(mij ),其中
1, 若vi 关联e j mij 0 , 若 v 不关联 e i j
称M(G)为完全关联矩阵。
⑴图中每一关联两个结点,故M(G)的每一 列只有两个1。 ⑵每一行元素的和数对应于结点的度数。 ⑶一行中的元素全为0,其对应的结点为孤 立点。 ⑷两个平行边其对应的两列相同。 ⑸同一图当结点或边的编序不同,其对应 M(G)仅有行序、列序的差别。
aij
a
k定义aik表示联结vi与vk长度为1的路 的数目,而是联结 vk 与 vj 长度为 l 的路的数目,上式的 每一项表示由 vi 经过一条边到 vk ,再由 vk 经过长度为 l 的路到 vj 的,总长度为 l+1 的路的数目。对所有的 k 求 和,即是所有从 vi 到 v 的长度为 l+1 的路的数目,故命 题对l+1成立。
ai1 a1 j ai 2 a2 j ain anj aik akj
k 1
n
按照矩阵的乘法规则,这恰好是矩阵 2 ( A ( G )) 中的第i行,第j列的元素。
a11 a12 a a 21 22 2 ( A(G)) a n1 a n 2 a1n a11 a12 a a a2n 21 22 a nn an1 a n 2 a1n a2n a nn
称M(G)为G的关联矩阵。
作业
P300 (3), (4) 选作
例1 给定一图G=〈V,E〉如图7-3.3所示。 见P290
从上面的矩阵中我们可以看到一些结论,如v1与v2 之间有两条长度为 3 的路,结点 v1 与 v3 之间有一 条长度为2的路,在结点v2有四条长度为4的回路。 在许多问题中需要判断有向图的一个结点vi到另一 个结点vj 是否存在路的问题。如果利用图 G的邻 接矩阵A,则可计算A, A2 , A3 , … , An , … , 当发现其中的某个Al的 ≥1,就表明结点vi到vj (l ) a 可达。但这种计算比较繁琐,且 Al不知计算到何 ij 时为止。从前面我们得知,如果有向图 G 有 n 个 结点 V={v1,v2,…vn} , vi 到 vj 有一条路,则必有一 (l ) a 条长度不超过n的通路,因此只要考察 ij 就 可以了,其中(1≤l≤n)。对于有向图G中任意两个 结点之间的可达性,亦可用可达矩阵表达。
合集下载

图的矩阵表示及习题-答案讲解

图的矩阵表示及习题-答案讲解

177图的矩阵表示图是用三重组定义的,可以用图形表示。

此外,还可以用矩阵表示。

使用矩阵表示图,有利于用代数的方法研究图的性质,也有利于使用计算机对图进行处理。

矩阵是研究图的重要工具之一。

本节主要讨论无向图和有向图的邻接矩阵、有向图的可达性矩阵、无向图的连通矩阵、无向图和有向图的完全关联矩阵。

定义9.4.1 设 G =<V ,E >是一个简单图,V =⎨v 1,v 2,…,v n ⎬ A (G )=(ij a ) n ×n其中:1j i v v v v a j i j i ij =⎩⎨⎧=无边或到有边到 i ,j =1,…,n称A (G )为G 的邻接矩阵。

简记为A 。

例如图9.22的邻接矩阵为:⎪⎪⎪⎪⎪⎭⎫⎝⎛=0111101011011010)(G A 又如图9.23(a)的邻接矩阵为:⎪⎪⎪⎪⎪⎭⎫⎝⎛=0001101111000010)(G A 由定义和以上两个例子容易看出邻接矩阵具有以下性质:①邻接矩阵的元素全是0或1。

这样的矩阵叫布尔矩阵。

邻接矩阵是布尔矩阵。

②无向图的邻接矩阵是对称阵,有向图的邻接矩阵不一定是对称阵。

178③邻接矩阵与结点在图中标定次序有关。

例如图9.23(a)的邻接矩阵是A (G ),若将图9.23(a)中的接点v 1和v 2的标定次序调换,得到图9.23(b),图9.23(b)的邻接矩阵是A ′(G )。

⎪⎪⎪⎪⎪⎭⎫⎝⎛='0010101100011100)(G A 考察A (G )和A ′(G )发现,先将A (G )的第一行与第二行对调,再将第一列与第二列对调可得到A ′(G )。

称A ′(G )与A (G )是置换等价的。

一般地说,把n 阶方阵A 的某些行对调,再把相应的列做同样的对调,得到一个新的n 阶方阵A ′,则称A ′与A 是置换等价的。

可以证明置换等价是n 阶布尔方阵集合上的等价关系。

虽然,对于同一个图,由于结点的标定次序不同,而得到不同的邻接矩阵,但是这些邻接矩阵是置换等价的。

图的矩阵表示

图的矩阵表示

4 4
2 6
6 51 215
1设G=<V,E>是简单图,令V={v1,v2,v3,…,vn}, G的
10 2 2 0 b)每行中1的个数为对应结点 1 vi与ej关联 12 0 0 2 从邻接矩阵看图的性质: 1 vi与vj邻接, 即(vi,vj)∈E 或 < vi,vj >∈E
010 01 0 0110
00010
01001
00010
01001
P=A∨A(2)∨A(3)∨A(4)∨A(5) A(5)=A(3)
11111 01011 P= 11111 01011 01011
G2 v1 v3
3*.用可达矩阵求强分图.
出有两个强分图:{v1,v3}和{v2,v4,v5} 下面看怎样用P求强分图.
例如,G2如图所示, 求它的 可达矩阵P.
G2
v1
v2
v3
v4
v5
00100
10010
01101
10010
00010
01011
01011
01011
A= 10010 A(2) = 01101 A(3) = 10010 A(4) = 01101 =A(2)
01001
00010
01000
00010
用的例v4求度如0传 数 ,0给递.0定0闭无1包0向的1图WGa1rs和ha有ll算向法1图0,G见012P如1116图610.所0示0:
21111
v1
1310
2
v2
v3
例 b这p)ij每如是= 行p,以T给中i结j定=1点1的A无与个向(结G 数图点为G1之)1对和间应有的结向邻点1图0接G1关12如系00图确00所定1示的1:矩阵.

离散数学课程设计.图的矩阵表示及基本运算

离散数学课程设计.图的矩阵表示及基本运算

中国矿业大学软件开发基础实践报告姓名: xxs 学号: bbaa0edf 专业:计算机科学与技术指导教师: sjc 职称: js(仅供徐海计算机参考哈哈哈哈)2012 年 6 月 20 徐州目录第一章实验概述 (3)1.1实验目的 (3)1.2实验内容 (3)1.3实验环境 (3)第二章实验原理和实现过程 (4)2.1实验原理 (4)2.1.1建立图的邻接矩阵,判断图是否连通 (4)2.1.2 计算任意两个结点间的距离 (4)2.1.3对不连通的图输出其各个连通支 (5)2.2实验过程(算法描述) (5)2.2.1 程序整体思路 (5)2.2.2具体算法流程 (5)第三章实验数据及结果分析 (7)3.1建立图的邻接矩阵并判断图是否连通的功能测试及结果分析 (7)3.1.1输入无向图的边 (7)3.1.2建立图的连接矩阵 (8)3.2其他功能的功能测试和结果分析 (9)3.2.1计算节点间的距离 (9)3.2.2判断图的连通性 (9)3.2.3输出图的连通支 (10)3.2.4退出系统 (10)第四章实验收获和心得体会 (11)4.1实验收获 (11)4.2心得体会 (12)第五章实验源程序清单 (13)5.1程序代码 (13)第一章实验概述1.1 实验目的理解图论的基本概念,图的矩阵表示,图的连通性,图的遍历,以及求图的连通支方法。

通过实验,帮助学生更好地掌握计算机科学技术常用的离散数学中的概念、性质和运算,培养逻辑思维;通过实验提高学生编写实验报告、总结实验结果的能力,提高理论联系实际的能力;使学生具备程序设计的思想,能够独立完成简单的算法设计和分析。

1.2 实验内容以偶对的形式输入一个无向简单图的边,建立该图的邻接矩阵,判断图是否连通(A),并计算任意两个结点间的距离(B),对不连通的图输出其各个连通支(C)。

注意:题目类型分为A,B,C三类,其中A为基本题,完成A类题目可达到设计的基本要求,其他均为加分题,并按字母顺序分数增加越高。

图基本算法图的表示方法邻接矩阵邻接表

图基本算法图的表示方法邻接矩阵邻接表

图基本算法图的表⽰⽅法邻接矩阵邻接表 要表⽰⼀个图G=(V,E),有两种标准的表⽰⽅法,即邻接表和邻接矩阵。

这两种表⽰法既可⽤于有向图,也可⽤于⽆向图。

通常采⽤邻接表表⽰法,因为⽤这种⽅法表⽰稀疏图(图中边数远⼩于点个数)⽐较紧凑。

但当遇到稠密图(|E|接近于|V|^2)或必须很快判别两个给定顶点⼿否存在连接边时,通常采⽤邻接矩阵表⽰法,例如求最短路径算法中,就采⽤邻接矩阵表⽰。

图G=<V,E>的邻接表表⽰是由⼀个包含|V|个列表的数组Adj所组成,其中每个列表对应于V中的⼀个顶点。

对于每⼀个u∈V,邻接表Adj[u]包含所有满⾜条件(u,v)∈E的顶点v。

亦即,Adj[u]包含图G中所有和顶点u相邻的顶点。

每个邻接表中的顶点⼀般以任意顺序存储。

如果G是⼀个有向图,则所有邻接表的长度之和为|E|,这是因为⼀条形如(u,v)的边是通过让v出现在Adj[u]中来表⽰的。

如果G是⼀个⽆向图,则所有邻接表的长度之和为2|E|,因为如果(u,v)是⼀条⽆向边,那么u会出现在v的邻接表中,反之亦然。

邻接表需要的存储空间为O(V+E)。

邻接表稍作变动,即可⽤来表⽰加权图,即每条边都有着相应权值的图,权值通常由加权函数w:E→R给出。

例如,设G=<V,E>是⼀个加权函数为w的加权图。

对每⼀条边(u,v)∈E,权值w(u,v)和顶点v⼀起存储在u的邻接表中。

邻接表C++实现:1 #include <iostream>2 #include <cstdio>3using namespace std;45#define maxn 100 //最⼤顶点个数6int n, m; //顶点数,边数78struct arcnode //边结点9 {10int vertex; //与表头结点相邻的顶点编号11int weight = 0; //连接两顶点的边的权值12 arcnode * next; //指向下⼀相邻接点13 arcnode() {}14 arcnode(int v,int w):vertex(v),weight(w),next(NULL) {}15 arcnode(int v):vertex(v),next(NULL) {}16 };1718struct vernode //顶点结点,为每⼀条邻接表的表头结点19 {20int vex; //当前定点编号21 arcnode * firarc; //与该顶点相连的第⼀个顶点组成的边22 }Ver[maxn];2324void Init() //建⽴图的邻接表需要先初始化,建⽴顶点结点25 {26for(int i = 1; i <= n; i++)27 {28 Ver[i].vex = i;29 Ver[i].firarc = NULL;30 }31 }3233void Insert(int a, int b, int w) //尾插法,插⼊以a为起点,b为终点,权为w的边,效率不如头插,但是可以去重边34 {35 arcnode * q = new arcnode(b, w);36if(Ver[a].firarc == NULL)37 Ver[a].firarc = q;38else39 {40 arcnode * p = Ver[a].firarc;41if(p->vertex == b) //如果不要去重边,去掉这⼀段42 {43if(p->weight < w)44 p->weight = w;45return ;46 }47while(p->next != NULL)48 {49if(p->next->vertex == b) //如果不要去重边,去掉这⼀段50 {51if(p->next->weight < w);52 p->next->weight = w;53return ;54 }55 p = p->next;56 }57 p->next = q;58 }59 }60void Insert2(int a, int b, int w) //头插法,效率更⾼,但不能去重边61 {62 arcnode * q = new arcnode(b, w);63if(Ver[a].firarc == NULL)64 Ver[a].firarc = q;65else66 {67 arcnode * p = Ver[a].firarc;68 q->next = p;69 Ver[a].firarc = q;70 }71 }7273void Insert(int a, int b) //尾插法,插⼊以a为起点,b为终点,⽆权的边,效率不如头插,但是可以去重边74 {75 arcnode * q = new arcnode(b);76if(Ver[a].firarc == NULL)77 Ver[a].firarc = q;78else79 {80 arcnode * p = Ver[a].firarc;81if(p->vertex == b) return; //去重边,如果不要去重边,去掉这⼀句82while(p->next != NULL)83 {84if(p->next->vertex == b) //去重边,如果不要去重边,去掉这⼀句85return;86 p = p->next;87 }88 p->next = q;89 }90 }91void Insert2(int a, int b) //头插法,效率跟⾼,但不能去重边92 {93 arcnode * q = new arcnode(b);94if(Ver[a].firarc == NULL)95 Ver[a].firarc = q;96else97 {98 arcnode * p = Ver[a].firarc;99 q->next = p;100 Ver[a].firarc = q;101 }102 }103void Delete(int a, int b) //删除以a为起点,b为终点的边104 {105 arcnode * p = Ver[a].firarc;106if(p->vertex == b)107 {108 Ver[a].firarc = p->next;109 delete p;110return ;111 }112while(p->next != NULL)113if(p->next->vertex == b)114 {115 p->next = p->next->next;116 delete p->next;117return ;118 }119 }120121void Show() //打印图的邻接表(有权值)122 {123for(int i = 1; i <= n; i++)124 {125 cout << Ver[i].vex;126 arcnode * p = Ver[i].firarc;127while(p != NULL)128 {129 cout << "->(" << p->vertex << "," << p->weight << ")";130 p = p->next;131 }132 cout << "->NULL" << endl;133 }134 }135136void Show2() //打印图的邻接表(⽆权值)137 {138for(int i = 1; i <= n; i++)140 cout << Ver[i].vex;141 arcnode * p = Ver[i].firarc;142while(p != NULL)143 {144 cout << "->" << p->vertex;145 p = p->next;146 }147 cout << "->NULL" << endl;148 }149 }150int main()151 {152int a, b, w;153 cout << "Enter n and m:";154 cin >> n >> m;155 Init();156while(m--)157 {158 cin >> a >> b >> w; //输⼊起点、终点159 Insert(a, b, w); //插⼊操作160 Insert(b, a, w); //如果是⽆向图还需要反向插⼊161 }162 Show();163return0;164 }View Code 邻接表表⽰法也有潜在的不⾜之处,即如果要确定图中边(u,v)是否存在,只能在顶点u邻接表Adj[u]中搜索v,除此之外没有其他更快的办法。

离散数学第8章 图论

离散数学第8章 图论
ij
为d(vi,vj)。
8.2
图的矩阵表示
一、图的邻接矩阵 二、图的连接矩阵
三、图的关联矩阵
二、图的连接矩阵 定义 8-9 设图 G= ( V , E ),其中 V={v1 ,
v2 , … , vn } , n 阶方阵 C= ( cij ),称为图 G 的连接 矩阵,其中第i行j列的元素
1 c ij 0
利用邻接矩阵,我们可以 (1)判断G中任意两个结点是否相连接;
方法是:对 l=1,2,…,n–1,依次检查Al的(i,j)
项元素
(l ( ) ij)是否为0,若都为0,那么结点v 与v 不 a ij i j
相连接,否则vi与vj有路相连接。 (2)计算结点vi与vj之间的距离。
(1) ( 2) ( n 1) 中至少有一个不为0, 若 aij , aij , , aij 则可断定vi与vj相连接,使 a (l ) 0 的最小的 l 即
若中有相同的结点,设为ur= uk(r<k),则子路ur+1…uk可以从 中删去而形成一条较短的路= viu1…ur uk+1…uh–1 vj,仍连接vi到 vj 。 若中还有相同的结点,那么重复上述过程又可形成一条 更短的路,…。这样,最后必得到一条真路,它连接vi到vj, 并短于前述任一非真路。因此,只有真路才能是短程。
非真 生成
真 生成
真 非生成
非真 非生成
真 非生成
七、路与回路 定义:图G中l条边的序列{v0,v1}{v1,v2}…{vl–1,vl}称为连
接v0到vl的一条长为 l 的路。它常简单地用结点的序列 v0v1v2…vl–1vl来表示。其中v0和vl分别称为这条路的起点和终点。 开路:若v0vl,则称路v0v1v2…vl–1vl为开路; 回路:若v0=vl,则称路v0v1v2…vl–1vl为回路; 真路:若开路v0v1v2…vl–1vl中,所有结点互不相同(此时所有 边也互不相同),则称该路为真路; 环:在回路v0v1v2…vl–1v0中,若v0,v1,v2,…,vl–1 各不相同 (此时所有边也互不相同),则称该回路为环。

图形变换的矩阵方法

图形变换的矩阵方法

⒉当a≠d,图形产生畸变
A 0 0
例:设正方形ABCD的矩阵为
B C
2
2
0
2
D
0
2
设
T
1.5
0
0 2
,对□ABCD进行变换:
A0 0
0 0A
B2 C2 D0
0 2 2
1.5
0
0 2
3 3 0
0 B 4 C 4 D
D′
D A
A′
C′
C
B B′
㈠比例变换(缩放变换)
11
x
ya0
d0axby
并规定:①逆时针方向旋转时角度θ取正值;
②顺时针方向旋转时角度θ取负值。
变换T 矩 阵 csoinscsions
A
例:设矩形ABCD对应的矩阵为 B
0
2
0
0
D′ D
C′ C
C 2 1 .5
B′
设θ=30°
D
0
1
.
5
A′A
B
co3s0si3n0 0.866 0.5
Tsi3n0co3s0 0.5 0.86 6
变换
·
矩阵
变换后的 = 图形顶点
坐标矩阵
本章讨论的问题:如何利用变换矩阵实现对二维、三 维图形的各种变换。
§2 二维图形变换
5
分为两类:二维基本变换,二维组合变换。 二维基本变换:比例变换(缩放)、对称变换、错 切变换、旋转变换、平移变换。 二维组合变换:由多种基本变换组合而成的变换。 一、二维基本变换 矩阵变换法的形式为:
❖ 对坐标轴的对称变换 x轴:T10
0 1
y轴:T01
0 1

度矩阵 邻接矩阵

度矩阵邻接矩阵度矩阵和邻接矩阵是图论中比较常见的两种矩阵表示方法。

度矩阵是表示无向图和有向图的一种矩阵,它是一个n*n的矩阵,其中n表示图中顶点的个数。

度矩阵主要表示每个顶点的度数(即与该顶点相邻的边的条数)。

对于无向图来说,度矩阵的对角线上的元素代表各个顶点的度数;对于有向图来说,度矩阵的每个元素代表出度与入度之和。

邻接矩阵是图的一种矩阵表示方式,它是一个n*n的矩阵,其中n表示图中顶点的个数。

邻接矩阵记录了每一对顶点之间是否有边相连,若有则为1,否则为0。

对于无向图来说,邻接矩阵为对称矩阵;对于有向图来说,邻接矩阵则不一定对称。

下面我们将分别介绍度矩阵和邻接矩阵的特点和应用。

一、度矩阵度矩阵主要有以下几个特点:1. 度矩阵是一个对角矩阵,对角线上的元素分别表示每个顶点的度数。

2. 对于无向图来说,度矩阵的对角线上的元素为非负整数;对于有向图来说,度矩阵的每个元素为整数。

3. 度矩阵与邻接矩阵之间可以相互转换。

若邻接矩阵为A,则度矩阵为D=diag(d1,d2,d3,...,dn),其中di为第i个顶点的度数,即di=sum(A[i,j])。

4. 度矩阵可以用来计算图的一些性质,如图的正则性(若存在一对顶点,它们的度数相同,则称该图是正则图)、图的平均度数等。

5. 度矩阵还可以用来求解拉普拉斯矩阵,进而在谱聚类等领域得到广泛应用。

二、邻接矩阵1. 假设图中有n个顶点,邻接矩阵是一个n*n的方阵。

其中第i行第j列的元素表示顶点i到顶点j是否有一条边相连,若有则为1,否则为0。

2. 对于无向图来说,邻接矩阵是一个对称矩阵;对于有向图则不一定对称。

3. 邻接矩阵可以用来计算一些图的性质,如图的连通性、图的同构性等。

4. 邻接矩阵可以与度矩阵相互转换。

若度矩阵为D,则邻接矩阵为A={(i,j)|i与j 之间有边相连},其中A[i,j]为1表示i与j之间有边相连,否则为0。

对于无向图来说,A[i,j]=A[j,i],即邻接矩阵为对称矩阵。

图的表示方法

图的表示方法图是一种常用的数据结构,用于描述事物之间的关系或连接。

在计算机科学和信息技术领域,图的表示方法是研究和应用的关键。

本文将介绍图的常见表示方法,并探讨它们的特点和适用场景。

1. 邻接矩阵表示法邻接矩阵是一种使用二维矩阵表示图的方式。

其中矩阵的行和列分别对应图中的顶点,而矩阵的元素表示图中顶点之间的边。

如果两个顶点之间存在边,则矩阵对应位置的元素为1,否则为0。

如果图是有权重的,则可以将权重值存储在矩阵的元素中。

邻接矩阵的优点是简单直观,易于理解和实现。

它可以快速检查两个顶点之间是否存在边,时间复杂度为O(1)。

然而,邻接矩阵的缺点是占用空间较大,特别是对于稀疏图而言,大量的0元素浪费了存储空间。

2. 邻接表表示法邻接表是一种使用链表表示图的方式。

其中每个顶点都对应一个链表,链表中存储与该顶点相邻的顶点。

如果图是有权重的,则链表节点可以包含权重值。

邻接表的优点是占用空间较小,特别适用于表示稀疏图。

它可以快速访问和遍历某个顶点相邻的顶点,时间复杂度为O(k),其中k是顶点相邻的边的数量。

然而,邻接表的缺点是不方便检查两个顶点之间是否存在边,需要遍历链表。

3. 关联矩阵表示法关联矩阵是一种使用二维矩阵表示图的方式,其中矩阵的行对应顶点,列对应边。

关联矩阵中,如果顶点与边相连,则对应位置元素为1,否则为0。

关联矩阵的优点是可以较为直观地表示图的结构和关系。

它适用于表示有向图和无向图,以及多重图。

然而,关联矩阵的缺点是占用空间较大,尤其对于有大量顶点和边的图而言。

4. 边列表表示法边列表是一种使用列表表示图的方式。

其中列表中的每个元素存储边的信息,包括起点、终点和权重等。

对于有向图,边列表包含有向边的信息。

边列表的优点是比较节省存储空间,特别适合表示稀疏图。

它便于遍历和访问边的信息,但相应地,检查两个顶点之间是否有边的操作较为耗时。

综上所述,图的表示方法有邻接矩阵、邻接表、关联矩阵和边列表等多种形式,每种方法都有自己的特点和适用场景。

离散数学第七章图的基本概念


4.无向图的连通性
若无向图G中任何两顶点都连通,则称G是连通图.
对于任意的无向图G.设V1,V2,…,Vk是顶点之间连通关系的 等价类,则称他们的导出子图为G的连通分支.用p(G)表示G 的连通分支数.
V1 e1
e2 e3
V3
e4 V2
V4
a
de
h
i
b
c
f
g
5.有向图的连通性
若略去有向图D中各边的键头,所得无向图是无向连通图,则 称D是弱连通图(或称D是连通图).
(2) mij d (vi )(i 1,2,..., n)
j 1
mn
nm
n
(3) mij mij d(vi ) 2m
j1 i1
i1 j1
i 1
m
(4) mij 0 vi是孤立点 j 1
(5)若第j列与第k列相同, 则说明e j与ek为平行边.
2.有向图的关联矩阵
设有向图D=<V,E>,V={v1,v2,…,vn},E={e1,e2,…,em} 1, vi为ej的始点
e1,e2,e3},{e1,e2,
e2
e4},{e9}等边割集 ,e9是桥.
e3 V4
e5 e6
V5 e4
V6
e9
V7
7.3 图的矩阵表示
1.无向图的关联矩阵
设无向图G=<V,E>,V={v1,v2,…,vn},E={e1,e2,…,em}
令mij为顶点vi与ej的关联次数, 则称(mij)n×m为G的关联矩阵.记为M(G)
若Γ 满足:vi-1,vi为ei的端点(若G为有向图,vi-1是ei的始 点,vi是ei的终点)i=1,2,…,k,则称Γ 为G中通路,v0,vk分 别称为通路的始点和终点,Γ 中边的数目k称为通路长度.

CH7 图的基本概念 2 3 通路、回路、图的连通性

{e6},{e5},{e2,e3},{e1,e2},{e3 ,e4},{e1,e4},{e1,e3},{e2,e4} 都是割集, e6,e5是桥。
有向图的连通性
定义 设D=<V,E>为一个有向图。vi,vj∈V,若从 vi到vj存在通路,则称vi可达vj,记作vi→vj, 规定vi总是可达自身的,即vi→vi。 若vi→vj且vj→vi,则称vi与vj是相互可达的,记 作vi vj。 规定vivi。
设无向图G=<V,E>,V={v1,v2,· ,vn},E={e1,e2,· ,em}, · · · ·
令mij为顶点vi与边ej的关联次数,则称(mij)n×m为G的 关联矩阵,记为M(G)。
性质:P163
2.有向图的关联矩阵
设简单有向图
G=<V,E>,V={v1,v2,·· n},E={e1,e2,·· m}, 则称 ·,v ·,e (mij)n×m为G的关联矩阵,记为M(G)。其中,
性质:P164
3. 图的邻接矩阵
设图
G=<V,E>,V={v1,v2,·· n},E={e1,e2,·· m}, ·,v ·,e 则称(aij)n×m为G的邻接矩阵,记为A(G)。 其中, aij为vi邻接(到)vj的边的条数.
0 2 2 0 1 1 0 0
1 1 0 0
0 0 0 0
1 0 0 0
7.3 图的矩阵表示
图的表示:
数学定义 图形表示 矩阵表示 便于用代数知识来研究图的性质 便于用计算机处理 矩阵的行列有固定的顺序,因此在用矩阵表示图之 前,必须将图的顶点和边(如果需要)编号。 本节学习: • 图的关联矩阵 • 图的邻接矩阵 • 有向图的可达矩阵
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档