有限集合A,函数int val(subSet)接受A的一个子集返回整数。求A的子集使val()最小(或比较小)。
val()的实现应该与算法无关。现在只知道相近的子集(比如差一两个元素)的val()也相近。
这是NPC问题,简单的完全搜索不用说了。是不是可以用演化算法?如果可以,第一代怎么得到,遗传、变异规则怎么选?请给点建议。
如果有好的贪心算法也可以。
补充一下,
1。集合的规模在几万以上。
2。val()的定义域是A的幂集,也就是val()接受A的任意子集。
----------------------------------------------------------
val()的实现应该与算法无关。现在只知道相近的子集(比如差一两个元素)的val()也相近。
这是NPC问题,简单的完全搜索不用说了。是不是可以用演化算法?如果可以,第一代怎么得到,遗传、变异规则怎么选?请给点建议。
如果有好的贪心算法也可以。
补充一下,
1。集合的规模在几万以上。
2。val()的定义域是A的幂集,也就是val()接受A的任意子集。
----------------------------------------------------------
只能动态规划阿
效率和val函数的值域有关
设val的值域是正整数,最大值为K
集合A中有n个元素
则动态规划的复杂度是O(A*n)Top
PS:这就是背包问题的变形
待理解