CN111538866A - 一种用于获取等距无向图最短路径集合的方法及系统 - Google Patents
一种用于获取等距无向图最短路径集合的方法及系统 Download PDFInfo
- Publication number
- CN111538866A CN111538866A CN202010259908.XA CN202010259908A CN111538866A CN 111538866 A CN111538866 A CN 111538866A CN 202010259908 A CN202010259908 A CN 202010259908A CN 111538866 A CN111538866 A CN 111538866A
- Authority
- CN
- China
- Prior art keywords
- shortest
- stack
- shortest path
- paths
- node
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 28
- 238000004364 calculation method Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 6
- 238000005457 optimization Methods 0.000 claims description 4
- 239000002699 waste material Substances 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
- G06Q10/047—Optimisation of routes or paths, e.g. travelling salesman problem
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Economics (AREA)
- Strategic Management (AREA)
- General Physics & Mathematics (AREA)
- Game Theory and Decision Science (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Operations Research (AREA)
- General Business, Economics & Management (AREA)
- Marketing (AREA)
- Entrepreneurship & Innovation (AREA)
- Software Systems (AREA)
- Development Economics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种用于获取等距无向图最短路径集合的方法及系统。该方法包括:获取数据源,基于数据源建立数据结构;采用Dijkstra算法计算数据结构中的最短路径,根据所述最短路径的长度,自定义最短路径集合中路径长度最大值;采用Graph类优化所述数据结构;根据Graph类中的结点数据和栈属性,计算满足不大于路径长度最大值的所有最短路径,将所有最短路径作为最优最短路径集合。本发明实施例采用了基于Dijkstra算法来获取最短路径长度,并得到最短路径集合中路径长度的最大值,排除大量路径过长的无效数据,不仅降低复杂度,减少计算资源浪费,提高运算效率,还能大大提高数据合理性。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种用于获取等距无向图最短路径集合的方法及系统。
背景技术
在现有的计算路径算法中,随着数据量增加,以及数据的复杂化,会导致算法复杂度过高,计算机的效率大幅降低,甚至无法得到所需结果。对于存在复杂连接信息的网元数据,这一现象更为明显,这是想要获取一个最短路径集合就变得十分困难。
因此,亟待提出一种新的求解最短路径算法,解决上述问题。
发明内容
本发明实施例提供一种用于获取等距无向图最短路径集合的方法及系统,用以解决现有技术中计算最短路径的算法过于复杂,同时存在计算效率低等缺陷
第一方面,本发明实施例提供一种用于获取等距无向图最短路径集合的方法,包括:
获取数据源,基于所述数据源建立数据结构;
采用Dijkstra算法计算所述数据结构中的最短路径,根据所述最短路径的长度,自定义最短路径集合中路径长度最大值;
采用Graph类优化所述数据结构;
根据所述Graph类中的结点数据和栈属性,计算满足不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为最优最短路径集合。
优选地,所述获取数据源,基于所述数据源建立数据结构,具体包括:
获取所述数据源;
将所述数据源的结点关系保存至预设二维数组中,得到所述数据结构。
优选地,所述采用Dijkstra算法计算所述数据结构中的最短路径,根据所述最短路径的长度,自定义最短路径集合中路径长度最大值,进一步包括:
以当前结点为起始点,并以所述起始点为中心向外扩展,直到扩展至终点,记录若干扩展路径;
提取所述若干扩展路径中的所述最短路径,并定义出最短路径集合中的所述路径长度最大值。
优选地,所述采用Graph类优化所述数据结构,具体包括:
采用Graph类中的vexArr记录所述预设二维数组中每个结点的VexNode信息;
将与每个结点具有直连关系的所有结点以链式形式进行保存,构建Graph对象;
基于所述Graph对象计算得到所有符合要求路径。
优选地,所述根据所述Graph类中的结点数据和栈属性,计算满足不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为最优最短路径集合,具体包括:
将所述最短路径上的起点保存在栈中;
若栈内元素不为空,则提取栈顶元素;
若判断获知所述栈顶元素不为终点,进一步判断栈内元素个数是否超过所述路径长度最大值;
若判断获知所述栈内元素个数不超过所述路径长度最大值,通过getNextNode方法,获取所述栈顶元素的下一个结点,将所述下一个结点入栈,修改所述下一个结点的状态,并将已访问过所述栈顶元素的邻接点清空,记录不大于所述路径长度最大值的最短路径;
重复执行上述步骤,直至所述栈内元素为空,获得不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为所述最优最短路径集合。
优选地,若判断获知所述栈内元素个数超过所述路径长度最大值,设置所述栈顶元素出栈,将所述栈顶元素设为已访问过所述栈顶元素的邻接点,并修改所述邻接点的状态,直至所述栈内元素为空,获得不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为所述最优最短路径集合。
优选地,若判断获知所述栈顶元素为终点,遍历所述栈中的元素,记录遍历路径;
设置所述栈顶元素出栈,将所述栈顶元素设为已访问过所述栈顶元素的邻接点,并修改所述邻接点的状态,直至所述栈内元素为空,获得不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为所述最优最短路径集合。
第二方面,本发明实施例提供一种用于获取等距无向图最短路径集合的系统,包括:
获取模块,用于获取数据源,基于所述数据源建立数据结构;
第一计算模块,用于采用Dijkstra算法计算所述数据结构中的最短路径,根据所述最短路径的长度,自定义最短路径集合中路径长度最大值;
优化模块,用于采用Graph类优化所述数据结构;
第二计算模块,用于根据所述Graph类中的结点数据和栈属性,计算满足不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为最优最短路径集合。
第三方面,本发明实施例提供一种电子设备,包括:
存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一项所述用于获取等距无向图最短路径集合的方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现任一项所述用于获取等距无向图最短路径集合的方法的步骤。
本发明实施例提供的用于获取等距无向图最短路径集合的方法及系统,通过采用基于Dijkstra算法来获取最短路径长度,并得到最短路径集合中路径长度的最大值,排除大量路径过长的无效数据,不仅降低复杂度,减少计算资源浪费,提高运算效率,还能大大提高数据合理性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提出的一种用于获取等距无向图最短路径集合的方法流程图;
图2为本发明实施例提出的二维数组示意图;
图3为本发明实施例提出的Graph对象示意图;
图4为本发明实施例提出的getPath()流程图;
图5为本发明实施例提出的一种用于获取等距无向图最短路径集合的系统结构图;
图6为本发明实施例提供的电子设备的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对获取一个最短路径集合相对困难的问题,本发明实施例提出了一种用于获取等距无向图最短路径集合的方法。
图1为本发明实施例提出的一种用于获取等距无向图最短路径集合的方法流程图,如图1所示,包括:
S1,获取数据源,基于所述数据源建立数据结构;
S2,采用Dijkstra算法计算所述数据结构中的最短路径,根据所述最短路径的长度,自定义最短路径集合中路径长度最大值;
S3,采用Graph类优化所述数据结构;
S4,根据所述Graph类中的结点数据和栈属性,计算满足不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为最优最短路径集合。
具体地,本发明实施例的方法流程大致可分为:一、获取数据源,处理数据结构;二、使用Dijkstra算法求得最短路径,并记录;三、在最短路径的基础上,得到最短路径集合中路径长度最大值;四、计算所有路径长度不超过该最大值的路径,并记录得到最短路径集合。
可以理解的是,Dijkstra是经典最短路径算法之一,时间复杂度仅为O(n2),因此通过Dijkstra计算最短路径,可以有效的减少计算机的运算量,提高运算效率;通过最短路径长度的得到结果集中路径长度的最大值,以此过滤不符合条件的路径,可以指数倍的减少计算难度,降低计算机的运算量,提高运算效率,已达到实际的需求;而结果集中路径长度的最大值是可变的,可以根据实际的需求对最大值进行调整,以满足实际情况中复杂多变的需求;Graph是自定义的用于方便保存、处理数据的类。
本发明实施例通过采用基于Dijkstra算法来获取最短路径长度,并得到最短路径集合中路径长度的最大值,排除大量路径过长的无效数据,不仅降低复杂度,减少计算资源浪费,提高运算效率,还能大大提高数据合理性。
基于上述实施例,所述获取数据源,基于所述数据源建立数据结构,具体包括:
获取所述数据源;
将所述数据源的结点关系保存至预设二维数组中,得到所述数据结构。
可以理解的是,在计算最短路径时,通过将结点间的关系保存在二维数组中,能够直观的了解到各个结点间的连接情况,另外将二维数组中数据保存在自定义的Graph类中,保存所有结点自身以及连接情况的信息,加快数据的读取。
具体地,如图2的无向图所示,可转化为二维数组。获取数据源数据,将数据保存在大小为n×n(n为数据源中结点的个数)二维数组dist中,坐标表示网元序号,坐标内容表示网元间关系。例如:二维数组dist,dist[0][1]=1,表示0号结点到1号结点为通路;dist[0][0]=0,表示0号结点到0号结点成环路;dist[0][1]=Integer.MAX_VALUE,表示0号结点到1号结点不通。
基于上述任一实施例,所述采用Dijkstra算法计算所述数据结构中的最短路径,根据所述最短路径的长度,自定义最短路径集合中路径长度最大值,进一步包括:
以当前结点为起始点,并以所述起始点为中心向外扩展,直到扩展至终点,记录若干扩展路径;
提取所述若干扩展路径中的所述最短路径,并定义出最短路径集合中的所述路径长度最大值。
具体地,Dijkstr算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。该算法为经典路径算法,这里不作过多阐述。
基于上述任一实施例,所述采用Graph类优化所述数据结构,具体包括:
采用Graph类中的vexArr记录所述预设二维数组中每个结点的VexNode信息;
将与每个结点具有直连关系的所有结点以链式形式进行保存,构建Graph对象;
基于所述Graph对象计算得到所有符合要求路径。
具体地,自定义Graph类存储二维数组中的所有结点的信息,vexArr记录每个结点VexNode的信息,并将与该结点有直连关系的所有结点以链式的形式保存起来。下面对涉及到的方法进行详细阐述:
VexNode:保存结点信息的类,是Graph的子类,具体属性有int index(结点序号),List<VexNode>nextNode(与起点结点成通路的所有结点信息)。
vexArr:保存所有结点信息的VexNode数组,数组长度为数据源结点个数。
linkLast():将与开始点直接相连的结点信息保存在开始点中nextNode集合中,参数target(vexArr中子元素的开始点),node(与target成通路的结点)。通过target.nextNode.add(node),保存邻接点信息。
buildGraph():
1.初始化vexArr数组,记录所有结点初始信息;
2.循环读取二维数组中的数据,当dist[x][y]等于1时,说明结点x与结点y成通路,执行linkLast(vexArr[x],vexArr[y]),记录与结点x成通路的结点y的信息。
3.返回Graph对象。
其中,图3为本发明实施例提供的Graph对象示意图。
基于上述任一实施例,所述根据所述Graph类中的结点数据和栈属性,计算满足不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为最优最短路径集合,具体包括:
将所述最短路径上的起点保存在栈中;
若栈内元素不为空,则提取栈顶元素;
若判断获知所述栈顶元素不为终点,进一步判断栈内元素个数是否超过所述路径长度最大值;
若判断获知所述栈内元素个数不超过所述路径长度最大值,通过getNextNode方法,获取所述栈顶元素的下一个结点,将所述下一个结点入栈,修改所述下一个结点的状态,并将已访问过所述栈顶元素的邻接点清空,记录不大于所述路径长度最大值的最短路径;
重复执行上述步骤,直至所述栈内元素为空,获得不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为所述最优最短路径集合。
其中,若判断获知所述栈内元素个数超过所述路径长度最大值,设置所述栈顶元素出栈,将所述栈顶元素设为已访问过所述栈顶元素的邻接点,并修改所述邻接点的状态,直至所述栈内元素为空,获得不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为所述最优最短路径集合。
其中,若判断获知所述栈顶元素为终点,遍历所述栈中的元素,记录遍历路径;
设置所述栈顶元素出栈,将所述栈顶元素设为已访问过所述栈顶元素的邻接点,并修改所述邻接点的状态,直至所述栈内元素为空,获得不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为所述最优最短路径集合。
具体地,计算最短路径集合,通过前述实施例得到最短路径的长度,以及构造的Graph对象,根据最短路径的长度得到最短路径集合中的路径长度的最大值maxLen,最后通过maxLen路径进行过滤,将符合要求的路径记录下来,得到最短路径集合。下面对涉及到的方法进行详细地阐述:
stack:保存路径上的结点。
states:记录结点是否在stack中,避免产生回路。
X:起点。
Y:终点。
maxLen:符合要求路径的最大长度。
top_node:stack中的top元素。
adjvex_node:当前已经访问过了top_node的邻接点。
next_node:访问top_node的下一个邻接点。
getNextNode():获取下一个邻接点,参数graph(buildGraph()生成的graph),top_node,adjvex_node。通过graph.vexArr[top_node].nextNode依次获取到top_node的领接点n,同时保证该邻接点n不等于adjvex_node且还未入栈,如果存在这样的邻接点n,则返回该值;否则返回null。图4为本发明实施例提出的getPath()流程图,如图4所示:
getPath():
1.初始化state,保存所有结点状态,并将起点x入栈stack,修改state中起点X状态。
2.如果栈stack不为空,执行步骤3;否则执行步骤7。
3.取栈顶元素top_node,如果topo_node等于终点Y,遍历栈stack中的元素,记录这条路径,执行步骤6;如果topo_node不等于终点Y,执行步骤4。
4.判断当前stack栈内元素个数是否超过maxLen,不超过执行步骤5,否则执行步骤6。
5.通过getNextNode()方法,获取栈顶元素top_node的下一个结点next_node,如果存在next_node,则将next_node入栈stack,修改state中next_node状态,adjvex_node设为null,并执行步骤2;否则执行步骤6。
6.stack栈顶元素出栈,设为adjvex_node,修改该结点在state中的状态,执行步骤2。
7.方法结束,获得所有路径长度不大于maxLen的路径,即为最短路径集合。
图5为本发明实施例提出的一种用于获取等距无向图最短路径集合的系统结构图,如图5所示,包括:获取模块51、第一计算模块52、优化模块53和第二计算模块54;其中:
获取模块51用于获取数据源,基于所述数据源建立数据结构;第一计算模块52用于采用Dijkstra算法计算所述数据结构中的最短路径,根据所述最短路径的长度,自定义最短路径集合中路径长度最大值;优化模块53用于采用Graph类优化所述数据结构;第二计算模块54用于根据所述Graph类中的结点数据和栈属性,计算满足不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为最优最短路径集合。
本发明实施例提供的系统用于执行上述对应的方法,其具体的实施方式与方法的实施方式一致,涉及的算法流程与对应的方法算法流程相同,此处不再赘述。
本发明实施例通过采用基于Dijkstra算法来获取最短路径长度,并得到最短路径集合中路径长度的最大值,排除大量路径过长的无效数据,不仅降低复杂度,减少计算资源浪费,提高运算效率,还能大大提高数据合理性。
图6示例了一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行如下方法:获取数据源,基于所述数据源建立数据结构;采用Dijkstra算法计算所述数据结构中的最短路径,根据所述最短路径的长度,自定义最短路径集合中路径长度最大值;采用Graph类优化所述数据结构;根据所述Graph类中的结点数据和栈属性,计算满足不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为最优最短路径集合。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的传输方法,例如包括:获取数据源,基于所述数据源建立数据结构;采用Dijkstra算法计算所述数据结构中的最短路径,根据所述最短路径的长度,自定义最短路径集合中路径长度最大值;采用Graph类优化所述数据结构;根据所述Graph类中的结点数据和栈属性,计算满足不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为最优最短路径集合。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种用于获取等距无向图最短路径集合的方法,其特征在于,包括:
获取数据源,基于所述数据源建立数据结构;
采用Dijkstra算法计算所述数据结构中的最短路径,根据所述最短路径的长度,自定义最短路径集合中路径长度最大值;
采用Graph类优化所述数据结构;
根据所述Graph类中的结点数据和栈属性,计算满足不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为最优最短路径集合。
2.根据权利要求1所述的用于获取等距无向图最短路径集合的方法,其特征在于,所述获取数据源,基于所述数据源建立数据结构,具体包括:
获取所述数据源;
将所述数据源的结点关系保存至预设二维数组中,得到所述数据结构。
3.根据权利要求1所述的用于获取等距无向图最短路径集合的方法,其特征在于,所述采用Dijkstra算法计算所述数据结构中的最短路径,根据所述最短路径的长度,自定义最短路径集合中路径长度最大值,进一步包括:
以当前结点为起始点,并以所述起始点为中心向外扩展,直到扩展至终点,记录若干扩展路径;
提取所述若干扩展路径中的所述最短路径,并定义出最短路径集合中的所述路径长度最大值。
4.根据权利要求2所述的用于获取等距无向图最短路径集合的方法,其特征在于,所述采用Graph类优化所述数据结构,具体包括:
采用Graph类中的vexArr记录所述预设二维数组中每个结点的VexNode信息;
将与每个结点具有直连关系的所有结点以链式形式进行保存,构建Graph对象;
基于所述Graph对象计算得到所有符合要求路径。
5.根据权利要求4所述的用于获取等距无向图最短路径集合的方法,其特征在于,所述根据所述Graph类中的结点数据和栈属性,计算满足不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为最优最短路径集合,具体包括:
将所述最短路径上的起点保存在栈中;
若栈内元素不为空,则提取栈顶元素;
若判断获知所述栈顶元素不为终点,进一步判断栈内元素个数是否超过所述路径长度最大值;
若判断获知所述栈内元素个数不超过所述路径长度最大值,通过getNextNode方法,获取所述栈顶元素的下一个结点,将所述下一个结点入栈,修改所述下一个结点的状态,并将已访问过所述栈顶元素的邻接点清空,记录不大于所述路径长度最大值的最短路径;
重复执行上述步骤,直至所述栈内元素为空,获得不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为所述最优最短路径集合。
6.根据权利要求5所述的用于获取等距无向图最短路径集合的方法,其特征在于,若判断获知所述栈内元素个数超过所述路径长度最大值,设置所述栈顶元素出栈,将所述栈顶元素设为已访问过所述栈顶元素的邻接点,并修改所述邻接点的状态,直至所述栈内元素为空,获得不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为所述最优最短路径集合。
7.根据权利要求5所述的用于获取等距无向图最短路径集合的方法,其特征在于,若判断获知所述栈顶元素为终点,遍历所述栈中的元素,记录遍历路径;
设置所述栈顶元素出栈,将所述栈顶元素设为已访问过所述栈顶元素的邻接点,并修改所述邻接点的状态,直至所述栈内元素为空,获得不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为所述最优最短路径集合。
8.一种用于获取等距无向图最短路径集合的系统,其特征在于,包括:
获取模块,用于获取数据源,基于所述数据源建立数据结构;
第一计算模块,用于采用Dijkstra算法计算所述数据结构中的最短路径,根据所述最短路径的长度,自定义最短路径集合中路径长度最大值;
优化模块,用于采用Graph类优化所述数据结构;
第二计算模块,用于根据所述Graph类中的结点数据和栈属性,计算满足不大于所述路径长度最大值的所有最短路径,将所述所有最短路径作为最优最短路径集合。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述用于获取等距无向图最短路径集合的方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述用于获取等距无向图最短路径集合的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010259908.XA CN111538866A (zh) | 2020-04-03 | 2020-04-03 | 一种用于获取等距无向图最短路径集合的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010259908.XA CN111538866A (zh) | 2020-04-03 | 2020-04-03 | 一种用于获取等距无向图最短路径集合的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111538866A true CN111538866A (zh) | 2020-08-14 |
Family
ID=71972999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010259908.XA Pending CN111538866A (zh) | 2020-04-03 | 2020-04-03 | 一种用于获取等距无向图最短路径集合的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111538866A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113220945A (zh) * | 2021-04-28 | 2021-08-06 | 广州宸祺出行科技有限公司 | 一种用于数据血缘的字段检索和路径展示的方法及系统 |
CN114418205A (zh) * | 2022-01-06 | 2022-04-29 | 艾尔法智慧医疗科技(上海)有限公司 | 一种最短路径的生成方法、系统、设备及存储介质 |
-
2020
- 2020-04-03 CN CN202010259908.XA patent/CN111538866A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113220945A (zh) * | 2021-04-28 | 2021-08-06 | 广州宸祺出行科技有限公司 | 一种用于数据血缘的字段检索和路径展示的方法及系统 |
CN113220945B (zh) * | 2021-04-28 | 2024-05-31 | 广州宸祺出行科技有限公司 | 一种用于数据血缘的字段检索和路径展示的方法及系统 |
CN114418205A (zh) * | 2022-01-06 | 2022-04-29 | 艾尔法智慧医疗科技(上海)有限公司 | 一种最短路径的生成方法、系统、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111538866A (zh) | 一种用于获取等距无向图最短路径集合的方法及系统 | |
JP7504290B2 (ja) | グラフデータ処理方法、装置、コンピュータ機器及びコンピュータプログラム | |
WO2022012118A1 (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111091572B (zh) | 一种图像处理方法、装置、电子设备及存储介质 | |
CN110705602A (zh) | 大规模数据聚类方法、装置及计算机可读存储介质 | |
CN111159577B (zh) | 一种社群划分方法、装置、存储介质及电子装置 | |
JP2023541350A (ja) | 表畳み込みおよびアクセラレーション | |
CN110888672B (zh) | 一种基于元数据架构的表达式引擎实现方法及系统 | |
CN107659430B (zh) | 一种节点处理方法、装置、电子设备和计算机存储介质 | |
CN109272567B (zh) | 三维模型优化方法和装置 | |
WO2021057811A1 (zh) | 网络节点处理方法、装置、存储介质及电子设备 | |
CN116860996A (zh) | 三维知识图谱的构建方法、装置、设备以及存储介质 | |
CN115795203B (zh) | 菜单页面的构建方法、装置、电子设备及存储介质 | |
CN109871260B (zh) | 一种基于容器间共享内存的多维度服务限流方法及系统 | |
CN110489396A (zh) | 一种用户界面数据隔离方法及装置 | |
CN110347511B (zh) | 含隐私约束条件的地理分布式进程映射方法、装置及终端 | |
CN111259122A (zh) | 网络包检测方法及装置 | |
CN111079643B (zh) | 基于神经网络的人脸检测方法、装置和电子设备 | |
CN110647664A (zh) | 一种知识图谱中树图大规模更新方法、系统、介质及设备 | |
CN113377295A (zh) | 多生产者单消费者的数据存储和读取方法、装置、设备 | |
CN111773679A (zh) | 游戏中图标的处理方法及装置 | |
JP7391127B2 (ja) | 点群データ処理方法、装置、電子デバイス、記憶媒体、及びプログラム | |
CN114707023B (zh) | 一种哈希表遍历方法、系统、设备及计算机可读存储介质 | |
CN110750505A (zh) | 一种大文件读取优化方法、装置、设备及存储介质 | |
CN116523941B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200814 |
|
RJ01 | Rejection of invention patent application after publication |