CN112380460A - 一种基于近似算法的最短路径查询方法和系统 - Google Patents

一种基于近似算法的最短路径查询方法和系统 Download PDF

Info

Publication number
CN112380460A
CN112380460A CN202011289860.3A CN202011289860A CN112380460A CN 112380460 A CN112380460 A CN 112380460A CN 202011289860 A CN202011289860 A CN 202011289860A CN 112380460 A CN112380460 A CN 112380460A
Authority
CN
China
Prior art keywords
path
representative
cache
entering
paths
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011289860.3A
Other languages
English (en)
Other versions
CN112380460B (zh
Inventor
周旭
黄阳
李肯立
陈岑
杨志邦
曾源远
罗文晟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan University
Original Assignee
Hunan University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hunan University filed Critical Hunan University
Priority to CN202011289860.3A priority Critical patent/CN112380460B/zh
Publication of CN112380460A publication Critical patent/CN112380460A/zh
Application granted granted Critical
Publication of CN112380460B publication Critical patent/CN112380460B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9537Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • G06Q10/047Optimisation of routes or paths, e.g. travelling salesman problem
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Economics (AREA)
  • General Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Marketing (AREA)
  • Development Economics (AREA)
  • Signal Processing (AREA)
  • Game Theory and Decision Science (AREA)
  • Data Mining & Analysis (AREA)
  • Entrepreneurship & Innovation (AREA)
  • General Engineering & Computer Science (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于近似算法的最短路径查询方法,包括:以固定的时间间隔接收来自多个用户的多个路径查询请求,根据所有路径查询请求对应路径的收益确定代表路径,将该代表路径作为当前代表路径存储在服务器的缓存中,从所有路径查询请求中选择与代表路径夹角为30°的所有路径,并将所有路径中目标点位于当前代表路径上的路径返回给客户端,针对每一条其对应路径没有被返回给客户端的路径查询请求而言,在服务器的缓存中对该路径查询请求进行查询处理。本发明能够解决现有最短路径查询方法中存在的路径权重固定且单一、更新权重花销大、更新频率高的技术问题,以及对用户响应速度快、但总体查询速度慢的技术问题。

Description

一种基于近似算法的最短路径查询方法和系统
技术领域
本发明属于路径规划技术领域,更具体地,涉及一种基于近似算法的最短路径查询方法和系统。
背景技术
随着移动互联网的发展,在日常生活中人们基于地理位置的查询服务越来越多。然而在基于地理位置的服务中路径规划是一项最基础的服务,其中最短路径查询是路径规划领域最基本的操作之一,其为人们的出行提供了重要的路线参考。
目前主流的最短路径查询方法主要包括三种:一、基于全局索引的静态图检索方法,其主要是采用快照的形式对地理信息上的数据进行采集,保持地理信息不变,通过对道路网建立索引结构进行最短路径的查询(常见的索引结构有基于地标和三角不等式的ALT算法、基于层次的HiTi算法、基于收缩层次结构CH算法、基于主干道算法AH、2-hoplabeling等),以此得到用户查询请求的结果;二、基于全局索引的动态图检索方法,其主要是对动态的道路网上的权重信息进行采集更新,其包括两类,第一类是通过对现对现有的静态全局检索的方法加以改进,如Dynamic-CH、Dynamic-PLL、比特并行最短路径索引结构(Bit parallel shortest path tree indexing structure简称,BPL)等等,此类方法主要是通过点与点之间建立快捷附加边(shortcut),通过shortcut进行快速的查找;第二类则是通过对道路网建立地理区域分区,利用地标、重合度等等方式修剪,再根据每个分组的边界顶点进行连接得出近似的最短路径;三、基于缓存的路径检索方法,其包括两种,第一种是动态缓存,其主要依赖于实时的查询,主要关注替换策略和保证缓存的稳定性;另一种是静态缓存,其主要依赖于查询日志,统计一段时间内的查询日志中高访问频率的查询将其装入缓存,并设置固定的更新时间。
然而,上述现有的最短路径查询方法均具有一些不可忽略的缺陷:首先,对于基于全局索引的静态图检索方法而言,其静态图的最短路径计算虽然只建立一次便可以重复利用,容易优化,效率高,但是其道路网上的权重固定,考虑权重单一,不适合道路网中交通路况不稳定性和随机性的情况;第二,对于基于全局索引的动态图检索方法而言,动态图的最短路径计算虽然可以实时更新,但是高效的返回最短路径是非常具有挑战的问题,当动态空间网络更新权重时,更新权重以及重新计算最短路径的开销非常昂贵;第三,对于基于缓存路径检索方法而言,其很容易减少查询的消耗,结合缓存本身处理速度快的特点,能够缓解服务器的计算压力,提高用户请求的响应速度;但是一般缓存技术利用历史数据进行计算,无法及时更新缓存,不能满足用户实时查询的需求。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于近似算法的最短路径查询方法和系统,其目的在于,解决现有最短路径查询方法中存在的路径权重固定且单一、更新权重花销大、更新频率高的技术问题,以及对用户响应速度快、但总体查询速度慢的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于近似算法的最短路径查询方法,包括以下步骤:
(1)以固定的时间间隔接收来自多个用户的多个路径查询请求,每个路径查询请求包括其对应路径的起始点、目标点、起始点与目标点之间的欧几里得距离;
(2)根据所有路径查询请求对应路径的收益确定代表路径,将该代表路径作为当前代表路径存储在服务器的缓存(Cache)中,从所有路径查询请求中选择与代表路径夹角为30°的所有路径,并将所有路径中目标点位于当前代表路径上的路径返回给客户端;
(3)针对步骤(2)中每一条其对应路径没有被返回给客户端的路径查询请求而言,在服务器的缓存中对该路径查询请求进行查询处理,以得到该路径查询请求对应的最短路径,并将该最短路径返回到客户端。
(4)针对步骤(2)和(3)处理完毕后,步骤(1)得到的所有路径查询请求中所有其对应路径还没有被返回给客户端的每条路径查询请求而言,利用双向A*算法对该路径查询请求对应路径的起始点到目标点进行处理,以得到该路径查询请求对应的路径,并将该路径返回给客户端。
优选地,在服务器的缓存中,采用路径信息索引的方式存储每条代表路径,并存储代表路径的起始点、目标点、到达时间和收益;
在服务器的缓存中是以位图索引的方式存储代表路径上的所有节点,若某个节点v的值为0,则表示缓存中的代表路径不包含此节点v,若节点v的值为1,则表示缓存中的代表路径包含此节点v。
在服务器的缓存中采用节点邻接索引(Node Neighbor Index)的方式存储代表路径上节点间的邻接关系,记录缓存的位图中要存储的代表路径上节点之间的邻接关系。
优选地,步骤(2)包括以下子步骤:
(2-1)设置计数器i=1;
(2-2)判断i是否大于等于服务器的缓存所能存储的最大路径查询请求数,如果是则进入步骤(3),否则转入步骤(2-3);
(2-3)设置计数器j=1;
(2-4)判断j是否大于等于路径查询请求的总数,如果是则过程结束,否则转入步骤(2-5);
(2-5)从除了第j条路径查询请求以外的所有路径查询请求中,获取与第j条路径查询请求对应的路径具有相同起始点的所有路径对应的M条路径查询请求,计算第j条路径查询请求和M条路径查询请求各自对应路径的收益,并将最大收益对应的路径作为代表路径;
(2-6)从第j条路径查询请求和M条路径查询请求对应的路径中选择与代表路径夹角为30°的所有路径;
(2-7)将步骤(2-6)选择的所有路径中目标点位于当前代表路径上的路径返回给客户端;
(2-8)判断服务器的缓存中存储的代表路径的总数是否大于1,如果是则进入步骤(2-9),否则进入步骤(2-14);
(2-9)设置计数器k=1;
(2-10)判断k是否大于等于缓存中在当前代表路径之前存储的代表路径总数,如果是则进入步骤(2-15),否则进入步骤(2-11);
(2-11)判断步骤(2-6)存储在缓存中当前代表路径和该当前代表路径之前存储的第k条代表路径之间的相似度是否大于已预设阈值,如果是则进入步骤(2-12),否则进入步骤(2-15);
(2-12)判断存储在服务器的缓存中的当前代表路径的收益是否大于缓存中先前存储的第k条代表路径的收益,如果是则进入步骤(2-13),否则进入步骤(2-14);
(2-13)把缓存中先前存储的第k条代表路径替换为步骤(2-6)存储在缓存中的当前代表路径,并转入步骤(2-14);
(2-14)设置k=k+1,并进入步骤(2-10);
(2-15)设置j=j+1,并返回步骤(2-4);
(2-16)设置i=i+1,并返回步骤(2-2);
优选地,步骤(2-5)中,计算路径的收益的计算公式是:
Figure BDA0002783492690000041
其中,Rvo表示路径的起始点,Rvd表示路径的目标点,|RvoRvd|表示路径的起点和目标点之间的欧几里得距离,∑Rvo表示路径上起始点的邻接节点的总数,∑Rvd表示路径上目标点的邻接节点的总数,k表示路径上节点的总数,
Figure BDA0002783492690000052
表示步骤(1)得到的所有路径查询请求中,以路径的起始点Rvo为起始点、Rvd为目标点、并与路径夹角为30°的所有路径对应路径查询请求的总数。μ1、μ2、μ3、μ4分别为以上4个参数的影响因子,其取值分别为μ1=0.2,μ2=0.1,μ3=0.5,μ4=0.2。
优选地,步骤(2-11)中计算代表路径之间相似度的计算公式是:
Figure BDA0002783492690000051
其中P为缓存(cache)中已有的代表路径,P1为当前代表路径。L(SP∩SP1)为路径P与路径P1共同的节点数量,L(P)表示代表路径P上的节点数,L(P1)表示代表路径P1上的节点数,min{L(P),L(P1)}表示路径P上的节点数与路径P1上的节点数二者之间的最小值。
优选地,步骤(3)包括以下子步骤:
(3-1)设置计数器a=1;
(3-2)判断a是否大于等于所有其对应路径没有被返回给客户端的路径查询请求的总数,若是则过程结束,否则进入步骤(3-3);
(3-3)设置计数器b=1;
(3-4)判断b是否等于缓存中的最大存储路径数量,若是则进入步骤(3-8),否则进入步骤(3-5);
(3-5)在服务器的缓存中,判断缓存中的第b条代表路径上的节点是否包含所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求对应的路径的起始点和目标点,如果是则进入步骤(3-6),否则进入步骤(3-7);
(3-6)将缓存中第b条代表路径,作为所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求的路径查询结果,并将该路径查询结果返回到客户端,然后转入步骤(3-29)。
(3-7)设置b=b+1,并返回步骤(3-4);
(3-8)针对所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求而言,将其对应路径的长度设置为无穷大;
(3-9)设置计数器c=1,d=1,e=1,并初始化数组SO、SD为空;
(3-10)判断c是否大于等于服务器的缓存所能存储的最大路径查询请求数,若是则进入步骤(3-18),否则进入步骤(3-11);
(3-11)判断服务器的缓存中存储的第c条代表路径上是否包含所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求对应路径的起始点,如果是则进入步骤(3-12),否则进入步骤(3-14);
(3-12)将服务器的缓存中存储的第c条代表路径存储到数组SO;
(3-13)设置d=d+1,并进入步骤(3-17);
(3-14)判断缓存中存储的第c条代表路径上是否包含所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求对应路径的目标点,如果是则进入步骤(3-15),否则进入步骤(3-17);
(3-15)将第c条代表路径存储到数组SD;
(3-16)设置e=e+1,并进入步骤(3-17);
(3-17)设置c=c+1,并返回步骤(3-10);
(3-18)设置计数器f=1,g=1;;
(3-19)判断f是否大于等于数组SO中存储的代表路径的数量d,如果是则进入步骤(3-27),否则进入步骤(3-20);
(3-20)判断g是否大于等于数组SD中存储的代表路径的数量e,如果是则进入步骤(3-26),否则进入步骤(3-21);
(3-21)判断数组SO中存储的第f条代表路径和数组SD中存储的第g条代表路径是否有公共节点vm,若是进入步骤(3-22),否则进入步骤(3-25);
(3-22)对于所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求对应的每一条路径而言,判断是否有等式
Figure BDA0002783492690000071
成立,若是则进入步骤(3-23),否则进入步骤(3-25),其中ρ表示约束阈值,dis(vovm)表示从起始点vo到公共节点vm的路径的长度,dis(vmvd)表示从公共节点vm到目标点vd的路径的长度,ρ为给定的约束阈值,|vovd|表示从起始点vo到目标点vd的欧几里得距离。
(3-23)针对所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求而言,判断其对应路径中从起始点vo到公共节点vm再到目标点vd的路径的长度dis(vovmvd)是否大于等于路径的长度dis(vovd),如果是则进入步骤(3-25),否则进入步骤(3-24),且有dis(vovmvd)=dis(vovm)+dis(vmvd)。
(3-24)对于所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求而言,将其对应路径的长度设置为dis(vovm)=dis(vovmvd),并将从起始点vo到目标点vd的路径设置为从起始点vo到公共节点vm再到目标点vd的路径;
(3-25)设置g=g+1,并返回步骤(3-20);
(3-26)设置f=f+1,并返回步骤(3-19);
(3-27)判断所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求q=(vo,vd)对应路径的长度dis(vovm)是否是无穷大,如果是进入步骤(3-29),否则进入步骤(3-28);
(3-28)向客户端返回所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求对应的路径vo→vm→vd,以及路径的长度dis(vovmvd)。
(3-29)设置a=a+1,并返回步骤(3-2)。
按照本发明的另一方面,提供了一种基于近似算法的最短路径查询系统,包括:
第一模块,用于以固定的时间间隔接收来自多个用户的多个路径查询请求,每个路径查询请求包括其对应路径的起始点、目标点、起始点与目标点之间的欧几里得距离;
第二模块,用于根据所有路径查询请求对应路径的收益确定代表路径,将该代表路径作为当前代表路径存储在服务器的缓存(Cache)中,从所有路径查询请求中选择与代表路径夹角为30°的所有路径,并将所有路径中目标点位于当前代表路径上的路径返回给客户端;
第三模块,用于针对第二模块中每一条其对应路径没有被返回给客户端的路径查询请求而言,在服务器的缓存中对该路径查询请求进行查询处理,以得到该路径查询请求对应的最短路径,并将该最短路径返回到客户端;
第四模块,用于针对第二模块和第三模块处理完毕后,步骤(1)得到的所有路径查询请求中所有其对应路径还没有被返回给客户端的每条路径查询请求而言,利用双向A*算法对该路径查询请求对应路径的起始点到目标点进行处理,以得到该路径查询请求对应的路径,并将该路径返回给客户端。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)由于本发明采用了步骤(1)到步骤(3),其对路径查询请求给定的查询起始点并按照角度进行分组划分,选择查询起始点的所有分组中收益最大的路径存储到缓存中,用位图的形式进行存储,并根据路径查询请求的到达时间与当前时间的时间间隔、与缓存中已有代表路径的相似度对缓存里的内容更新,最后根据代表路径的结果返回可以包含分组查询中的所有路径的结果,因此能够解决现有最短路径查询方法中存在的路径权重固定且单一、更新权重花销大、更新频率高的技术问题;
(2)由于本发明采用了步骤(3)和步骤(4),本发明首先在服务器的缓存中,对客户端的路径查询请求进行0/1的“与”查询操作,其次不能直接查询到的路径进行两条代表路径的连接操作,找出符合近似最短路径要求的路径,通过前两个操作仍不能找到路径查询请求结果时则在服务器中进行双向A*算法查询并返回最短路径以及路径的长度,从而能够解决现有最短路径查询方法中存在的对用户响应速度快、但总体查询速度慢的技术问题;
(3)由于本发明使用缓存来存储路径收益大的路径,同时结合了位图形式存储路径,使得缓存存储的数据量减少,缓解了缓存存储量小的问题,因此,本发明能够综合提升现有路径规划方法中最短路径查询过程中存在的缺点,解决整个路径查询过程中的查询时间慢、开销昂贵的问题。
附图说明
图1是本发明基于近似算法的最短路径查询方法的流程图;
图2是本发明中路径查询请求的示意图;
图3是本发明路径查询请求与道路网之间的对应关系示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,本发明提供了一种基于近似算法的最短路径查询方法,包括以下步骤:
(1)以固定的时间间隔接收来自多个用户的多个路径查询请求,每个路径查询请求包括其对应路径的起始点、目标点、起始点与目标点之间的欧几里得距离;
具体而言,本步骤中的时间间隔是3天到1个月,优选是7天,也就是说,当对于某条路径查询请求而言,时间间隔=当前系统时间与接收到该路径查询请求的时间的时间差,在达到该时间间隔后,就需要接收新的路径查询请求。
如图2所示,其表示出路径查询请求的一个示例,在图2中当时间为1时,有两条路径查询请求到达系统,分别是q1、q2,他们的查询起始点和目标点分别是v1到v8、v1到v5。当时间为2时,有一条路径查询请求达到系统,为q3,他的起始点和目标点分别为v1到v6,以此类推,在时间1-8内总共有6个查询请求。
如图3所示,其表示出当前时间下道路网中道路的情况。总共有8个位置查询点。每两个位置查询点之间的连线代表他们之间道路的权重(路长)情况,其中两位置查询点之间若无直接相连关系,则表示他们不可达或需要经过其他位置查询点才能到达,他们之间的权重(路长)为无穷大或者路径上相连的位置查询点权重(路长)之和。
本步骤的优点在于,通过预处理获得路径查询请求的基础信息,为之后的启发式查询计算提供数据支持。
(2)根据所有路径查询请求对应路径的收益确定代表路径,将该代表路径作为当前代表路径存储在服务器的缓存(Cache)中,从所有路径查询请求中选择与代表路径夹角为30°的所有路径,并将所有路径中目标点位于当前代表路径上的路径返回给客户端;
本步骤的优点在于,本发明提出的缓存收益模型,在有限的缓存空间中,结合角度计算路径查询请求收益、将收益大且两两之间互不相似的代表路径放入缓存,能提高路径查询请求在缓存中的命中率;本发明设计了有效的位图缓存存储结构,采用二进制的存储方式减少了存储代表路径时空间的占用;同时本发明设置了更新时间的限制,当道路网的信息发生变化时,可以及时的发现,并根据用户查询的变化来更新缓存以保持缓存的高效性、返回用户结果的正确性,以满足更多的用户查询请求,提高缓存空间的利用率,减少平均响应时间,给用户更好的用户体验。
在服务器的缓存中,采用路径信息索引(Path Information Index)的方式存储每条代表路径,并存储代表路径的起始点、目标点、到达时间和收益。
在服务器的缓存中是以位图(BitMap)索引的方式存储代表路径上的所有节点,使用一个字符串的比特0或1,以指示服务器的缓存中存储的代表路径是否包含某个节点。其中,若某个节点v的值为0,则表示缓存中的代表路径不包含此节点v,若节点v的值为1,则表示缓存中的代表路径包含此节点v。
此外,在服务器的缓存中采用节点邻接索引(Node Neighbor Index)的方式存储代表路径上节点间的邻接关系,记录缓存的位图中要存储的代表路径上节点之间的邻接关系。
具体而言,步骤(2)包括以下子步骤:
(2-1)设置计数器i=1;
(2-2)判断i是否大于等于服务器的缓存(cache)所能存储的最大路径查询请求数,如果是则进入步骤(3),否则转入步骤(2-3);
(2-3)设置计数器j=1;
(2-4)判断j是否大于等于路径查询请求的总数,如果是则过程结束,否则转入步骤(2-5);
(2-5)从除了第j条路径查询请求以外的所有路径查询请求中,获取与第j条路径查询请求对应的路径具有相同起始点的所有路径对应的路径查询请求(其数量为M),计算第j条路径查询请求和M条路径查询请求各自对应路径的收益,并将最大收益对应的路径作为代表路径;
具体而言,计算路径的收益的计算公式是:
Figure BDA0002783492690000121
其中,Rvo表示路径的起始点,Rvd表示路径的目标点,|RvoRvd|表示路径的起点和目标点之间的欧几里得距离,∑Rvo表示路径上起始点的邻接节点的总数,∑Rvd表示路径上目标点的邻接节点的总数,k表示路径上节点的总数,
Figure BDA0002783492690000123
表示步骤(1)得到的所有路径查询请求中,以路径的起始点Rvo为起始点、Rvd为目标点、并与路径夹角为30°的所有路径对应路径查询请求的总数。μ1、μ2、μ3、μ4分别为以上4个参数的影响因子,其取值分别为μ1=0.2,μ2=0.1,μ3=0.5,μ4=0.2。
(2-6)从第j条路径查询请求和M条路径查询请求对应的路径中选择与代表路径夹角为30°的所有路径;
(2-7)将步骤(2-6)选择的所有路径中目标点位于当前代表路径上的路径返回给客户端;
(2-8)判断服务器的缓存中存储的代表路径的总数是否大于1,如果是则进入步骤(2-9),否则进入步骤(2-14);
(2-9)设置计数器k=1;
(2-10)判断k是否大于等于缓存中在当前代表路径之前存储的代表路径总数,如果是则进入步骤(2-15),否则进入步骤(2-11);
(2-11)判断步骤(2-6)存储在缓存中当前代表路径和该当前代表路径之前存储的第k条代表路径之间的相似度是否大于已预设阈值,如果是则进入步骤(2-12),否则进入步骤(2-15);
具体而言,计算代表路径之间相似度的计算公式是:
Figure BDA0002783492690000122
其中P为缓存(cache)中已有的代表路径,P1为当前代表路径。L(SP∩SP1)为路径P与路径P1共同的节点数量,L(P)表示代表路径P上的节点数,L(P1)表示代表路径P1上的节点数,min{L(P),L(P1)}表示路径P上的节点数与路径P1上的节点数二者之间的最小值。
具体而言,预设阈值的取值范围是50%到80%,优选是70%。
(2-12)判断存储在服务器的缓存中的当前代表路径的收益是否大于缓存中先前存储的第k条代表路径的收益,如果是则进入步骤(2-13),否则进入步骤(2-14);
(2-13)把缓存中先前存储的第k条代表路径替换为步骤(2-6)存储在缓存中的当前代表路径,并转入步骤(2-14);
(2-14)设置k=k+1,并进入步骤(2-10);
(2-15)设置j=j+1,并返回步骤(2-4);
(2-16)设置i=i+1,并返回步骤(2-2);
(3)针对步骤(2)中每一条其对应路径没有被返回给客户端的路径查询请求而言,在服务器的缓存中对该路径查询请求进行查询处理,以得到该路径查询请求对应的最短路径,并将该最短路径返回到客户端。
上述步骤(1)至(3)的优点在于,在缓存中针对路径查询请求,设计了三个高效的数据结构:位图、节点邻接索引、路径信息索引,能够满足对缓存的高效查询同时保证存储的空间代价尽量小;在查询处理时,是直接对位图中的数据进行0/1匹配查询,进而能够使缓存快速地响应用户的查询。
具体而言,步骤(3)包括以下子步骤:
(3-1)设置计数器a=1;
(3-2)判断a是否大于等于所有其对应路径没有被返回给客户端的路径查询请求的总数,若是则过程结束,否则进入步骤(3-3);
(3-3)设置计数器b=1;
(3-4)判断b是否等于缓存中的最大存储路径数量,若是则进入步骤(3-8),否则进入步骤(3-5);
(3-5)在服务器的缓存中,判断缓存中的第b条代表路径上的节点是否包含所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求对应的路径的起始点和目标点,如果是则进入步骤(3-6),否则进入步骤(3-7);
(3-6)将缓存中第b条代表路径,作为所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求的路径查询结果,并将该路径查询结果返回到客户端,然后转入步骤(3-29)。
(3-7)设置b=b+1,并返回步骤(3-4);
(3-8)针对所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求而言,将其对应路径的长度设置为无穷大;
(3-9)设置计数器c=1,d=1,e=1,初始化数组SO、SD为空;
(3-10)判断c是否大于等于服务器的缓存所能存储的最大路径查询请求数,若是则进入步骤(3-18),否则进入步骤(3-11);
(3-11)判断服务器的缓存中存储的第c条代表路径上是否包含所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求对应路径的起始点,如果是则进入步骤(3-12),否则进入步骤(3-14);
(3-12)将服务器的缓存中存储的第c条代表路径存储到数组SO;
(3-13)设置d=d+1,并进入步骤(3-17);
(3-14)判断缓存中存储的第c条代表路径上是否包含所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求对应路径的目标点,如果是则进入步骤(3-15),否则进入步骤(3-17);
(3-15)将第c条代表路径存储到数组SD;
(3-16)设置e=e+1,并进入步骤(3-17);
(3-17)设置c=c+1,并返回步骤(3-10);
(3-18)设置计数器f=1,g=1;
(3-19)判断f是否大于等于数组SO中存储的代表路径的数量d,如果是则进入步骤(3-27),否则进入步骤(3-20);
(3-20)判断g是否大于等于数组SD中存储的代表路径的数量e,如果是则进入步骤(3-26),否则进入步骤(3-21);
(3-21)判断数组SO中存储的第f条代表路径和数组SD中存储的第g条代表路径是否有公共节点vm,若是进入步骤(3-22),否则进入步骤(3-25);
(3-22)对于所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求对应的每一条路径而言,判断是否有等式
Figure BDA0002783492690000151
成立,若是则进入步骤(3-23),否则进入步骤(3-25),其中ρ表示约束阈值;
约束阈值ρ的取值范围为0到2,优选的取值为0.5;
在上述等式中,dis(vovm)表示从起始点vo到公共节点vm的路径的长度,dis(vmvd)表示从公共节点vm到目标点vd的路径的长度,ρ为给定的约束阈值,|vovd|表示从起始点vo到目标点vd的欧几里得距离。
(3-23)针对所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求而言,判断其对应路径中从起始点vo到公共节点vm再到目标点vd的路径的长度dis(vovmvd)是否大于等于路径的长度dis(vovd),如果是则进入步骤(3-25),否则进入步骤(3-24);
具体而言,dis(vovmvd)=dis(vovm)+dis(vmvd)。
(3-24)对于所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求而言,将其对应路径的长度设置为dis(vovm)=dis(vovmvd),并将从起始点vo到目标点vd的路径设置为从起始点vo到公共节点vm再到目标点vd的路径;
(3-25)设置g=g+1,并返回步骤(3-20);
(3-26)设置f=f+1,并返回步骤(3-19);
(3-27)判断所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求q=(vo,vd)对应路径的长度dis(vovm)是否是无穷大,如果是则进入步骤(3-29),否则进入步骤(3-28);
(3-28)向客户端返回所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求对应的路径vo→vm→vd,以及路径的长度dis(vovmvd)。
(3-29)设置a=a+1,并返回步骤(3-2);
(4)针对步骤(2)和(3)处理完毕后,步骤(1)得到的所有路径查询请求中所有其对应路径还没有被返回给客户端的每条路径查询请求而言,利用双向A*算法对该路径查询请求对应路径的起始点到目标点进行处理,以得到该路径查询请求对应的路径,并将该路径返回给客户端;
本步骤的优点在于,对无法在缓存中得到路径查询请求结果的路径进行启发式的双向A*算法,启发式查找可以缩小查询范围,快速完成搜索,补足了缓存代表路径覆盖不全的问题,可以保证用户得到的近似最优路径。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种基于近似算法的最短路径查询方法,其特征在于,包括以下步骤:
(1)以固定的时间间隔接收来自多个用户的多个路径查询请求,每个路径查询请求包括其对应路径的起始点、目标点、起始点与目标点之间的欧几里得距离;
(2)根据所有路径查询请求对应路径的收益确定代表路径,将该代表路径作为当前代表路径存储在服务器的缓存(Cache)中,从所有路径查询请求中选择与代表路径夹角为30°的所有路径,并将所有路径中目标点位于当前代表路径上的路径返回给客户端;
(3)针对步骤(2)中每一条其对应路径没有被返回给客户端的路径查询请求而言,在服务器的缓存中对该路径查询请求进行查询处理,以得到该路径查询请求对应的最短路径,并将该最短路径返回到客户端。
(4)针对步骤(2)和(3)处理完毕后,步骤(1)得到的所有路径查询请求中所有其对应路径还没有被返回给客户端的每条路径查询请求而言,利用双向A*算法对该路径查询请求对应路径的起始点到目标点进行处理,以得到该路径查询请求对应的路径,并将该路径返回给客户端。
2.根据权利要求1所述的最短路径查询方法,其特征在于,
在服务器的缓存中,采用路径信息索引的方式存储每条代表路径,并存储代表路径的起始点、目标点、到达时间和收益;
在服务器的缓存中是以位图索引的方式存储代表路径上的所有节点,若某个节点v的值为0,则表示缓存中的代表路径不包含此节点v,若节点v的值为1,则表示缓存中的代表路径包含此节点v。
在服务器的缓存中采用节点邻接索引(Node Neighbor Index)的方式存储代表路径上节点间的邻接关系,记录缓存的位图中要存储的代表路径上节点之间的邻接关系。
3.根据权利要求1所述的最短路径查询方法,其特征在于,步骤(2)包括以下子步骤:
(2-1)设置计数器i=1;
(2-2)判断i是否大于等于服务器的缓存所能存储的最大路径查询请求数,如果是则进入步骤(3),否则转入步骤(2-3);
(2-3)设置计数器j=1;
(2-4)判断j是否大于等于路径查询请求的总数,如果是则过程结束,否则转入步骤(2-5);
(2-5)从除了第j条路径查询请求以外的所有路径查询请求中,获取与第j条路径查询请求对应的路径具有相同起始点的所有路径对应的M条路径查询请求,计算第j条路径查询请求和M条路径查询请求各自对应路径的收益,并将最大收益对应的路径作为代表路径;
(2-6)从第j条路径查询请求和M条路径查询请求对应的路径中选择与代表路径夹角为30°的所有路径;
(2-7)将步骤(2-6)选择的所有路径中目标点位于当前代表路径上的路径返回给客户端;
(2-8)判断服务器的缓存中存储的代表路径的总数是否大于1,如果是则进入步骤(2-9),否则进入步骤(2-14);
(2-9)设置计数器k=1;
(2-10)判断k是否大于等于缓存中在当前代表路径之前存储的代表路径总数,如果是则进入步骤(2-15),否则进入步骤(2-11);
(2-11)判断步骤(2-6)存储在缓存中当前代表路径和该当前代表路径之前存储的第k条代表路径之间的相似度是否大于已预设阈值,如果是则进入步骤(2-12),否则进入步骤(2-15);
(2-12)判断存储在服务器的缓存中的当前代表路径的收益是否大于缓存中先前存储的第k条代表路径的收益,如果是则进入步骤(2-13),否则进入步骤(2-14);
(2-13)把缓存中先前存储的第k条代表路径替换为步骤(2-6)存储在缓存中的当前代表路径,并转入步骤(2-14);
(2-14)设置k=k+1,并进入步骤(2-10);
(2-15)设置j=j+1,并返回步骤(2-4);
(2-16)设置i=i+1,并返回步骤(2-2)。
4.根据权利要求3所述的最短路径查询方法,其特征在于,步骤(2-5)中,计算路径的收益的计算公式是:
Figure FDA0002783492680000031
其中,Rvo表示路径的起始点,Rvd表示路径的目标点,|RvoRvd|表示路径的起点和目标点之间的欧几里得距离,∑Rvo表示路径上起始点的邻接节点的总数,∑Rvd表示路径上目标点的邻接节点的总数,k表示路径上节点的总数,
Figure FDA0002783492680000032
表示步骤(1)得到的所有路径查询请求中,以路径的起始点Rvo为起始点、Rvd为目标点、并与路径夹角为30°的所有路径对应路径查询请求的总数。μ1、μ2、μ3、μ4分别为以上4个参数的影响因子,其取值分别为μ1=0.2,μ2=0.1,μ3=0.5,μ4=0.2。
5.根据权利要求3所述的最短路径查询方法,其特征在于,步骤(2-11)中计算代表路径之间相似度的计算公式是:
Figure FDA0002783492680000033
其中P为缓存中已有的代表路径,P1为当前代表路径。L(SP∩SP1)为路径P与路径P1共同的节点数量,L(P)表示代表路径P上的节点数,L(P1)表示代表路径P1上的节点数,min{L(P),L(P1)}表示路径P上的节点数与路径P1上的节点数二者之间的最小值。
6.根据权利要求1所述的最短路径查询方法,其特征在于,步骤(3)包括以下子步骤:
(3-1)设置计数器a=1;
(3-2)判断a是否大于等于所有其对应路径没有被返回给客户端的路径查询请求的总数,若是则过程结束,否则进入步骤(3-3);
(3-3)设置计数器b=1;
(3-4)判断b是否等于缓存中的最大存储路径数量,若是则进入步骤(3-8),否则进入步骤(3-5);
(3-5)在服务器的缓存中,判断缓存中的第b条代表路径上的节点是否包含所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求对应的路径的起始点和目标点,如果是则进入步骤(3-6),否则进入步骤(3-7);
(3-6)将缓存中第b条代表路径,作为所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求的路径查询结果,并将该路径查询结果返回到客户端,然后转入步骤(3-29)。
(3-7)设置b=b+1,并返回步骤(3-4);
(3-8)针对所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求而言,将其对应路径的长度设置为无穷大;
(3-9)设置计数器c=1,d=1,e=1,并初始化数组SO、SD为空;
(3-10)判断c是否大于等于服务器的缓存所能存储的最大路径查询请求数,若是则进入步骤(3-18),否则进入步骤(3-11);
(3-11)判断服务器的缓存中存储的第c条代表路径上是否包含所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求对应路径的起始点,如果是则进入步骤(3-12),否则进入步骤(3-14);
(3-12)将服务器的缓存中存储的第c条代表路径存储到数组SO;
(3-13)设置d=d+1,并进入步骤(3-17);
(3-14)判断缓存中存储的第c条代表路径上是否包含所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求对应路径的目标点,如果是则进入步骤(3-15),否则进入步骤(3-17);
(3-15)将第c条代表路径存储到数组SD;
(3-16)设置e=e+1,并进入步骤(3-17);
(3-17)设置c=c+1,并返回步骤(3-10);
(3-18)设置计数器f=1,g=1;
(3-19)判断f是否大于等于数组SO中存储的代表路径的数量d,如果是则进入步骤(3-27),否则进入步骤(3-20);
(3-20)判断g是否大于等于数组SD中存储的代表路径的数量e,如果是则进入步骤(3-26),否则进入步骤(3-21);
(3-21)判断数组SO中存储的第f条代表路径和数组SD中存储的第g条代表路径是否有公共节点vm,若是进入步骤(3-22),否则进入步骤(3-25);
(3-22)对于所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求对应的每一条路径而言,判断是否有等式
Figure FDA0002783492680000051
成立,若是则进入步骤(3-23),否则进入步骤(3-25),其中ρ表示约束阈值,dis(vovm)表示从起始点vo到公共节点vm的路径的长度,dis(vmvd)表示从公共节点vm到目标点vd的路径的长度,ρ为给定的约束阈值,|vovd|表示从起始点vo到目标点vd的欧几里得距离。
(3-23)针对所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求而言,判断其对应路径中从起始点vo到公共节点vm再到目标点vd的路径的长度dis(vovmvd)是否大于等于路径的长度dis(vovd),如果是则进入步骤(3-25),否则进入步骤(3-24),且有dis(vovmvd)=dis(vovm)+dis(vmvd)。
(3-24)对于所有其对应路径没有被返回给客户端的路径查询请求中的第a条路径查询请求而言,将其对应路径的长度设置为dis(vovm)=dis(vovmvd),并将从起始点vo到目标点vd的路径设置为从起始点vo到公共节点vm再到目标点vd的路径;
(3-25)设置g=g+1,并返回步骤(3-20);
(3-26)设置f=f+1,并返回步骤(3-19);
(3-27)判断所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求q=(vo,vd)对应路径的长度dis(vovm)是否是无穷大,如果是则进入步骤(3-29),否则进入步骤(3-28);
(3-28)向客户端返回所有其对应路径没有被返回给客户端的路径查询请求中第a条路径查询请求对应的路径vo→vm→vd,以及路径的长度dis(vovmvd)。
(3-29)设置a=a+1,并返回步骤(3-2)。
7.一种基于近似算法的最短路径查询系统,其特征在于,包括:
第一模块,用于以固定的时间间隔接收来自多个用户的多个路径查询请求,每个路径查询请求包括其对应路径的起始点、目标点、起始点与目标点之间的欧几里得距离;
第二模块,用于根据所有路径查询请求对应路径的收益确定代表路径,将该代表路径作为当前代表路径存储在服务器的缓存(Cache)中,从所有路径查询请求中选择与代表路径夹角为30°的所有路径,并将所有路径中目标点位于当前代表路径上的路径返回给客户端;
第三模块,用于针对第二模块中每一条其对应路径没有被返回给客户端的路径查询请求而言,在服务器的缓存中对该路径查询请求进行查询处理,以得到该路径查询请求对应的最短路径,并将该最短路径返回到客户端;
第四模块,用于针对第二模块和第三模块处理完毕后,步骤(1)得到的所有路径查询请求中所有其对应路径还没有被返回给客户端的每条路径查询请求而言,利用双向A*算法对该路径查询请求对应路径的起始点到目标点进行处理,以得到该路径查询请求对应的路径,并将该路径返回给客户端。
CN202011289860.3A 2020-11-18 2020-11-18 一种基于近似算法的最短路径查询方法和系统 Active CN112380460B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011289860.3A CN112380460B (zh) 2020-11-18 2020-11-18 一种基于近似算法的最短路径查询方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011289860.3A CN112380460B (zh) 2020-11-18 2020-11-18 一种基于近似算法的最短路径查询方法和系统

Publications (2)

Publication Number Publication Date
CN112380460A true CN112380460A (zh) 2021-02-19
CN112380460B CN112380460B (zh) 2022-03-22

Family

ID=74585036

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011289860.3A Active CN112380460B (zh) 2020-11-18 2020-11-18 一种基于近似算法的最短路径查询方法和系统

Country Status (1)

Country Link
CN (1) CN112380460B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113848897A (zh) * 2021-09-17 2021-12-28 宁波大学 用于对无人水面艇进行路径规划的方法、系统和相关产品

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070014241A1 (en) * 2005-07-14 2007-01-18 Banerjee Dwip N Resolver caching of a shortest path to a multihomed server as determined by a router
CN101608922A (zh) * 2008-06-18 2009-12-23 北京东方泰坦科技有限公司 基于实时交通信息的最短时间路径规划方法
US20100306216A1 (en) * 2009-05-28 2010-12-02 Microsoft Corporation Short paths in web graphs with small query time
US20120310523A1 (en) * 2011-06-03 2012-12-06 Microsoft Corporation Customizable route planning
CN104266656A (zh) * 2014-09-03 2015-01-07 清华大学 用于道路网的最短路径搜索方法及装置
US20190384762A1 (en) * 2017-02-10 2019-12-19 Count Technologies Ltd. Computer-implemented method of querying a dataset

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070014241A1 (en) * 2005-07-14 2007-01-18 Banerjee Dwip N Resolver caching of a shortest path to a multihomed server as determined by a router
CN101608922A (zh) * 2008-06-18 2009-12-23 北京东方泰坦科技有限公司 基于实时交通信息的最短时间路径规划方法
US20100306216A1 (en) * 2009-05-28 2010-12-02 Microsoft Corporation Short paths in web graphs with small query time
US20120310523A1 (en) * 2011-06-03 2012-12-06 Microsoft Corporation Customizable route planning
CN104266656A (zh) * 2014-09-03 2015-01-07 清华大学 用于道路网的最短路径搜索方法及装置
US20190384762A1 (en) * 2017-02-10 2019-12-19 Count Technologies Ltd. Computer-implemented method of querying a dataset

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
朱云虹等: ""基于改进A*算法的最优路径搜索"", 《计算机技术与发展》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113848897A (zh) * 2021-09-17 2021-12-28 宁波大学 用于对无人水面艇进行路径规划的方法、系统和相关产品
CN113848897B (zh) * 2021-09-17 2023-12-12 宁波大学 用于对无人水面艇进行路径规划的方法、系统和相关产品

Also Published As

Publication number Publication date
CN112380460B (zh) 2022-03-22

Similar Documents

Publication Publication Date Title
CN106931974B (zh) 基于移动终端gps定位数据记录计算个人通勤距离的方法
US20120254153A1 (en) Shortest path determination in databases
US8386479B2 (en) Routing methods for multiple geographical entities
US20090005968A1 (en) Location-based information determination
CN107291888A (zh) 基于机器学习统计模型的入住酒店附近生活推荐系统方法
CN109902711B (zh) 一种时间依赖路网上的移动对象k近邻查询算法
CN101900565A (zh) 路径确定方法和装置
CN115879737A (zh) 一种基于密度和出入度平衡聚类的共享单车站点选址方法
CN109579861A (zh) 一种基于强化学习的路径导航方法及系统
Ali et al. The maximum trajectory coverage query in spatial databases
CN110598917A (zh) 一种基于路径轨迹的目的地预测方法、系统及存储介质
CN112380460B (zh) 一种基于近似算法的最短路径查询方法和系统
Jossé et al. Probabilistic Resource Route Queries with Reappearance.
CN114611830B (zh) 一种基于多维度分区的医药配送车辆路径规划方法及装置
CN110503463B (zh) 一种基于连锁业态的门店选址规划方法
CN110750730B (zh) 基于时空约束的群体检测方法和系统
Dai et al. Context-based moving object trajectory uncertainty reduction and ranking in road network
CN110674990B (zh) 设置滑动窗口更新机制的即时配送路径选择方法及系统
CN112328877A (zh) 时间依赖路网上多用户的skyline查询的方法
CN112562309A (zh) 基于改进Dijkstra算法的网约车调度方法
CN114979134B (zh) 边缘计算环境中服务迁移的路径选择方法
Zhu et al. Large scale active vehicular crowdsensing
CN112507047A (zh) 一种基于兴趣点偏好的最优有序路径查询方法
CN112269845B (zh) 面向异源数据的电子道路地图与公交线路的快速匹配方法
Martynova et al. Ant colony algorithm for rational transit network design of urban passenger transport

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information

Inventor after: Li Kenli

Inventor after: Huang Yang

Inventor after: Zhou Xu

Inventor after: Chen Cen

Inventor after: Yang Zhibang

Inventor after: Zeng Yuanyuan

Inventor after: Luo Wencheng

Inventor before: Zhou Xu

Inventor before: Huang Yang

Inventor before: Li Kenli

Inventor before: Chen Cen

Inventor before: Yang Zhibang

Inventor before: Zeng Yuanyuan

Inventor before: Luo Wencheng

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant