我很不确定这个问题可以在多项式时间内完成。
问题:
应该比任何其他组合都要大。有什么线索吗?
问题:
例如,如果Given two arrays of real numbers,
A = (a[1], a[2], ..., a[n]), B = (b[1], b[2], ..., b[n]), (b[j] > 0, j = 1, 2, ..., n)
and a number
k
, find a subsetA'
ofA (A' = (a[i(1)], a[i(2)], ..., a[i(k)]))
, which contains exactlyk
elements, such that,(sum a[i(j)])/(sum b[i(j)])
is maximized, wherej = 1, 2, ..., k
.
k == 3
,并且结果为 {a[1], a[5], a[7]}
,则:(a[1] + a[5] + a[7])/(b[1] + b[5] + b[7])
应该比任何其他组合都要大。有什么线索吗?
n
个选择k
种可能的比率,因此设置了复杂度的上限。我正在考虑一种方法来选择最大的比率a[i]/b[i]
开始,然后选择使k=2
的情况尽可能大的索引。这样,在该步骤中,您必须比较n-1
个比率。然后继续选择第三个索引。证明一旦选择了k
个索引,这将始终给出最佳比率可能很难(或者可能不是真的!),但是尝试证明可能会提供一些见解。 - JohnPS