2016-06-04 6 views

답변

1

구별은 실행 중 제약 조건이 사용되는 방식을 나타냅니다. 액티브 제약 (may)은 직접적으로 변수에 영향을 주지만 수동 제약은 그렇지 않습니다. 작은 사소한 양 구조의 예를 고려한다 : 첫 번째 예

% Active 
f(a,X) = f(Y,b) 

% Passive 
2*X < 3*Y+2 

를, X 또는 Y 중 하나가 인스턴스화 해지면 '제약'(유효한 경우 통합하고) 평가 바로 양쪽을 실행할 수 = 활성 행동.

반면에 두 번째 예제에서는 양측이 서로 종속되어 있으므로 X 또는 Y가 처음 인스턴스화되는지 여부는 중요하지 않으므로 양측의 변수가 인스턴스화 될 때까지 평가가 지연되어야합니다. 수동적 인 행동.

(액티브/패시브 제약 조건 개념을 일반적으로 모든 제약 조건 로직 기반 시스템에 적용 할 수 있기 때문에 제약 조건/언어 별 구문을 사용하지 않고 답변을 시도했음을 유의하십시오. 또한 ECLiPSe와 같은 일부 언어는 전역 제약 조건을 제공합니다 유한 정수 영역에 대한 추론과 실제로 우리의 필요에 따라 능동적/수동적 인 행동을 할 수도 있지만,이 문제의 범위를 벗어나면 아무 것도 간단하게 생각하지 않습니다.)

희망이 있습니다.

+0

ECLiPSe에서'ic' 라이브러리를 사용할 때이 제약 조건이 활성화 될 것이라는 점 또한 정확합니까?'2 * X # <3 * Y + 2'? (추가 된 # 참고). 그런 다음 양쪽 도메인이 업데이트되면 다른 도메인도 업데이트 될 수 있습니다. –

+1

네 맞습니다. ECLiPSe에서 X 또는 Y가 유한 도메인을 소유하고 둘 중 하나가 인스턴스화 될 때 제약 조건 <가 트리거되어 정확성을 검사합니다. 또한, 필요하다면 제약 조건이 유효한 정보를 나타낼 수 있도록 아직 인스턴스화되지 않은 변수의 도메인을 줄입니다. 물론, 이것은 활동적인 행동으로 분류됩니다. – SND

+1

감사합니다. 지금은 의미가 있습니다. D –