基于度量k最近对的景点和酒店最佳配对方法
【技术领域】
[0001]本发明涉及数据库的索引与查询技术,特别是基于度量k最近对的景点和酒店最佳配对方法。
【背景技术】
[0002]查询/搜索是计算机科学的基本问题,存在于目前几乎所有的计算机应用领域。现有的查询处理大多关注欧氏空间,并用欧式距离来度量对象之间的邻近关系;但在许多的实际应用,如地理信息系统、数据挖掘、模式识别,对象之间的邻近关系并不能用欧式距离来度量,而需要用借助其它的距离度量方式。例如,路网上的两个位置间的距离度量需要借助于路网距离,即连接两点的最短路径长度;字符串之间的距离度量需要使用编辑距离。
[0003]为此,我们需要借助度量空间。度量空间是支持任意距离函数的一种更为广泛的空间,其距离函数需满足非负性、对称性和三角不等式特性。为了快速、有效地组织、存储和访问度量空间数据,专家学者们提出了大量的索引方式。迄今为止,影响最大、应用最广泛的是M树。M树是Ciaccia, Patella和Zezula在1997年提出的,它是一棵基于外存的平衡树,其更新操作代价小且无需重构树。
[0004]最近邻对查询是一种典型的空间查询类型,它在地理信息系统、数据挖掘、推荐系统等领域具有广阔的应用前景。最近邻对查询从两个数据集中查找距离最近的一组点对,而k最近对查询则是找出距离最近的k组点对。其可以用于景点和酒店最佳配对,即返回相对位置最近的k组景点和酒店组合,从而为旅游行者提供合理推荐。其中,景点和酒店之间的距离为路网距离。
[0005]目前,针对k最近对查询处理方法大多针对欧式空间,并利用欧式空间的几何特性以加速查询;但不幸的是,这些几何特性在度量空间不存在。所以,这些方法不能用来解决度量k最近对查询。此外,已有的度量k最近对查询方法是基于内存的方法,即假设整个数据集可以保存在内存中,因而适用性有限,扩展性差,不能用来处理大规模数据。
【发明内容】
[0006]本发明要克服现有技术的上述缺点,提供基于度量k最近对的景点和酒店最佳配对方法。
[0007]本发明解决其技术问题所采用的技术方案步骤如下:
[0008]步骤(I):收集景点和酒店的位置数据,然后对景点和酒店数据集分别建立索引,并估计第k个最近对的距离;
[0009]步骤(2):遍历景点和酒店数据集索引,并修剪查找空间,以获得多个景点和酒店组合,其组合个数不大于k;
[0010]步骤(3):补全k最近对查询结果集,以找到k个最近的景点和酒店组合;
[0011]步骤(4):向用户返回步骤⑶中所得的k个景点和酒店组合,以供用户选择最佳的景点和酒店组合。
[0012]步骤(I)中每一个景点或酒店是通过一个位置坐标数据点表示;采用M树对景点集和酒店集分别进行索引,M树中每个结点项包含一个中心数据点、结点覆盖区域半径、以及中心数据点到其父结点项的中心数据点的距离信息;并利用统计的景点数据集和酒店数据集之间的距离分布函数FO计算估计的第k个最近对距离,即第k个最近景点和酒店组合的距离,具体的估计距离为min {r |F (r)彡k}。
[0013]步骤(2)中采用深度优先遍历和最佳优先遍历结合的方式遍历两棵M树;深度优先遍历方式即自顶而下同时遍历两棵M树,而最佳优先遍历则按照结点项组合间最小距离升序来同时遍历两棵M树;结点项组合间最小距离被定义为两个结点项数据点中心点间的距离减去两个结点项覆盖区域半径;根据结点项组合间最小距离分为两种遍历情况:
[0014]2.1)结点项组合间最小距离小于等于0,则采用深度优先遍历;
[0015]2.2)结点项组合间最小距离大于0,则采用最佳优先遍历;
[0016]在遍历过程中,利用估计的第k个最近对距离以及k最近对距离上界对查找空间进行剪裁;若结点项组合间近似最小距离或者最小距离大于估计的第k个最近对距离或者k最近对距离上界,则对该结点项组合进行剪裁;其中近似最小距离可以通过M树中存储的距离以及已计算的父结点项组合间距离,并根据度量空间的三角不等特性计算所得,且近似最小距离是最小距离的下界值;k最近对距离上界初始化为无穷大,并在查找过程中不断被更新收敛;最后,利用未被剪裁的景点和酒店组合更新查询结果以及k最近对距离上界。
[0017]步骤(3)中对步骤(2)中所获得的初步查询结果集进行补全,根据步骤(2)中所获的景点和酒店组合的个数分为两种情况:
[0018]3.1)步骤(2)中所获得的景点和酒店组合个数等于k个,则说明估计的第k个最近对距离精确或偏大;因而,无需对步骤(2)中所获得的查询结果集进行补全,也就是说步骤(2)中所得的k个景点和酒店的组合就是最终查询结果集;
[0019]3.2)步骤(2)中所获得的所获得的景点和酒店组合个数小于k个,则说明估计的第k个最近对距离偏小,即在步骤(2)中利用估计的第k个最近对距离剪裁了一些正确结果;因而,采用最佳优先的遍历方式继续遍历被估计的第k个最近对距离剪裁的结点项组合,以补全查询结果集,从而获得k个最近的景点和酒店组合。
[0020]步骤⑷退出k最近对查询,向用户返回步骤(3)中所得的k个景点和酒店组合,以供用户选择最佳组合。
[0021]本发明具有的有益效果是:
[0022]本发明充分利用了空间数据库中索引技术和k最近对查询技术,丰富和优化了度量空间下的查询方法以及k最近对查询处理方法;采用深度优先遍历和最佳优先遍历相结合的方式;利用k最近对的距离上界和度量空间的三角不等式,开发若干有效的剪枝策略来修剪查找空间;提出基于估计第k个最近对距离的积极剪裁和补全的算法框架,从而大大降低了 I/O和CPU时间。
【附图说明】
[0023]图1是本发明的实施步骤流程图。
[0024]图2为基于度量k最近对查询的景点和酒店最佳配对方法的工作原理示意图。
[0025]图3为M树结点项组合间最小距离和估计最小距离示意图。
【具体实施方式】
[0026]现结合附图和具体实施对本发明的技术方案作进一步说明:
[0027]如图1,图2所示,本发明具体实施过程和工作原理如下:
[0028]步骤(I):收集景点和酒店的位置数据,然后对景点和酒店数据集分别建立索引,并估计第k个最近对的距离;
[0029]步骤(2):遍历景点和酒店数据集索引,并修剪查找空间,以获得多个景点和酒店组合,其组合个数不大于k;
[0030]步骤(3):补全k最近对查询结果集,以找到k个最近的景点和酒店组合;
[0031]步骤(4):向用户返回步骤⑶中所得的k个景点和酒店组合,以供用户选择最佳的景点和酒店组合。
[0032]步骤(I)中每一个景点或酒店是通过一个位置坐标数据点表示;采用M树对景点集合和酒店集进行分别索引,M树中每个结点项包含一个中心数据点、结点覆盖区域半径、以及中心数据点到其父结点项的中心数据点的距离信息;如图3所示,EP1、EP2、EP#景点结点项,EQ1、EQ2、EQ3是酒店结点项,其中Pf^Epl的中心数据点,d(p6,p8)为Epl的覆盖区域半径,d(pi,p6)是Ep3的中心数据点p6到其父结点项PE P的中心数据点P1距离;接着,利用统计的景点数据集和酒店数据集间距离分布函数FO计算估计的第k个最近对距离,即第k个最近的景点和酒店组合距离,具体的估计距离