电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

图的定义和基本术语(精)

13页
  • 卖家[上传人]:jiups****uk12
  • 文档编号:90650881
  • 上传时间:2019-06-14
  • 文档格式:DOC
  • 文档大小:132.54KB
  • / 13 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第 13 页图的遍历算法及其应用图 程序设计算法篇 目 录第6章 图26.1 图的定义和基本术语26.2 图的存储和创建36.2.1 图的存储表示36.2.2 图的创建66.3 图的遍历66.3.1 深度优先搜索66.3.2 广度优先搜索76.4 遍历算法的应用86.4.1 应用问题概述86.4.2 求一条包含图中所有顶点的简单路径96.4.3 求距v0最短路径长度最长的一个顶点106.5 图的连通性问题116.5.1 无向图的连通分量和生成树116.5.2 最小生成树136.6 有向无环图及其应用13第6章 图6.1 图的定义和基本术语1、 图的特征任意两个数据元素之间都可能相关。结点之间的关系是多对多的。G = (V,E)2、 基本术语结点:顶点结点间的关系:无向图:边(v,w),v与w互为邻接点,边(v,w)依附于顶点v,w,边(v,w)和顶点v,w相关联v的度:和v相关联的边的数目。有向图:弧,v弧尾,w弧头,顶点v邻接到顶点w,顶点w邻接自顶点v,弧和顶点v,w相关联。v的入度:以v为头的弧的数目;v的出度:以v为尾的弧的数目;v的度:v的入度与出度之和。路径、回路(环)、简

      2、单路径、简单回路(简单环)连通性:若从顶点v到顶点v有路径,则称v和v是连通的图的规模:顶点数n、边(弧)数e、顶点的度(有向图:入度/出度)子图:G= (V,E), G = (V,E),若VV且E E,则称G是G的子图。图的分类:1)关系的方向性(无向/有向)、关系上是否有附加的数权(图/网)有向图、无向图、有向网、无向网2)边(弧)数:完全图(边数=n(n-1)/2的无向图)、有向完全图(弧数=n(n-1)的有向图)稀疏图(enlogn)3)连通性:无向图:连通图(任意两顶点都是连通的)、连通分量(极大连通子图)、生成树(极小连通子图)、生成森林有向图:强/弱连通图、强连通分量、生成树(极小连通子图)、生成森林3、 抽象数据类型定义ADT Graph数据对象V:V是具有相同特性的数据元素的集合,称为顶点集。数据关系R:R = VRVR = |v,wV且P(v,w),表示从v到w的弧,谓词P(v,w) 定义了弧的意义或信息 基本操作:CreateGraph(&G, V, VR)初始条件:V是图的顶点集,VR是图中弧的集合操作结果:按V和VR的定义构造图GDestroyGraph(&G

      3、)初始条件:图G存在操作结果:销毁图GLocateVex(G,u)初始条件:图G已存在,u和G中顶点有相同特征操作结果:若G中存在顶点u,则返回该顶点在图中位置,否则返回其它信息GetVex(G, v)初始条件:图G存在,v是G中某个顶点操作结果:返回v的值PutVex(&G, v, value)初始条件:图G存在,v是G中某个顶点操作结果:对v赋值valueFirstAdjVex(G, v)初始条件:图G存在,v是G中某个顶点操作结果:返回v的第一个邻接顶点。若顶点在G中没有邻接顶点,则返回“空”NextAdjVex(G, v, w)初始条件:图G存在,v是G中某个顶点,w是v的邻接顶点操作结果:返回v的(相对于w的)下一个邻接顶点。若w是v的最后一个邻接点,则返回“空”InsertVex(&G, v)初始条件:图G存在,v和G中顶点有相同特征操作结果:在图中增添新顶点vDeleteVex(&G, v)初始条件:图G存在,v是G中某个顶点操作结果:删除G中顶点v及其相关的弧InsertArc(&G, v, w)初始条件:图G存在,v和w是G中两个顶点操作结果:在图G中增添弧,若G是无

      4、向的,则还应增添对称弧DeleteArc(&G, v, w)初始条件:图G存在,v和w是G中两个顶点操作结果:删除G中的弧,若G是无向的,则还应删除对称弧DFSTraverse(G, v, visit()初始条件:图G存在,v是G中某个顶点,visit是对顶点的应用函数操作结果:从顶点v起深度优先遍历图G,并对每个顶点调用函数visit()一次且至多一次。一旦visit()失败,则操作失败BFSTraverse(G, v, visit()初始条件:图G存在,v是G中某个顶点,visit是对顶点的应用函数操作结果:从顶点v起广度优先遍历图G,并对每个顶点调用函数visit()一次且至多一次。一旦visit()失败,则操作失败ADT Graph6.2 图的存储和创建6.2.1 图的存储表示1、 图的存储表示分析顶点之间的关系是多对多的(m:n),由于m和n都是不定的,无法给出一个这种多对多的关系向线性关系的映射公式图中的关系不能通过顺序映像(即通过顶点之间的存储位置反映顶点之间的逻辑关系)反映;必须另外引入存储空间反映顶点之间的邻接关系。图的存储结构:1)顶点信息;2)边(弧)信息;3)整

      5、体信息:顶点数、边(弧)数、图的种类(有向图、无向图、有向网、无向网)顶点集的存储:图的应用中,顶点集动态变化的几率十分小顶点集可以采用顺序表存储,按预先估计的最大顶点数分配空间(顺序表和链表:若数据元素集是静态的,采用顺序表要好(随机存取);若数据元素集是动态的,则采用链表要好(动态分配与释放))#defineMAX_VERTEX_NUM20/* 最大顶点数*/注意:顺序表与顺序映像之间的区别关系集的存储:在顶点确定的情况下,边或弧的数目也是不定的,且在实际应用中,可能会改变图中的顶点之间的关系。邻接矩阵表示法:矩阵中的第i行第j列的元素反映图中第i个顶点到第j个顶点是否存在弧,若存在其附加的信息是什么。邻接表表示法:将每一顶点的邻接点位置串成一个链,称为邻接表。对于有向图/网来说,该邻接表反映的是顶点的出边表。typedefenumDG, DN, AG, AN GraphKind;/*有向图,有向网,无向图,无向网*/2、 邻接矩阵表示法(数组表示法)无向图/网:对称矩阵有向图/网:非对称矩阵图:邻接关系用1/0表示网:邻接关系需要进一步反映权值,用INFINITY表示无穷大,反映

      6、顶点之间无邻接关系#defineINT_MAX32767/* 最大整数*/#defineINFINITYINT_MAX1) 邻接矩阵typedef struct ArcCellintadj;/*顶点间关系,无权图:0-不相邻,1-相邻有权图,权值,INFINITY-不相邻*/InfoType*info;/* 该弧相关信息的指针*/ArcCell, AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM; 2) 图的整体结构typedef struct charvexsMAX_VERTEX_NUM; /* 有效的顶点下标从0开始 */AdjMatrixarcs;/* 关系集 */intvexnum, arcnum;/* 顶点数、边/弧数 */GraphKindkind;/* 图的种类*/MGraph;3、 邻接表表示法无向图/网:边表,表结点的个数为边数的两倍有向图/网:出边表,表结点的个数为弧数1) 邻接表的表结点typedef struct ArcNodeintadjvex;/* 弧所指向的顶点的位置*/struct ArcNode*nextarc;/* 指向下一

      7、条弧的指针*/InfoType*info;ArcNode;2) 邻接表的头结点typedef struct VNodechardata;/* 顶点信息*/ArcNode*firstarc;/*邻接表指针*/VNode, AdjListMAX_VERTEX_NUM;3) 图的整体结构typedef struct AdjListvertices;intvexnum, arcnum;GraphKindkind;ALGraph;4、 邻接矩阵与邻接表的对比假设图为G,顶点数为n,边/弧数为e。A邻接矩阵B邻接表存储空间O(n+n2)O(n+e)图的创建算法T1(n)=O(e+n2)或T2(n)=O(e*n+n2)T1(n)=O(n+e)或T2(n)=O(e*n)T1(n)是指在输入边/弧时,输入的顶点信息为顶点的编号;而T2(n)则指在输入边/弧时,输入的为顶点本身的信息,此时需要查找顶点在图中的位置无向图中求第i顶点的度(第i行之和)或(第i列之和)G.verticesi.firstarc所指向的邻接表包含的结点个数无向网中求第i顶点的度第i行/列中adj值不为INFINITY的元素个数有向

      8、图中求第i顶点的入/出度入度:(第i列)出度:(第i行)入度:扫描各顶点的邻接表,统计表结点的adjvex为i的表结点个数T(n)=O(n+e)出度:G.verticesi.firstarc所指向的邻接表包含的结点个数有向网中求第i顶点的入/出度入度:第i列中adj值不为INFINITY的元素个数出度:第i行中adj值不为INFINITY的元素个数统计边/弧数无向图:)无向网:G.arcs中adj值不为INFINITY的元素个数的一半有向图:有向网:G.arcs中adj值不为INFINITY的元素个数无向图/网:图中表结点数目的一半有向图/网:图中表结点的数目结论:邻接矩阵适于稠密图,邻接表适于稀疏图;邻接表求有向图的顶点的入度不方便,要遍历全部的邻接表。6.2.2 图的创建基本过程:1) 输入图的类型,根据类型选择相应的创建算法2) 输入图的顶点数,边/弧数3) 输入并存储顶点信息4) 输入边/弧所关联的顶点对,将边或弧的信息存储到邻接矩阵/邻接表中图的存储结构不同、图的类型不同,都会影响创建算法的实现细节;但是,图的总体创建流程是一致的(如上)。示例:用邻接矩阵表示法构造有向网GStatusCreateMDG(MGraph &G)/* 步骤2:输入图的顶点数、边/弧数*/scanf(&G.vexnum, &G.arcnum, &IncInfo);/* IncInfo为0则各弧不含其它信息 */* 步骤3:输入并存储顶点信息*/for ( i = 0; i G.vexnum ; i+)scanf ( &G.vexsi );/* 步骤4:输入并存储边/弧信息*/for ( i = 0; i G.vexnum ; i+)/* 邻接矩阵初始化*/for ( j = 0; j G.vexnum ; j+)G.arcsij = INFINITY, NULL;f

      《图的定义和基本术语(精)》由会员jiups****uk12分享,可在线阅读,更多相关《图的定义和基本术语(精)》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.