| English | 의미 |
|---|---|
| fact/fækt/ | 사실 |
| declarative programming/dɪˈklærətɪv ˈprəʊɡræmɪŋ/ | 선언적 프로그래밍 |
| rule/ruːl/ | 규칙 |
| goal/ɡəʊl/ | 목표 |
| backtrack/ˈbæktræk/ | 백트래킹 |
| unification/ˌjuːnɪfɪˈkeɪʃn/ | 합일 |
谁的相机可以借?
- 미디어 클럽은 회원 정보와 수료된 훈련 기록을 유지합니다. 매번 질문마다 새로운 루프를 작성하지 않고,谁家可以借用相机的问题를 묻고 싶습니다.
- **선언적 프로그래밍(Declarative programming)**은 사실, 규칙과 **목표(goal)**를 서술합니다. 로직 엔진은 목표를 참으로 만드는 값을 검색합니다. 프로그래머는 여전히 정확한 규칙을 써야 하며, 엔진이 마음을 읽거나 클럽 게시판에 들러보지는 않습니다.
사실(Facts)은 알려진 것을 명시합니다
- **사실(fact)**은 지식 베이스(knowledge base) 내의 단정(assertion)입니다.
member(aya).에서 추명(predicate)member은 한 사람을 클럽 회원과 연결합니다.trained(aya, camera).은 한 사람을 장비(item)과 연결합니다. - 이 수업은 Prolog 스타일 표기를 사용합니다: 작은 글자 이름은 상수 또는 추론(practice)이고, 큰 글자 이름은 변수입니다. 문장 부호(마침표)는 각 사실이나 규칙을 끝냅니다.
member(aya).
member(ben).
member(chen).
trained(aya, camera).
trained(chen, camera).
trained(ben, audio).
사실 member(ben).와 trained(ben, audio).가 주어졌을 때, 다음 중 제공된 사실인 문장은 무엇입니까?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
member(ben)은 직접 주어집니다. 지식 기반에는 Ben에 대한 카메라 훈련 정보가 포함되어 있지 않습니다.
규칙은 조건들을 결합합니다
- 규칙(rule) 은 결론이 성립할 때를 명시합니다.
:-를 “만약(if)”으로 읽고, 쉼표는 AND(그리고)로 읽으십시오: 한 사람이 카메라를 빌릴 수 있는条件是 그 사람이 회원이고Camera 교육(Training)을 받은 경우입니다. Person는 세 곳 모두에서 같은 변수를 지칭합니다. 엔진은 한 명의 회원과 다른 교육 recipient를 찾는 것이 아니라, 두 조건을 동시에 만족하는 하나의 값을 찾아야 합니다.
can_borrow(Person, camera) :- member(Person), trained(Person, camera).
규칙 can_borrow(Person, camera) :- member(Person), trained(Person, camera)에서 두 조건 사이의 콤마(,)는 ____를 의미합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
동일한 Person에 대해 멤버십과 카메라 훈련이 모두 성립해야 합니다.
목표는 질문을 던집니다
- 목표
?- can_borrow(aya, camera).는 예/아니오 결과를 요청합니다. 엔진이 규칙을 매칭하고member(aya)과trained(aya, camera)을 확인하면, 두 사실 모두 존재하므로 목표가 성공합니다. - 목표
?- can_borrow(Person, camera).는 변수의 바인딩을 요청합니다. 이 지식베이스에서는 답은Person = aya과Person = chen입니다. 이들은 추론할 목표이며, 표시된 블록은 기호일 뿐 실행 가능한 놀이터가 아닙니다.
클럽 멤버는 Aya, Ben, Chen입니다. Aya와 Chen은 카메라 훈련을 받았으며, Ben은 오디오 훈련만 받았습니다. 규칙 can_borrow(Person, camera)는 멤버십과 카메라 훈련 모두를 요구합니다. 누가 can_borrow(Person, camera)를 만족합니까?
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
Aya와 Chen은 두 가지 조건 모두를 충족합니다. Ben은 오디오 훈련만 가지고 있습니다.
증명 과정에서 member(Person)의 Person 변수 값은 trained(Person, camera)의 Person 변수 값과 다를 수 있습니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
그 증명 내에서 동일한 변수의 모든 occurrences는 동일한 바인딩을 유지해야 합니다.
worked example: 실패한 후보 추적하기
Person = ben로 시작합니다.member(ben)은 성공합니다.trained(ben, camera)은 실패합니다: 이용 가능한 훈련 사실은 오디오에 대한 것이므로 카메라와 일치하지 않습니다.- 엔진은 다른 후보를 시도하기 위해 백트래킹하여
Person = chen로 돌아갑니다. 두 조건이 모두 성공합니다. 더 많은 답을 요청하면 검색을 계속하지만, 후보가 남지 않으면 더 이상 답이 없습니다.
Aya가 이미 반환된 후의 남은 탐색 과정을 추적하십시오.
난이도 3/5 · 200 코인 + 오늘 첫 완료 시 소액 보너스
Ben은 멤버이지만 일치하는 카메라 훈련 사실이 없으므로, 엔진은 다음으로 Chen을 시도합니다.
매칭은 규칙 전반에 걸쳐 값을 공유합니다
- 통일(unification) 은 변수를 일관되게 바인드하면서 항을 매칭합니다. 이를
trained(Person, camera)과trained(chen, camera)으로 매칭하면Person이chen에 바인드됩니다; 그러나trained(ben, audio)으로 매칭하면 장비가 다르므로 실패합니다. - 실패한 목표는 해당 사실과 규칙으로부터 증명할 수 없음을 의미합니다. 이는 벤이 실제 생활에서 한 번도 카메라를 사용하지 않았음을 증명하는 것은 아니며, 단순히 지식베이스가 불완전할 뿐일 수 있습니다.
trained(Person, camera)과 trained(chen, camera)의 매칭은 Person을 ____에 바인딩합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
장비 매칭이 이루어지며 첫 번째 인자가 바인딩 chen을 제공합니다.
worked example: 새로운 규칙 작성하기
- 요구사항: 멘토는 카메라 훈련을 가지고 있고 학습자가 회원일 때만someone을 도울 수 있습니다. 아래 규칙을 추가한 후
?- can_help(aya, ben).을 물어보세요. trained(aya, camera)과member(ben)이 모두 존재하므로 목표가 성공합니다. 이 규칙은 아야가 자신을 돕는 것도 허용합니다. 자조가 제외되어야 한다면 요구사항에 다른 조건이 필요합니다; 침묵으로 발명하지 마십시오.
can_help(Mentor, Learner) :- trained(Mentor, camera), member(Learner).
trained(aya, camera)와 member(ben)가 주어졌을 때, 규칙 can_help(Mentor, Learner) :- trained(Mentor, camera), member(Learner)에 따라 can_help(aya, ben)가 성공하나요?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
Aya는 카메라 훈련을 받았고 Ben은 회원입니다. Ben은 학습자가 되기 위해 반드시-camera 훈련을 받아야 하는 것은 아닙니다.
놓칠 수 있는 점
- 사실은 알려진 것을 나타내며, 규칙은 조건이 충족될 때 결론을 유도하고, 목표는 결론이 증명될 수 있는지 또는 어떤 값이 그것을 참으로 만드는지 묻습니다.
- 반복되는 변수를 일관되게 유지하십시오.
member(X), trained(Y, camera)은 다른 사람이 훈련을 받았기 때문에 훈련되지 않은 회원이 자격을 갖추게 할 수 있습니다. 변수 이름을 변경하면 규칙의 의미가 달라질 수 있습니다.
요구사항에서 증명으로
- 사실을 작성하고, 각 요구사항을 규칙으로 변환하며 목표를 설정하십시오. 각 변수 바인딩을 모든 조건을 통해 추적하고 후보가 실패할 때 대안을 시도하십시오.
- 여기에서는 아야와 첸만 카메라를 빌릴 수 있습니다. 벤의 오디오 훈련은 카메라 훈련이 아닙니다. 결과는 제공된 지식 기반에서 도출되며, 실제 사람에 대한 추측에서 비롯되지 않습니다.
클럽 회원은 Aya, Ben, Chen입니다. Aya와 Chen은 카메라 훈련을 받았으며, Ben은 오디오 훈련만 받았습니다. 규칙 can_borrow(Person, camera)는회원 자격과 카메라 훈련 모두를 요구합니다. 몇 명의 사람이 can_borrow(Person, camera)를 만족합니까?
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
Aya와 Chen이 두 가지 해입니다.
실패한 목표는 해당 사건이 이 지식 기반 밖에서 절대 발생하지 않았음을 증명합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
실패란 사용 가능한 사실과 규칙으로부터 목표를 증명할 수 없음을 의미합니다.