最大流量应用:重新排列矩阵

Posted

技术标签:

【中文标题】最大流量应用:重新排列矩阵【英文标题】:Max-flow Application: rearrange matrix 【发布时间】:2013-04-08 02:17:17 【问题描述】:

M,一个 n x n 矩阵,每个条目等于 0 或 1。mij 表示第 i 行和第 j 列中的条目。对角线条目是其中之一 对某些 i 形成 mii。 交换矩阵 M 的 i 和 j 行表示以下动作: 我们将值 mik 和 mjk 交换为 k = 1, 2 ..... n。交换两列 类似地定义。 我们说 M 如果可以交换一些 成对的行和一些成对的列(以任何顺序),这样, 在所有交换之后,M的所有对角线条目都等于1。

我需要找到一个多项式时间算法来确定一个矩阵是否 具有 0-1 个条目的 M 是可重新排列的。

我知道我必须使用 max-flow/min-cut 范例来解决这个问题,但我找不到将这个问题与 max-flow 问题联系起来的方法。

欢迎任何提示!

【问题讨论】:

【参考方案1】:

直接证明矩阵是可重排的当且仅当在 Sn 中存在置换 pi 使得 Mi, pi(i) = 1对于每个 i。

这样的排列只是二分图中的完美匹配,每行有一个顶点,每列有一个顶点,当 Mij = 1 时,第 i 行和第 j 列之间有一条边.

使用 max-flow 在二分图中找到最大匹配非常简单;当最大匹配是完美匹配时,您就有一个可重新排列的矩阵。

【讨论】:

以上是关于最大流量应用:重新排列矩阵的主要内容,如果未能解决你的问题,请参考以下文章

最小费用最大流算法

网络流——最大流问题例题

网络流最大流——Dinic算法

网络流--最大流问题

图与网络优化——最小费用最大流问题

网络最大流量与载量容量的关系