1. network program问题
详情可参考这里
我们常常遇到的Assignment、Transportation、Maximum flow、Shortest path等问题都具有特殊的结构,可以用network program来建模。具体来说,network program指的是如下问题:
其中,并且每一行只有一个1和一个-1。
下面是一个例子:
network program可以看做是最小费用流问题的数学模型。定义有向图,用行表示,用列表示,从到有边的话,则有一列的第行是1,第行是-1。表示第条边上的流量,如下图:
对于这类问题,如果存在一条path,那么方向*边 = ,其中表示单位向量。
定理:每一个连通图都有一个伸展树(包含所有节点的树)
定理:树的的列相互线性独立,秩为(节点数-1)。
2. 求解方法
选择一个根节点,添加虚拟变量和单位向量,如下:
根节点衍生出的伸展树和构成一组基。我们回忆一下单纯形法的出入基过程:
每次将负数残差最小(绝对值最大)的非基变量替换为基变量,同时将最小值对应的基变量替换为非基变量。
有3个地方用到:
这三个地方都可以用上面的图快速求解,不需要再存储。以为例:
我们有:
相当于从出发遍历树。