您所在位置: 网站首页 / 图的基本算法知识分享.ppt / 文档详情
图的基本算法知识分享.ppt 立即下载
2024-12-03
约2.1千字
约55页
0
1.2MB
举报 版权申诉
预览加载中,请您耐心等待几秒...

图的基本算法知识分享.ppt

图的基本算法知识分享.ppt

预览

免费试读已结束,剩余 50 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

图的基本算法目录图的基本概念图的基本概念图的表示方法邻接矩阵邻接表邻接表的实现最小生成树问题prim算法的基本思想intprim(ints)//s为初始加入的点
{
	inti,j,sum=0;
	for(i=1;i<=n;i++)
		closest[i]=10000000;
	for(i=1;i<=n;i++)
		closest[i]=map[s][i];
closest[s]=0;
	intnow;
	for(i=1;i<n;i++)
	{
		intmin=INT_MAX;
		for(j=1;j<=n;j++)
			if(closest[j]&&closest[j]<min)
			{
				min=closest[j];
				now=j;
			}
		sum+=min;
		closest[now]=0;
		for(j=1;j<=n;j++)
			if(map[now][j]&&map[now][j]<closest[j])
				closest[j]=map[now][j];
	}
	returnsum;
}kruskal算法的基本思想kruskal算法实现的数据结构并查集的处理过程·MST-KRUSKAL(G,w)
1.A←Ф
2.for每个结点v∈V[G]
3.doMAKE-SET(v)
4.根据权w的非递减顺序对E的边进行排序
5.for每条边(u,v)∈E,按权的非递减次序
6.doifFIND-SET(u)≠FIND-SET(v)
7.thenA←A∪{(u,v)}
8.UNION(u,v)
9.returnA
复杂度E*logE
例题POJ3522思路:练习最短路问题单源最短路径松弛技术Bellman-Ford算法
对bellman-ford算法的说明:
如果没有负权回路,运行一次bellmanford算法,将得到源点到任意点的最短路:
由于源点到任意一点至多n-1条边,我们经过n-1次循环,每重循环对所有的边进行松弛,能保证每次至少得到一个d[i],其值为源点到i点的最短路,最终n-1次循环之后就能求得所有的d[i]。

如果包含负权回路,那么n-1次循环之后还会存在点u,v,使得d[v]>d[u]+w[u,v],这样我们就能判断是否存在负权回路。例题:POJ3259题目分析:此题题意是判断有向图中是否存在负权回路,怎样构造图呢?对于双向路径(u,v),可以构造成两条边(u,v,t)和(v,u,t),对于虫洞单向路径(u,v),可以构造一条边(u,v,-t),这样运行bellman-ford算法就可以判断出是否存在负权回路。
代码附后

Dijkstra算法算法执行过程intdijkstra(ints,intn)
{
	inti,j;
	intv[MAX];
	intd[MAX];
	for(i=1;i<=n;i++)
		d[i]=map[1][i];
	v[1]=1;
	for(i=1;i<n;i++)
	{
		intnow,min=INT_MAX;
		for(j=1;j<=n;j++)//选最小的加入集合
		{
			if(!v[j]&&min>d[j])
			{
				min=d[j];
				now=j;
			}
		}
		v[now]=1;
		for(j=1;j<=n;j++)//松弛
			if(!v[j]&&d[now]+map[now][j]<d[j])
				d[j]=d[now]+map[now][j];	
	}
	return0;
}spfa算法例题:看晴子大牛的体型
知道他一定又馋又懒,他有n-1个小弟,每天都让他的n-1个小弟去n-1个不同的饭馆给他买回山珍海味,已知饭馆之间是以有向图连接起来的,我们可以保证每两个饭馆之间可以互相可达,问他的小弟帮他买回饭来总共走的最短路程是多少(假设晴子大牛所在顶点为点1,饭馆为2~n)?n<=m<=1000000由于数据范围很大,Dijkstra算法和Bellman-Ford超时,我们可以用spfa算法求得由点1到其他点的距离,那么怎么求从其他点到点1的距离呢?
我们可以把每条有向边反向,这样再用spfa在反向的图中求一次源点到其他的点的距离就求出了从每个点到源点的距离。
代码附后单源最短路问题小结每对顶点的最短路径floyd-washall算法的基本思想递推过程----动态规划floyd计算图的传递闭包例题:POJ1975拓扑排序拓扑排序晴子大牛穿衣服的例子课后练习题Relax(u,v){
	IfF(v)>F(u)+W_Cost(u,v)then
		F(v)=F(u)+W_Cost(u,v);
}SPFA则使用队列进行了优化!	在上图的例子中,每个节点只进队一次,
	只需N次运算。
	相比Be
查看更多
王子****青蛙
实名认证
内容提供者
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

图的基本算法知识分享

文档大小:1.2MB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用