- 有向图为道路网络模型
其中网络中节点集合表示实际道路网络的交叉路口集合,是网络中连接节点的有向弧段集合,为节点的属性值集合,为弧的属性值集合。
对于任意节点,定义集合为节点的后继节点所构成的集合,集合为节点的前任节点所构成的集合。
表示网络中各弧段的属性值集合,,表示弧段属性值(车辆在该弧段(路段)上行驶所需要的时间)。
表示网络中各节点的属性值集合,,其中为节点的属性值,表示当车辆从路段行驶到路段过程中在节点(路口)处停留等待所耗费的时间。
- 算法基本思想
从终点D出发,逐步向外探寻从网络中经过以某一(或某些)节点i为出发点的一条(或几条)弧段(i,j)到终点D的最小行车时间路径。
- 符号说明
:在算法执行过程中具有B标号的弧段集合,是有向图的弧段集合的一个子集,对于任意,经过该弧段到终点的最小行车时间已经明确可知。
:在算法执行过程中具有R标号的弧段集合,是有向图的弧段集合的一个子集,对于任意,经过该弧段到终点的最小行车时间未知,但该弧段已经存在于构建的广度优先搜索树中;该集合是一个栈集合,即该集合中的任一弧段在算法的执行过程中按照“先进后出”的顺序进行处理。
:在算法执行过程中节点集合的一个子集,对于任意,弧段不具有B标号。
:在算法执行过程中节点集合的一个子集,对于任意,弧段不具有B标号。
:在算法执行过程中有向图的节点集合的一个子集合,该集合是一个队列集合,即该集合中任一节点在算法的执行过程中按照“先进先出”的顺序进行处理。
- 具体步骤
表4-4表示每段弧的属性值;表4-5表示每个节点的属性值;
表4-6表示算法执行过程
表4-4 弧的属性值
Time
Cost |
Time
Cost |
Time
Cost |
Time
Cost |
Time
Cost |
Time
Cost |
3.4 | 3 | 1 | 4.5 | 2.5 | 4.5 |
表4-5 节点的属性值
Time
Cost |
Time
Cost |
Time
Cost |
Time
Cost |
Time
Cost |
Time
Cost |
1 | 3.2 | 3.5 | 1 | 4 | 5 |
算法过程:
- 利用公式求的值
- 记录其后继弧段 ,其中
下面为路径弧段向量的更新过程,逆序进行。n表示循环次数。
n=1 | 逆序来看,先计算不同时间段,节点5到终点的最小行车时间。
|
结果 |
n=2 |
|
结果 |
n=3 |
|
结果 |
|
n=4 |
|
结果 |
|
n=5 |
|
结果 |
n=6 |
|
结果 | 算法结束 |
算法结果为:从节点1到节点5的最短路径为1->2->3->4->5 ,最短时间为18.4
要求:
- 代码模块化
- 输入格式
图的边数m和节点数n为:
输入图的m条边: 输入图的n个节点: 输入起始节点: 输入终点:
|
3 输出格式为
起始节点到终点的最短时间为:
起始节点到终点的最短路径为:
|