Efficient k-step Weighted Reachability Queries Processing Algorithms

这篇文章介绍的一个问题是:给一张图,每条边有边权,长度都为1,每次查询给两个点u,v,问k次之内只走边权在[L,R]之间的边,能不能从u到v

不考虑这篇文章,假如我们碰到这个问题该怎么解决,离线的话可以把询问的区间用莫队处理,然后用一个带删除的并查集维护连通性,这个复杂度是非常优秀的,但是不支持k跳

那如果只考虑k跳的话,相当于任意两点最短路,可以用图的树分解去做

但是如果这两个都在一起的话就不是很好做了,毕竟单独边权限制就不好处理

文章给出的做法也是相当暴力的,但是这个暴力在现实数据集中也却很好用,具体来说对每个点存所有能到达的点的长度即边权区间

 这样查讯的时候直接在u或者v的集合里找就行,按照这个图片的形式的话,在uv较大的那个里边直接查就好了

但是其实这些信息中有很多重复的信息,如果压缩起来的话会更小,然后得到一个新的索引结构

这时候索引被大大压缩了,不过查询的时候就是看u,v各自的集合里有没有满足条件的相同元素,然后看看加起来的长度有没有超过给定长度

这就是文章主要做的事情,然后文章还提出来在这个基础上再做一些压缩 ,可以用个最小点覆盖去搞

最小点覆盖在图论问题好像应用很多,用来压缩索引很好用,但是需要分析性质看看到底能不能做,避免把正确结果给排除掉了

posted @ 2025-04-11 21:11  Slr  阅读(11)  评论(0)    收藏  举报