- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最小公共祖先( LCA )问题
poj1330,1986,1470--fuyuchang(cc)internet
大纲
定义
将 LCA 问题转化为 RMQ 问题
RMQ 的一般解法
±1 RMQ 问题的快速解法
RMQ 的快速解法
LCA – 最小公共祖先
在树T中,结点u和v的最小公共祖先是它们共有的、离根结点最远的那个祖先结点。
LCAT(u,v)
u
v
RMQ – 区间最小询问
询问 RMQA(i,j) 返回的是数组A[i..j]中最小元素的下标。
RMQA(i,j)
0
16
34
13
7
19
10
12
1
2
RMQA(3,7) = 4
A[0]
A[2]
A[1]
A[9]
A[3]
A[4]
A[5]
A[6]
A[7]
A[8]
时间复杂度标记
预处理时间
单个询问处理时间
LCA – 一般的算法
对任意一对结点,分别找出它们到树根的路径,然后在这两条路经中找第一个公共的结点。
复杂度 =
LCA普通算法的图
将 LCA 转化为 RMQ
如果有一个复杂度为 的 RMQ解法,那么就存在一个复杂度为 的LCA解法。
变形 – 根据树T构造3个数组
1. E[1..2n-1]:存放从树根开始的Euler遍历所经过的结点编号。
2. L[1..2n-1]:L[i]存放E[i]结点在树T中的深度。
3. P[1..n]: R[i]表示结点i在数组E中第一次出现的下标。
8
例
0
1
2
3
6
9
5
4
7
下标 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Eu: 0 1 2 1 3 1 0 4 0 5 6 5 7 8 7 5 9 5 0
id: 0 1 2 1 2 1 0 1 0 1 2 1 2 3 2 1 2 1 0
P: 0 1 2 4 7 9 10 12 13 16
计算 LCAT(u,v)
Euler 遍历过程中,夹在u和v第一次被访问中间的结点是E[R[u],…,R[v]]。
其中深度最小的结点的下标是 RMQL(R[u],R[v])。
LCAT(u,v)的结果就是 E[RMQL(R[u],R[v])]。
例 – LCAT(6,9)
0
1
2
3
6
9
5
8
4
7
E: 0 1 2 1 3 1 0 4 0 5 6 5 7 8 7 5 9 5 0
L: 0 1 2 1 2 1 0 1 0 1 2 1 2 3 2 1 2 1 0
P: 0 1 2 4 7 9 10 12 13 16
R[6]
R[9]
E[10,…,16]
RMQL(10,16) = 11
LCAT(6,9) = E[11]=5
复杂度分析
预处理
数组构造:O(n)。
根据假设,对数组 L 进行预处理:f(2n-1)。
询问处理
三个数组的访问: O(1)。
根据假设,对数组 L 进行RMQ询问处理:g(2n-1)。
总共:
RMQ-LCA在线算法部分代码
bool visit[MAXNODE];
int oula[2*MAXNODE],dist[MAXNODE],pos[MAXNODE],minrmq[18][2*MAXNODE],id[MAXNODE];
int n,m;
void add(int u, int v, int w)
{
edge[e].to = v;
edge[e].w = w;
edge[e].next = head[u];
head[u] = e++;
}
void init(){
rst(head,-1);
rst(visit,false);
tmpdfn=0;
index=0;
e=0;
}
void dfs(int u){
visit[u]=true;
int len;
int oulanum=++tmpdfn;
oula[++index]=oulanum;
pos[u]=index;
id[oulanum]=u;
for(int i=head[u];i!=-1;i=edge[i].ne
您可能关注的文档
- 桩承台施工工艺标准解读.doc
- 桩基础工程施工组织设计方案解读.doc
- 人教版三年级语文下册《她是我的朋友》课件详解.ppt
- 桩基础技术交底目录解读.doc
- 桩基础施工方案(2#)解读.doc
- 人教版三上语文期中复习详解.ppt
- 桩基础施工监理实施细则解读.doc
- 桩基础知识(从勘察设计到选型构件)解读.docx
- 桩基工程技术要求2014.12.9解读.doc
- 桩基及基坑施工方案解读.doc
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)