毕设第五周(阅读论文:The optimal sequenced route query)
来源:互联网 发布:viscosity mac 怎么用 编辑:程序博客网 时间:2024/06/05 19:17
问题引入
Optimal Sequenced Route(OSR) query是Nearest Neighbor的一个特殊类型,是说,从一个source出发,要经过依次经过给定类型的点,最后到达目的地,求最短路径。
对应到现实生活,比如,有一天你从家出发,事先的路径规划是依次经过购物中心,饭店,最后到电影院。如果沿途经过哪家购物中心、哪家饭店、哪家电影院对你来说并不重要,你只是想找到最短的总路程,那么,这就是一个OSR问题。
数学符号可以很清晰的表现这个过程。
首先,我们有一个目的地
最后目标函数为
Paper中展示了解决OSR的几种算法,分别是:
- 基于Dijkstra的算法,以及Enhanced Dijkstra’s algorithm(EDJ)
- 向量空间里的Light optimal route discoverer(LORD)算法
- 向量空间里的R-tree-based LORD算法
- 矩阵空间里的progressive neighbor exploration(PNE)算法
下面将分别阐述这几种算法。
Paper中的每个算法都用到了剪枝来进行优化,用贪心法求得的路径是一个不错的剪枝标准,先记做
基于Dijkstra的算法,以及Enhanced Dijkstra’s algorithm(EDJ)
这种算法的核心思想是利用Dijkstra来求最短路径,为了能用上Dijkstra,首先需要构造有向图。有向图的构造过程十分简单:p点连
这种算法有两个弊端,首先,总的边数
再者,经典Dijkstra的算法复杂度为
不过这种算法还有优化的空间,注意到一个事实,任何到p的距离大于
向量空间里的Light optimal route discoverer(LORD)算法
LORD算法从点集
有两个剪枝指标,
在介绍算法之前,首先引入一条定理,
定理一:如果
由这条定理可以知道,如果我们想求从
假设第一次迭代以后,我们得到了若干partial routes的集合,记为
第三次迭代。。。
第四次迭代。。。
。。。
第m次迭代。。。
以此类推,可以得到问题的解。
Paper中给的算法伪代码如下:
向量空间里的R-tree-based LORD算法
R-tree在这里用来进一步剪枝。注意到在LORD算法中,每次迭代需要对
首先,筛选条件
用简单的数学计算可以推出
下面说如何在算法中利用R-tree:
对于R-tree的一般应用,原理很简单——在R-tree上用一个广度优先搜索即可,在本篇Paper中,用法相似:
首先需要说明的是,因为
在每次迭代中,首先检测R-tree中的node是否与
矩阵空间里的progressive neighbor exploration(PNE)算法
在矩阵空间中,因为两点间的距离不再是欧氏距离,求两点间的最短路径的开销要变大,上述几种算法并不适用,为此Paper中提出了PNE算法。
首先算法用到了两个工具函数:
- NN(point p, dataset
Ui ), 用来查找Ui 中距离点p 最近的那个点 - NextNN(point p, point n, dataset
Ui ),用来查找Ui 中除了点n 之外,满足D(p,q)≥D(n,p) 条件且距离点p 最近的那个点。
PNE中解的构造是一个正向过程,即从起始点
算法伪代码如下:
算法的精妙之处在于维护了一个最小堆,堆中的每个元素都是已经探索到的partial sequenced route,键值是route的长度;每次迭代都弹出堆顶元素
- 搜索
Uk+1 中距离Pk 最近的点。搜到以后扩展路径,并加入堆中 - 把
Pk 从PSR 中去掉,然后在PSR 尾部添加NextNN(Pk−1 ,Pk ,UMk ),产生新的PSR′ 并将其加入堆中
之后进行下一次迭代。直到堆顶元素
算法的正确性的证明由数学归纳法给出(只需证明所有可能的最短路径都被检测到了),对partial candidate routes的size
从而由归纳法知,所有长度的partial candidate routes都会被检测到。
算法复杂度分析
之后用到的话再详细分析。
- 毕设第五周(阅读论文:The optimal sequenced route query)
- 毕设论文
- 毕设论文
- uva 1349 - Optimal Bus Route Design(完美匹配)
- UVA 1349Optimal Bus Route Design(网络流)
- (毕设论文摘抄)Web服务体系结构
- word毕设论文制作——封面(一)
- 文献阅读-Identifying driver mutations in sequenced cancer genomes
- 毕设——图像视觉显著性目标检测(第五周到第七周工作总结)
- 论文阅读(一)
- 论文阅读(二)
- 论文阅读(三)
- 论文阅读笔记 - The Google File System
- 第五周程序阅读(2)
- 第五周程序阅读(3)
- 第五周程序阅读(4)
- 第五周 阅读程序(1)
- 第五周程序阅读(6)
- CentOS 6.5修改英文为中文的方法
- 初步了解了下node.js 一点感受
- 安卓学习笔记三
- hiho #1257(Snake Carpet-贪吃蛇构造题)
- 查看一个.exe文件是32位还是64位的方法
- 毕设第五周(阅读论文:The optimal sequenced route query)
- 字符集处理: UTF-8
- 获取 网页跳转之间的方法
- Bitmap画板
- POJ 1228 Grandpa's Estate (稳定凸包的判定)
- zzulioj 1832: 贪吃的松鼠 (字符串排序)
- JAVA虚拟机之二:Java体系结构
- Android开发-service(一)
- 实现启动界面SplashActivity