问题:给定标记的(1..n)无向图,在Gecode中创建一个模型,用于查找具有给定序列度的超图:
困难:主要的困难是找到精确的模型来准确地表达它的度数:
为什么不选择邻接矩阵?因为图形往往很大而且稀疏
为什么不是边缘列表?我们要添加边缘,但是我们不知道它们中有多少,CP需要预定义数量的变量(我是对的吗?)
为什么不将邻接列表?建模问题作为集合列表我们需要为所有i推动约束,j :(在[i]< => i中的j在[ j])
答案 0 :(得分:2)
使用"邻接列表提供的可能性"可能是最好的。
你担心的是你将需要许多传播者在这些集合之间进行通道;但是,Gecode包含一个特殊的通道传播器,用于在集合之间进行通道:http://www.gecode.org/doc-latest/reference/classGecode_1_1Set_1_1Channel_1_1ChannelSet.html。这个传播器完全按照你描述的方式进行通道,并且应该最大限度地减少保持集合一致的工作量。