多段图的动态规划算法(C、C++)

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

  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值