差分约束系统 与 最短路

  《挑战程序设计》讲最短路的时候提到了简单的差分约束系统求解(poj 3169) , 但是没有讲清楚是怎么转化成最短路问题的.

  有几点要搞清楚:

  1. 边代表什么,路径代表什么;

    考虑2个约束条件

    (1) wi - wj <= a
    (2) wj - wk <= b

    那么要得到i与k的关系,根据不等式的性质 (1) + (2)得

    wi - wk <= a+b  (除了2个端点外的中间点都被消去了)

    这个关系是通过(1)和(2)的相加关系得到的 , 因此(1)和(2)可以看作2条边 (i,j,a) 和 (j,k,b) , 一条路径就表示了段连续的相加关系.

    另外 , 为了满足不等式的可加性和传递性, 必须确定并且统一好符号 , 经过统一处理后的不等式组,本质上就是一个图了.

  2. 为什么是最短路;

    现在,这些不等式组可以作为图来看,然后考虑更复杂一点的情况:

    (1) wi - wj  <= 3

    (2) wj - wk <= 4

    (3) wi - wk <= 3

    如果想知道i与k的不等式关系 , 会得到2个回答 ,

    wi - wk <= 7 ( (1) + (2)得到) 

    wi - wk <= 3 

    当然根据不等式的运算法则 , 最终答案是第二个 ,  所以当我们需要知道两个点在整个不等式组中的关系时,需要求2点间的最短路.

你可能感兴趣的:(差分约束)