数据结构
qq_42829148
这个作者很懒,什么都没留下…
展开
-
图的存储方式(一)邻接矩阵存储方法
邻接矩阵的存储方式,也称数组存储方式。核心思想:利用两个数组来存储一个图两个数组第一个数组:VERTEX[n]将图中的n个顶点的数据信息分别存入VERTEX[0,…,n-1]这里的数据信息可以有很多种类。若该数据信息仅表示人为给定的序号,则该一维数组可以省略第二个数组:A[n][n]将邻接矩阵存入该数组A[i][j]={1 顶点i与之间有边0 顶点i与之间无边...原创 2019-05-26 22:00:56 · 2708 阅读 · 0 评论 -
图——求最短路径的Dijkstra算法
路径长度等于边的数目,等于顶点数目减1;对于带权图,指路径(从一点到另一点)经过的所有所有边上权值之和,并将所有带权路径中路径长度最短的那条路经称为最短路径。区别最小生成树是连通全局所有顶点边权值和最小的路径而最短路径是从某结点出发到其他顶点距离最短的路径,虽然对该顶点而言,也是一棵生成树,并且可能某些边与最小生成树重合,但是并不能保证全局之和为最小,当然,某些特殊情况下也可能完全一致...原创 2019-06-10 09:04:19 · 371 阅读 · 0 评论 -
图——最小生成树(二)Kruskal算法
觉得这里讲得挺详细的,大家可以去看Kruskal算法详解它和Prim算法和Boruvka算法等。三种算法都是贪心算法的应用。算法思想从G中选择一条当前未选择过的、且边上的权值最小的边加入TE,若加入TE后使得T未产生回路,则本次选择有效,如使得T产生回路,则本次选择无效,放弃本次选择的边。重复上述选择过程直到TE中包含了G的n-1条边,此时的T为G的最小生成树。对比两个算法,Kruska...原创 2019-06-10 07:39:54 · 153 阅读 · 0 评论 -
拓扑排序
排序步骤:1.从AOV网中选取一个没有前驱的顶点(该顶点入度为0),并输出它2.从AOV网中删去该顶点及以它为弧尾的所有有向边3.重复上述步骤直到剩余的网中不再存在没有前驱的顶点结果:一、AOV网中顶点未被全部输出,说明存在回路二、反之,全部输出,说明不存在回路算法typedef stuct edge{ int adjvex; //该边终止顶点在顶点结点中的位置...原创 2019-06-09 22:14:42 · 87 阅读 · 0 评论 -
图——求最小生成树(一)Prime算法
网络的最小生成树的求解在现实中有广泛的应用比较典型的方法主要有Prime算法和Kruskal算法最小生成树相关概念:带权图:边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权。最小生成树(MST):权值最小的生成树。生成树和最小生成树的应用:要连通n个城市需要n-1条边线路。可以把边上的权值解释为线路的造价。则最小生成树表示使其造价最小的生成树。...原创 2019-06-09 21:16:13 · 1376 阅读 · 0 评论 -
图的遍历——深度优先(DFS)与广度优先(BFS)
图的遍历每个顶点只被访问一次深度优先遍历原则:以连通分量为单位遍历算法void DFS(VLink G[], int v){ int w; VIST(v); //访问顶点v visted[v] = 1; //做标记,表示v已被访问 w = FIRSTADJ(G, v); //求v的第一个邻接点的位置,若无,返回-1 while( w!=...原创 2019-05-27 19:37:48 · 351 阅读 · 0 评论 -
图中顶点的删除
n个顶点的用邻接表存储的图G,删除数据信息为item的点三步:(1)在顶点数组中删除,并移动后面的几位,将数组大小变为n-1(2)删除以这个点为顶点的链表(3)遍历每个链表,将它的存在抹去,同时修改本来在它之后的顶点在链表中的下标(因为之前已经把这些点在数组中的下标改了,链表中的坐标也要发生相应的变化)void DELVER(VLink G[], int n, vertype item)...原创 2019-05-27 18:56:13 · 3683 阅读 · 4 评论 -
图的基本概念及术语
概念1.图的定义2.无向图与有向图3.弧与边4.权5.邻接点6.网(络)术语(一)度1.度;入度与出度2.完全图;有向完全图3.稀疏图,稠密图(二)路径1.路径2.回路(或环)3.简单路径4.简单回路(或简单环)5.有根图(三)子图与连同1.子图2.连通图与非连通图3.连通图,连通分量(属于无向图)4.强连通图,强连通分量(属于有向图)(四)生成树1...原创 2019-05-27 18:41:37 · 437 阅读 · 0 评论 -
图的存储方式(二)邻接表
上节讲到,邻接矩阵对于存储稠密图比较有效,而不适合存储稀疏图在这里介绍另一种较好的解决方法——邻接表链表+一个数组链表:用于存放边的信息数组:用于存放顶点的信息对于每个顶点分别建立一个线性链表,即对n个顶点来说,邻接表由n个线性链表组成。一个数组把图中所出现的所有点都放入这个数组中,用它们在该数组的下标表示在图的位置。链表顶点结点每个链表前面设置一个头结点,称之为顶点结点。设...原创 2019-05-27 14:39:23 · 1280 阅读 · 0 评论 -
AOE网关键路径计算
AOE网若在带权的有向无环图中,以顶点表示事件(event),以有向边表示活动,边上的权值表示活动的开销(时间等),则此带权有向图称为AOE网。关键路径从源点到中点的最大路径长度。如何计算...原创 2019-06-10 09:37:58 · 733 阅读 · 0 评论