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