邻接矩阵在计算机学科中的应用文档格式.docx
- 文档编号:13227334
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:15
- 大小:90.80KB
邻接矩阵在计算机学科中的应用文档格式.docx
《邻接矩阵在计算机学科中的应用文档格式.docx》由会员分享,可在线阅读,更多相关《邻接矩阵在计算机学科中的应用文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
本人的毕业论文(设计)是在指导教师郝玲的指导下独立撰写完成的。
如有剽窃、抄袭、造假等违反学术道德、学术规X和侵权的行为,本人愿意承当由此产生的各种后果,直至法律责任,并愿意通过网络承受公众的监视。
特此X重声明。
毕业论文〔设计〕作者〔签名〕:
2014年4月6日
标题………………………………………………………………………………1
中文摘要……………………………………………………………………………1
前言………………………………………………………………………………1
1根本定义与定理…………………………………………………………………1
2图的邻接矩阵定义………………………………………………………………2
………………………………………………………3
………………………………………………………………3
……………………………………………3
…………………………………4
…………………………………………………………………4
…………………………………………………5
…………………………………………………………………5
………………………………6
……………………………………………6
……………………………………………………………7
…………………………………………………………9
…………………………………………………………………9
………………………………9
…………………………………………………………………10
………………………………………………11
…………………………………………………………………11
“点加〞运算与几何意义……………………………11
……………………………………………12
3.4.4得出程序代码〔C语言描述〕……………………………………………13
总结………………………………………………………………………………15
参考文献…………………………………………………………………………16
致谢………………………………………………………………………………17
外文页……………………………………………………………………………18
摘要文中通过分析图的邻接矩阵表示与其性质,将图的数据抽象成数据类型,探究数据的组织形式,联系计算机学科,通过分析几个图的邻接矩阵在计算机学科中的应用实例,对邻接矩阵在最小生成树、拓扑排序、最短路径和关键路径等算法分析上的应用作了一定的探讨,为我们阐述了图在计算机学科应用中的观点。
关键词邻接矩阵最小生成树拓扑排序关键路径最短路径
前言
离散数学是信息学科尤其是计算机学科的一门重要的专业根底课程,而图论是建立和处理离散数学模型的一个重要工具,是一门实用性很强的学科。
它在诸如社会科学、计算机科学、信息论和控制论等方面都有着广泛的应用。
尤其是计算机科学,在后续的逻辑设计、数据结构、操作系统和程序设计等课程中都起着重要的作用。
本文着重讨论几个图,尤其是图的邻接矩阵在数据结构中的应用的例子。
在计算机数据结构中广泛地使用邻接矩阵来描述结构和解决问题,在这之中,邻接矩阵显示了它基于矩阵理论的优越性,这给计算机问题的解决带来了很大的方便。
1根本定义与定理
图指的是一个二元组〔V,E〕,其中V是图的顶点集,它的元素称为图的顶点,而E是图的边集,它的元素称为图的边。
用V(G)表示G的顶点集,用E(G)表示G的边集,一条边e=(u,v)是说e和两个顶点u,v相关联,称u,v为e的端点,u,v是相邻的。
如果e有方向,如此称其为有向边,反之称为无向边,每条边都有方向的图称为有向图(digraph)。
反之,假如对图中任意一条边(u,v)=(v,u),如此称为无向图。
图的每条边都连接两个不同的顶点且没有不同的两条边连接着一样的一对顶点,这样的图叫做简单图〔无向图和有向图都可以有简单图〕。
赋权图〔带权图〕是指每条边都有一个非负实数对应的图,记作G=<
V,E,W>
。
这个实数称为这条边的权。
赋权图在实际问题中非常有用。
根据不同的实际情况,权数的含义可以各不一样。
例如,可用权数代表两地间的实际距离和行车时间,这在求图的最短路径中得到表现。
一个无向图G,如果它的两个结点之间是可达的,如此称这两个结点是连通的,如果任意两个结点都是连通的,如此称图G为连通图,否如此为非连通图;
而对于一个有向图,如果忽略其边的方向后得到的无向图是连通的,如此称此有向图为连通图,否如此称为非连通图。
我们研究图的连通性的时候最直接的方法是研究无向图的连通性。
下面我们来介绍一下通路和回路:
设有向图G=<
V,E>
,其中v0,v1,……,∈V,e1,e2,…,∈E,考虑G中边的序列
e1=(v0,v1),e2=(v1,v2),……,=(,)
这个序列由v0开始至完毕,其中每条边的终点是下一条边的起点。
这样,称交叉序列〔v0,e1,v1,e2,...,,)为从与分别叫做通路的起始结点与终止结点,通路中边的数目叫做通路的长度;
有向图中一条通路如果其起始结点与终止结点一样,如此称此通路为回路;
在无向图边中一条边对应于无序结点对〔),而此无序结点对〔)可以看成两个有序结点对〔)与〔),由此,可用方向相反的两条有向边取代一条无向边,这样,一个无向图就转换成了有向图。
2图的邻接矩阵定义
定义:
设有向图D=<
V,E>
V={,…},E={,…},令为顶点邻接到顶点边的条数,称nxn为D的邻接矩阵,记作A(D),或简记为A。
图1
如图1所示有向图D的邻接矩阵为A=
3.1用邻接矩阵求最小生成树
树就是没有回路的连通无向图。
一棵树是没有回路的,它不含多重边或者环,这样一来,我们可以得出任何树都必然是简单图。
树是一种特殊类型的图,所以树也可以用图的邻接矩阵方法来表示。
下面举一个实际生活中的例子指出什么是生成树:
一个公司计划建立一个通信网络来连接它的9个计算机中心。
可以用租用的线连接这些中心的任何一对。
应当建立哪些连接,以便保证在任何两个计算机中心之间都有通路,且网络的总本钱最小?
可以用带权图来为这个问题建模,计算机中心可以用顶点V来表示,可能租用的线可以用边E来表示,边上的权即是线的月租费用。
通过找一棵生成树,使得这棵树的各边的权之和为最小,就可以解决这个问题。
这样的生成树称为最小生成树。
设G=(V,E)是一个带权无向连通图(连通网〕,G的邻接矩阵通常称为消耗矩阵,矩阵的元素定义如下:
其中是边上的权值,∞表示顶点i和j之间构造连通网的最小生成树,要求尽可能选取权值最小的边,且不能构成回路,选取n-1条恰当的边连接网的n个顶点。
用邻接矩阵构造最小生成树的根本步骤如下:
〔1〕、作带权无向连通图G的下三角邻接矩阵A。
〔2〕、从A中一次性顺序选取(n-1)条不重复的权值最小的边(设边的形式为(左顶,右顶,权值)),连接G中的m个顶点,同时,在A中将这(n-1)条边的权值归零。
〔3〕、假如存在回路,去掉各回路上权值最大的一条边,设去掉的边数为f。
〔4〕、从A中一次性顺序选取f条不重复的权值最小的边,连接G中的k个顶点,同时在A中将这f条边的权值归零。
重复〔3〕〔4〕直至选出(n-1)条不构成回路的权值最小的边为止。
3.1.4应用举例:
例如构成图2的最小生成树;
图2
图3
〔1)、先作G4的邻接矩阵,如图3。
〔2〕、一次性顺序选取9条权值最小的边:
(5,4,1),(9,7,1),(2,1,2),(4,3,2),(8,3,2),(9,5,2),(7,1,3),(8,7,3)。
〔3〕、“⑦⑨⑤④③⑧⑦〞是一条回路,去掉(8,7,3)。
〔4〕、因(3,2,4)和(9,8,4)亦会构成回路,放弃之,选取(9,6,5)。
上述8条边连接G4中9个顶点,构成了G4的最小生成树〔如图4〕:
图4
拓扑排序是实现由某个集合上的一个偏序得到该集合上的一个全序的操作。
在解决具体问题时,通常采用有向无环图(DAG)来表示某个集合上的一个偏序,把集合元素表示成顶点,用有向弧表示元素之间的直接偏序关系。
在一个有向无环图中,如果从顶点i到顶点j之间存在一条有向路径,如此称顶点i是顶点j的前趋,而称顶点j是顶点i的后继。
如果(i,j)是图中的一条有向弧,如此称i是j的直接前趋,称j是i的直接后继。
3.2.2基于邻接矩阵的拓扑排序算法处理过程
在图的拓扑排序的算法中,很多都是按照单顶点算法框架设计的,以下我们要讨论一种以顶点集合为操作对象的集合算法框架,处理过程如下:
图5
1〕在DAG图〔如图5〕中选取一个无前趋的顶点集合且输出之,此集合元素的输出顺序可以是任意的。
2〕在图中删去该顶点集合以与从其中每个顶点所发出的弧。
3)重复第1、2步,直至输出全部无前趋的顶点,无前驱顶点的输出顺序就是拓扑排序的结果。
3.2.3构造顶点间关系的邻接矩阵
邻接矩阵用一个二维数组来表示图中顶点间的相邻关系的存储结构,无需列出顶点和弧,为图的描述提供了一种便利的方法。
设图G=〔V,E〕,有n个顶点和e条弧,如此G的邻接矩阵A是按如下定义的一个n阶方阵:
(1)
如果用表示邻接矩阵A的第i行,如此可以定义:
=
(2)
对于一个顶点集合S〔S〕,定义:
==-(3)
从邻接矩阵的定义,我们可以得到:
1〕表示从顶点i出发的有向弧;
2〕和都是n维行向量,表示原图中所有顶点的入度表示删除从集合S中每个元素出发的有向弧但不删除顶点后得到的每个顶点的入度。
显然,不仅表现了拓扑排序算法中需要的弧删除操作,而且适合弧删除操作后的无前驱顶点判断,非常便于进展拓扑排序。
但是,如果直接用式〔1〕给出的方阵形式来实现排序算法,存储空间至少需要n*n,而算法中进展式〔2〕、〔3〕的计算需要n*(n-1)次加法和n*(n-1)次减法。
但是,DAG的邻接矩阵中至少有n*(n+1)/2个元素为0,这些0元素不仅对于对于数据存储来说是多余的,而且对于加减法也没有贡献,所以我们采用了文献[3]提出一种邻接矩阵的存储结构,使用一个e×
2的二维数组B来存储图G的e条有向弧,每行表示一条有向弧,第一列元素表示有向弧的起点,第二列元素表示有向弧的终点,从同一个顶点出发的所有有向弧在数组B中是连续的,数组B是图5中DAG实例满足要求的一种邻接矩阵存储结构。
3.2.3拓扑排序算法
基于以上讨论,该拓扑排序算法的处理步骤如下:
1〕:
=
2)C:
=
3)k:
=B(1,1)
4)C(k):
=1
5)forifrom1toedo
6)(B(i,2)):
=(B(i,2))+1
7)ifB(i,1)notequalkthen
8)k:
=B(i,1)
9)C(k):
=i
10)endif
11)endfor
12)C(n+1):
=e+1
13)forifrom1tondo
14)if(i)equal0then
15):
={i}
16)endif
17)endfor
18)repeat
19):
=
20):
=
21)forallisuchthatido
22)ifC(i)notequal0then
23)m:
=C(i)
24)l:
=i+1
2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 邻接矩阵 计算机 学科 中的 应用