【问题标题】:Lowest Cost non-bipartite assignment problem最低成本非二分分配问题
【发布时间】:2011-05-07 14:34:22
【问题描述】:

关于如何实现一个有效的算法(优于 O(n2))来解决非二分图中的分配问题有什么想法吗?

主要思路如下:

我有两个相同的集合,比如说S1 = [A,B,C,D]S2 = [A,B,C,D],并且集合的不同元素之间存在一些边,具有给定的成本,例如A->B (cost 4)B->C (cost 3)C->A (cost 10)D->A (cost 6)

我想找到最好的分配方式:分配的元素数量最大,总成本最低。 (分配元素的数量更重要)。

所以对于这个例子,最好的分配是:

A->D (cost 6)  
B->C (cost 3)  

[A,B,C,D] 已分配且成本最低:9

另一个,但不是最好的:

A->B (cost 4)  

由于A已经被分配,所以无法分配其余部分,因此分配不是最大可能的

我在 O(n2) 中设计了一个太慢的贪婪解决方案。

集合的大小通常是小(5-10)个元素。

【问题讨论】:

  • 两套有什么意义?
  • 您的成本清单与示例中的分配不匹配。也许缺少一些解释
  • 你是对的(擦除错误:P)。我刚刚编辑了费用清单
  • 4 或 5 项的 O(n^2) 有多慢?
  • 因为可以有许多边连接节点(元素)。另外,算法执行了很多次(需要很多不同的赋值),总之O(n^2)会影响整体性能

标签: algorithm search graph variable-assignment graph-theory


【解决方案1】:

我假设您有一个无向图,并且您想要选择最大数量的边,这样没有两条边会发生在同一个节点上(节点 = 您描述中的集合元素)。您还希望使用所选边的最小总成本来打破平局。如果这不符合您的要求,请告诉我。

创建上述的对偶图(每个原始边一个节点,如果相应的原始边入射到同一个顶点,则两个节点相连)。然后,您正在寻找双节点的maximum independent set。不幸的是,这是一个 NP 难题。这只是为了最大数量的边,使用权重打破平局可能稍微困难一些。幸运的是,你的 N 是 5-10,所以你可以暴力破解它。

【讨论】:

  • 是的,问题或多或少像你描述的那样。当将其视为最大独立集问题时,它绝对是 NP 难的。我想知道是否有任何其他解决方案比我的“受约束的蛮力”更聪明,考虑到少量节点,它可以避免适应另一个 NP 难题。谢谢你的回答
  • 您证明这是 NP-hard 的证明是错误的。您不能通过将问题简化为 NP-hard 问题来证明 NP-hardness,而是通过将 NP-hard 问题简化为您要解决的问题来证明它。另外,如果我正确理解了这个问题,这不是 NP-hard。
  • 你是对的,这不是提供证明的减少方向。我从来没有声称它是。
【解决方案2】:

听起来您想要最大的非二分匹配:12

该算法很难实现,我还没有看到任何实现,特别是如果您想要最低成本。在我看来,对于这么小的输入,你最好强行使用它。

你是如何用贪心算法解决这个问题的?你确定它有效吗?

【讨论】:

  • IVlad 就在这里。贪婪的方法通常不适用于这种方法。二分匹配与最大流问题非常相似。
  • 我检查了 Edmond 的算法。确实很难实施。我没有尝试它,因为贪婪的解决方案给出了可接受的结果......虽然图形大小很小,但我必须多次计算分配,所以蛮力太重了。贪心解决方案并不总是计算出最佳分配,但它确实给出了可接受的解决方案。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 2015-04-03
  • 1970-01-01
  • 1970-01-01
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多