- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图论算法基本概念
第四章 图论算法 第一节 基本概念 一、什么是图? 很简单,点用边连起来就叫做图,严格意义上讲,图是一种数据结构,定义为:graph=(V,E)。V是一个非空有限集合,代表顶点(结点),E代表边的集合。 二、图的一些定义和概念 (a)有向图:图的边有方向,只能按箭头方向从一点到另一点。(a)就是一个有向图。 (b)无向图:图的边没有方向,可以双向。(b)就是一个无向图。 结点的度:无向图中与结点相连的边的数目,称为结点的度。 结点的入度:在有向图中,以这个结点为终点的有向边的数目。 结点的出度:在有向图中,以这个结点为起点的有向边的数目。 权值:边的“费用”,可以形象地理解为边的长度。 连通:如果图中结点U,V之间存在一条从U通过若干条边、点到达V的通路,则称U、V 是连通的。 回路:起点和终点相同的路径,称为回路,或“环”。 完全图:一个n 阶的完全无向图含有n*(n-1)/2 条边;一个n 阶的完全有向图含有n*(n-1)条边; 稠密图:一个边数接近完全图的图。 稀疏图:一个边数远远少于完全图的图。 强连通分量:有向图中任意两点都连通的最大子图。右图中,1-2-5构成一个强连通分量。特殊地,单个点也算一个强连通分量,所以右图有三个强连通分量:1-2-5,4,3。 三、图的存储结构 1.二维数组邻接矩阵存储 定义int G[101][101]; G[i][j]的值,表示从点i到点j的边的权值,定义如下: 上图中的3个图对应的邻接矩阵分别如下: 0 1 1 1 0 1 1 ∞ 5 8 ∞ 3 G(A)= 1 0 1 1 G(B)= 0 0 1 5 ∞ 2 ∞ 6 1 1 0 0 0 1 0 G(C)= 8 2 ∞ 10 4 1 1 0 0 ∞ ∞ 10 ∞ 11 3 6 4 11 ∞ 下面是建立图的邻接矩阵的参考程序段: #includeiostream using namespace std; int i,j,k,e,n; double g[101][101]; double w; int main() { int i,j; for (i = 1; i = n; i++) for (j = 1; j = n; j++) g[i][j] = 0x7fffffff(赋一个超大值); //初始化,对于不带权的图g[i][j]=0,表示没有边连通。这里用0x7fffffff代替无穷大。 cin e; for (k = 1; k = e; k++) { cin i j w; //读入两个顶点序号及权值 g[i][j] = w; //对于不带权的图g[i][j]=1 g[j][i] = w; //无向图的对称性,如果是有向图则不要有这句! } ………… return 0; } 建立邻接矩阵时,有两个小技巧: 初始化数组大可不必使用两重for循环。 1) 如果是int数组,采用memset(g, 0x7f, sizeof(g))可全部初始化为一个很大的数(略小于0x7fffffff),使用memset(g, 0, sizeof(g)),全部清为0,使用memset(g, 0xaf, sizeof(g)),全部初始化为一个很小的数。 2)如果是double数组,采用memset(g,127,sizeof(g));可全部初始化为一个很大的数1.38*10306,使用memset(g, 0, sizeof(g))全部清为0. 2.数组模拟邻接表存储 图的邻接表存储法,又叫链式存储法。本来是要采用链表实现的,但大多数情况下只要用数组模拟即可。 以下是用数组模拟邻接表存储的参考程序段: #include
您可能关注的文档
最近下载
- 【冲刺实验班】河北衡水中学19中考提前自主招生数学模拟试卷(6(1).docx VIP
- 品酒师考试:白酒品酒师学习资料.docx VIP
- 品酒师考试:葡萄酒品酒师必看题库知识点(强化练习).docx VIP
- 【冲刺实验班】江苏苏州高级中学2021中考提前自主招生数学模拟试.doc VIP
- 品酒师考试:白酒品酒师测试题(强化练习).docx VIP
- 品酒师考试:品酒师考试测试题(强化练习).docx VIP
- 【冲刺实验班】广东深圳高级中学2019中考提前自主招生数学模拟试.docx VIP
- 品酒师考试葡萄酒品酒师.doc VIP
- 【冲刺实验班】广东执信中学19中考提前自主招生数学模拟试卷(1.doc VIP
- 汉字与中华传统文化 (14).pdf
文档评论(0)