CN110941735B - 基于有向图的路径搜索方法及系统、介质和计算机系统 - Google Patents

基于有向图的路径搜索方法及系统、介质和计算机系统 Download PDF

Info

Publication number
CN110941735B
CN110941735B CN201811120900.4A CN201811120900A CN110941735B CN 110941735 B CN110941735 B CN 110941735B CN 201811120900 A CN201811120900 A CN 201811120900A CN 110941735 B CN110941735 B CN 110941735B
Authority
CN
China
Prior art keywords
directed
directed graph
target
edge
graph
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.)
Active
Application number
CN201811120900.4A
Other languages
English (en)
Other versions
CN110941735A (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.)
Beijing Jingbangda Trade Co Ltd
Beijing Jingdong Zhenshi Information Technology Co Ltd
Original Assignee
Beijing Jingdong Zhenshi Information Technology Co Ltd
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 Beijing Jingdong Zhenshi Information Technology Co Ltd filed Critical Beijing Jingdong Zhenshi Information Technology Co Ltd
Priority to CN201811120900.4A priority Critical patent/CN110941735B/zh
Publication of CN110941735A publication Critical patent/CN110941735A/zh
Application granted granted Critical
Publication of CN110941735B publication Critical patent/CN110941735B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种基于有向图的路径搜索方法,用于搜索从目标起点到目标终点的路径,包括:获取包含有目标起点和目标终点的第一有向图的有向图数据;确定第一有向图中各有向边的边配载,其中,一条有向边的边配载用于表征经由该条有向边所能够到达的终点;基于各有向边的边配载,过滤第一有向图,得到保留有经由之后能够到达目标终点的有向边的第二有向图;基于第二有向图,搜索得到从目标起点到目标终点的路径;以及输出表征所述路径的路径数据。本公开还提供了一种基于有向图的路径搜索系统,一种计算机系统和一种计算机可读存储介质。

Description

基于有向图的路径搜索方法及系统、介质和计算机系统
技术领域
本公开涉及计算机技术领域,更具体地,涉及一种基于有向图的路径搜索方法及系统、以及一种计算机系统和一种计算机可读存储介质。
背景技术
图算法是指利用特制的线条算图求得答案的一种简便算法。无向图、有向图和网络能运用很多常用的图算法,这些算法包括:各种遍历算法(这些遍历类似于树的遍历),寻找最短路径的算法,寻找网络中最低代价路径的算法,回答一些简单相关问题(例如,图是不是连通的,图中两个顶点间的最短路径是什么,等等)的算法。
在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题:现有图形搜索技术在针对有向图搜索相关路径时,只能完全遍历有向图,进行全量搜索,这样在数据计算量大的应用场景,系统性能消耗必然会十分严重,尤其是在用户规模较大的高并发搜索场景中,应用更为困难。
发明内容
有鉴于此,本公开提供了一种能够提高路径搜索速度和效率的基于有向图的路径搜索方法和能够实现该方法的基于有向图的路径搜索系统。
本公开的一个方面提供了一种基于有向图的路径搜索方法,用于搜索从目标起点到目标终点的路径,上述方法包括:获取包含有上述目标起点和上述目标终点的第一有向图的有向图数据;确定上述第一有向图中各有向边的边配载,其中,一条有向边的边配载用于表征经由该条有向边所能够到达的终点;基于上述各有向边的边配载,过滤上述第一有向图,得到保留有经由之后能够到达上述目标终点的有向边的第二有向图;基于上述第二有向图,搜索得到从上述目标起点到上述目标终点的路径;以及输出表征上述路径的路径数据。
根据本公开的实施例,上述基于上述各有向边的边配载,过滤上述第一有向图,得到保留有经由之后能够到达上述目标终点的有向边的第二有向图,包括:基于上述各有向边的边配载,过滤上述第一有向图,得到保留有界于上述目标起点和上述目标终点之间且经由之后能够到达上述目标终点的有向边的第三有向图。
根据本公开的实施例,上述基于上述各有向边的边配载,过滤上述第一有向图,得到保留有界于上述目标起点和上述目标终点之间且经由之后能够到达上述目标终点的有向边的第三有向图,包括:基于上述各有向边的边配载,确定不包含与上述目标终点关联的标识的边配载对应的所有的第一有向边;从上述第一有向图中滤掉上述所有的第一有向边;以及将上述第一有向图滤掉上述所有的第一有向边后的剩余部分作为上述第三有向图。
根据本公开的实施例,上述基于上述各有向边的边配载,过滤上述第一有向图,得到保留有界于上述目标起点和上述目标终点之间且经由之后能够到达上述目标终点的有向边的第三有向图,包括:基于上述各有向边的边配载,提取包含有与上述目标终点关联的标识的边配载对应的所有的第二有向边;确定仅包含上述所有的第二有向边的第四有向图;以及将上述第四有向图作为上述第三有向图。
根据本公开的实施例,上述方法还包括:确定上述第三有向图中各有向边的边分组信息,其中,有向边的边分组信息用于表征从同一节点出发且边配载相同的有向边集合的相关信息;基于上述第三有向图,搜索从上述目标起点到上述目标终点的路径,包括:基于上述各有向边的边分组信息,搜索上述第三有向图以确定从上述目标起点到上述目标终点的路径。
本公开的另一个方面提供了一种基于有向图的路径搜索系统,用于搜索从目标起点到目标终点的路径,上述系统包括:获取模块,用于获取包含有上述目标起点和上述目标终点的第一有向图的有向图数据;第一确定模块,用于确定上述第一有向图中各有向边的边配载,其中,一条有向边的边配载用于表征经由该条有向边所能够到达的终点;过滤模块,用于基于上述各有向边的边配载,过滤上述第一有向图,得到保留有经由之后能够到达上述目标终点的有向边的第二有向图;搜索模块,用于基于上述第二有向图,搜索得到从上述目标起点到上述目标终点的路径;以及输出模块,用于输出表征上述路径的路径数据。
根据本公开的实施例,上述过滤模块还用于:基于上述各有向边的边配载,过滤上述第一有向图,得到保留有界于上述目标起点和上述目标终点之间且经由之后能够到达上述目标终点的有向边的第三有向图。
根据本公开的实施例,上述过滤模块包括:第一确定单元,用于基于上述各有向边的边配载,确定不包含与上述目标终点关联的标识的边配载对应的所有的第一有向边;过滤单元,用于从上述第一有向图中滤掉上述所有的第一有向边;以及第二确定单元,用于将上述第一有向图滤掉上述所有的第一有向边后的剩余部分作为上述第三有向图。
根据本公开的实施例,上述过滤模块包括:提取单元,用于基于上述各有向边的边配载,提取包含有与上述目标终点关联的标识的边配载对应的所有的第二有向边;第三确定单元,用于确定仅包含上述所有的第二有向边的第四有向图;以及第四确定单元,用于将上述第四有向图作为上述第三有向图。
根据本公开的实施例,上述系统还包括:第二确定模块,用于确定上述第三有向图中各有向边的边分组信息,其中,有向边的边分组信息用于表征从同一节点出发且边配载相同的有向边集合的相关信息;以及上述搜索模块,还用于基于上述各有向边的边分组信息,搜索上述第三有向图以确定从上述目标起点到上述目标终点的路径。
本公开的另一个方面提供了一种计算机系统,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。
本公开的另一方面提供了一种非易失性存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
根据本公开的实施例,因为采用了先过滤有向图以缩减搜索量的技术手段,所以至少部分地克服了相关技术中针对有向图进行路径搜索时,只能完全遍历有向图,进行全量搜索的技术问题,进而达到了即使在数据量大的应用场景,也不会造成系统性能消耗严重的技术效果。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了可以应用本公开的基于有向图的路径搜索方法及系统的示例性系统架构;
图2示意性示出了根据本公开实施例的基于有向图的路径搜索方法及系统的应用场景;
图3示意性示出了根据本公开实施例的基于有向图的路径搜索方法的流程图;
图4基于图2示意性示出了根据本公开实施例的带有边配载的有向图;
图5示意性示出了根据本公开实施例的针对图4过滤得到的有向图;
图6和图7示意性示出了根据本公开实施例的过滤第一有向图的流程图;
图8基于图2示意性示出了根据本公开实施例的带有边配载和边分组的有向图;
图9示意性示出了根据本公开实施例的针对图8过滤得到的有向图;
图10示意性示出了根据本公开实施例的针对图9搜索得到的路径;
图11示意性示出了根据本公开实施例的基于有向图的路径搜索系统的框图;
图12和图13示意性示出了根据本公开实施例的两种过滤模块的框图;以及
图14示意性示出了根据本公开实施例的适于实现基于有向图的路径搜索方法及系统的计算机系统的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“A或B”应当被理解为包括“A”或“B”、或“A和B”的可能性。
本公开的实施例提供了一种能够提高路径搜索速度和效率的基于有向图的路径搜索方法和能够实现该方法的基于有向图的路径搜索系统。该方法,用于搜索从目标起点到目标终点的路径,包括获取包含有目标起点和目标终点的第一有向图的有向图数据;确定第一有向图中各有向边的边配载,其中,一条有向边的边配载用于表征经由该条有向边所能够到达的终点;基于各有向边的边配载,过滤第一有向图,得到保留有经由之后能够到达目标终点的有向边的第二有向图;基于第二有向图,搜索得到从目标起点到目标终点的路径;以及输出表征该路径的路径数据。
图1示意性示出了可以应用本公开的基于有向图的路径搜索方法及系统的示例性系统架构。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线和/或无线通信链路等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端和/或社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的基于有向图的路径搜索方法一般可以由服务器105执行。相应地,本公开实施例所提供的基于有向图的路径搜索系统一般可以设置于服务器105中。本公开实施例所提供的基于有向图的路径搜索方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的基于有向图的路径搜索系统也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。或者,本公开实施例所提供的基于有向图的路径搜索方法也可以由终端设备101、102、或103执行,或者也可以由不同于终端设备101、102、或103的其他终端设备执行。相应地,本公开实施例所提供的基于有向图的路径搜索系统也可以设置于终端设备101、102、或103中,或设置于不同于终端设备101、102、或103的其他终端设备中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
需要说明的是,本公开提供的基于有向图的路径搜索方法及系统可应用于多种场景,如:优化管道、路由表、快递服务、通信网站等,以搜索从目标起点到目标终点的路径。图2示意性示出了根据本公开实施例的基于有向图的路径搜索方法及系统的应用场景。应该理解,图2所示的场景可以作为优化管道、路由表、快递服务、通信网站等场景的抽象场景。
如图2所示,点S表示一个起点,点Y、T、E、P、U表示以点S为起点的多个终点。
具体地,有向图D可以用一个有序三元组(V(D),E(D),ψ(D)),其中ψ(D)为关联函数,它使E(D)中的每一个元素(称为有向边或有向弧)对应于V(D)中的一个有序元素(称为顶点或点)对。
如图2所示,有向图G(V,E),顶点V集合为:A、B、C、D、E、F、G、H、I、J、K、L、M、N、O、P、Q、R、S、T、U、V、W、X、Y、Z,有向边E集合为:S->W、S->O、S->A、S->B、S->Q、S->L、W->R、O->R、A->C、A->D、A->G、B->G、B->H、B->I、Q->Z、L->Z、R->X、R->N、C->F、D->E、G->E、G->J、H->J、H->K、I->M、I->V、Z->V、X->Y、N->Y、N->T、F->E、J->E、K->E、M->P、M->U、V->U、U->P。
针对图2所示的有向图G(V,E),在搜索从顶点S到顶点E的路径时,现有的有向图搜索技术只能完全遍历该有向图G(V,E),进行全量搜索,这样在数据计算量大的应用场景,系统性能消耗必然会十分严重,尤其是在用户规模较大的高并发搜索场景中,应用更为困难。
而使用本公开各实施例提供的搜索方案,可以先过滤有向图以缩减搜索量,如先过滤掉图2中除加粗的有向边之外的部分再进行路径搜索,从而能够克服相关技术中针对有向图进行路径搜索时,只能完全遍历有向图,进行全量搜索的技术问题,进而能够达到即使在数据量大的应用场景,也不会造成系统性能消耗严重的技术效果。
应该理解,图2仅仅示出了可以应用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他场景。
图3示意性示出了根据本公开实施例的基于有向图的路径搜索方法的流程图。
如图3所示,该方法,用于搜索从目标起点到目标终点的路径,包括操作S310~S350。
在操作S310,获取包含有目标起点和目标终点的第一有向图的有向图数据。
在本公开实施例中,有向图(如第一有向图)可以预先设定并存储于图库中,使用时,可以基于起点和终点,以及实际应用场景针对图库进行检索,以获取对应的第一有向图。
在操作S320,确定第一有向图中各有向边的边配载,其中,一条有向边的边配载用于表征经由该条有向边所能够到达的终点。
在本公开实施例中,有向边的边配载也是预先配置并标注在对应的边上,如图4所示。
具体地,一条有向边的边配载可以根据经过该有向边所能到达的终点的终点确定,如图4所示,经由有向边S->A、S->B、A->C、A->D、B->G、B->H、B->I、C->F、D->E、G->E、G->J、H->J、H->K、F->E、J->E、K->E都能到达终点E,因此可以将这些边配载配置为“E”标识。
当然,还有一种比较复杂的情况就是,经由一条有向边可以到达多个终点,此时,可以为该有向边配置多个边配载。
在操作S330,基于各有向边的边配载,过滤第一有向图,得到保留有经由之后能够到达目标终点的有向边的第二有向图。
如图4所示,过滤后可以仅保留边配载为“E”的有向边,其对应于第二有向图,如图5所示。
例如,在地图搜索场景中,有节点北京和太原,那么在搜索从北京到太原的相关路径时,可能会有三条有向边,北京到石家庄,石家庄到阳泉,阳泉到太原,对于北京到太原这个搜索线路而言,这三条边的边配载就可以是太原,根据这个逻辑,针对图2,可以把所有节点的配载全部初始化完毕后,如图4所示,只关注边配载为E的有向边,得出如图5所示的搜索所需的有向边集合构成的新的有向图。
其中,图5相比于图2,无论是搜索从顶点S到顶点E,还是从顶点A到顶点E,还是从顶点B到顶点E,还是其他顶点如C、D、G、H、I、F、G、K到顶点E,搜索量都会降低,从而可以减少系统性能的损耗,加快搜索速度,提高搜索效率。
在操作S340,基于第二有向图,搜索从目标起点到目标终点的路径。
应该理解,本公开可以预定义边配载的标注形式,包括但不限于使用终点的字母或数字作为标识进行标注。此外,边配载可以在两个顶点之间的边上标注。
在操作S350,输出表征上述路径的路径数据。
与现有技术针对有向图进行路径搜索时,只能完全遍历有向图,进行全量搜索,这样在数据量大的应用场景,必然会造成系统性能消耗严重,尤其在用户规模较大的高并发搜索场景中,应用更为困难相比,通过本公开实施例,预先为各有向边配置对应的边配载,使得搜索路径时可以基于此信息先过滤有向图,再基于过滤后的简化版有向图进行搜索,因而无需全量搜索,减少了系统性能消耗,更适于在各种场景尤其是大数据,用户大规模并发搜索的场景中使用。
下面参考图6~图10,结合具体实施例对图3所示的方法做进一步说明。
作为一种可选的实施例,基于各有向边的边配载,过滤第一有向图,得到保留有经由之后能够到达目标终点的有向边的第二有向图,可以包括:基于各有向边的边配载,过滤第一有向图,得到保留有界于目标起点和目标终点之间且经由之后能够到达目标终点的有向边的第三有向图。
例如,如图5所示,该图对于从起点S到终点E而言,由于各有向边都是界于顶点S和顶点E之间的且边配载都是“E”,因此该图对于从起点S到终点E的路径搜索而言是最简有向图,可以保证搜索量最小,搜索速度最快,但是,该图对于从起点A到终点E而言,由于各有向边边配载都包含“E”,但是它们并不都是界于顶点A和顶点E之间的,因而需要进一步过滤基于起点A和终点E这两个信息对图5所示的有向图进行过滤,最终得到仅包含A->C、A->D、C->F、D->E、F->E这些有向边的最简有向图,如图5中的线条加粗部分。
通过本公开实施例,将与起点(如A)和终点(如E)无关的节点和有向边过滤后得出最终的图形,使得有向图过滤达到最大化,仅保留从目标起点到目标终点可能会经由的有向边,使得搜索量达到最小,进一步减少了系统性能消耗,并使的搜索速度达到最大,搜索效率达到最高。
作为一种可选的实施例,如图6所示,基于各有向边的边配载,过滤第一有向图,得到保留有界于目标起点和目标终点之间且经由之后能够到达目标终点的有向边的第三有向图,可以包括如下操作:
操作S610,基于各有向边的边配载,确定不包含与目标终点关联的标识的边配载对应的所有的第一有向边;
操作S620,从第一有向图中滤掉所有的第一有向边;以及
操作S630,将第一有向图滤掉所有的第一有向边后的剩余部分作为第三有向图。
例如,如图4所示,假设顶点S为目标起点;顶点E为目标终点,通过增加的边配载,则可以确定不包含与目标起点S和目标终点E关联的标识的边配载E对应的所有有向边包括:S->W、S->O、S->Q、S->L、W->R、O->R、Q->Z、L->Z、R->X、R->N、I->M、I->V、Z->V、X->Y、N->Y、N->T、M->P、M->U、V->U、U->P,按照本公开实施例提供的技术方案,将这些有向边从如图4所示的有向图中滤除可以得到如图5所示的有向图,基于该有向图搜索从S到E的路径,可以减少搜索范围。
通过本公开实施例,提供了一种有向图过滤方案,即将边配载表征从目标起点到目标终点不会经由的有向边滤除,从而将剩余的有向图作为最终的搜索基础,实现减少搜索范围的目的。
作为一种可选的实施例,如图7所示,基于各有向边的边配载,过滤第一有向图,得到保留有界于目标起点和目标终点之间且经由之后能够到达目标终点的有向边的第三有向图,可以包括如下操作:
操作S710,基于各有向边的边配载,提取包含有与目标终点关联的标识的边配载对应的所有的第二有向边;
操作S720,确定仅包含所有的第二有向边的第四有向图;以及
操作S730,将第四有向图作为第三有向图。
例如,如图4所示,假设顶点E为目标终点,通过增加的边配载,则可以确定包含有与目标终点E关联的标识的边配载E对应的所有有向边包括:S->A、S->B、A->C、A->D、B->G、B->H、B->I、C->F、D->E、G->E、G->J、H->J、H->K、F->E、J->E、K->E,按照本公开实施例提供的技术方案,将这些有向边从如图4所示的有向图中提取也可以得到如图5所示的有向图,基于该有向图搜索从S到E的路径,可以减少搜索范围。
通过本公开实施例,提供了另一种有向图过滤方案,与上述实施例相反,即将边配载表征从目标起点到目标终点可能经由的有向边提取,以形成新的简化版的有向图作为搜索基础,实现减少搜索范围的目的。
作为一种可选的实施例,该方法还包括:确定第三有向图中各有向边的边分组信息,其中,有向边的边分组信息用于表征从同一节点出发且边配载相同的有向边集合的相关信息;基于第三有向图,搜索从目标起点到目标终点的路径,包括:基于各有向边的边分组信息,搜索第三有向图以确定从目标起点到目标终点的路径。
在本公开实施例中,可以根据有向边的出发节点和边配载对所有有向边进行分组,并给分组做标注。边分组和边配载一样,都是在使用前将数据初始化好。具体地,设置原则为,将从同一节点出发且边配载相同的有向边分为一组,通过边分组找到路径的分叉点。
例如,还是地图搜索场景,节点北京和太原,计算北京到太原这条路径中,北京出发可能会有多条边选择,北京到石家庄配载为太原,北京到大同配载为太原,北京到香河配载为天津,始发点均为北京的边中,可以通过北京到石家庄这条边的分组编号,直接把北京到大同这条同分组的边找出来,也就是说虽然北京出发有三条边,北京到大同,北京到石家庄,北京到保定,但是,同一分组的只有北京到大同和北京到石家庄这两条边。所以,可以根据这个逻辑找出同分组中的其他边,边分组可以用无箭头的线条连接,线条上的数字代表分组编号。
如图8所示,对于边配载为E的有向边S->A、S->B、A->C、A->D、B->G、B->H、B->I、C->F、D->E、G->E、G->J、H->J、H->K、F->E、J->E、K->E,由于S->A、S->B都是从顶点S出发的,可以作为一组,编号为2,同理,由于A->C、A->D都是从顶点A出发的,可以作为一组,编号为1,由于B->G、B->H、B->I都是从顶点B出发的,可以作为一组,编号为3,由于H->J、H->K都是从顶点H出发的,可以作为一组,编号为4。如图9所示,该有向图是基于如图8所示的有向图进行过滤得到的,其包含边配载和边分组信息。其中,根据边分组,在路径搜索时可以快速确定边分叉。其中,如图10所示的路径就是基于图9所示的有向图中的边分组进行搜索得到的路径。
进一步,在搜索出搜索有符合条件的路径之后,还可以计算各路径的长度,从而为选择合理的路径提供基础。
通过本公开实施例,增加边分组,可以实现指定边分叉,从而实现业务的高度定制化,同时加快计算速度。
本公开通过增加边配载和边分组的方式,实现按需获取指定的顶点和边的集合,一方面大大减少了搜索复杂度,从而大幅度提高搜索效率,另一方面可以在某些定制业务场景中,根据业务需求制定路径方案。其中,通过增加边配载,可以在路径查找中起到缩小边集合查找范围的作用,从而极大的减少计算复杂度,并且可以在某些业务场景中实现按需定向辅助边计算功能。
图11示意性示出了根据本公开实施例的基于有向图的路径搜索系统的框图。
如图11所示,该系统200,用于搜索从目标起点到目标终点的路径,包括获取模块210、第一确定模块220、过滤模块230、搜索模块240和输出模块250。
获取模块210,用于获取包含有目标起点和目标终点的第一有向图的有向图。
第一确定模块220,用于确定第一有向图中各有向边的边配载,其中,一条有向边的边配载用于表征经由该条有向边所能够到达的终点。
过滤模块230,用于基于各有向边的边配载,过滤第一有向图,得到保留有经由之后能够到达目标终点的有向边的第二有向图。
搜索模块240,用于基于第二有向图,搜索得到从目标起点到目标终点的路径。
输出模块250,用于输出表征该路径的路径数据。
与现有技术针对有向图进行路径搜索时,只能完全遍历有向图,进行全量搜索,这样在数据量大的应用场景,必然会造成系统性能消耗严重,尤其在用户规模较大的高并发搜索场景中,应用更为困难相比,通过本公开实施例,预先为各有向边配置对应的边配载,使得搜索路径时可以基于此信息先过滤有向图,再基于过滤后的简化版有向图进行搜索,因而无需全量搜索,减少了系统性能消耗,更适于在各种场景尤其是大数据,用户大规模并发搜索的场景中使用。
作为一种可选的实施例,过滤模块还用于:基于各有向边的边配载,过滤第一有向图,得到保留有界于目标起点和目标终点之间且经由之后能够到达目标终点的有向边的第三有向图。
通过本公开实施例,将与起点(如A)和终点(如E)无关的节点和有向边过滤后得出最终的图形,使得有向图过滤达到最大化,仅保留从目标起点到目标终点可能会经由的有向边,使得搜索量达到最小,进一步减少了系统性能消耗,并使的搜索速度达到最大,搜索效率达到最高。
作为一种可选的实施例,如图12所示,过滤模块230包括:第一确定单元231,用于基于各有向边的边配载,确定不包含与目标终点关联的标识的边配载对应的所有的第一有向边;过滤单元232,用于从第一有向图中滤掉所有的第一有向边;以及第二确定单元233,用于将第一有向图滤掉所有的第一有向边后的剩余部分作为第三有向图。
通过本公开实施例,提供了一种有向图过滤方案,即将边配载表征从目标起点到目标终点不会经由的有向边滤除,从而将剩余的有向图作为最终的搜索基础,实现减少搜索范围的目的。
作为一种可选的实施例,如图13所示,过滤模块230包括:提取单元234,用于基于各有向边的边配载,提取包含有与目标终点关联的标识的边配载对应的所有的第二有向边;第三确定单元235,用于确定仅包含所有的第二有向边的第四有向图;以及第四确定单元236,用于将第四有向图作为第三有向图。
通过本公开实施例,提供了另一种有向图过滤方案,与上述实施例相反,即将边配载表征从目标起点到目标终点可能经由的有向边提取,以形成新的简化版的有向图作为搜索基础,实现减少搜索范围的目的。
作为一种可选的实施例,该系统还包括:第二确定模块,用于确定第三有向图中各有向边的边分组信息,其中,有向边的边分组信息用于表征从同一节点出发且边配载相同的有向边集合的相关信息;以及搜索模块,还用于基于各有向边的边分组信息,搜索第三有向图以确定从目标起点到目标终点的路径。
通过本公开实施例,增加边分组,可以实现指定边分叉,从而实现业务的高度定制化,同时加快计算速度。
根据本公开的实施例的模块、单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,获取模块210、第一确定模块220、过滤模块230、搜索模块240和输出模块250中的任意多个可以合并在一个模块/单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元。或者,这些模块/单元中的一个或多个模块/单元的至少部分功能可以与其他模块/单元的至少部分功能相结合,并在一个模块/单元中实现。根据本公开的实施例,获取模块210、第一确定模块220、过滤模块230、搜索模块240和输出模块250中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块210、第一确定模块220、过滤模块230、搜索模块240和输出模块250中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
需要说明的是,本公开的实施例中系统部分与本公开的实施例中方法部分是相对应的,系统部分的描述具体参考方法部分,在此不再赘述。
图14示意性示出了根据本公开实施例的适于实现基于有向图的路径搜索方法及系统的计算机系统的框图。图14示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图14所示,根据本公开实施例的计算机系统500包括处理器501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。处理器501例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器501还可以包括用于缓存用途的板载存储器。处理器501可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 503中,存储有系统500操作所需的各种程序和数据。处理器501、ROM 502以及RAM 503通过总线504彼此相连。处理器501通过执行ROM 502和/或RAM 503中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 502和RAM 503以外的一个或多个存储器中。处理器501也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,系统500还可以包括输入/输出(I/O)接口505,输入/输出(I/O)接口505也连接至总线504。系统500还可以包括连接至I/O接口505的以下部件中的一项或多项:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被处理器501执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。
例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 502和/或RAM 503和/或ROM 502和RAM 503以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (12)

1.一种基于有向图的路径搜索方法,用于搜索从目标起点到目标终点的路径,所述方法包括:
获取包含有所述目标起点和所述目标终点的第一有向图的有向图数据;
确定所述第一有向图中各有向边的边配载,其中,一条有向边的边配载用于表征经由该条有向边所能够到达的终点;
基于所述各有向边的边配载,过滤所述第一有向图,得到保留有经由之后能够到达所述目标终点的有向边的第二有向图;
基于所述第二有向图,搜索得到从所述目标起点到所述目标终点的路径;以及
输出表征所述路径的路径数据。
2.根据权利要求1所述的方法,其中,所述基于所述各有向边的边配载,过滤所述第一有向图,得到保留有经由之后能够到达所述目标终点的有向边的第二有向图,包括:
基于所述各有向边的边配载,过滤所述第一有向图,得到保留有界于所述目标起点和所述目标终点之间且经由之后能够到达所述目标终点的有向边的第三有向图。
3.根据权利要求2所述的方法,其中,所述基于所述各有向边的边配载,过滤所述第一有向图,得到保留有界于所述目标起点和所述目标终点之间且经由之后能够到达所述目标终点的有向边的第三有向图,包括:
基于所述各有向边的边配载,确定不包含与所述目标终点关联的标识的边配载对应的所有的第一有向边;
从所述第一有向图中滤掉所述所有的第一有向边;以及
将所述第一有向图滤掉所述所有的第一有向边后的剩余部分作为所述第三有向图。
4.根据权利要求2所述的方法,其中,所述基于所述各有向边的边配载,过滤所述第一有向图,得到保留有界于所述目标起点和所述目标终点之间且经由之后能够到达所述目标终点的有向边的第三有向图,包括:
基于所述各有向边的边配载,提取包含有与所述目标终点关联的标识的边配载对应的所有的第二有向边;
确定仅包含所述所有的第二有向边的第四有向图;以及
将所述第四有向图作为所述第三有向图。
5.根据权利要求2所述的方法,其中,所述方法还包括:
确定所述第三有向图中各有向边的边分组信息,其中,有向边的边分组信息用于表征从同一节点出发且边配载相同的有向边集合的相关信息;
基于所述第三有向图,搜索从所述目标起点到所述目标终点的路径,包括:
基于所述各有向边的边分组信息,搜索所述第三有向图以确定从所述目标起点到所述目标终点的路径。
6.一种基于有向图的路径搜索系统,用于搜索从目标起点到目标终点的路径,所述系统包括:
获取模块,用于获取包含有所述目标起点和所述目标终点的第一有向图的有向图数据;
第一确定模块,用于确定所述第一有向图中各有向边的边配载,其中,一条有向边的边配载用于表征经由该条有向边所能够到达的终点;
过滤模块,用于基于所述各有向边的边配载,过滤所述第一有向图,得到保留有经由之后能够到达所述目标终点的有向边的第二有向图;
搜索模块,用于基于所述第二有向图,搜索得到从所述目标起点到所述目标终点的路径;以及
输出模块,用于输出表征所述路径的路径数据。
7.根据权利要求6所述的系统,其中,所述过滤模块还用于:
基于所述各有向边的边配载,过滤所述第一有向图,得到保留有界于所述目标起点和所述目标终点之间且经由之后能够到达所述目标终点的有向边的第三有向图。
8.根据权利要求7所述的系统,其中,所述过滤模块包括:
第一确定单元,用于基于所述各有向边的边配载,确定不包含与所述目标终点关联的标识的边配载对应的所有的第一有向边;
过滤单元,用于从所述第一有向图中滤掉所述所有的第一有向边;以及
第二确定单元,用于将所述第一有向图滤掉所述所有的第一有向边后的剩余部分作为所述第三有向图。
9.根据权利要求7所述的系统,其中,所述过滤模块包括:
提取单元,用于基于所述各有向边的边配载,提取包含有与所述目标终点关联的标识的边配载对应的所有的第二有向边;
第三确定单元,用于确定仅包含所述所有的第二有向边的第四有向图;以及
第四确定单元,用于将所述第四有向图作为所述第三有向图。
10.根据权利要求7所述的系统,其中,所述系统还包括:
第二确定模块,用于确定所述第三有向图中各有向边的边分组信息,其中,有向边的边分组信息用于表征从同一节点出发且边配载相同的有向边集合的相关信息;以及
所述搜索模块,还用于基于所述各有向边的边分组信息,搜索所述第三有向图以确定从所述目标起点到所述目标终点的路径。
11.一种计算机系统,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至5中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现权利要求1至5中任一项所述的方法。
CN201811120900.4A 2018-09-25 2018-09-25 基于有向图的路径搜索方法及系统、介质和计算机系统 Active CN110941735B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811120900.4A CN110941735B (zh) 2018-09-25 2018-09-25 基于有向图的路径搜索方法及系统、介质和计算机系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811120900.4A CN110941735B (zh) 2018-09-25 2018-09-25 基于有向图的路径搜索方法及系统、介质和计算机系统

Publications (2)

Publication Number Publication Date
CN110941735A CN110941735A (zh) 2020-03-31
CN110941735B true CN110941735B (zh) 2023-11-03

Family

ID=69904458

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811120900.4A Active CN110941735B (zh) 2018-09-25 2018-09-25 基于有向图的路径搜索方法及系统、介质和计算机系统

Country Status (1)

Country Link
CN (1) CN110941735B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103487057A (zh) * 2013-10-08 2014-01-01 百度在线网络技术(北京)有限公司 基于端点扩展的路径规划方法及装置
CN103837154A (zh) * 2014-03-14 2014-06-04 北京工商大学 路径规划的方法及系统
CN106447271A (zh) * 2016-11-16 2017-02-22 北京京东尚科信息技术有限公司 用于在仓储区域中识别路径的方法和系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8861506B2 (en) * 2011-12-27 2014-10-14 Apple Inc. Shortest path determination for large graphs
WO2014001565A1 (en) * 2012-06-29 2014-01-03 Tomtom Development Germany Gmbh Apparatus and method for route searching

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103487057A (zh) * 2013-10-08 2014-01-01 百度在线网络技术(北京)有限公司 基于端点扩展的路径规划方法及装置
CN103837154A (zh) * 2014-03-14 2014-06-04 北京工商大学 路径规划的方法及系统
CN106447271A (zh) * 2016-11-16 2017-02-22 北京京东尚科信息技术有限公司 用于在仓储区域中识别路径的方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于偏好的有向图的路径搜索问题的研究;赵晓东;陈思宇;方欢;;电脑知识与技术(第07期);全文 *

Also Published As

Publication number Publication date
CN110941735A (zh) 2020-03-31

Similar Documents

Publication Publication Date Title
US11979433B2 (en) Highly scalable four-dimensional web-rendering geospatial data system for simulated worlds
CN109033001B (zh) 用于分配gpu的方法和装置
US10614621B2 (en) Method and apparatus for presenting information
CN111695840B (zh) 一种实现流程控制的方法和装置
US20170124490A1 (en) Inclusion of time series geospatial markers in analyses employing an advanced cyber-decision platform
US8447857B2 (en) Transforming HTTP requests into web services trust messages for security processing
US9317520B2 (en) State scope data file sharing
CN113377653B (zh) 生成测试用例的方法和装置
CN110928594A (zh) 服务开发方法和平台
CN113312553A (zh) 一种用户标签的确定方法和装置
CN110941735B (zh) 基于有向图的路径搜索方法及系统、介质和计算机系统
CN111324470A (zh) 用于生成信息的方法及装置
CN112948138A (zh) 一种处理消息的方法和装置
WO2019091101A1 (zh) 薪资计算方法、应用服务器及计算机可读存储介质
CN109710604A (zh) 数据处理方法、装置、系统、计算机可读存储介质
US20140351064A1 (en) Directional Filmstrip Display in Street View
CN109491830A (zh) 切换数据源的方法及系统
CN113742485A (zh) 一种处理文本的方法和装置
CN113449213A (zh) 页面跳转的方法和装置
CN110555053A (zh) 用于输出信息的方法和装置
US20240064179A1 (en) Highly scalable four-dimensional geospatial data system for simulated worlds
CN113949639B (zh) 资源配置方法、装置、设备及介质
CN112600918B (zh) 一种基于bs架构的工控边缘大数据高效处理方法与系统
CN113765868B (zh) 一种业务处理方法和装置
CN112084003B (zh) 一种隔离数据的方法、装置、介质和电子设备

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210308

Address after: 6 / F, 76 Zhichun Road, Haidian District, Beijing 100086

Applicant after: Beijing Jingdong Zhenshi Information Technology Co.,Ltd.

Address before: 101, 1st floor, building 2, yard 20, Suzhou street, Haidian District, Beijing 100080

Applicant before: Beijing Jingbangda Trading Co.,Ltd.

Effective date of registration: 20210308

Address after: 101, 1st floor, building 2, yard 20, Suzhou street, Haidian District, Beijing 100080

Applicant after: Beijing Jingbangda Trading Co.,Ltd.

Address before: 100195 Beijing Haidian Xingshikou Road 65 West Cedar Creative Garden 4 District 11 Building East 1-4 Floor West 1-4 Floor

Applicant before: BEIJING JINGDONG SHANGKE INFORMATION TECHNOLOGY Co.,Ltd.

Applicant before: BEIJING JINGDONG CENTURY TRADING Co.,Ltd.

GR01 Patent grant
GR01 Patent grant