LCA及其算法总结

GMQ出品,LCALCA 算法总结

目录

  • 一、前言
  • 二、LCALCA 问题概述
    • (一)什么是 LCALCA 问题?
    • (二) LCALCA 问题的主要应用
    • (三)常用求 LCALCA 算法
  • 三、求 LCALCA 的算法详解
    • (一)在线LCA的算法(爬树法)

一、前言

这是 LCALCA,可不是 liu_cheng_ao ,也不是 印度某不靠谱工程

二、LCALCA 问题概述

(一)什么是 LCALCA 问题?

LCALCALowestCommonAncestorLowest Common Ancestor基于有根树最近公共祖先问题。

LCA(T,u,v)LCA(T,u,v):给定一棵有根树 TT 和两个结点 uuvv,找到距离 uuvv 的最近的共同祖先结点,称为 LCALCA 问题。

比如这张图:

JKx2qJ.png

对于该有根树 TT,满足{LCA(T,5,2)=1LCA(T,3,4)=3LCA(T,4,5)=3\begin{cases}LCA(T,5,2)=1\\LCA(T,3,4)=3\\LCA(T,4,5)=3\end{cases}

(二) LCALCA 问题的主要应用

LCALCA 用于求解两个点在这棵树上距离最近的公共祖先节点。

所以 LCALCA 主要是用来求解{\color{Red}当两个点仅有唯一一条确定的最短路径时的路径}这一类问题。

(三)常用求 LCALCA 算法

  • 【在线 LCALCA 算法】:类 STST 算法,又称爬树法
  • 【离线 LCALCA 算法】TarjanTarjan 算法
  • LCALCARMQRMQ 的转化】:利用 DFSDFSLCALCA 转化为 RMQRMQ 问题

未完待续~~QAQ