2012-04-22 1 views
3

나는 사실에서 일정을 만들려고 노력하고 있어요, 사실은 메가 실행 시간 문제 (무차별 접근), 프롤로그

내가 사용하기로 결정, course_meetings (주제, 유형, 그룹, 설명)의 형태로 존재 무차별 대입 접근

그러나 모든 제약 조건을 전달할 수있는 계획은 무엇인지 확인하지만 내가 작성한 사실은 어떻게 최적화 할 수 있습니까? 더 나은 접근 방법이 있습니다. 예 : 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

나는 assert/retract라고하는 것을 보았습니다. 유용하고 그렇다면 어떻게 할 수 있습니까? –

+0

귀하의 사양 예를 보여주십시오. 당신이 지켜야 할 제약은 무엇입니까? 또한 과제 또는 시험 인 경우 그렇게 말하거나 그에 따라 게시물에 태그를 답니다. –

답변

4

Prolog에서 유한 도메인에 대한 제약 조건은이 필요성에 맞게 설계되었습니다. 그것을 위해 assert/rectract를 사용할 필요가 없습니다. 예 : library(clpfd). 당신에게 친숙 해지려면 this example, a "Simplistic School Time-Tabler"을보고 CLP Primer

+0

나는 그것을 시험해보고, 알고있다, 현재 시간표를보고있다. –

2

!. 다른 방법으로 제약 조건을 clp (fd)의 유한 도메인 제약 조건으로 표현하고 제약 조건 해결자가 "모든 것을 시도"보다 나은 전략을 시도하도록 할 수 있습니다.