これが多項式時間で実行できるかどうかさえわかりません。
問題:
実数の 2 つの配列が与えられると、
A = (a[1], a[2], ..., a[n]), B = (b[1], b[2], ..., b[n]), (b[j] > 0, j = 1, 2, ..., n)
および数値、 のサブセットを
k
見つけます。このサブセットには、が最大化されているような要素が正確に含まれています。ここで、 .A'
A (A' = (a[i(1)], a[i(2)], ..., a[i(k)]))
k
(sum a[i(j)])/(sum b[i(j)])
j = 1, 2, ..., k
たとえばk == 3
、 と{a[1], a[5], a[7]}
が結果の場合、
(a[1] + a[5] + a[7])/(b[1] + b[5] + b[7])
他のどの組み合わせよりも大きくする必要があります。どんな手掛かり?