【发布时间】:2011-04-09 15:17:42
【问题描述】:
我有许多可变大小的列表,其中包含具有属性 foo 的同一类的实例,并且对于每个列表,我必须应用如下规则:
- 如果有元素 foo=A,则 [B,C,D] 中不能有带有 foo 的元素
- 如果有一个元素 foo=X,那么在 [Y,Z] 中必须至少有一个带有 foo 的元素
- 在 MIN 和 MAX 元素之间可以有 foo=BAR
结合以上三个规则可能足以表达我将需要的任何类似约束。这有点像软件包中的依赖项检查,但我有数量但缺少版本:)
一种天真的方法是:
R_CONFLICT={ A: [B,C,D] }
R_DEPENDS ={ X: [ [Y,Z], W, .. } # means: A depends on either Y or Z, and W
R_MIN ={BAR: n, BAZ: m}
R_MAX ={BAR: o, BAZ: p}
# now just loop over lists to check them..
这是Constraint programming的问题吗?我实际上不需要解决 某事来获得结果,我需要根据一些约束验证我的列表并检查它们是否满足。你会如何分类这个问题以及如何解决它?
对于它的价值,我正在使用 Python 进行编码,但我欢迎一个通用的编程答案 :) 如果事实证明我必须深入研究约束编程,我可能会从尝试 python-constraint 开始。
【问题讨论】:
标签: python constraints constraint-programming