对偶图对于平面图最小割的求解(网络流问题)

前言

对于平面图和对偶图, 和两者之间的转化, 如果有不明白的:ClickHere.

对偶图的求解

对偶图对于平面图最小割的求解(网络流问题)_第1张图片

这是一个s-t平面图. 所谓s-t平面图, 就是一个平面图里有s源点和t汇点. 对于这个图, 我们做一点转化方便求解. 将s 与 t之间连一条边.

对偶图对于平面图最小割的求解(网络流问题)_第2张图片

这样就多了一个附加面(1 - 4 - 7 - 8 - 1). 我们知道平面图转化为对偶图之后, 对偶图里的点, 对应的是平面图里的面. 我们把刚刚的附加面设为对偶图里的s*, 无界面的点设为t*. 按照平面图转化为对偶图的方法, 新图(注意多了附加面)就是:

对偶图对于平面图最小割的求解(网络流问题)_第3张图片

相邻面之间连线. 然后我们把s*-t*给去掉.

对偶图对于平面图最小割的求解(网络流问题)_第4张图片

这里就有一个很神奇的性质了, s*-t*的路径, 就对应了s-t的割.

比如说: s* - 2* - 7- t* 对应了2-5, 3-6, 4-7这个割.

那么如果我们把对偶图里每条边附上一个权值, 这个权值就等价于原图里每条边的流量, 那么原图中的最小割不就等于s* - t*的最小路吗?

建出对偶图后跑一边堆优化的Dijkstra即可过, 时间复杂度o(nlog2n).

The End

希望这种网络流转对偶图跑最短路的办法对大家有帮助.

你可能感兴趣的:(网络流)