1. 离散动态规划
不仅可以用于最短路问题,还可以用于在其他问题上。
1.序贯决策问题:一系列按照一定顺序排列的决策。
2.整数规划或组合问题
1.1 定义集合
定义1:动态规划中的状态(state)描述了进行决策时中间过程的状态。
定义2: 在拥有阶段和状态的动态规划模型中阶段描述了需要做的决策的序列,而状态指的是决策需要考虑的那些条件。
1.2 原理集合
原理1:和动态规划对应的有向图的每个节点都是一个中间过程的状态。
原理2:动态规划有向图的弧对应着决策,每条弧都连接着当前的状态节点和该决策引发的新的状态节点。
原理3:动态规划最优解对应着其有向图表达中从起点状态到终点状态的最短路或最长路。
原理4:动态规划递归函数方程揭示了中间过程不同状态下的最优值间的关系。
原理5:对于动态规划问题,通常进行逆序建模更加容易,也就是从结束到初始条件进行建模。
原理6:使用动态规划的方法,我们能发现最优解与其他相关问题的关系,也就意味着我们可以通过解决一个最短路或者最长路问题得到不同场景下的最优解。
2 网络流问题
网络流问题是一类特殊但广泛适用的线性规划问题,它甚至比一般的线性规划问题更易处理。我们可以通过利用特定的算法来求解更大的模型,更重要的是,它可以处理更为复杂的离散问题且不一般不需要额外的工作。
2.1 定义集合
- 定义1:一个有向图中,若节点上的净需求为,弧上的容量为,单位成本,则其最小费用网络流模型(minimum cost network flow
model) - 定义2:节点有三种类型。汇(sink)或者需求(demand)节点消费流。源(source)或供给(supply)节点产生流。转运(transshipment)节点仅传递流。
- 定义3:时间扩展网络将一个流系统中的每个节点都建模转化为一系列节点,每个节点即对应一个时间区间。弧则反映某个特定时间内各点间的流,或者某个特定位置上跨时间的流。
- 定义4:节点—弧关联矩阵即表示流平衡要求,也表示一个网络流模型的图结构,即每个节点对应一行,每个弧对应一列。每列中仅有两个非零项,一个为-1,位于对应弧离开的节点所在行,另一个为+1,位于弧进入的节点的所在行。
- 定义5:链(chain)是连接两个节点的一个弧序列。在序列中,每个弧和它前一个弧恰有一个共同节点,且没有节点会被重复访问。
- 定义6:圈(cycle)是起始和终止节点相同的一条链。
- 定义7:路(path)是沿前进方向连接所有弧的链。前进方向是自定义的。
- 定义8:回路是所有弧均沿同一方向的圈。圈可以用前进(正方向)或后退(反方向)的方式来连接弧。圈方向即定义自这种连接模式。
2.2 原理集合:
- 原理1: 网络流模型中的决策变量表示弧中的流量。
- 原理2: 网络流问题的主要约束保证了节点上流的平衡(balance of flow)(或守恒conservation)
- 原理3: 净需求(net demand)在汇(需求)节点上为正,在源(供给)节点上为负,在转运节点上为0.
- 原理4:若在给定的网络流问题中,总供给小于总需求,则该问题不可行。若供给超过总需求,则应该添加一个新的汇节点,通过所有源节点出发的零费用弧来消费多余的供给。
- 原理5:用于计算最小费用网络流问题初始可行解的人工网络模型(artificial network model)和起始点可以通过以下方法构建:(i)为原始模型中的所有弧分配零流量的流;(ii)引入一个人工节点;(iii)创建从每个供给节点到人工节点的人工弧,并使其流量等于给定的供给;(iv)添加从人工节点到每个需求节点的人工弧,并使其流量等于给定的需求。
- 原理6:沿网络流模型中的某一圈方向来调整可行流,可使流平衡约束得以满足。
- 原理7:一个圈方向在当前解下是可行的,当且仅当圈的所有后向弧上的满足,所有前向弧上均满足。
- 原理8:若前向弧总费用与后向弧总费用之差小于0,则圈方向可以改进最小费用网络流模型。
- 原理9:从可行流出发,沿圈方向的可行步伐需满足步长不大于
- 原理10: