【问题标题】:Minimum k elements of an mxn matrix, with the restriction that none of the elements can be in the same row/columnmxn 矩阵的最小 k 个元素,限制条件是所有元素都不能在同一行/列中
【发布时间】:2015-08-11 17:17:09
【问题描述】:

我有一个动态规划(可能是贪婪的)问题。

令 A 为 mxn 矩阵。令 k 是一个整数,使得 k ≤最小{m,n}。

找到 A 的 k 个元素,使得这 k 个元素中的每一个都在它们唯一的列和行中;并且这k个元素的总和被最小化。

换句话说,我想从 A 中挑选 k 个元素,使得它们的总和最小;但如果我选择 A2,3 则我无法选择 A2,6 或 A4,3


一种贪婪的方法似乎是选择 A 中的最小元素,删除其行和列,然后重复直到 A '耗尽'。但是,在这种情况下,我无法证明贪婪选择属性,或者它甚至 具有 贪婪选择属性。

我也不知道如何为 DP 解决方案构建表格。

如果这个问题之前已经提出过并且有具体的名字,可以分享一下吗?

【问题讨论】:

  • (为简单起见我们可以考虑k=n=m的情况)
  • 这是最小权重二分匹配。不,贪婪是行不通的。
  • 出色的指点先生/女士,谢谢。

标签: algorithm matrix dynamic-programming


【解决方案1】:

贪婪不会削减它。你需要匈牙利算法机器。可以考虑创建 n - k 个新行和 m - k 个新列,使新行新列条目非常不吸引人,而其他新条目非常有吸引力。然后找到一个最小成本的解决方案,将行与列一对一匹配,并丢弃包含新行或新列的对。

在实际实践中,会有更好的实现,但描述它需要我回顾一下HA的细节。

【讨论】:

  • 是的,连同@tmyklebu 的评论,这似乎是正确的方法。将矩阵视为二分图的权重提供了一个很好的视角。谢谢大家
【解决方案2】:

贪心算法不会给出最优解。假设 A11 = 0,A12 = A21 = 1,其他所有值 = 1000。通过取 A12、A21 和任何 k-2 个其他值找到最小的总和,总计 1000k - 1998。选择 A11 = 0 首先迫使您选择 k -1 值为 1000,总共 1000k - 999。

【讨论】:

    猜你喜欢
    • 2013-02-17
    • 2021-09-07
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    相关资源
    最近更新 更多