해시 체인과 포워드 체인을 최소 논리라는 측면에서 설명하고 해상도 정리의 관점에서 설명하지 않겠습니다. Normal backward chaining 프롤로그 룰은 최소 논리의 왼쪽 함축 도입 규칙의 적용으로 볼 수 있습니다. 동일한 규칙은 지금을 모델링하는 데 사용할 수 있습니다
-------- (Id)
P |- P G, A -> P |- A
--------------------------------- (Left ->)
G, A -> P |- P
: 그러니까 기본적으로 우리가 목표 P 및 규칙 A-> P있을 때, 결합 된 추론 규칙은 우리가 목표 A로 목표 P를 대체 할 수 있음을 말한다 순방향 연쇄 어플리케이션. 이번에는 목표 P가 없지만 조건 A가 전제에서 구체화되었습니다. 규칙 A -> P가있을 때이 규칙은 헤드 P를 구체화하도록 라이센스를 부여합니다. 다음과 같이 결합 된 추론 규칙을 읽 우리의 작은 프로그램의
------- (Id)
A |- A G, A, A -> P, P |- B
--------------------------------------- (Left ->)
G, A, A -> P |- B
생각은 완전히 fixpoint F (M) = 전방 체인 프로세스의 M을 계산하는 것이다. 우리가하는 일은 M0, M1, M2 등의 반복을 계산하는 것입니다. 프로세스가 유한 한 결과로 끝나는 경우에만 작동합니다. 연역적 데이터베이스로부터 Mn + 1과 Mn 사이의 델타 만 계산한다는 아이디어를 채택했습니다. 비교적 적은 노력으로 F (Mn) \ Mn = G (Mn \ Mn-1, Mn-1)이되도록 G를 찾을 수 있습니다.
중복이 현재 제거되지 않으므로 순환 데이터에서 G의 현재 구현이 불안정해질 수 있습니다. 사실 제거를 허용하는 전진 체인저에서는 중복을 제거하기 위해 특별한 전진 규칙을 사용할 수 있습니다. Fullblown 순방향 연쇄 시스템은 사실을 제거 할 수 있어야하며, 제약 조건 해결 시스템을 구현하는 데에도 사용할 수 있습니다.
그러나 간단한 생각과 그에 따른 단순한 코드로 지금 당장 떠날 수 있습니다. f 함수에서
G 코드 (델타/2) (일본어 규칙)
http://www.xlog.ch/jekejeke/forward/delta.p
을 장난감 전문가 시스템 전방 추론
http://www.xlog.ch/jekejeke/forward/expert.p
답장을 보내 주셔서 감사합니다. @NickMain. 패키지가 기본적으로 YAP 설치에 포함되어 있는지 알고 있습니까? 효율성과 관련된 한 가지 질문 : 어떻게 든 YAP와 같이 고도로 최적화 된 Prolog 엔진에서 구현 된 포워드 체인저는 Java 또는 C와 같은 논리적 언어로 된 동일한 소프트웨어보다 빠르다고 생각했습니다. 반드시 그런 것은 아니겠습니까? – Sergio
YAP 설명서에는 CHR - http://www.dcc.fc.up.pt/~vsc/Yap/documentation.html#CHR에 대한 섹션이 포함되어 있습니다. SWI에서는'-use_module (library (chr)) '만 필요하다. –
CHR의 C 구현에 대한 논문 중 하나는 SWI, Java 및 C 버전을 비교하는 벤치 마크를 포함한다. http : //people.cs.kuleuven .be/~ pieter.wuille/static/chr07.pdf. SWI와 Java는 비슷하지만 C는 훨씬 빠릅니다. –