基于局部landmark的近似最短距离计算
2013-11-28 19:13
211 查看
1. 研究动机
1.1 问题计算思想对于求最短距离问题,准确的方法需要的信息量比较大,使得在传统的方法中进行在线查询比较不灵活,所以我们只需计算它们的近似最短距离。现有方法的计算思想:
(1) 选取一些顶点作为地标标签;
(2) 存储每个顶点到所有地标标签的实际最短距离;
(3) 任意一对顶点(s, t)之间的距离D(s, t) = min{D(s, li)+D(li, t)},其中li为第i个地标标签。
1.2 地标标签的选择
地标标签的选择存在的问题:
(1) 选取最优地标标签集合是NP-hard问题;
(2) 选取最小集合覆盖为NP-complete问题。
一下四种方法均可作为我们的地标标签的选择方案:
(1) Random selection
(2) Degree based selection
(3) Centrality based selection
(4) Coverage based selection
1.3 存在的问题
两个相距较近的顶点距所有的地标标签太远而造成误差过大。如下图所示,顶点l为地标标签,而当D(s, t) >>D(l, s) + D(l, t)时就会造成较大误差。
2. 改进方法
上述方法建立的标签成为全局地标标签,作者通过增加局部标签来降低错误率。计算思想:(1) 选取若干顶点作为全局地标标签;
(2) 从每一个顶点出发建立最短路径生成树;
(3) 给定查询(s, t),在生成树中计算结点s与结点t的LCA(最小公共祖先);计算方法参考RMQ(RangeMinimum Query);
(4) 查询点(s, t)之间的近似最短距离D(s, t) = min{D(s, li) + D(s, li) – 2D(lca, li)},其中li为地标标签,lca为结点s与结点t的最小公共祖先。
优化1:压缩图
(1) 压缩Graph Incident Tree。GIT就是图中的树,如下图所示,红色区域内为一棵GIT树。对于该树只保留顶点a以及树中所有顶点到a的距离。
(2) 压缩Chain Nodes。如图所示,绿色部分为一个Chain Nodes。删除顶点i和j并存储顶点i和j到顶点h和k的距离。
优化2:local search
为了进一步减小错误率,将在查询点s和t到地标标签(包括全局和局部)上的所有顶点都向外扩展h步,若有交集且通过这些顶点使得s与t的距离变小,则最短距离更接近于真实值。
论文:Approximate Shortest Distance Computing: A Query-Dependent LocalLandmark Scheme
相关文章推荐
- 计算点到线段最短距离的代码
- 基于深度学习的人脸识别系统系列——使用CUBLAS加速计算人脸向量的余弦距离
- 计算点到线段最短距离的代码
- 基于距离的计算方法
- 基于热传播的测地距离计算-Siggraph 2013
- 基于词的编辑距离文本相似度计算
- 计算两个坐标点之间走最短距离有多少种走法
- 计算各点到源点的最短距离
- 基于距离的计算方法
- 基于距离的计算方法
- ElasticSearch2.1 基于空间位置geo_query距离计算
- [Java]一个简单的计算有向赋权图最短距离的代码
- 计算几何模板补充(三维空间体积、平面、直线、向量相关计算。附上hdu4741,求异面直线的最短距离与交点)
- 基于距离的计算方法
- 计算三维空间中点到三角形平面的最短距离
- 基于动态规划(dynamic programming)的计算两个字符串的编辑距离
- Ruby实现的最短编辑距离计算方法
- 空间两条直线段的最短距离及最近点计算
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【四】使用CUBLAS加速计算人脸向量的余弦距离
- Python基于动态规划算法计算单词距离