离散数学中的图论是专门研究图性质的一个数学分支.docVIP

离散数学中的图论是专门研究图性质的一个数学分支.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
离散数学中的图论是专门研究图性质的一个数学分支.doc

第七章 图 离散数学中的图论是专门研究图性质的一个数学分支,但图论注重研究图的纯数学性质,而数据结构中对图的讨论则侧重于在计算机中如何表示图以及如何实现图的操作和应用等。图是较线性表和树更为复杂的数据结构,因此和线性表、树不同,虽然在遍历图的同时可以对顶点或弧进行各种操作,但更多图的应用问题如求最小生成树和最短路径等在图论的研究中都早已有了特定算法,在本章中主要是介绍它们在计算机中的具体实现。这些算法乍一看都比较难,应多对照具体图例的存储结构进行学习。而图遍历的两种搜索路径和树遍历的两种搜索路径极为相似,应将两者的算法对照学习以便提高学习的效益。 第一节 图的类型定义 图由一个顶点集和弧集构成,通常写作: Graph=(V, VR) V是具有相同特性的数据元素的集合,称为顶点集。 VR={v,w| v,w∈V,v,w表示从v到w的弧} v,w表示从顶点 v 到顶点 w 的一条弧,其中顶点 v 被称为弧尾,顶点 w 被称作弧头。由于弧是有方向的,故称有向图。 (有向图G1) 例如下列定义的有向图如上图所示。    G1=(V1, VR1) 其中:V1 = {A, B, C, D, E}    VR1 ={A,B,A,E,B,C,C,D,D,B,D,A,E,C} 若v,w∈R 必有w,v∈R,则称 (v,w) 为顶点 v 和顶点 w 之间存在一条边。由顶点集和边集构成的图称作无向图。 (无向图G2) 例如下列定义的无向图如上所示。    G2=(V2, VR2) 其中:V2={A, B, C, D, E, F}    VR2={(A,B),(A,E),(B,E),(C,D),(D,F),(B,F),(C,F) } 由于空的图在实际应用中没有意义,因此一般不讨论空的图,即V是顶点的有穷非空集合。 图的抽象数据类型定义如下: ADT Graph {  数据对象:V是具有相同特性的数据元素的集合,称为顶点集。  数据关系:   VR={v,w| v,w∈V且P(v,w),v,w表示从v到w的弧,             谓词P(v,w)定义了弧v,w的意义或信息 }  基本操作P:  {结构初始化}   CreateGraph(G, V, VR);    初始条件:V 是图的顶点集,VR 是图中弧的集合。    操作结果:按 V 和 VR 的定义构造图 G。  {销毁结构}   DestroyGraph(G);    初始条件:图 G 存在。    操作结果:销毁图 G。    {引用型操作}   LocateVex(G, u);    初始条件:图 G 存在,u 和 G 中顶点有相同特征。    操作结果:若 G 中存在和 u 相同的顶点,则返回该顶点在图中位置;         否则返回其它信息。   顶点在图中的位置指的是,在图的存储结构中顶点之间自然形成的相对位置。   GetVex(G, v);    初始条件:图 G 存在,v 是 G 中某个顶点。    操作结果:返回 v 的值。        FirstAdjVex(G, v);    初始条件:图 G 存在,v 是 G 中某个顶点。    操作结果:返回 v 的第一个邻接点。若该顶点在 G 中没有邻接点,         则返回空。   若v,w∈G,则称 w 为 v 的邻接点,若(v,w)∈G,则称 w 和 v 互为邻接点。   NextAdjVex(G, v, w);    初始条件:图 G 存在,v 是 G 中某个顶点,w 是 v 的邻接顶点。    操作结果:返回 v 的(相对于 w 的)下一个邻接点。若 w 是 v 的         最后一个邻接点,则返回空。   若 v 有多个邻接点,则在图的存储结构建立之后,其邻接点之间的相对次序也就自然形成了。  {加工型操作}   PutVex(G, v, value);    初始条件:图 G 存在,v 是 G 中某个顶点。    操作结果:对 v 赋值 value。   InsertVex(G, v);    初始条件:图 G 存在,v 和图中顶点有相同特征。    操作结果:在图 G 中增添新顶点 v。   DeleteVex(G, v);    初始条件:图 G 存在,v 是 G 中某个顶点。    操作结果:删除 G 中顶点 v 及其相关的弧。   InsertArc(G, v, w);    初始条件:图 G 存在,v 和 w 是 G 中两个顶点。    操作结果:在 G 中增添弧v,w,若 G 是无向的,则还增添对称弧w,v。   DeleteArc(G, v, w);    初始条件:图 G 存在,v 和 w 是 G 中两个顶点。    操作结果:在 G 中删除弧v

文档评论(0)

docindpp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档