【发布时间】:2014-06-11 15:37:23
【问题描述】:
我最近遇到了以下问题,到目前为止还没有了解如何解决它。
令 S = {v1, v2, v3, ..., vn } 是定义在 ℝ6 上的一组 n 个数组。也就是说,每个数组有 6 个条目。
对于给定的一组数组,设一个维度的平均值是该集合中所有元素对应于该维度的坐标之间的平均值。
另外,让我们将一组数组的某个属性 P 定义为一组所有均值中的最小值(总共有 6 个均值,每个维度一个)。例如,如果某个集合具有 {10, 4, 1, 5, 6, 3} 作为其维度的均值,则该集合的 P 为 1。
现在定义问题:返回 S 的所有子集 S' 中的最大基数,使得 P(S') ≥ T,T 已知阈值,如果不存在这样的子集,则为 0。此外,输出任何最大的 S'(使得 P(S') ≥ T)。
总结:输入:集合 S 和阈值 T。输出:某个子集 S'(|S'| 显然是立即的)。
我首先开始尝试想出一个贪婪的解决方案,但没有成功。然后,我转向动态编程方法,但无法建立解决问题的递归。我可以进一步扩展我对解决方案的想法,但考虑到我已经走了多远(或没有走多远),我认为它们没有多大用处。
任何帮助将不胜感激!
【问题讨论】:
-
这个网站是为了编程问题,而不是家庭作业。也许试试math.stackexchange.com
-
似乎适合动态编程解决方案。每个子问题将是一组给定基数的最大 P,它是 S 的给定前缀的子集。
-
@MarcB 作为家庭作业的问题不会使其脱离主题,作为家庭作业的问题不会使其成为Mathematics 的主题,这似乎是一个算法问题,这里的主题比Mathematics 更重要。超过 10 万用户的奇怪评论。
-
N上的界限是多少,条目数?
-
@MarcB,你到底从哪里推断出这是一个家庭作业?郑重声明,事实并非如此。
标签: algorithm set dynamic-programming greedy