-
18-09-2019 - |
문제
(실용적인) 응용 프로그램은 무엇입니까? 통일? 실제 세계에서 실제로 사용되는 곳은 어디입니까?
나는 그것이 실제로 무엇에 관한 것인지, 왜 그것이 인공 지능의 일부로 간주되는지에 대한 전체 아이디어를 이해할 수 없었습니다.
해결책
통일은 본질적으로 과정입니다 치환. 나는 그것을 "양방향 일치"라고 불렀다.
Prolog에서는 다른 논리 프로그래밍 언어와 재 작성 논리를 기반으로 직접 언어로 (Maude, 기력, 등 ...)는 자유 (논리적) 변수가 용어/값에 바인딩되는 메커니즘입니다. 동시 프롤로그에서 이러한 변수는 통신 채널로 해석됩니다.
IMO, 그것을 이해하는 더 좋은 방법은 수학의 몇 가지 예제입니다 (통일은 AI의 하위 필드 인 자동화 된 이론 속담 연구의 맥락에서, 예를 들어, 기본 주요 메커니즘이었습니다. 수용 추론 알고리즘). 다음의 예는의 맥락에서 가져온 것입니다. 컴퓨터 대수 시스템 (CAS):
First example:
세트 Q와 2 개의 바이너리 작업 * 및 +가 주어지면 * *는 + if에 대해 왼쪽 분산제입니다.
X * (Y + Z) = (X * Y) + (X * Z) |1|
이것은 규칙을 다시 작성하십시오 (재 작성 규칙 세트는 a 재 작성 시스템).
이 재 작성 규칙을 특정 사례에 적용하려면 다음과 같이 말하십시오.
a * (1 + b) |2|
우리 하나로 하다 (통일 알고리즘을 통해)이 용어 | 2 | 왼쪽 방향 (LHS)의 | 1 | 그리고 우리는 이것 (의도적으로 사소한) 대체 ( 대부분의 일반 통합제, 음):
{X/a, Y/1, Z/b} |3|
이제 | 3 | ~로 오른편 (RHS)의 | 1 |, 우리는 마침내 다음과 같습니다.
(a * 1) + (a * b)
이것은 단순했고 통일이 무엇을 할 수 있는지 이해하기 위해 조금 더 복잡한 예를 보여줄 것입니다.
Second example:
이 재 작성 규칙에 따라 :
log(X,Y) + log(X,Z) => log(X,Y*Z) |4|
우리는이 방정식에 적용합니다.
log(e,(x+1)) + log(e,(x-1)) = k |5|
(LHS | 5 | 통일 LHS | 4 |), 그래서 우리는 이것을 가지고 있습니다 음:
{X/e, Y/(x+1), Z/(x-1)} |6|
X와 X는 두 가지 변수입니다. 여기에는 두 가지 변수 X와 Y가 있습니다. 복합 용어, (x+1) 및 (x-1), 간단한 값이나 변수가 아닙니다.
우리는 이것을 적용합니다 음, | | 6 |, to RHS | 4 | 그런 다음 우리는 이것을 | 5 |에 다시 넣었습니다. 그래서 우리는 다음과 같습니다.
log(e,(x+1)*(x-1)) = k |7|
등등.
(내가 실수하지 않았거나 이것은 신 생물을 더 혼란스럽게 할 수 있기를 바라고 있습니다.)
다른 팁
통일은 주요 메커니즘입니다 입력 유추. 실제로 말하면, 이러한 맥락에서 통일은 손가락의 마모를 크게 줄입니다.
통일은 패턴 매칭과 같습니다. 여기서 두 구조를 문지르는 것은 하나의 변수가 다른 구조물의 값을 일치시킬 수 있습니다.
가장 간단한 통일 형태는 정상 언어로 함수를 호출 할 때마다 발생합니다. 발신자는 인수를 가지고 있으며 Callee에는 매개 변수가 있습니다. 매개 변수는 인수에 "바인딩"되며 함수의 인스턴스화를 생성합니다.
또 다른 간단한 통일 형태의 통일 dir x*y*.z*
일부 파일 이름은 아니지만 일부는 일치하지 않습니다.
인공 지능은 추론 엔진을 사용하여 지식의 코퍼스에서 일반적으로 논리의 진술 형태로 추론을 시뮬레이션하려고합니다. 어리석은 예를 선택하기 위해, 당신은 forall(x)(man(x) implies mortal(x))
. 그런 다음 "샘 필사자"라고 질문하면 mortal(Sam)?
, 당신은 새로운 질문을하는 규칙으로 "Sam a Man"입니다. man(Sam)?
도움이되기를 바랍니다.