【发布时间】:2021-03-06 11:38:19
【问题描述】:
假设我有一个矩阵 M,它看起来像:
[a b c l]
[d e f k]
[g h i o]
我必须从每一列中选择一个元素,这样我才能最小化所有这些元素的最大值。
例如。如果我选择 a,e,i,k 我的答案将是 max(a,e,i,k)
要找到最优解,有没有比O(n^3)更好的方法?
如果可能的话,我会很感激某种伪代码/sn-p 代码。
【问题讨论】:
-
取每一列的最小元素怎么样?这将有 O(w*h) 矩阵的 w=width 和 h=height。
-
这可能不一定最终成为最佳解决方案,因为第二个参数每列只有一个元素。这不是一个贪婪的问题。
-
我的解决方案确实最大限度地减少了可能的项目选择。可能有一个时间复杂度更高但结果是最佳的(或者我正在监督一些重要的事情)。
-
假设 a 是第 1 行的最低值元素,g 是第 3 行的最低值元素。您的方法总是选择 a,这可能不是最好的方法,因为 g 会被忽略。如果 g 低于 a,则它变得相关。
-
意外地,我最初在第一条评论中写了“每行的最小元素”,但我将其更正为“列”。所以在我的方法中,这些行实际上并不重要。
标签: python matrix dynamic-programming