Prolog 大型运行时问题(蛮力方法),序言

Prolog 大型运行时问题(蛮力方法),序言,prolog,clpfd,Prolog,Clpfd,我试图根据事实制定时间表,事实以课程会议的形式(主题、类型、小组、描述) 我决定使用暴力手段 我将生成所有可能的计划,并查看哪一个将通过所有约束, 然而,事实上我已经生成了2.6,我如何优化它,还有更好的方法吗。 例如。 课程会议(主题、类型、小组、讲师、说明)。 解决:- 我有32个这种格式的事实和排列它的32!~=2.6*10^32尝试所有可能的排列似乎不是一个好主意。另一种方法是将约束表示为clp(fd)的有限域约束,并让约束解算器尝试比“尝试一切”更好的策略。Prolog中设计了有限域上

我试图根据事实制定时间表,事实以课程会议的形式(主题、类型、小组、描述)

我决定使用暴力手段

我将生成所有可能的计划,并查看哪一个将通过所有约束, 然而,事实上我已经生成了2.6,我如何优化它,还有更好的方法吗。 例如。 课程会议(主题、类型、小组、讲师、说明)。 解决:-


我有32个这种格式的事实和排列它的32!~=2.6*10^32

尝试所有可能的排列似乎不是一个好主意。另一种方法是将约束表示为clp(fd)的有限域约束,并让约束解算器尝试比“尝试一切”更好的策略。

Prolog中设计了有限域上的约束,以完全满足这一需要。无需为此使用assert/rectract。见例。为了让您熟悉,您可以查看和

我遇到了一个名为assert/retract的东西,它是否有用,如果有用,我如何向我们展示您的规范示例。你必须遵守哪些规定?另外,如果这是一个家庭作业或考试,请说出来或贴上相应的标签。我会试试,让你知道,我正在看时间表
findall([A,B,C,D,E],course_meetings(A,B,C,D,E),L),
permutation(L,L1),
%and apply constrains on it.