1.实验环境:
(1)VC++6.0
(2)Windows系统PC机
2.算法描述:
(1) 问题描述:
多段图问题是一种特殊的有向无环图的最短路径问题。其中产生从源点s到汇点t的最短路径的决策序列就是最优决策,此长度最短的路径是最优解,而路径长度就是最优解值。
(2) 数据结构:
采用邻接表存储该有向无环图的节点及边的信息。
(3) 算法的具体实现:
a) 源点s编号为0,汇点t编号为n-1(共有n个节点,m条边)。
b) 使用一维数组cost[j]保存节点j到汇点t的最短路径长度(这样做可以节省空间)。
c) cost[n-1]初始化为0(汇点到汇点的最短路径长度为0)。
d) cost[0]即为最优解值,为了计算cost[j],必须先计算从节点j后的所有后继节点p到汇点t的最短路径长度,即先计算cost[p]的值,这是子问题的最优解值。
e) cost[j]=min{c(j,p)+cost[p]}(c(j,p)为以节点j和节点p为端点的边的长度)。
3.源程序:
#include < iostream >
using namespace std;
struct ENode
{
int adjVex;
int w;
ENode *nextArc;
};
ENode