给定一个从 1 到 12 的列表,假设我每 10 分钟使用每个数字,我如何最大化接近数字之间的分钟数。
换句话说,最大化列表中每个位置的每个值之间的差异。
尝试最大化 n & n+1、n & n+2 和 n & n+3 之间的时间
2 旁边的 1 是最差的。 1 旁边的 1 是最好的,但它最终会导致列表中更靠后的数字。
例如,
在给定列表中的项数的情况下,是否可以计算出每个项之间的最佳 Delta?
最佳答案
假设集合中的输入值均匀分布,我建议使用以下方法来定义序列。
遍历有序值,每次跳转 X 个值,其中 X 定义为值总数/Phi。 假设值集的末尾绕回开头。
因此对于值集 1 - 12,您将有:
X = 12/披
X = 12/1.618 = 7.4
将 7.4 四舍五入为最接近的整数,因此我们假设 X = 7。
那么你的顺序就是 1, 8, 3, 10, 5, 12, 7, 2, 9, 4, 11, 6
要量化(或评分)此序列的“最大化”程度,您需要对集合中的每个成员进行以下计算的总和。
对于每个集合成员,计算其自身与每个其他成员之间“值”之差的绝对值除以到该成员的“距离”。 例如,对于上述序列中的成员 8,其得分为:
8,1 = |8-1|/1 = 8
+
8,3 = |8-3|/1 = 5
+
8,10 = |8-10|/2 = 1
+
8,5 = |8-5|/3 = 1
+
8,12 = |8-12|/4 = 1
+
...
对集合中的每个成员都这样做,然后求和以获得总体“分数”。 得分越高,序列将越“最大化”。
关于algorithm - 连续资源列表的优化算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6050307/