图的应用

图的应用:


最小生成树:(Minimum-Spanning-Tree, MST)
**定义:**设R为G的所有生成树的集合,若T为R中边的权值之和最小的那棵生成树, 则 T 称为 G 的最小生成树。

特点:
①最小生成树不是唯一的,即最小生成树的树形不唯一,R中可能有多个最小生成树。
②最小生成树的边的权值之和总是唯一的。
③最小生成树的边数为顶点数减 1。
普里姆(Prim)算法:
算法思想: N={V, E} 是连通网,算法从V’{u0},E’{}开始,
从所有u属于V’,v属于V-V’中找到一条权值最小的边(u,v)并入集合E’,v并入集合V’。
重复此过程,直到V’=V。

void prim(G,T)
{
	T=空集;
	U={w};//从任意顶点开始
	while(V-U!=空集)//若树中不含全部顶点 
	{
		设(u,v)是使 u属于U 与 v属于(V-U),且权值最小的边;
		T=T∪(u,v);  //边入树的边集
		U=U∪{v};     //顶点归入树
	}
}
	

时间复杂度: O(IVl2),不依赖于IEI。
适用性:求解边稠密的图的最小生成树。

克鲁斯卡尔(Kruskal)算法:
算法思想: N={V, E} 是连通网,算法从V’=V,E’{}开始
按边的权值的递增顺序依次从E-E’中选取一条边。若不构成回路,则将其加入E‘,否则舍弃。

void Kruskal(V,T)
{
	T=V;
	numS=n;   //连通分量的个数
	while (numS>1)
	{
		从E中取出权值最小的边(v,u);
			if (v和u属于T中不同的连通分量)//不构成回路
			{
				T=T∪{ (v, u)};
				numS--;
			}
	}
}

**时间复杂度:**通常在 Kruskal 算法中,采用堆来存放边的集合,则每次选择最小权值的边只需 O(loglEI)的时间。
生成树 T 中所有边可以看作一个等价类, 每次添加新的边的过程类似于求解等价类的过程
由此可以采用并查集的数据结构来描述 T,从而构造 T 的时间复杂度为 O(IElloglEI)。
适用性:适合于边稀疏而顶点较多的图


最短路径:
对于无权图,可以用广度优先搜索求最短路径。
对于有权图,把从一个 顶点到图中其余任一个顶点 vi的一条路径(可能不止一条)上所经过边上的权值之和
定义为该路径的带权路径长度。
分为
①单源最短路径(Dijkstra)
②每一对顶点间的最短路径(Floyed)

Dijkstra算法:

Floyed算法:


拓扑排序:

**AOV网:**如果图G表示一个工程,其顶点表示活动,用有向边<Vi, Vj>表示活动Vi必须先于活动Vj进行的这样一种关系
则将这种有向图称为顶点表示活动的网络,记为 AOV 网。

拓扑排序::在图论中,由一个有向无环图的顶点组成的序列, 当且仅当满足下列条件时,称为该图的一个拓扑排序。
①每个顶点出现且只出现一次。
②若顶点 A 在序列中排在顶点 B 的前面,则在图中不存在从顶点 B 到顶点 A 的路径。


关键路径:

**AOE网:**在带权有向图中,以顶点表示事件,有向边表示活动,边上的权值表示完成该活动的开销 (如 完成活动所需时间)
则称这种有向图为用边表示活动的网络, 简称为 AOE 网。
①只有在某顶点所代表的事件发生后,从该顶点出发的各有向边 所代表的活动才能开始
②只有在进入某一顶点的各有向边所代表的活动都己经结束时, 该顶点 所代表的事件才能发生。

**关键路径:**从源点到汇点的所有路径中,具有最大路径长度的路径称为关键路径。 把关键路径上的活动称为关键活动。

五个参数:
①事件 vk 的最早发生时间 ve(k) 开始顶点 V 到 vk 的最长路径长度。
②事件 vk 的最晚发生时间 vl(k) 即保证它所指向的事件 Vi在 ve(i)时刻能够发生时,该事件最迟必须发生的时间。
③活动ai的最早开始时间 e(i) 它是指该活动的起点所表示的事件最早发生时间果边<vk,vi>表示活动衔,
则有e(i)=ve(k)。
④活动ai的最晚开始时间 l(i) 该活动的终点所表示的事件最迟发生时间与该活动所需时间之差
有 l(i)=vl(j)-Weight(vk,vj)。
⑤ 一个活动ai的最迟开始时间 l(i)和其最早开始时间 e(i)的差额 d(i)=l(i)-e(i) 所有 d(i)=0的活动构成关键路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值