将具有约束的一组符号划分为最小数量的子集的算法

时间:2015-03-18 09:01:20

标签: algorithm combinations

我有一个约束S={a,c,d,e,f,j,m,q,s,t}的{​​{1}}集。 C中的xy表示x和y不能在同一子集中。我想要一个算法将集合S分成子集Sj,以便:

1.Sj的数量最小化

2.每个子集的大小之间的差异尽可能大

例如,在这种情况下,C={am,cm,de,df,dm,ds,ef,em,eq,es,et,fj,fm,fs,jm,js}{{q,a,c,d,j,t},{m,s},{f},{e}}都满足1,但第一个是最优的。

来自计算机科学背景,我想知道数学家是否为这个问题设计了算法。

2 个答案:

答案 0 :(得分:1)

据我所知,您的任务可以重写为:找到最大的独立顶点子集S'图G =(S,C);重复图G' = G \ S'。

的步骤

众所周知(@tobias_k在他的评论中指出)最大的独立图集是NP难问题(因为它等同于着名的集团问题。

答案 1 :(得分:0)

我认为这是一个非常难的问题,这就是原因。要查找最小数量的子集,必须解决有关图的最小色数的问题。这个问题通常是通过暴力解决的。