赞
踩
无向图: 每条边都是无方向的
有向图: 每条边都是有方向的
完全图: 任意两个点都有一条边相连。
无向完全图:n个顶点,n(n-1)/2条边
有向完全图:n个顶点,n(n-1)条边
网: 边/弧带权的图。
邻接: 有边/弧相连的两个顶点之间的关系。
存在(v, v),则称v,和v互为邻接点;
存在<Vi; Vj>,则称vi邻接到vj,vj邻接于vi。
顶点的度: 与该顶点相关联的边的数目,记为TD(v);在有向图中,顶点的度等于该顶点的入度与出度之和。顶点v的入度是以v为终点的有向边的条数,记作ID(v)顶点v的出度是以v为始点的有向边的条数,记作OD(v)。
路径: 接续的边构成的顶点序列。
路径长度: 路径上边或弧的数目/权值之和。
回路(环): 第一个顶点和最后一个顶点相同的路径。
连通图(强连通图): 在无(有)向图G=(V,{E})中,若对任何两个顶点v、u都存在从v到u的路径,则称G是连通图(强连通图)。
权: 图中边或弧所具有的相关数称为权。表明从一个顶点到另一个顶点的距离或耗费。
网: 带权的图称为网。
子图: 设有两个图G= (V,{E})、G1= (V1,{E1}),若V1属于 V,E1 属于E,则称G1是G的子图。
极大连通子图: 该子图是G的连通子图,将G的任何不在该子图中的顶点加入,子图不再连通。
连通分量(强连通分量): 无向图G的极大连通子图称为G的连通分量。
强连通分量: 有向图G的极大强连通子图称为G的强连通分量。
极大强连通子图: 该子图是G的强连通子图,将D的任何不在该子图中的顶点加入,子图不再是强连通的。
极小连通子图: 该子图是G的连通子图,在该子图中删除任何一条边,子图不再连通。
生成树: 包含无向图G所有顶点的极小连通子图。
生成森林: 对非连通图,由各个连通分量的生成树的集合。
建立一个顶点表(记录各个顶点信息)和一个邻接矩阵((表示各个顶点之间关系)。
例1:画出下面图的邻接矩阵
邻接矩阵
注: 在有向图的邻接矩阵中,
第i行含义:以结点vi为尾的弧(即出度边) ;
第i列含义:以结点vi为头的弧(即入度边)。
分析1:有向图的邻接矩阵可能是不对称的。
分析2:顶点的出度=第i行元素之和
顶点的入度=第i列元素之和
顶点的度=第i行元素之和+第i列元素之和
例2:画出下面图的邻接矩阵
邻接矩阵
分析1:无向图的邻接矩阵是对称的;
分析2:顶点i的度=第i行(列)中1的个数;
特别:完全图的邻接矩阵中,对角元素为0,其余1。
节点构成:
特点:
邻接表特点:
顶点vi的出度为第i个单链表中的结点个数。
顶点vi的入度为整个单链表中邻接点域值是i-1 的结点个数。
逆邻接表特点:
顶点vi 的入度为第i个单链表中的结点个数。
顶点vi 的出度为整个单链表中邻接点域值是i-1的结点个数。
1.结点:
2.邻接表:
3.十字链表:
原则: 一条路走到底,直到走不通,返回上一有通路的节点,再继续走。
原则: 从一结点开始,依次访问该点所有的邻接点,再按照这些点被访问的先后次序访问他们的邻接点。重复此过程。
遍历:
生成树: 所有顶点均由边连接在一起,但不存在回路的图。
深度优先(左)和广度优先(右)生成树
最小生成树: 给定一个无向网络,在该网的所有生成树中,使得各边权值之和最小的那棵生成树称为该网的最小生成树,也叫最小代价生成树。
普里姆算法的构造过程
假设N=(V,E)是连通网,TE是N上最小生成树中边的集合。①U={uo}(uEW),TE=号。
在所有uEU, vEV-U的边(u,v)∈E中找一条权值最小的边(uo vo)并入集合TE,同时v并入U。
③重复②,直至U=V为止。
此时TE中必有n-1条边,则T=(V, TE)为N的最小生成树。
克鲁斯卡尔算法的构造过程
假设连通网N=(V, E),将N中的边按权值从小到大的顺序排列。
①初始状态为只有n个顶点而无边的非连通图T=(V,),图中每个顶点自成一个连通分量。在E中选择权值最小的边,若该边依附的顶点落在T中不同的连通分量上(即不形成回路),则将此边加入到T中,否则舍去此边而选择下一条权值最小的边。
③重复②,直至T中所有顶点都在同一连通分量上为止。
有向无环图:
拓扑排序
在aov网中设有回路的前提下,将全部活动排成一个线性序列,使aov网中有弧<i,j>存在。i一定排在j前面,具有这种性质的线性序列为拓扑有序序列,相应的算法称为拓扑排序。
拓扑排序的方法
检测AOV网中是否存在环的方法。
对有象图构造其顶点的拓扑有序序列入网中所有景点都在它的拓扑有序序列中,这该aov网必定不存在。
关键路径: AOE网中边表示活动的网络顶点表示事件弧表示活动图的权表示活动持续时间事件表示在他之前的活动已经完成,他之后的活动可以开始。
ve(vj):表示事件vj的最早发生时间。
vl(vj) :事件vj的最迟发生时间。
e(i) :活动 AI的最早开始时间。
l(i) :活动ai最迟开始时间。
l(i)-e(i) :完成活动AI的时间余量。
关键活动:关键路径上的活动。即 l(i)-e(i)==0的活动。
求关键路径具体步骤(方法)
例:求下图的关键路径
求关键路径的步骤:
求ve(i), vl(j)
e(i), l(i)
计算l(i)-e(i)
ve(j) = MAX{ve(i)+wi,j} (正序,选权值和的最大)
vl(i) = MIN{vl(j) - wi,j} (反序,选权值差的最小)
(1)e(i) = ve(j)
(2) l(i) = vl(k) - wj,k
顶点发生的时间:
活动开始的时间:
ve:正序选和最大。
vl:反序选差的最小。
e = 前一个顶点的ve。
l = 前一个顶点的vl - ai。
最后选出l-e = 0 的路径连起来就是关键路径
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。