2012-04-22 42 views
3

我試圖做一個時間表出來的事實,事實是在course_meetings(主題,類型,一組描述)的形式,兆豐運行時間問題(蠻力方法),Prolog的

我決定用蠻力方法

我會生成所有可能的時間表,看看哪一個會通過所有的約束,但是我已經產生了2.6的事實,我該如何優化它,並且有更好的方法。前者爲 。 course_meetings(主題,類型,組,教師,說明)。 解決: -

findall([A,B,C,D,E],course_meetings(A,B,C,D,E),L), 
permutation(L,L1), 
%and apply constrains on it. 

我有32個事實這種格式和用於置換其32〜= 2.6×10^32

+0

我碰到一些所謂的斷言/收回來了,是有用的,如果是的話我怎麼能。 – 2012-04-22 12:00:18

+0

向我們展示您的規格示例。你必須保留哪些限制?此外,如果這是一個家庭作業或測試,請說出來或相應標記您的文章。 – 2012-04-22 12:32:00

回答

2

嘗試所有可能的排列似乎不是一個好主意!另一種選擇可能是將約束表達爲clp(fd)的有限域約束,並讓約束求解器嘗試比「嘗試所有」更好的策略。