离散数学 图的矩阵表示

7.3 图的矩阵表示

?无向图的关联矩阵?有向图的关联矩阵?有向图的邻接矩阵?有向图的可达矩阵

无向图的关联矩阵

定义设无向图G=,V={v

1,v

2

,…,v

n

},E={e

1

,

e 2,…,e

m

},令m

ij

为v

i

与e

j

的关联次数,称(m

ij

)

n m

为G

的关联矩阵,记为M(G).

e 1

e 2

e 3e 4

e 5

1

2

3

4

例:求下图G 的关联矩阵

上图G 的关联矩阵:

12

32100001110()00111M G υυυ??????=

????12345

e e e e e

无向图的关联矩阵平行边的列相同

)4(2)3(),...,2,1()()2(),...,2,1(2)

1(,1

1m

m n i v d m m j m j

i ij

i

m

j ij

n

i ij =====∑∑∑==性质:

(5)

当且仅当v i 为孤立点。∑

==m

j ij m 1

,0

有向图的关联矩阵

??

?

??-=的终点

为,不关联

与,的始点为j i j i j i ij e v e v e v m 10,1定义设无环有向图D =,V ={v 1,v 2,…,v n },E ={e 1,e 2,…,e m },令

则称(m ij )n ?m 为D 的关联矩阵,记为M (D ).

e 5e 6

e 3

e 2e 1

e 4

5

3

4

12

例:求图G 的关联矩阵。

上图G 的关联矩阵:

12

3

4100000111100()011011000111M G υυυυ????--??=-????---??123456

e e e e e e

有向图的关联矩阵(续)

∑∑∑∑===-======-

=+

=j

i ij

m

j i

ij

m

j i

ij

n

i ij

m n i v d m v d m m j m ,1

1

10

)3(,...,2,1),()1(),

()1()2(),...,2,1(0)

1(性质

(4)平行边对应的列相同

定义设有向图D =, V ={v 1, v 2, …, v n }, E ={e 1, e 2, …, e m }, 令为顶点v i 邻接到顶点v j 边的条数,称( )m n 为D 的邻接矩阵, 记作A (D ), 简记为A .

)1(ij

a )

1(ij

a 有向图的邻接矩阵

23

4

1

?求下图G 的邻接矩阵。

解上图G 的邻接矩阵。

12000

010()10010

1

0A G ?????

?=??????

给出了图G 的邻接矩阵,就等于给出了图G 的全部

定义设有向图D =, V ={v 1, v 2, …, v n }, E ={e 1,

e 2, …, e m }, 令为顶点v i 邻接到顶点v j 边的条数,称( )m ?n 为D 的邻接矩阵, 记作A (D ), 简记为A . 性质

的回路数

中长度为的通路数

中长度为1)

4(1)3(,...,2,1),()2(,...,2,1),()

1()1(,)1(1

)1(1

)1(D a D m a n

j v d a n i v d a n

ii

j

i ij j

n i ij

i

n

j ij

------=====∑

∑∑∑-

=+

=)

1(ij a )1(ij a 有向图的邻接矩阵

D 中的通路及回路数

)

(l ij a

)

(l ii a

∑∑==n

i n

j l ij

a

11)(∑

=n

i l ii a 1

)(定理设A 为n 阶有向图D 的邻接矩阵,则A l (l ≥1)中

元素

为D 中v i 到v j 长度为l 的通路数,为v i 到自身长度为l 的回路数,

为D 中长度为l 的通路总数,

为D 中长度为l 的回路总数.

D 中的通路及回路数(续)

例有向图D 如图所示,求A ,A 2,A 3,A 4,并回答诸问题:

(1)D 中长度为1,2,3,4的通路各有多少条?其中回路分别为多少条?(2) D 中长度小于或等于4的通路为多少条?其中有多少条回路?

∑∑==n

i n

j l ij

b

11)

(∑=n

i l ii b

1

)(推论

设B l =A +A 2+…+A l (l ≥1),

则B l 中元素

为D 中长度小于或等于l 的通路数,

为D 中长度小于或等于l 的回路数.

演示文稿后

例(续)

长度通路回路

?

?

???

??

??

???=??

???????

???=?

?

???

?

?

??

???=??

???????

???=1004

01041

0050001

0103

1003010400011002010210030001

010110010102000143

2A A A A 合计

50

8

1

8 1211 33

14 14

17 3

23

4

1

在下图中v 1到v 3长度为1、2、3、4的通路分别有多少条,G 中共有长度为4的通路多少条,其中回路多少条,长度小于等于4的通路共有多少条,其中回路多少条。

解:因为

2

3

4

12001

2001

22000100010100110011

0011

2100010001010013222564212102221222144321

2102221A A A

??????

???????

?????

=?

=

??????

???

??

?

??????

??

??????

?

??

?==??

????

????

??

●所以,由v1到v3长度为1、2、3、4的通路

分别有0、2、2、4条,G中共有长度为4的

通路43条,其中回路11条,长度小于等于4

的通路共有87条,其中回路22条。

●注无向图也有相应的邻接矩阵,一般只考虑简单图,无向图的邻接矩阵是对称的,其性质基本与有向图邻接矩阵的性质相同。

??????

?

?

?=01

1110101101

1010)(G A 例如:下图邻接矩阵为:

有向图的可达矩阵

1,0,i j

ij v v p ?=?

?可达否则

称(p ij )n ?n 为D 的可达矩阵,记作P (D ),简记为P .性质:

P (D )主对角线上的元素全为1.

D 强连通当且仅当P (D )的元素全为1.

定义设D =为有向图,V ={v 1,v 2,…,v n },令

有向图的可达矩阵(续)

例右图所示的有向图D 的可达矩阵为

?????

????

???=11

01

110111110001P

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

177 图的矩阵表示 图是用三重组定义的,可以用图形表示。此外,还可以用矩阵表示。使用矩阵表示图,有利于用代数的方法研究图的性质,也有利于使用计算机对图进行处理。矩阵是研究图的重要工具之一。本节主要讨论无向图和有向图的邻接矩阵、有向图的可达性矩阵、无向图的连通矩阵、无向图和有向图的完全关联矩阵。 定义9.4.1 设 G =是一个简单图,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的邻接矩阵为: ?????? ? ? ?=011110101101 1010)(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 )。 ?????? ? ? ?='001010110001 1100)(G A 考察A (G )和A ′(G )发现,先将A (G )的第一行与第二行对调,再将第一列与第二列对调可 得到A ′(G )。称A ′(G )与A (G )是置换等价的。 一般地说,把n 阶方阵A 的某些行对调,再把相应的列做同样的对调,得到一个新的n 阶方阵A ′,则称A ′与A 是置换等价的。可以证明置换等价是n 阶布尔方阵集合上的等价关系。 虽然,对于同一个图,由于结点的标定次序不同,而得到不同的邻接矩阵,但是这些邻接矩阵是置换等价的。今后略去结点标定次序的任意性,取任意一个邻接矩阵表示该图。 ④对有向图来说,邻接矩阵A (G )的第i 行1的个数是v i 的出度, 第j 列1的个数是v j 的入度。 ⑤零图的邻接矩阵的元素全为零,叫做零矩阵。反过来,如果一个图的邻接矩阵是零矩阵,则此图一定是零图。 设G =为有向图,V =?v 1,v 2,…,v n ?,邻接矩阵为A =(a ij )n ×n 若a ij =1,由邻接矩阵的定义知,v i 到v j 有一条边,即v i 到v j 有一条长度为1的路;若a ij =0,则v i 到v j 无边,即v i 到v j 无长度为1的路。故a ij 表示从v i 到v j 长度为1的路的条数。 设A 2=AA ,A 2=(2 ij a )n ×n ,按照矩阵乘法的定义, nj in j i j i ij a a a a a a a +++= 22112 若a ik a kj =1,则a ik =1且a kj =1,v i 到v k 有边且v k 到v j 有边,从而v i 到v j 通过v k 有一条长 度为2的路;若 kj ik a a =0,则a ik =0或a kj =0,v i 到v k 无边或v k 到v j 无边,因而v i 到v j 通过 v k 无长度为2的路,k =1,…,n 。故2 ij a 表示从v i 到v j 长度为2的路的条数。 设A 3=AA 2,A 3=(3 ij a ) n ×n ,按照矩阵乘法的定义, 22222113nj in j i j i ij a a a a a a a +++= 若2kj ik a a ≠0,则ik a =1且2kj a ≠0,v i 到v k 有边且v k 到v j 有路,由于2kj a 是v k 到v j 长度为2 的路的条数,因而2kj ik a a 表示v i 到v j 通过v k 长度为3的路的条数;若2kj ik a a =0, ik a =0或2kj a =0, 则v i 到v k 无边或v k 到v j 无长度为2的路,所以v i 到v j 通过v k 无路,k =1,…,n 。故3 ij a 表示从v i 到v j 长度为3的路的条数。 …… 可以证明,这个结论对无向图也成立。因此有下列定理成立。 定理9.4.1 设A (G )是图G 的邻接矩阵,A (G )k =A (G )A (G )k-1,A (G )k 的第i 行,第j 列元素 k ij a 等于从v i 到v j 长度为k 的路的条数。其中k ii a 为v i 到自身长度为k 的回路数。 推论 设G =是n 阶简单有向图,A 是有向图G 的邻接矩阵,B k =A +A 2+…+A k ,

离散数学之图的矩阵表示及基本运算

实验四图的矩阵表示及基本运算 实验目的 学习图在计算机中的矩阵表示,并能利用课堂所学知识进行出度和入度的计算。 实验内容与要求 根据输入的整数对,输出一个图形的邻接矩阵。并求出各结点的出度和入度。实验准备 图可以用多种方式来表示,其中邻接矩阵是一种较简单的方式。复习关于邻接矩阵的描述。明确一下内容: 1.如何使用邻接矩阵表示图。 2.利用图的邻接矩阵求结点的出度和入度的方法。 #include int** g(int n) { int** a, i, j; a = new int* [n];//分配指针数组 for(i=0; i

void CreateMatrix2(M *x, int n, int isOrient); void Input(M *x); void Show(M *x); int deg_out(M *a, int i); int deg_in(M *a, int i); void Maccessibility(M *a, M *Ma); void MatrixMultiple(M *a, M *b, M *m); void MatrixAdd(M *a, M *b); }; void Operators::CreateMatrix2(M *x, int n, int isOrient) { x->n=n; x->isOrient=isOrient; x->ele=g(x->n); } void Operators::CreateMatrix(M *x) { int n, isOrient; cout<<"Matrix's n="; cin>>n; cout<<"Is the graph oriented? 1=yes, 0=no :"; cin>>isOrient; CreateMatrix2(x, n, isOrient); } void Operators::Input(M *x) { int i, j; while(1) { cout<<"Input the edge's start-point and end-point, -1 is to finish inputing:"; cin>>i>>j; if(i==-1 || j==-1) break; x->ele[i][j]=1; if(!x->isOrient) x->ele[j][i]=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类题目可达到设计的基本要求,其他均为加分题,并按字母顺序分数增加越高。 基本要求如下:程序需具有基本的容错控制,在输入错误时有处理手段;程序界面友好,需要输入的地方有输入说明,说明输入的内容和格式要求等;实验原理和实现过程应该详细分析问题,给出解决思路,描述算法思想,不能用源程序代替算法;测试数据应全面,包括非法输入的处理结果等都应包含在内。 1.3 实验环境 C或C++语言编程环境实现。

离散数学之图的矩阵表示及基本运算

离散数学之图的矩阵表示及基本运算

实验四图的矩阵表示及基本运算 实验目的 学习图在计算机中的矩阵表示,并能利用课堂所学知识进行出度和入度的计算。 实验内容与要求 根据输入的整数对,输出一个图形的邻接矩阵。并求出各结点的出度和入度。 实验准备 图可以用多种方式来表示,其中邻接矩阵是一种较简单的方式。复习关于邻接矩阵的描述。明确一下内容: 1.如何使用邻接矩阵表示图。 2.利用图的邻接矩阵求结点的出度和入度的方法。 #include int** g(int n) { int** a, i, j; a = new int* [n];//分配指针数组 for(i=0; i

void MatrixMultiple(M *a, M *b, M *m); void MatrixAdd(M *a, M *b); }; void Operators::CreateMatrix2(M *x, int n, int isOrient) { x->n=n; x->isOrient=isOrient; x->ele=g(x->n); } void Operators::CreateMatrix(M *x) { int n, isOrient; cout<<"Matrix's n="; cin>>n; cout<<"Is the graph oriented? 1=yes, 0=no :"; cin>>isOrient; CreateMatrix2(x, n, isOrient); }

离散数学 图的矩阵表示

7.3 图的矩阵表示 ?无向图的关联矩阵?有向图的关联矩阵?有向图的邻接矩阵?有向图的可达矩阵

无向图的关联矩阵 定义设无向图G=,V={v 1,v 2 ,…,v n },E={e 1 , e 2,…,e m },令m ij 为v i 与e j 的关联次数,称(m ij ) n m 为G 的关联矩阵,记为M(G).

e 1 e 2 e 3e 4 e 5 1 2 3 4 例:求下图G 的关联矩阵 上图G 的关联矩阵: 12 32100001110()00111M G υυυ??????= ????12345 e e e e e

无向图的关联矩阵平行边的列相同 )4(2)3(),...,2,1()()2(),...,2,1(2) 1(,1 1m m n i v d m m j m j i ij i m j ij n i ij =====∑∑∑==性质: (5) 当且仅当v i 为孤立点。∑ ==m j ij m 1 ,0

有向图的关联矩阵 ?? ? ??-=的终点 为,不关联 与,的始点为j i j i j i ij e v e v e v m 10,1定义设无环有向图D =,V ={v 1,v 2,…,v n },E ={e 1,e 2,…,e m },令 则称(m ij )n ?m 为D 的关联矩阵,记为M (D ).

e 5e 6 e 3 e 2e 1 e 4 5 3 4 12 例:求图G 的关联矩阵。 上图G 的关联矩阵: 12 3 4100000111100()011011000111M G υυυυ????--??=-????---??123456 e e e e e e

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

图的矩阵表示 图是用三重组定义的,可以用图形表示。此外,还可以用矩阵表示。使用矩阵表示图,有利于用代数的方法研究图的性质,也有利于使用计算机对图进行处理。矩阵是研究图的重要工具之一。本节主要讨论无向图和有向图的邻接矩阵、有向图的可达性矩阵、无向图的连通矩阵、无向图和有向图的完全关联矩阵。 定义9.4.1 设 G=V,E是一个简单图,V=v1,v2, (v) A(G)=( ) n×n 其中: i,j=1,…,n 称A(G)为G的邻接矩阵。简记为A。 例如图9.22的邻接矩阵为: 又如图9.23(a)的邻接矩阵为:

由定义和以上两个例子容易看出邻接矩阵具有以下性质: ①邻接矩阵的元素全是0或1。这样的矩阵叫布尔矩阵。邻接矩阵是布尔矩阵。 ②无向图的邻接矩阵是对称阵,有向图的邻接矩阵不一定是对称阵。 ③邻接矩阵与结点在图中标定次序有关。例如图9.23(a)的邻接矩阵是 A(G),若将图9.23(a)中的接点v1和v2的标定次序调换,得到图9.23(b),图9.23(b)的邻接矩阵是A′(G)。 考察A(G)和A′(G)发现,先将A(G)的第一行与第二行对调,再将第一列与第二列对调可得到A′(G)。称A′(G)与A(G)是置换等价的。

一般地说,把n阶方阵A的某些行对调,再把相应的列做同样的对调,得到一个新的n阶方阵A′,则称A′与A是置换等价的。可以证明置换等价是n阶布尔方阵集合上的等价关系。 虽然,对于同一个图,由于结点的标定次序不同,而得到不同的邻接矩阵,但是这些邻接矩阵是置换等价的。今后略去结点标定次序的任意性,取任意一个邻接矩阵表示该图。 ④对有向图来说,邻接矩阵A(G)的第i行1的个数是vi的出度,第j列1的个数是vj的入度。 ⑤零图的邻接矩阵的元素全为零,叫做零矩阵。反过来,如果一个图的邻接矩阵是零矩阵,则此图一定是零图。 设G=V,E为有向图,V=v1,v2,…,vn,邻接矩阵为A=(aij)n×n 若aij=1,由邻接矩阵的定义知,vi到vj有一条边,即vi到vj有一条长度为1的路;若aij=0,则vi到vj无边,即vi到vj无长度为1的路。故aij表示从vi到vj长度为1的路的条数。 设A2=AA,A2=( )n×n,按照矩阵乘法的定义, 若aikakj=1,则aik=1且akj=1,vi到vk有边且vk到vj有边,从而vi到vj通过vk有一条长度为2的路;若 =0,则aik=0或akj=0,vi到vk无边或vk到vj无边,因而vi到vj通过vk无长度为2的路,k=1,…,n。故

相关文档
最新文档