我在尋找一些幫助用Python寫一個算法,完成以下操作:算法 - 組/排序列表最大化最小平均組值
鑑於實數列表,排序/組列入n個較小的列表,以使平均最小組值最大化。
例如,考慮將以下列表分爲兩個列表 - A和B,每個列表包含兩個元素。
lis = [1,1,2,2]
在下面的第一個方案中,每個列表的最小值是1,並且這樣的平均最小值爲1。
# Scenario 1
A = [1,2]
B = [1,2]
# Scenario 2
A = [1,1]
B = [2,2]
在第二場景中,A的最小值是1,B的最小值爲2,所以平均最小值爲1.5。這種安排是最佳的。
很明顯,最好將「相似」的值進行分組。我可以用Jenks natural breaks optimization(或一維k-均值聚類)做到這一點。但是,我不確定我的目標和Jenks優化的目標是否(數學)相等。
任何幫助或輸入,將不勝感激。
編輯:較小的列表必須都具有相同的大小(假設給定列表總是分成沒有剩餘的較小組)。
小的列表都必須是相同的大小? –
是的,他們這樣做。對不起,我應該說明。 – Malthus
排序對象。根據需要切片。這產生了最佳的解決方案 - 但你可能一直在問錯誤的問題。 –