微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

应该由DP解决吗?

如何解决应该由DP解决吗?

我正在尝试解决问题:

给定一个N x M矩阵,每个元素代表购买一件商品的相关成本。假设我们计划从每个M-1行中购买N个项目,那么如果我们计划购买 all 个项目,我们必须花费的最低金额是多少? M类型?
例如,如果输入为:
2 3 5
3 2 5
4 4 7
输出应为:(2 + 3)+(2 + 5)+(4 + 4)= $ 20。

如果是DP或贪婪,我会感到困惑。

我觉得这很贪婪,因为我们必须购买M-1件商品。因此,对于上述示例中的三个中的每一个,我们只需选择最小值(225)并将其用于最终结果的计算。我考虑了更多示例,并且这种逻辑似乎可行,但是我对此并不感到“自信”。我无法“证明”它。有人可以确认我走的路是否正确吗?

解决方法

该问题有一个贪婪的解决方案,与您选择每行的最低值的想法密切相关。贪婪的部分是选择不打算购买的商品(每行一个),而不是选择要购买的商品。

选择要扔掉的每一行的最大元素。有两种情况:

  1. 每个选定的元素都属于同一列:搜索每行的第二个最小元素,然后选择一个最小化的元素((行的最大元素-行的第二个最大元素)。
  2. 不同列中至少有两个元素:这些元素是您不打算购买的。

很容易发现第二种情况。在第一种情况下,受问题限制,至少有一个选定元素与另一选定元素不共享同一列。然后,您需要选择其中一个要替换为同一行中的另一个元素,如果要这样做,请选择一个更接近该最大值的元素以减少付款的增量。

该分析涵盖了所有极端情况,但显然尚未得到正式证明。为此,需要进行涉及最佳解决方案转换的分析(在分离案例时,更为简单)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。