道路网络上的Aknearest neighbor(kNN)查询根据给定位置的网络距离检索knearest point of interest (POIs)。今天,在无处不在的移动计算时代,这是一个非常切题的问题。虽然欧几里得距离已经被用来作为一种启发式的搜索最接近的poi的道路网络距离,其有效性还没有被彻底的研究。最新的方法在查询性能方面有了显著的改进。早期的研究提出了基于磁盘的索引,并将其与主存储器中的当前技术进行了比较。然而,最近的研究表明,主要的记忆比较是具有挑战性的,需要仔细的适应。为了解决这些问题和其他一些问题,本文对主存储器进行了广泛的实验研究。我们使用每个方法的高效和公平的内存驻留实现来重现过去的实验,并对几个被忽略的评估进行额外的比较。值得注意的是,我们重新访问了先前丢弃的技术(IER),表明通过简单的改进,它通常是最佳性能的技术。
思科报告称,仅2013年就有超过5亿部移动设备被激活,其中77%是智能手机。由于智能手机和其他具有gps功能的设备的普及,以及廉价的无线网络带宽,基于地图的服务已经变得无处不在。例如,Global-WebIndex报告称,谷歌地图是2013年使用最多的智能手机应用,54%的智能手机用户使用过[1]。寻找附近的设施(如餐馆、自动取款机)是地图上最受欢迎的问题之一。由于最近邻(kNN)查询的普及和重要性,它可以找到给定查询位置的最近兴趣点(对象),在过去已经得到了广泛的研究。
忽略不能bekNNs的对象,也忽略与对象不相关的道路网络顶点。最近,有大量的工作来回答道路网络上的问题。一些最著名的算法包括增量网络扩展(INE)[22],增量欧式约束(IER)[22],距离浏览[24],路由覆盖和关联目录(ROAD)[19,20],和g -tree[29,30]。在本文中,我们对这些算法进行了深入的实验评估。请注意,这是一个会议论文的扩展版本,使用addi进行了扩展道路网络上的knn问题虽然与最短路径问题有许多相关的方面,但却带来了新的挑战。由于对象的总数通常要大得多,因此计算到allobjects的最短路径(或网络距离)来确定哪个areknn是没有效率的。挑战在于不仅要忽略不能bekNNs的对象,也忽略与对象不相关的道路网络顶点。最近,有大量的工作来回答道路网络上的问题。一些最著名的算法包括增量网络扩展(INE)[22],增量欧式约束(IER)[22],距离浏览[24],路由覆盖和关联目录(ROAD)[19,20],和g -tree[29,30]。在本文中,我们对这些算法进行了深入的实验评估。请注意,这是一篇会议论文的扩展版,附有附加的附录。
被忽视的竞争对手。IER[22]是道路网络中最早的knn算法之一。它经常是表现最差的方法,因此不再包括在比较中。IER的基本思想是用Di-jkstra算法计算最短路径距离,以欧几里得距离表示最近的对象。尽管近年来提出了许多显著更快的最短路径算法,但令人惊讶的是,IER从未与其他使用Dijkstra算法的knn方法进行过比较。为了确定IER的真实性能,它必须与最先进的最短路径算法相结合。
现有结果的差异。我们注意到在这一主题的一些最著名的论文中报告的实验结果中有几个差异。在[29]中,ROAD的表现明显低于Distance Browsing和INE。但根据[19]的说法,ROAD在实验上优于两者的距离浏览andINE。[19]和[29]的结果都表明距离浏览的性能比INE差。相比之下,远程浏览被证明比[24]中的INE更有效。这些矛盾确定了再现性的需要。
实现很重要。与最近的[27]研究类似,我们观察到简单的实现选择可以显著影响算法性能。例如,G-tree使用的距离矩阵可以用哈希表或数组来实现,从表面上看,两者都是合理的选择。然而,数组的实现实际上比哈希表的实现要快一个数量级。我们证明这是由于数据的局部性在g树的索引和它对缓存性能的影响。简而言之,看似无害的选择可能会极大地改变实验结果。我们也相信上述报告的差异很可能是由于实施者的不同选择。因此,使用谨慎的内存实现对现有的istingknn算法进行公平比较是至关重要的。
忽视评价措施/设置。本文所研究的方法都是将路网指标与对象集的指标解耦,即为路网建立一个指标,为对象集建立另一个指标。虽然现有的研究评估在路网指标方面,没有研究评价每个单项指标的行为。这些对象索引的构建时间和存储成本可能是开发人员在选择方法时的关键信息,特别是对于定期更改的对象集。另外,knn查询还没有被调查旅行时间图(只有旅行距离),这在实践中也是一个常见的场景。最后,最近的技术(G-tree和road)不包括对现实世界POIs的比较。
下面我们总结一下我们在本文中的贡献。复活的IER:我们首次用几种有效的最短路径技术来研究IER(见第5节)。我们表明,当使用更好的最短路径算法时,IER的性能显著提高。这一点上,IER是在大多数情况下表现最好的方法,包括在欧氏距离是一个较不有效的下界的旅行时间道路网络。
2. 高度优化的算法开源:我们提出了五种最著名的方法(IER,INE, Distance Browsing, ROAD和G-tree)的ef- efficient实现。首先,我们仔细地实现了第6节中描述的在主内存中提高性能的每一种方法。其次,我们彻底检查了每个算法,并做了各种改进,这些改进适用于任何设置,见附录a。运行实验的源代码和脚本已经以开源[2]的形式发布,我们尽最大努力确保它是模块化的和可重用的。
3.再现性研究:在每个算法的有效实现下,我们在第7节中对许多相同的数据集重复过去研究的许多实验。我们的研究结果提供了对最先进技术的更深入的理解,并对每种技术的优缺点有了新的见解。我们还表明,通过证明g -tree可以通过使用欧几里得距离来提高效率,有改进knn搜索启发式的空间。
4. 延伸实验与分析:第7节的综合实验研究超越了以往的研究:1)首次比较对象指标;2)首次在更大的数据集上比较了G-tree和其他高级方法(ROAD),揭示了新的趋势;3)在真实的POIs上评估所有方法(包括ROAD和G-tree);4)出行时间路网的适用方法评价。
5. 关于主存实现的指导:在第6节中,我们还演示了简单的选择如何严重影响算法的性能。我们分享了一个深入的案例研究,以提供关于数据局部性和缓存效率的算法和内存性能之间的关系。此外,我们强调了所涉及的主要选择,并通过示例和实验结果来说明它们,为未来的实现者提供提示。值得注意的是,这些见解可能适用于任何问题,而不仅仅是我们在这里研究的问题。
我们将路网表示为连通无向图(V,E),其中顶点集和边缘集分别为顶点集和边缘集。对于两个相邻顶点u,v∈v,我们定义它们之间的边ase(u,v),用权值(u,v)表示任何正度量,如距离或旅行时间。我们定义任意两个verticesu,v∈Vasd(u,v)之间的最短路径距离,即网络距离,是连接inguandv的权值的最小和。为了概念上的简单性,与现有的研究[24,29]类似,我们假设每个对象(即POI)和查询是给定一个查询顶点和一组对象顶点,akNN查询从q中根据它们的网络距离检索最近的对象。
:我们将现有的knn技术根据其使用的索引分为两大类:1)混合索引;2)解耦索引。使用混合索引的技术[10,14,18]创建一个单一索引来存储对象以及道路网络。例如,VN3[18]是一种值得注意的技术,它使用基于对象集的networkVoronoi图来划分网络。相比之下,解耦索引技术[19,22,24,29]对对象集和路网使用两个单独的索引,这更实用,并有以下几个优势。
首先,一个真实世界的knn查询可以应用到许多对象集中的一个,例如,返回最近的餐馆或找到最近的停车位。混合索引必须为每种类型的对象重复索引道路网络,这需要巨大的空间和预处理时间开销。但是,不管对象集的数量如何,解耦索引只需要一个路网索引,从而降低了存储和预处理成本。其次,如果对象集发生变化,混合索引必须更新整个索引并重新处理整个路网,而解耦技术只需要更新对象索引。例如,基于网络的Voronoi图必须更新,从而产生廉价的重新计算[18]。相反,在解耦索引中,对象索引(例如R-tree)的更新成本通常要低得多。这个问题对于经常改变的对象集来说更为严重,例如,如果对象是最近可用的停车位。
由于这些优点,所有最近的knn技术都使用了解耦索引。在本文中,我们主要关注最显著的knn算法,采用解耦索引。这些算法要么采用基于扩展的方法,要么采用启发式最佳优先搜索(BFS)。基于扩展的方法在网络距离顺序中相遇。启发式的BFS方法反而使用启发式来评估最有希望的knn候选,不一定是在网络距离顺序,潜在的终止更快。我们研究了五种最显著的方法,包括两种扩展方法INE[22]和ROAD[19],三种启发式的BFS方法IER[22],距离浏览(DisBrw)[24]和G-tree [29],鉴于智能手机的快速增长以及相应的基于地图的服务的广泛使用,应用程序必须采用快速的内存查询处理来满足高查询工作量。由于主存容量的增加及其可承受性,内存中处理已经变得可行。因此,我们将研究局限于内存查询处理。然而,我们注意到基于磁盘的设置也很重要,但是由于空间的限制超出了本文的范围。
我们现在描述我们研究评估的每种方法背后的主要思想。一些方法提出了一种道路网络索引和akNN查询算法。在某些情况下,例如G-tree,用相同的名字同时指向index和knn算法。
[22]是一种基于Dijkstra算法的增量网络扩展方法。和Dijkstra一样,INE维护到目前为止看到的顶点的优先级队列(用查询vertexq初始化)。搜索扩展到最近的这些顶点。Ifv∈Othen将其作为一个knn和ifvis的第k个对象添加到结果集,然后搜索结束。否则边被用来放松与邻居的距离,并继续扩张。在Dijkstra算法中,松弛包括更新到邻居的最小网络距离,通过v来确定网络距离。INE的缺点是它访问所有离qth更近的节点,而不是第k个对象,如果这个对象离q很远,这可能是相当重要的。
增量欧几里得约束(IER)[22]利用欧几里得距离作为启发式检索候选道路,因为它是具有旅行距离边缘的路网的网络距离的下界。首先,IER检索euclideanknn,例如,使用R-tree[23]。然后计算到每个这些对象的网络距离,并按此顺序对它们进行排序。这个集合成为candidateknns,到最远的候选对象(记为asDk)的网络距离是到最近邻truekth的距离的上界。现在,IER检索下一个最近的Eu-clidean邻居。如果欧氏距离topisdE(q,p