我們有一組項目I = {i_1,i_2,...,i_n}。這些項目中的每一項都具有我們所稱的p值,這是一些實數。我們想選擇I的一個子集,稱爲I',其大小爲m(對於某些具有1 < = m的< = m),使得I'中的項的值的平均值落入某個指定的範圍內範圍,[p_l,p_u]。 (例如,我們可能需要的平均值在0.70和0.74之間。)此外,我們希望有效地完成此操作。選擇集合的子集使得子集滿足全局約束條件
我們希望在O(n)時間內做到這一點,但任何多項式時間算法都足夠好。我們當然不想嘗試每個可能的大小爲m的I子集,然後檢查它是否滿足平均p值約束。
最後,我們將重複這樣做,我們希望選擇的子集在所有可能的子集上均勻隨機分佈。
有沒有辦法做到這一點?
對此,多項式時間算法似乎不太可能。這個問題可能相當於一般的*約束子集選擇問題*,這是NP。如果您的輸入值緊密聚集在某個數據透視點附近,並且具有正態分佈,則可以使用回溯算法來選擇符合要求的子集。但是,確保您對l的所有成員進行統一的隨機分配將是具有挑戰性的。你可能會有更好的運氣在[mathoverflow.com](http://www.mathoverflow.com)上尋求幫助。 – LBushkin 2010-08-24 16:41:27
感謝您的評論。我傾向於認爲問題也是棘手的。 我可能會問mathoverflow.com,但到目前爲止,我發現堆棧溢出是更有幫助,即使這樣的理論問題。 – 2010-08-24 17:15:12