图的矩阵表示
定义 5-17 设 v1 , v2 ,vn 是无向图 G 的所有结点, 则 称矩阵 A (aij ) nn 为 G 的邻接矩阵 , 其中 aij 表示结 点 vi , v j 之间的边数 (i j ) , 当 (vi , v j ) 是环时 , aii 2 , 否则 aii 0
A (aij ) nn 为有向图 D 的邻接矩阵,其中 aij 是以 v i 为始
点, v j 为终点的边的条数。当 (vi , v j ) 是环时, aii 1 , 否则
aii 0 .
1 0 A 1 1
1 0 0 0
0 0 0 0
0 0 2 1
二.有向图的邻接矩阵表示
(i 1,2,, n) .
(2) aii () 的 值 表 示 经 过 结 点 v i 的 长 度 为 的 回 路 条 数
(i 1,2,, n) . 2,G 中无平行边)
例 1 设图 G 的邻接矩阵为
(1)画出图 G .
v1 0 v 2 1 A v3 1 v4 0 v5 0
1 若vi 可达v j pij 0 若vi 不可达v j
可达距阵的性质
性质 1 p 是以 0,1 为元素的距阵,其主对角线上的 元素全为 1,但不一定是对称的。 性质 2 (1) p 的元素全为 1 是 D 为强连通的充分 必要条件。 (2)p p p T 的元素全为 1 是 D 为单向连 通的充分必要条件
v3
e4 e5 v4
A 的第一 i 行(或第 i 列)元素之和为结点 v i 的度
数. (ห้องสมุดไป่ตู้ 1,2,, n)
2.无向图的邻接矩阵的性质
() 性质 3 设简单图的邻接矩阵 A 的 次幂 A (aij ) ,( 为正整数)
则
() (1) i j 时 , aij 的值表示连接结点 vi , v j 的长度为 的通路条数
有向图邻接矩阵的性质 性质 1:A 不一定是对称阵。 性质 2: A 的第 i 行元素之和为 deg (vi ) ,A 的第 i 列 元素之和为 deg _ (vi ) 。 (i 1,2,, n)
1 0 A 1 1
1 0 0 0
0 1 0 0
0 1 2 1
有向图邻接矩阵的性质 性质 3:设 A (aij ) ( 1) 则:
() (1) i j 时, aij 的值是 vi 到 v j 的长度为 的有向 ()
通路的条数 (i, j 1,2,n) (2) aii 的值是 vi 到自身的长度为 的有向向回路 的条数 (i 1,2, n)
()
三.有向图的可达矩阵
定义 5-19 设 v1 , v2 ,vn 是简单有向图的 D 的结 点,则称 p ( pij ) nn 是 D 的可达矩阵,其中
1.邻接矩阵 例如,右图的邻接矩阵为:
v1
1 6 4 4 6 0 , A2 1 4 0 0 0 1 2.无向图的邻接矩阵的性质 性质 1 A 是对称的. 1 2 1 0 2 1 0 0
性质 2
0 1 A 2 1
1 4 5 2
0 e1 1 e2 v2 e6 2 e3 1
1 1 0 0 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0
(2)讨论图中长度为 2 和 3 的通路和回路的数目. (3)通过 A2 , A3 讨论图中长度为 2 和 3 的通路和回路.
二.有向图的邻接矩阵表示
定义 5-18 设 v1 , v2 ,vn 是有向图 D 的结点,则称矩阵
__
图的矩阵表示及习题-答案讲解
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章 图论
为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 通路、回路、图的连通性
有向图的连通性
定义 设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 图的矩阵表示
图的表示:
数学定义 图形表示 矩阵表示 便于用代数知识来研究图的性质 便于用计算机处理 矩阵的行列有固定的顺序,因此在用矩阵表示图之 前,必须将图的顶点和边(如果需要)编号。 本节学习: • 图的关联矩阵 • 图的邻接矩阵 • 有向图的可达矩阵
