2017-03-19 6 views
0

나는 clpfd에서 경계 전파가 무엇인지 알아 내려고하고 있지만 어디에서나 좋은 설명을 찾을 수없는 것 같습니다.경계 전파 란 무엇입니까?

나는 Prolog와 clpfd를 개정하고이 질문을 보았지만 강의 노트를 보면 나에게 의미가 없다. 누군가 경계 전파의 실제 의미와 용도에 대해 설명해주십시오. 대답 다음 프롤로그 프로그램

:- use_module(library(clpfd)). 
bounds(X, Y, Z) :- 
    X in 1..5, 
    Y in 1..2, 
    Z in 3..5, 
    X #= Y + Z. 

그것을 쿼리하면

제공합니다 :

?- bounds(X, Y, Z). 
X in 4..5, 
Y in 1..2, 
Z in 3..4. 

경계 전파를 적용 할 수있는 방법을 설명 여기

내가 말하는거다 질문입니다 이 대답을 추론 할 수 있습니다.

답변

2

경계 전파는 제약 조건 해석기 이 자동으로 인  에 적용되는 전파 양식입니다. 요점은 사용자의 경우 이 아니고이 알고리즘을 이해하고 있지만 단지 제약 조건 해결자를 사용하여  에 대한 작업을 수행 할 수 있다는 것입니다. 결과에서 솔버는 이 이미이 전파 양식을 적용했습니다.

여기서 시작이다, 제약 해결사가 당신을 위해 무엇을하고 있는지 이해하기 :

우리는 알고

  • Y1
  • Z 적어도 적어도입니다
  • X은이 Y이고 Z입니다.

따라서 (운동 : 왜?) : X적어도4입니다.

그런 다음 위의 다른 모든 변수에 대해이 논리를 반복하십시오 (상단 : 하단).

수정   점 번식 중 하나에서 도메인 요소를 제거 할 수 없을 때까지이 과정을 반복합니다. 이 작업이 완료되면 범위가   일관성으로 설정되었습니다.