CN106096783A - 一种基于Dijkstra的路径优化方法及其系统 - Google Patents

一种基于Dijkstra的路径优化方法及其系统 Download PDF

Info

Publication number
CN106096783A
CN106096783A CN201610419959.8A CN201610419959A CN106096783A CN 106096783 A CN106096783 A CN 106096783A CN 201610419959 A CN201610419959 A CN 201610419959A CN 106096783 A CN106096783 A CN 106096783A
Authority
CN
China
Prior art keywords
node
shortest path
currentnode
dist
dijkstra
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
Application number
CN201610419959.8A
Other languages
English (en)
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.)
Shenzhen TCL High-Tech Development Co Ltd
Original Assignee
TCL Corp
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 TCL Corp filed Critical TCL Corp
Priority to CN201610419959.8A priority Critical patent/CN106096783A/zh
Publication of CN106096783A publication Critical patent/CN106096783A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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/08Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
    • 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/08Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
    • G06Q10/083Shipping

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Economics (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Development Economics (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Game Theory and Decision Science (AREA)
  • Navigation (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供了一种基于Dijkstra的路径优化方法及其系统,方法包括:根据多个节点、以及节点之间的路径权值,得到最短路径有向图;初始化邻接点集,已求出最短路径的已标记顶点集合,以及待存储排序节点;将待存储排序节点通过堆排序得到小顶堆,以小顶堆的堆顶节点为中间节点,并以该中间节点校正从起始节点到已标记顶点集合的补集中各节点经中间节点可达的最短路径长度,反复迭代至邻接点集中的所有节点均添加至已标记顶点集合,并得到节点中的起始节点到其他任一节点的最短路径长度。本发明实现了由邻接表存储数据以节省存储空间,同时以堆排序提升了算法的运行性能,提高了处理效率。

Description

一种基于Dijkstra的路径优化方法及其系统
技术领域
本发明涉及路径规划技术领域,尤其涉及一种基于Dijkstra的路径优化方法及其系统。
背景技术
随着电子商务的发展,网上购物已成为当今社会购物方式的主流。由此对提供在网上购物方式的企业的物流配送的需求与效率要求也越来越高,在物流配送系统中车辆路径问题是最关键的问题,车辆路径问题是一个经典的组合优化调度问题,主要研究满足约束条件的车辆调度方案以及最优的选择车辆路线方案。物流配送路径优化问题可以描述为:从物流中心出发,有一系列发货点和或收货点,要求组成适当的行车路径,使车辆有序地通过它们,在满足一定约束条件的情况下,达到一定的目标并完成工作任务。选择合理的运输路径,对加快物流配送速度、提高企业服务质量、降低配送成本及增加经济效益都有较大作用。
Dijkstra算法(即单源最短路径)用于计算一个起点到所有其他节点的最短路径,它是按路径长度递增的次序来产生最短路径的算法。在Dijkstra算法的基本思想中设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径,就将加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用T表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点v到S中各顶点的最短路径长度不大于从源点v到T中任何顶点的最短路径长度。
假设用带权的邻接矩阵Cost来表示具有n个节点的带权有向图G,Cost[i,j]表示弧<Vi,Vj>的权值,如果从Vi到Vj不通,则Cost[i,j]=∞。引进一个辅助向量Dist并设Vs为起始点,每个分量Dist[i]表示已找到的从起始点Vs到每个终点Vi的最小权值,则该向量的初始值为Dist[i]=Cost[s,i]Vi∈V,其中V是节点的集合。令S为已经找到的从起点出发的最短路径的终点集合,初始值为S={Vs},则从Vs出发到图G上其它所有节点Vi可能达到的最短路径长度为Dist[i]=Cost[s,i]Vi∈V。
上述算法中有几点不足之处:
1)用邻接矩阵Cost来存储网络图,其存储量为n*n。对于大型稀疏矩阵,这将耗费大量资源存储那些无意义的矩阵元素。
2)当从未标记节点集合(V-S)选定下一个节点Vj作中间节点后,在更新操作过程中,需要扫描所有的未标记节点并进行比较更新。而未标记节点集合(V-S)中往往包含大量与中间节点Vj不直接相连的节点。
3)在选择下一个最短路径节点作为中间节点时,需要比较所有的未标记节点,而这个中间节点往往包含在与已标记节点S集合的所有节点邻接的节点中。
4)在算法的每次迭代中,由于未标记节点以无序的形式存放在一个链表中或一个数组中,每次选择最短路径节点都必须将所有未标记节点扫描一遍,当节点数目很大时,这无疑将成为制约计算速度的关键因素。
因此,现有技术还有待改进和发展。
发明内容
鉴于上述现有技术的不足之处,本发明的目的在于提供一种基于Dijkstra的路径优化方法及其系统,旨在解决现有技术中Dijkstra算法是采用邻接矩阵存储图存储而导致大量无效矩阵被存储,且每次选择最短路径节点都必须将所有未标记节点扫描一遍,当节点数目很大时制约计算速度的问题。
为了达到上述目的,本发明采取了以下技术方案:
一种基于Dijkstra的路径优化方法,其中,所述方法包括以下步骤:
A、根据多个节点、以及节点之间的路径权值,得到最短路径有向图;
B、初始化邻接点集,已求出最短路径的已标记顶点集合,以及待存储排序节点;
C、将待存储排序节点通过堆排序得到小顶堆,以小顶堆的堆顶节点为中间节点,并以该中间节点校正从起始节点到已标记顶点集合的补集中各节点经中间节点可达的最短路径长度,反复迭代至邻接点集中的所有节点均添加至已标记顶点集合,并得到节点中的起始节点到其他任一节点的最短路径长度。
所述基于Dijkstra的路径优化方法,其中,所述步骤B中将初始化的邻接点集记为V、已求出最短路径的已标记顶点集合记为S,待存储排序节点记为T[],且初始化时S中仅包括节点中的起始节点V0,T[]=V[V0],T[0]=∞。
所述基于Dijkstra的路径优化方法,其中,所述步骤C具体包括:
C1、将T[]通过堆排序调整得到小顶堆;
C2、取小顶堆的堆顶节点currentNode为中间节点,并将堆顶节点currentNode加入已标记顶点集合S中;
C3、判断Dist[currentNode]与V{currentNode->k}之和是否小于Dist[k],当小于时则使Dist[k]=Dist[currentNode]+V{currentNode->k},并将Vk所对应的节点加入已标记顶点集合S中;其中k的取值是小于节点总数的自然数,Dist[k]表示从起始节点到每一节点的最小权值,V{currentNode->k}表示堆顶节点currentNode到Vk的路径对应的权值;
C4、当所有节点都加入已标记顶点集合S时,则停止步骤C3中的迭代,并将Dist[k]作为节点中的起始节点到其他任一节点的最短路径长度。
所述基于Dijkstra的路径优化方法,其中,所述步骤C之后还包括:
D、根据所述最短路径长度所依次经过的节点,得到最优路径。
一种基于Dijkstra的路径优化系统,其中,包括:
有向图建立模块,用于根据多个节点、以及节点之间的路径权值,得到最短路径有向图;
初始化模块,用于初始化邻接点集,已求出最短路径的已标记顶点集合,以及待存储排序节点;
迭代求解模块,用于将待存储排序节点通过堆排序得到小顶堆,以小顶堆的堆顶节点为中间节点,并以该中间节点校正从起始节点到已标记顶点集合的补集中各节点经中间节点可达的最短路径长度,反复迭代至邻接点集中的所有节点均添加至已标记顶点集合,并得到节点中的起始节点到其他任一节点的最短路径长度。
所述基于Dijkstra的路径优化系统,其中,所述初始化模块中将初始化的邻接点集记为V、已求出最短路径的已标记顶点集合记为S,待存储排序节点记为T[],且初始化时S中仅包括节点中的起始节点V0,T[]=V[V0],T[0]=∞。
所述基于Dijkstra的路径优化系统,其中,所述迭代求解模块具体包括:
堆排序单元,用于将T[]通过堆排序调整得到小顶堆;
中间节点获取单元,用于取小顶堆的堆顶节点currentNode为中间节点,并将堆顶节点currentNode加入已标记顶点集合S中;
判断单元,用于判断Dist[currentNode]与V{currentNode->k}之和是否小于Dist[k],当小于时则使Dist[k]=Dist[currentNode]+V{currentNode->k},并将Vk所对应的节点加入已标记顶点集合S中;其中k的取值是小于节点总数的自然数,Dist[k]表示从起始节点到每一节点的最小权值,V{currentNode->k}表示堆顶节点currentNode到Vk的路径对应的权值;
最短路径长度获取单元,用于当所有节点都加入已标记顶点集合S时,则停止迭代,并将Dist[k]作为节点中的起始节点到其他任一节点的最短路径长度。
所述基于Dijkstra的路径优化系统,其中,还包括:
最优路径获取模块,用于根据所述最短路径长度所依次经过的节点,得到最优路径。
本发明所述的基于Dijkstra的路径优化方法及其系统,方法包括:根据多个节点、以及节点之间的路径权值,得到最短路径有向图;初始化邻接点集,已求出最短路径的已标记顶点集合,以及待存储排序节点;将待存储排序节点通过堆排序得到小顶堆,以小顶堆的堆顶节点为中间节点,并以该中间节点校正从起始节点到已标记顶点集合的补集中各节点经中间节点可达的最短路径长度,反复迭代至邻接点集中的所有节点均添加至已标记顶点集合,并得到节点中的起始节点到其他任一节点的最短路径长度。本发明实现了由邻接表存储数据以节省存储空间,同时以堆排序提升了算法的运行性能,提高了处理效率。
附图说明
图1为本发明所述基于Dijkstra的路径优化方法较佳实施例的流程图。
图2为现有技术中具体实施例基于传统的Dijkstra算法中的最短路径有向图。
图3a为本发明所述基于Dijkstra的路径优化方法具体实施例中的最短路径邻接表。
图3b为本发明所述基于Dijkstra的路径优化方法具体实施例中的最短路径有向图。
图4为本发明所述基于Dijkstra的路径优化方法较佳实施例中获取最短路径长度的具体流程图。
图5为本发明所述基于Dijkstra的路径优化系统较佳实施例的结构框图。
具体实施方式
本发明提供一种基于Dijkstra的路径优化方法及其系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
请参考图1,其为本发明所述基于Dijkstra的路径优化方法较佳实施例的流程图。如图1所示,所述基于Dijkstra的路径优化方法,包括以下步骤:
步骤S100、根据多个节点、以及节点之间的路径权值,得到最短路径有向图;
步骤S200、初始化邻接点集,已求出最短路径的已标记顶点集合,以及待存储排序节点;
步骤S300、将待存储排序节点通过堆排序得到小顶堆,以小顶堆的堆顶节点为中间节点,并以该中间节点校正从起始节点到已标记顶点集合的补集中各节点经中间节点可达的最短路径长度,反复迭代至邻接点集中的所有节点均添加至已标记顶点集合,并得到节点中的起始节点到其他任一节点的最短路径长度。
本发明的实施例中,设置两个集合S(即已求出最短路径的已标记顶点集合),V(即邻接点集),及一个数组T[](T[]用于存储待排序节点)。初始状态时,S={V0},T[]=V[V0],且令T[0]=∞。
首先,将数T[]通过堆排序调整为小顶堆,取数组首元即堆顶节点currentNode为中间节点,并将currentNode加入到S中;以currentNode为中间点,修改从V0到集合Dist[]中任选一顶点Vk经currentNode可达的最短路径长度;如果Dist[currentNode]+V{currentNode->k}<Dist[k],修改Dist[k]为Dist[k]=Dist[currentNode]+V{currentNode->k},同时修改T[]中待排序节点,其中T[0]=∞。如此反复迭代循环,直到所有的节点都加入到S中。
为了更清楚的理解本发明的技术方案,下面通过一具体实施例来说明。
假设有8个节点,分别记为V1-V7,并已知每一节点之间的权值。
采用传统的Dijkstra算法,处理得到如下所示的最短路径矩阵,并得到如图2所示的最短路径有向图。
最短路径矩阵为:
C o s t &lsqb; i , j &rsqb; = 0 , 1 , &infin; , 5 , &infin; , &infin; , &infin; , &infin; &infin; , 0 , 2 , &infin; , &infin; , 5 , &infin; , &infin; &infin; , &infin; , 0 , 4 , 6 , 3 , &infin; , &infin; &infin; , &infin; , 4 , 0 , 2 , &infin; , &infin; , 7 &infin; , &infin; , 6 , &infin; , 0 , &infin; , 9 , &infin; &infin; , 5 , &infin; , &infin; , &infin; , 0 , 8 , 6 &infin; , &infin; , &infin; , &infin; , 9 , &infin; , 0 , 7 &infin; , &infin; , &infin; , &infin; , &infin; , &infin; , &infin; , 0
在采用传统的Dijkstra算法时:
1)从T中选择Vj,使得Dist[j]=min{Dist[i]|Vi∈T}。Vj就是当前求得的一条从V0出发的最短路径的终点,令S=S∪{Vj};
2)以j为中间点,修改从V0到集合T中任选一顶点Vk经Vj可达的最短路径长度;
3)如果Dist[j]+Cost[j,k]<Dist[k],修改Dist[k]为Dist[k]=Dist[j]+Cost[j,k];
4)重复第2)、3)步操作共n-1次,由此求得从V0到其他顶点的最优路径,该路径是各权值递增的序列。
更具体的,采用传统的Dijkstra算法的处理过程如下:
a1.根据Dist[j]=min{Dist[i]|Vi∈T},找到D[1]=1,S={V0,V1};
b1.以V1为中间点,修改V0出发到集合V-S上任一节点Vk经V1可达的最短路径长度,此时Dist[i]={0,1,3,5,∞,6,∞,∞};
c1.找到Dist[2]=min{Dist[i]|Vi∈T}=3,则S={V0,V1,V2},以V2为中点间,修改V0出发到集合V-S上任一节点经V2可达的最短路径长度,此时Dist[i]={0,1,3,5,9,6,∞,∞};
d1.找到Dist[3]=min{Dist[i]|Vi∈T}=5,则S={V0,V1,V2,V3},以V3为中点间,修改V0出发到集合V-S上任一节点经V3可达的最短路径长度,此时Dist[i]={0,1,3,5,7,6,∞,12};
e1.找到Dist[5]min{Dist[i]|Vi∈T}=7,则S={V0,V1,V2,V3,V4},以V4为中点间,修改V0出发到集合V-S上任一节点经V4可达的最短路径长度,此时Dist[i]={0,1,3,5,7,6,14,12};
f1.找到Dist[4]=min{Dist[i]|Vi∈T}=6,则S={V0,V1,V2,V3,V4,V5},以V5为中点间,修改V0出发到集合V-S上任一节点经V5可达的最短路径长度,此时Dist[i]={0,1,3,5,7,6,14,12};
g1.找到Dist[6]=min{Dist[i]|Vi∈T}=14,则S={V0,V1,V2,V3,V4,V5,V6},以V6为中点间,修改V0出发到集合V-S上任一节点经V6可达的最短路径长度,此时Dist[i]={0,1,3,5,7,6,14,12};
h1.找到Dist[7]=min{Dist[i]|Vi∈T}=12,则S={V0,V1,V2,V3,v4,V5,V6,V7},以V7为中点间,修改V0出发到集合V-S上任一节点经V7可达的最短路径长度,此时Dist[i]={0,1,3,5,7,6,14,12};
i1.至此,从V0出发到任一节点的最短路径长度均已求出,即Dist[i]={0,1,3,5,7,6,14,12}。
可见,传统Dijkstra算法的数据组织和数据存储使用的是邻接矩阵存储图,用邻接矩阵存储图需要开辟n*n(n为节点数目)的存储空间,通常的网络图尽管节点很多,但与节点相关联的节点数目并不多,一般都为稀疏图,这样该存储方法将浪费大量的空间,而且在计算时亦要花费大量的时间遍历无意义的数据,这对于一个大型稀疏图来说,计算效率和存储效率都将会很低。
而且,在节点排序和最短路径节点的选取在改进算法中,初始时,待排序的节点以无序形式连续序存放在一个一维数组中,对其进行堆排序,调整成小顶堆后,各节点即是以完全二叉树的顺序存储结构形式存储,0号单元存放的即是调整后的堆顶元素,后面依次以左子树、右子树。在调整堆的过程中时间复杂度为O(logN),(N为待排序节点个数)。传统Dijkstra算法采用广度优先的搜索策略,在访问了网络中所有的节点后,最终生成从源点到其余各点的最短路径树。该算法在选择最短路径节点时需要访问所有的未标记节点,效率低下,整个算法的运行时间为O(n2)。
采用本发明所述的基于Dijkstra的路径优化方法,得到如图3a所示的最短路径邻接表,以及如图3b所示的最短路径有向图。
更具体的,本发明所述的基于Dijkstra的路径优化方法处理过程如下:
a2.初始化S和Dist。S={V0},Dist={0,1,∞,5,∞,∞,∞,∞},T[V0]={∞,1,∞,5,∞,∞,∞,∞};
b2.根据T[],将其调成小堆,找到堆顶结点为当前节点currentNode,则currentNode=V1,T[1]=1,S={V0,V1},修改T,T[]={∞,5,∞,∞,∞,∞,∞,∞};
c2.以V1为中间点,修改V0出发到集合V-S上任一结点Vk经V1可达的最短路径长度,此时Dist[i]={0,1,3,5,∞,6,∞,∞},T[]={∞,5,3,∞,∞,6,∞,∞};
d2.调整小顶堆,得到currentNode=V2,以V2为中间点,则S={V0,V1,V2},修改V0出发到集合V-S上任一结点经V2可达的最短路径长度,此时Dist[i]={0,1,3,5,9,6,∞,∞},T[]={∞,5,6,∞,9,∞,∞,∞};
e2.调整小顶堆,得到currentNode=V3,以V3为中间点,则S={V0,V1,V2,V3},修改V0出发到集合V-S上任一结点经V2可达的最短路径长度,此时Dist[i]={0,1,3,5,7,6,∞,12},T[]={∞,9,6,∞,∞,∞,∞,12};
f2.调整小顶堆,得到currentNode=V5,以V5为中间点,则S={V0,V1,V2,V3,V4},修改V0出发到集合V-S上任一结点经V2可达的最短路径长度,此时Dist[i]={0,1,3,5,7,6,14,12},T[]={∞,9,∞,12,∞,∞,14,∞};
g2.调整小顶堆,得到currentNode=V4,以V4为中间点,则S={V0,V1,V2,V3,V4,V5},修改V0出发到集合V-S上任一结点经V2可达的最短路径长度,此时Dist[i]={0,1,3,5,7,6,14,12},T[]={∞,12,14,∞,∞,∞,∞,∞};
h2.调整小顶堆,得到currentNode=V7,以V7为中间点,则S={V0,V1,V2,V3,V4,V5,V6},修改V0出发到集合V-S上任一结点经V2可达的最短路径长度,此时Dist[i]={0,1,3,5,,7,6,14,12},T[]={∞,∞,14,∞,∞,∞,∞,∞};
i2.调整小顶堆,得到currentNode=V6,以V6为中间点,则S={V0,V1,V2,V3,V4,V5,V6,V7},修改V0出发到集合V-S上任一结点经V2可达的最短路径长度,此时Dist[i]={0,1,3,5,,7,6,14,12},T[]={∞,∞,∞,∞,∞,∞,∞,∞};
j.至此,从V0出发到任一结点的最短路径长度均已求出。即Dist[i]={0,1,3,5,7,6,14,12}。
可见,采用邻接表来存储网络拓扑结构以节省存储空间,这对于一个无向图来说,其存储量为O(E+2N)(E为节点列表中同节点关联的所有弧段数目)。
而本发明改进的Dijkstra算法的主要步骤查找待排序节点和堆排序上,这个步骤的运行时间主要取决于已标记节点的邻节点集合元素数量的多少(而该数量值往往小于未标记集合中的元素个数),查找次数最多为E次。在排序过程中,每次调整的时间复杂度不会超过满二叉树的高度logN。这两个过程共需迭代执行N次,因此整个算法理论上最长运行时间仅为O(N(logN+E))。与从无序结构下的数组或链表中选择下一个最短路径节点相比较,明显地节约了时间,提高算法执行效率。
根据本发明改进的Dijkstra算法,可以得到dist[],即从选择的起点到各定点的最短路径。再根据邻接表与dist[],创建判定条件表,设为desc,并规定desc[][]为一个二维数组。创建规则:如果,当前结点与其他各顶点可达,并且边长距离大于0,则desc[i][j]=dist[i]+S(从i出发到j的边长)。否则desc[i][j]=S(从i出发到j的边长)。最后根据desc[][]创建Vi的最短后继结点集合,假设用shorPath来装载标记,判定条件shortPath[k]={Vk|desc[j][k]=dist[k],k≠j},从而根据desc和shorPath输出从源点到其他各顶点的所有最短路径,根据描述,可以得到,dist[i]={0,1,3,5,7,6,14,12},
d e s c &lsqb; i &rsqb; &lsqb; j &rsqb; = 0 , 1 , &infin; , 5 , &infin; , &infin; , &infin; , &infin; &infin; , 0 , 3 , &infin; , &infin; , 6 , &infin; , &infin; &infin; , &infin; , 0 , 7 , 9 , 6 , &infin; , &infin; &infin; , &infin; , 9 , 0 , 7 , &infin; , &infin; , 12 &infin; , &infin; , 13 , &infin; , 0 , &infin; , 16 , &infin; &infin; , 11 , &infin; , &infin; , &infin; , 0 , 14 , 12 &infin; , &infin; , &infin; , &infin; , 23 , &infin; , 0 , 21 &infin; , &infin; , &infin; , &infin; , &infin; , &infin; , &infin; , 0 ,
根据判定条件,则shortPath(V0)={V1,V3},shortPath(V1)={V2,V5},shortPath(V2)={V5},V3={V4,V7},V4={Φ},V5={V6,V7},V6={Φ},V7={Φ}。于是得到,V0到各定点的最短路径分别为,V0>V1;V0>V1>V2;V0>V3;V0>V3>V4;V0>V1>V5;V0>V1>V5>V6;V0>V1>V5>V7。可以看出,执行本发明改进的Dijkstra算法后可以得到路径规划结果,再进一步处理优化规划结果输出。
这对于物流派件系统中合理选择配送路径,对加快配送速度、提高服务质量、降低配送成本都有实际意义。
优选的,所述基于Dijkstra的路径优化方法中,所述步骤S200中将初始化的邻接点集记为V、已求出最短路径的已标记顶点集合记为S,待存储排序节点记为T[],且初始化时S中仅包括节点中的起始节点V0,T[]=V[V0],T[0]=∞。
优选的,如图4所示,所述基于Dijkstra的路径优化方法中,所述步骤S300具体包括:
步骤S301、将T[]通过堆排序调整得到小顶堆;
步骤S302、取小顶堆的堆顶节点currentNode为中间节点,并将堆顶节点currentNode加入已标记顶点集合S中;
步骤S303、判断Dist[currentNode]与V{currentNode->k}之和是否小于Dist[k],当小于时则使Dist[k]=Dist[currentNode]+V{currentNode->k},并将Vk所对应的节点加入已标记顶点集合S中;其中k的取值是小于节点总数的自然数,Dist[k]表示从起始节点到每一节点的最小权值,V{currentNode->k}表示堆顶节点currentNode到Vk的路径对应的权值;
步骤S304、当所有节点都加入已标记顶点集合S时,则停止步骤S303中的迭代,并将Dist[k]作为节点中的起始节点到其他任一节点的最短路径长度。
所述基于Dijkstra的路径优化方法,其中,所述步骤S300之后还包括:
步骤S400、根据所述最短路径长度所依次经过的节点,得到最优路径。
可见,本发明实现了由邻接表存储数据以节省存储空间,同时以堆排序提升了算法的运行性能,提高了处理效率。
基于上述方法实施例,本发明还提供了一种基于Dijkstra的路径优化系统。如图5所示,所述基于Dijkstra的路径优化系统,包括:
有向图建立模块100,用于根据多个节点、以及节点之间的路径权值,得到最短路径有向图;
初始化模块200,用于初始化邻接点集,已求出最短路径的已标记顶点集合,以及待存储排序节点;
迭代求解模块300,用于将待存储排序节点通过堆排序得到小顶堆,以小顶堆的堆顶节点为中间节点,并以该中间节点校正从起始节点到已标记顶点集合的补集中各节点经中间节点可达的最短路径长度,反复迭代至邻接点集中的所有节点均添加至已标记顶点集合,并得到节点中的起始节点到其他任一节点的最短路径长度。
优选的,在所述基于Dijkstra的路径优化系统中,所述初始化模块200中将初始化的邻接点集记为V、已求出最短路径的已标记顶点集合记为S,待存储排序节点记为T[],且初始化时S中仅包括节点中的起始节点V0,T[]=V[V0],T[0]=∞。
优选的,在所述基于Dijkstra的路径优化系统中,所述迭代求解模块300具体包括:
堆排序单元,用于将T[]通过堆排序调整得到小顶堆;
中间节点获取单元,用于取小顶堆的堆顶节点currentNode为中间节点,并将堆顶节点currentNode加入已标记顶点集合S中;
判断单元,用于判断Dist[currentNode]与V{currentNode->k}之和是否小于Dist[k],当小于时则使Dist[k]=Dist[currentNode]+V{currentNode->k},并将Vk所对应的节点加入已标记顶点集合S中;其中k的取值是小于节点总数的自然数,Dist[k]表示从起始节点到每一节点的最小权值,V{currentNode->k}表示堆顶节点currentNode到Vk的路径对应的权值;
最短路径长度获取单元,用于当所有节点都加入已标记顶点集合S时,则停止迭代,并将Dist[k]作为节点中的起始节点到其他任一节点的最短路径长度。
优选的,在所述基于Dijkstra的路径优化系统中,还包括:
最优路径获取模块,用于根据所述最短路径长度所依次经过的节点,得到最优路径。
综上所述,本发明所述的基于Dijkstra的路径优化方法及其系统,方法包括:根据多个节点、以及节点之间的路径权值,得到最短路径有向图;初始化邻接点集,已求出最短路径的已标记顶点集合,以及待存储排序节点;将待存储排序节点通过堆排序得到小顶堆,以小顶堆的堆顶节点为中间节点,并以该中间节点校正从起始节点到已标记顶点集合的补集中各节点经中间节点可达的最短路径长度,反复迭代至邻接点集中的所有节点均添加至已标记顶点集合,并得到节点中的起始节点到其他任一节点的最短路径长度。本发明实现了由邻接表存储数据以节省存储空间,同时以堆排序提升了算法的运行性能,提高了处理效率。
可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及本发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。

Claims (8)

1.一种基于Dijkstra的路径优化方法,其特征在于,所述方法包括以下步骤:
A、根据多个节点、以及节点之间的路径权值,得到最短路径有向图;
B、初始化邻接点集,已求出最短路径的已标记顶点集合,以及待存储排序节点;
C、将待存储排序节点通过堆排序得到小顶堆,以小顶堆的堆顶节点为中间节点,并以该中间节点校正从起始节点到已标记顶点集合的补集中各节点经中间节点可达的最短路径长度,反复迭代至邻接点集中的所有节点均添加至已标记顶点集合,并得到节点中的起始节点到其他任一节点的最短路径长度。
2.根据权利要求1所述基于Dijkstra的路径优化方法,其特征在于,所述步骤B中将初始化的邻接点集记为V、已求出最短路径的已标记顶点集合记为S,待存储排序节点记为T[],且初始化时S中仅包括节点中的起始节点V0,T[]=V[V0],T[0]=∞。
3.根据权利要求2所述基于Dijkstra的路径优化方法,其特征在于,所述步骤C具体包括:
C1、将T[]通过堆排序调整得到小顶堆;
C2、取小顶堆的堆顶节点currentNode为中间节点,并将堆顶节点currentNode加入已标记顶点集合S中;
C3、判断Dist[currentNode]与V{currentNode->k}之和是否小于Dist[k],当小于时则使Dist[k]=Dist[currentNode]+V{currentNode->k},并将Vk所对应的节点加入已标记顶点集合S中;其中k的取值是小于节点总数的自然数,Dist[k]表示从起始节点到每一节点的最小权值,V{currentNode->k}表示堆顶节点currentNode到Vk的路径对应的权值;
C4、当所有节点都加入已标记顶点集合S时,则停止步骤C3中的迭代,并将Dist[k]作为节点中的起始节点到其他任一节点的最短路径长度。
4.根据权利要求1所述基于Dijkstra的路径优化方法,其特征在于,所述步骤C之后还包括:
D、根据所述最短路径长度所依次经过的节点,得到最优路径。
5.一种基于Dijkstra的路径优化系统,其特征在于,包括:
有向图建立模块,用于根据多个节点、以及节点之间的路径权值,得到最短路径有向图;
初始化模块,用于初始化邻接点集,已求出最短路径的已标记顶点集合,以及待存储排序节点;
迭代求解模块,用于将待存储排序节点通过堆排序得到小顶堆,以小顶堆的堆顶节点为中间节点,并以该中间节点校正从起始节点到已标记顶点集合的补集中各节点经中间节点可达的最短路径长度,反复迭代至邻接点集中的所有节点均添加至已标记顶点集合,并得到节点中的起始节点到其他任一节点的最短路径长度。
6.根据权利要求5所述基于Dijkstra的路径优化系统,其特征在于,所述初始化模块中将初始化的邻接点集记为V、已求出最短路径的已标记顶点集合记为S,待存储排序节点记为T[],且初始化时S中仅包括节点中的起始节点V0,T[]=V[V0],T[0]=∞。
7.根据权利要求6所述基于Dijkstra的路径优化系统,其特征在于,所述迭代求解模块具体包括:
堆排序单元,用于将T[]通过堆排序调整得到小顶堆;
中间节点获取单元,用于取小顶堆的堆顶节点currentNode为中间节点,并将堆顶节点currentNode加入已标记顶点集合S中;
判断单元,用于判断Dist[currentNode]与V{currentNode->k}之和是否小于Dist[k],当小于时则使Dist[k]=Dist[currentNode]+V{currentNode->k},并将Vk所对应的节点加入已标记顶点集合S中;其中k的取值是小于节点总数的自然数,Dist[k]表示从起始节点到每一节点的最小权值,V{currentNode->k}表示堆顶节点currentNode到Vk的路径对应的权值;
最短路径长度获取单元,用于当所有节点都加入已标记顶点集合S时,则停止迭代,并将Dist[k]作为节点中的起始节点到其他任一节点的最短路径长度。
8.根据权利要求5所述基于Dijkstra的路径优化系统,其特征在于,还包括:
最优路径获取模块,用于根据所述最短路径长度所依次经过的节点,得到最优路径。
CN201610419959.8A 2016-06-13 2016-06-13 一种基于Dijkstra的路径优化方法及其系统 Pending CN106096783A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610419959.8A CN106096783A (zh) 2016-06-13 2016-06-13 一种基于Dijkstra的路径优化方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610419959.8A CN106096783A (zh) 2016-06-13 2016-06-13 一种基于Dijkstra的路径优化方法及其系统

Publications (1)

Publication Number Publication Date
CN106096783A true CN106096783A (zh) 2016-11-09

Family

ID=57846091

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610419959.8A Pending CN106096783A (zh) 2016-06-13 2016-06-13 一种基于Dijkstra的路径优化方法及其系统

Country Status (1)

Country Link
CN (1) CN106096783A (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107679764A (zh) * 2017-10-23 2018-02-09 钦州学院 一种集装箱港口集卡的动态调度方法
CN108195380A (zh) * 2017-12-26 2018-06-22 广东嘉腾机器人自动化有限公司 一种基于最短路径的agv最优路径选择方法
CN108683593A (zh) * 2018-07-10 2018-10-19 烽火通信科技股份有限公司 一种k短路径的计算方法
CN109345026A (zh) * 2018-10-24 2019-02-15 北京计算机技术及应用研究所 一种解决交通出行路线规划问题的方法
CN110349175A (zh) * 2019-06-25 2019-10-18 深圳先进技术研究院 一种动静脉畸形分割方法、系统及电子设备
CN110609838A (zh) * 2019-09-09 2019-12-24 北京航天自动控制研究所 全局最优的随机事件发生时间序列与标准模板的匹配方法
CN111573126A (zh) * 2020-05-11 2020-08-25 盐城工学院 基于全方位轮的模块化智能物流系统物料配送路径规划方法
CN111968255A (zh) * 2020-06-30 2020-11-20 北京小石科技有限公司 一种高速公路收费路径的拟合方法
CN113710431A (zh) * 2019-04-17 2021-11-26 株式会社途伟尼 使用基于采样的最优树的路径规划方法、存储用于实现该方法的程序的记录介质以及存储在介质中以实现该方法的计算机程序
CN113887828A (zh) * 2021-10-25 2022-01-04 北京外国语大学 智能供应链产运销协同与实时网络规划方法以及装置
CN114217615A (zh) * 2021-12-13 2022-03-22 哈尔滨工业大学芜湖机器人产业技术研究院 基于邻接表的路径规划方法
CN114338557A (zh) * 2021-12-30 2022-04-12 中国电信股份有限公司 一种弹性大带宽分裂方法、装置、电子设备和存储介质
CN115130781A (zh) * 2022-07-27 2022-09-30 中钢集团马鞍山矿山研究总院股份有限公司 一种计算城市水灾下的人员最短撤离路径方法
CN115271205A (zh) * 2022-07-28 2022-11-01 南通大学 一种基于Dijkstra算法的最短物流路径规划方法
CN115994635A (zh) * 2023-03-23 2023-04-21 广东鉴面智能科技有限公司 一种皮带最优卸料运输路径检测方法、系统和介质
CN116319518A (zh) * 2022-08-31 2023-06-23 王举范 一种基于知识图谱最短路径的信息获取方法及装置
CN116366524A (zh) * 2023-05-31 2023-06-30 天翼云科技有限公司 一种基于内容分发网络的路径计算方法及装置

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107679764A (zh) * 2017-10-23 2018-02-09 钦州学院 一种集装箱港口集卡的动态调度方法
CN108195380A (zh) * 2017-12-26 2018-06-22 广东嘉腾机器人自动化有限公司 一种基于最短路径的agv最优路径选择方法
CN108683593A (zh) * 2018-07-10 2018-10-19 烽火通信科技股份有限公司 一种k短路径的计算方法
CN109345026B (zh) * 2018-10-24 2022-02-01 北京计算机技术及应用研究所 一种解决交通出行路线规划问题的方法
CN109345026A (zh) * 2018-10-24 2019-02-15 北京计算机技术及应用研究所 一种解决交通出行路线规划问题的方法
CN113710431B (zh) * 2019-04-17 2023-12-22 株式会社途伟尼 使用基于采样的最优树的路径规划方法以及记录介质
CN113710431A (zh) * 2019-04-17 2021-11-26 株式会社途伟尼 使用基于采样的最优树的路径规划方法、存储用于实现该方法的程序的记录介质以及存储在介质中以实现该方法的计算机程序
CN110349175A (zh) * 2019-06-25 2019-10-18 深圳先进技术研究院 一种动静脉畸形分割方法、系统及电子设备
CN110609838A (zh) * 2019-09-09 2019-12-24 北京航天自动控制研究所 全局最优的随机事件发生时间序列与标准模板的匹配方法
CN110609838B (zh) * 2019-09-09 2022-04-29 北京航天自动控制研究所 全局最优的随机事件发生时间序列与标准模板的匹配方法
CN111573126B (zh) * 2020-05-11 2022-04-05 盐城工学院 基于全方位轮的模块化智能物流系统物料配送路径规划方法
CN111573126A (zh) * 2020-05-11 2020-08-25 盐城工学院 基于全方位轮的模块化智能物流系统物料配送路径规划方法
CN111968255A (zh) * 2020-06-30 2020-11-20 北京小石科技有限公司 一种高速公路收费路径的拟合方法
CN113887828A (zh) * 2021-10-25 2022-01-04 北京外国语大学 智能供应链产运销协同与实时网络规划方法以及装置
CN113887828B (zh) * 2021-10-25 2022-04-15 北京外国语大学 智能供应链产运销协同与实时网络规划方法以及装置
CN114217615A (zh) * 2021-12-13 2022-03-22 哈尔滨工业大学芜湖机器人产业技术研究院 基于邻接表的路径规划方法
CN114338557A (zh) * 2021-12-30 2022-04-12 中国电信股份有限公司 一种弹性大带宽分裂方法、装置、电子设备和存储介质
CN115130781B (zh) * 2022-07-27 2023-12-01 中钢集团马鞍山矿山研究总院股份有限公司 一种计算城市水灾下的人员最短撤离路径方法
CN115130781A (zh) * 2022-07-27 2022-09-30 中钢集团马鞍山矿山研究总院股份有限公司 一种计算城市水灾下的人员最短撤离路径方法
CN115271205A (zh) * 2022-07-28 2022-11-01 南通大学 一种基于Dijkstra算法的最短物流路径规划方法
CN115271205B (zh) * 2022-07-28 2023-11-28 南通大学 一种基于Dijkstra算法的最短物流路径规划方法
CN116319518A (zh) * 2022-08-31 2023-06-23 王举范 一种基于知识图谱最短路径的信息获取方法及装置
CN116319518B (zh) * 2022-08-31 2024-02-20 王举范 一种基于知识图谱最短路径的信息获取方法及装置
CN115994635A (zh) * 2023-03-23 2023-04-21 广东鉴面智能科技有限公司 一种皮带最优卸料运输路径检测方法、系统和介质
CN116366524A (zh) * 2023-05-31 2023-06-30 天翼云科技有限公司 一种基于内容分发网络的路径计算方法及装置
CN116366524B (zh) * 2023-05-31 2023-08-04 天翼云科技有限公司 一种基于内容分发网络的路径计算方法及装置

Similar Documents

Publication Publication Date Title
CN106096783A (zh) 一种基于Dijkstra的路径优化方法及其系统
Gen et al. Genetic algorithms and their applications
Yamada et al. Genetic algorithms for job-shop scheduling problems
França et al. Evolutionary algorithms for scheduling a flowshop manufacturing cell with sequence dependent family setups
Ribeiro et al. Developments of variable neighborhood search
Ye et al. A genetic algorithm for job-shop scheduling
Skinderowicz An improved ant colony system for the sequential ordering problem
Chitra et al. A nondominated sorting genetic algorithm solution for shortest path routing problem in computer networks
Da et al. Evolutionary multitasking across single and multi-objective formulations for improved problem solving
Yuce et al. Hybrid Genetic Bees Algorithm applied to single machine scheduling with earliness and tardiness penalties
Li et al. A decomposition-based chemical reaction optimization for multi-objective vehicle routing problem for simultaneous delivery and pickup with time windows
Chica et al. Multiobjective memetic algorithms for time and space assembly line balancing
Elmi et al. Cyclic job shop robotic cell scheduling problem: Ant colony optimization
CN109764882A (zh) 一种基于自适应局部搜索链的多目标车辆路径规划方法
CN107122844A (zh) 一种基于指标和方向向量相结合的多目标优化方法及系统
Al-Furhud et al. Genetic algorithms for the multiple travelling salesman problem
Liao et al. An ant colony optimization algorithm for setup coordination in a two-stage production system
Talbi Hybrid metaheuristics for multi-objective optimization
Gholami et al. Solving parallel machines job-shop scheduling problems by an adaptive algorithm
Chen et al. Imperial competitive algorithm with policy learning for the traveling salesman problem
CN109858739A (zh) 物流运输调度方法、计算机存储介质及电子设备
Lässig et al. Analysis of speedups in parallel evolutionary algorithms and (1+ λ) EAs for combinatorial optimization
Torkzadeh et al. Multi-constraint QoS routing using a customized lightweight evolutionary strategy
Shyu et al. Ant-tree: an ant colony optimization approach to the generalized minimum spanning tree problem
Liu A memetic algorithm for the probabilistic traveling salesman problem

Legal Events

Date Code Title Description
C06 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

Effective date of registration: 20171207

Address after: 518000 Guangdong city of Shenzhen province Nanshan District Xili liuxiandong Zhongshan Road No. 1001 TCL Science Park Research Building D4 Building 8 layer B1 unit 802-1.

Applicant after: SHENZHEN TCL HIGH-TECH DEVELOPMENT CO., LTD.

Address before: 516006 Guangdong province Huizhou Zhongkai hi tech Development Zone No. nineteen District

Applicant before: TCL Group Co., Ltd.

RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20161109