【发布时间】:2015-09-10 00:06:46
【问题描述】:
我正在尝试解决 prolog 中的设置分区问题。假设,设置 S = {1,3,4,2,5}。现在对它进行分区
L U R = S && L^R = empty
我想实现一个谓词 partition/3 使得 ?- partition(S,L,R) 成功,如果 L 和 R 是 S 的有效分区。例如,partition([1,2,3],L,R) 应该通过答案替换 L = [1,2], R = [3] 成功。我不想考虑这个问题的重复条目。
【问题讨论】:
-
您的问题陈述中是否缺少此约束?总和(L)=总和(R)
-
另外,这个问题的重复条目是什么?在您的示例 S=[1,2,3] 中,这些有效的解决方案是: L=[1,2], R=[3] ; L=[3],R=[1,2]; L=[1],R=[2,3],等等?
-
请解释“我不想为这个问题考虑重复条目”的含义。这是否意味着
partition/3需要强制所有涉及的列表都这样做不包含任何重复项?或者这是否意味着partition/3可以(默认)假设所有列表(它会看到)不包含重复项?
标签: prolog