我在寻找一些帮助用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
排序对象。根据需要切片。这产生了最佳的解决方案 - 但你可能一直在问错误的问题。 –