2017-12-31 113 views
3

이클립스 프롤로그를 사용하고 내가 변수 X가 가정 X는 알려진 수보다 작아야와 제약 조건보다 :프롤로그의 CSP : N.이 들어 내가 쓸 수 적은 인스턴스화 카운터

X #< N 

을 그래서 때마다 X를 위의 일시 중단 된 술어가 실패 할 경우 N보다 큰 수로 인스턴스화됩니다.

그러나 카운터 C가 0부터 시작하면 검색 중에 증가하고 N을 초과하면 실패합니다.

예를 들어 값이 도메인에서 선택되고 제약 조건이 N 시간을 초과하지 않는 횟수를 추적하려는 경우 어떻게해야합니까? 카운터 C가 0으로 인스턴스화되고 증분에 다른 변수를 사용하기 때문에 위의 작업을 수행 할 수 없습니다 (C1은 C + 1 임).

순수 프롤로그로해야합니까? 이 같은 것을 :

pred(X, N):- X1 is X+1, X1<N, pred(X1, N) 
+0

제한 라이브러리가이 작업을 (X1 user3161227

+0

진정한 제약 조건 (즉, 모든 솔루션에 대해 유지해야하는 상수 N을 포함하는 조건)을 공식화할지, 아니면 경험적으로 검색을 줄이는 방법을 찾고 있는지 (유효한 솔루션을 잃을 지 여부를 찾는 지 여부는 분명하지 않음)). 명확히 할 수 있습니까, 아니면 구체적인 예를들 수 있습니까? – jschimpf

+0

아마, 나는 그것을 잘 설명하지 않았다. 내가 찾고 있던 것은 궁극적으로 카디널리티 제약이다. 나는 IC 라이브러리를 사용하고 있었고 모든 제약 조건이 구현 된 IC-global도 완전히 잊어 버렸습니다. – user3161227

답변

1

OP 여기에. 나는 내가 찾고있는 것을 발견했다. 카디 낼 리티 제한 조건이며 eclipse 프롤로그의 ic 전역 라이브러리에서 구현됩니다.