我在尝试解决一个问题,其中约束的满足情况并非总是能被验证。我找到了很多关于灵活约束满足的论文,但那并不是我想要的。下面是一个例子:
P(Jim喜欢奶酪) = 0.8P(Joe喜欢奶酪) = 0.5P(Sam喜欢奶酪) = 0.2P(Jim和Sam是朋友) = 0.9P(Jim和Joe是朋友) = 0.5P(Joe和Sam是朋友) = 0.7
Charlie正在谈论两个喜欢奶酪的朋友。他最有可能在谈论谁?
我目前将这个问题视为一个约束满足问题:
[喜欢奶酪] [喜欢奶酪] | | | /-------[alldiff]-------\ | |/ \|[X]--------[朋友]--------[Y] ? ? ? | | |(Sam) (Joe) (Jim)
是否有现有的方法来处理这种类型的CSP?
用CSP来框定这个问题是否合适?
回答:
对于命题模型(其中每个变量都有一个独特的名称),你应该查看概率图模型(特别是马尔可夫网络)。它们与SAT和CSP非常密切相关,因为它们基本上是一种泛化,但仍然属于相同的复杂度类#P
。
如果你对这些模型的简洁、一阶表示感兴趣,你应该研究统计关系学习或一阶概率模型(同义词)。在这里,模型以“提升”的形式表达。例如,可能使用在某个对象域上变化的变量的概率约束,如下所示:
on(?x,?y) => largerThan(?y,?x)
对这些模型的推理,如果不依赖于生成地面模型,则在提升概率推理领域进行。