基于二维拓扑数的可达性查询
来源:互联网 发布:biorad cfx96 软件 编辑:程序博客网 时间:2024/06/02 05:33
1. 基本概念
在一个有向无环图中,可达性查询r(u, v)是指u到v是否有一条路径,当u到v存在一条路径时,r(u, v)返回true,即u到v可达;反之返回false,即不可达。
任意一个有向图均可转化为有向无环图,详细转化方法可参考(http://blog.csdn.net/woniu317/article/details/23658301)。易得处于同一个强连通分量中的节点转换后成为了一个节点,当查询可达性的时候可以先转化为有向无环图中的结点再进行查询即可。因此所有的可达性查询只需要研究有向无环图。
2. 基本思想
对于任意一个图的任意一种拓扑序列进行分析可得:
若结点u到结点v可达,则必然有u的拓扑序号小于v的拓扑序号;也就是说当结点u的拓扑序号大于v的拓扑序号时,则u一定不可达v。
如图2-1所示,表2-1中T1列为图的一种拓扑序列。例如a到h可达,a的序号小于h的序号;g的序号大于h的序号,因此g不可达h,从图2-1中可验证。值得注意的是,即使u的序号小于v的序号,u也不一定可达v,例如结点a与b。
不难发现利用表2-1中的拓扑顺序会存在很多的不能修剪的结点对,比如(a,b),(a,g),(a,f)。即使换一种拓扑顺序也会出现同样的状况。因此,同时采用两种拓扑顺序进行修剪效果更佳。但如何求得两种拓扑顺序使得剪枝效果最好是NPC问题,因此采用一种近似的方式求得第二个拓扑序列。
图2-1 图G
表2-1 图2-1的拓扑序列
第二次的拓扑序列求解时,对于所有的入度为0的结点,先给第一个拓扑序号大的结点编号,这样就增强了两维拓扑序列的过滤效果。图2-1所求的第二次的拓扑序号如表2-1中T2列所示。
若u到v可达,则必然有u的两个拓扑序号分别对应小于v的拓扑序号。同样逆否命题,若u的两个拓扑序号不都小于v的拓扑序号,则u一定不可达v。
3. 可达性查询
可达性查询采用深度优先遍历的方式,查询流程如图3-1所示。
图3-1 可达性查询流程图
参考论文
ReachabilityQueries in Very Large Graphs A Fast Refined Online Search Approach
- 基于二维拓扑数的可达性查询
- 基于交通数据的可达性分析
- 基于DFS的拓扑排序
- 基于队列的拓扑排序
- 基于DFS的拓扑排序
- 有向图的可达性
- 1*n的马 可达性
- 拓扑排序方案数的求法
- 基于Extjs3.0的网络拓扑
- 基于HTML5的网络拓扑图设计
- 基于HTML5的网络拓扑图
- 基于Jtopo的网络拓扑编辑器初探
- 【算法】基于AOV网的拓扑排序
- 网络拓扑距离的高效KNN查询
- 二维数组---两个数和的最大值
- 寻找二维矩阵里的一个数
- 常用二维平面拓扑算法
- 基于DBUtils中的查询对Java中的回调函数的理解
- ios-loadView,viewDidLoad,viewDidUnload三者之间的关系
- windows批处理实现telnet登陆和运行命令--设置缺省输入法为英文
- 几张简约而不简单的JavaScript学习树状图
- AS3 Embed标签的数据类型
- hibernate 根据配置生成数据库
- 基于二维拓扑数的可达性查询
- 辛星笔记——VIM学习篇(推荐阅读)
- WebService: 测试窗体只能用于来自本地计算机的请求。
- 快速集成下拉上拉刷新demo
- Spring3.x--使用SpEL表达式装配
- c++虚函数表解析
- 简单移动动画
- Android中ListView分页加载数据
- java过滤html style script脚本