互补松弛度是设计原始对偶算法的关键。基本思想是:
- 从可行的双重解决方案开始 y。
- 尝试发现原始可行 x 这样 (x,y) 满足补充的懈怠。
- 如果步骤2成功,我们就完成了。否则阻碍寻找x 提供一种修改方法 y这样对偶目标函数值会增加。重复。
一个典型的例子是匈牙利算法。福特-福克森算法可以看作另一个例子。请注意,步骤2是一个可行性问题,它通常比原始优化问题更容易解决,并且通常也可以组合解决。这就是补充松弛的力量。例如,在最低成本两方匹配的情况下,步骤2等同于检查是否存在仅使用紧边的完美匹配。在最大的情况下s--t 流程,步骤2等于检查饱和边是否分开 s 和 t。
双重对偶算法很好,原因很多。从哲学上讲,它们比通用算法提供了更多的见识。它们通常提供强多项式时间算法,而我们仍然没有强多项式LP解算器。它们通常比通用算法更实用。如果我们不能明确地写下LP,而我们唯一的选择是椭球算法,则这尤其正确,非二分匹配和Edmonds的原始对偶算法就是这种情况。
通过使用互补松弛的松弛版本,Primal-dual也是用于近似算法的非常有用的框架。这在设计用于NP难题的近似算法(例如参见Williamson-Shmoys书的第7章)以及设计具有良好竞争比的在线算法(请参阅Buchbinder和Naor的书)中很有用。这里的要点是算法维护了一个解决方案yLP解决一个难题的对偶,并且在每个步骤中都找到一个整体式原始可行x从而满足近似的互补松弛度,或改善对偶解y。近似互补松弛是以下形式的条件:xi>0 则对应的双重约束是严格的,如果 yj>0,如果 x 被缩放 α。这给出了一个近似系数α。以上两个来源都对它进行了很好的解释。