我有一个元素列表,每个元素都用类型标识,我需要重新排序列表以最大化相同类型元素之间的最小距离.
该套装很小(10至30件),因此性能并不重要.
每种类型的物品数量或类型数量没有限制,数据可以被认为是随机的.
例如,如果我有一个列表:
我想产生类似:
A,B,C,A,D,F,B,A,E,C,A,D,B,A
是否有算法来实现这一目标?
-Update-
在交换了一些评论后,我得出了一个次要目标的定义:
- 更新2-
关于答案.有很多有用的答案,虽然没有一个是两个目标的解决方案,特别是第二个是棘手的.
关于答案的一些想法:
我试过叶夫根Kluev,回溯,和tobias_k式的组合,但它需要太多的时间来得到结果.
最后,至少对于我的问题,我认为tobias_k是最合适的算法,因为它的简单性和及时的良好结果.可能使用模拟退火可以改善它.