1. Calculus Introduction

 

  우리는 이번 단원에서 두가지의 calculus 를 알아 볼 것이다. Predicate Calculus(명제 논리, 명제 계산) 과 Predicate Calculut(술어 명제, 술어 계산) 의 2가지 이다. 이들은 둘다 모든 언어의 시초라고 할 수 있다.

 

 

 - Propositional Calculus (명제 논리)

  

  Propositional Calculus (명제 논리) 는 참 또는 거짓을 갖는 문장이다. 이것은, 기호, 문장, 의미 로 표현 할 수 있다. 예를 들면 'It is sunny' 라는 문장이 있다고 해보자. 하나의 언어를 하나의 기호로 정의하는 첫 단계를 Symbol (기호) 라고 한다. It is Sunny 라는 문장은 symbol로 변환되어 P 라고 하자. 그렇다면 지금 바깥이 화창하다면 P는 True가 되는 것이고, 화창하지 않다면 False가 되는 것이다.  그렇다면 It is Sunny 라는것은 문장(sentence)이고, P는 기호 (symbol), 그리고 참 거짓은 의미(semantics) 가 되었다. 그리고 이렇게 기호가 된 문장들은 아래의 기호들로 서로의 관계를 표현 할 수 있다.

 

   ∧ -   Conjunct 로 흔히 논리곱이라고 하며 'AND'라고도 표현한다. (ex. -P ∧ P = false) 

   ∨ -   Disjunct 로 흔히 논리 합 이라고 하며 'OR'라고도 표현한다. (ex. P ∨ -P = true) 

   ⇒ -   Implication 으로 논리 함축  이라고 한다. P ⇒ Q 라는 표현식이 있다면, P는 premise(전제) 또는,

            antecedent (선행사)라고 하며 Q는 Conclusion (결과) 라고 한다.

 

 또한 명제 논리는 항등법칙(Equivalences)를 갖고 있는데, 이는 아래와 같다. (여기서 -P는 negation P 를 뜻한다.)

 

 - ( -P) = P

(P ∧ Q) = ( -P ⇒ Q)

(P ⇒ Q) = ( -P ⇒ -Q)

- (P ∨ Q) = ( -P ∧ -Q)

- ( P ∧ -Q) =  ( -P ∨ -Q)

(P ∨ Q) =  (Q ∨ P)

(P ∧ Q) = (Q ∧ P)

((P ∧ Q) ∧ R) = (P ∧ (Q ∧ R))

((P ∧ Q) ∨ R) = (P ∨ R) ∧ (Q ∨ R)

 

 

- Predicate Calculus (술어 논리)

 

 

Predicate calculus (술어 계산) 은 인공지능 언어이다.  술어 논리 라고도 하는 이 것은 형식 언어이다. 1차 술어 논리는 아래의 3가지 요소에 의해 구성된다.

 

1) 구성 규칙 - 반복을 통해 잘 구성된 (well-formed) 논리식을 정의한다.

 

2) 변형 규칙 - 정리를 증명하기 위한 추론 규칙

 

3) 이를 뒷받침하는 비교의 기준 과 추론 방법

 

술어 논리 에서는 '한정자 (Quantifier)'가 변수에만 적용 되고, 술어나 함수에 대해서는 허용하지 않는 경우 이를 일차 술어 계산 이라고 한다. 예를들어 ∀x P(x) 의 경우엔 변수에 한정자가 적용된 예이다. 하지만, ∀P P(x) 의 경우엔 술어부호 P에 한정자가 적용 되었으므로, 일차 술어 계산에서는 허용하지 않는 문장인 것이다. 대부분의 논리적인 표현은 일차 술어계산으로 모두 나타낼 수 있으므로, 인공지능 언어에서는 대부분 일차 술어 계산에 근거하고 있다. 특히, 일차 술어 논리는 집합 이론 전부와 모든 수학을 형식화 하기에 충분히 강력하다.  

 

 명제 논리에서는 각 P와 Q는 한가지의 명제밖에 담지 못했다. 하지만, 술어 논리에서는 각 성분 사이의 관계에 대해 정의 할 수가 있게 된다. 예를들어 'Tom loves Lissa' 라는 문장이 있다고 했을때, 술어 논리는 Top과 Lissa의 관계를 표현하는 love를 이용하여 'love(Tom, Lissa)' 와 같이 표시 할 수 있다. 이처럼 symbol을 문장으로 표현할 수 있는데, 이것은 소문자 대문자 상관 하지 않고 알파뱃과 숫자를 포함 할 수 있지만, 숫자로 시작해서는 안되고, 띄어쓰기와 알파뱃이 아닌 문자는 사용 할 수 없다. (일반적으로 띄어쓰기 대신 언더바 ' _ ' 를 사용한다.) 다시 정리 해보자면 아래와 같다.

 

 1) 소문자, 대문자 상관없이 영문 알파뱃.

 

 2) 숫자 사용 가능 ( 0, 1, .... , 9)

 

 3) 띄어쓰기대신 언더바  '  _  ' 사용가능

 

'Q09M_Z' 와 같은 것은 올바른 symbol의 표현법 이지만, #, %, @ 등과 같은 것이 들어가거나 '9pop' 와 같이 숫자로 시작하는 문장등은 사용해서는 안된다.

 

  좀더 정확히 하자면, 술어 논리에는 다양한 symbol 들이 존재 하는데, 이들마다 이름을 쓸때 지켜야할 규칙이 있다.

 

1) Constant Symbol 은 '상수' 로써, 소문자로 시작 해야 한다.(ex. likes(monkey, banana)  에서 monkey와 banana는 상수)

 

2) Variable Symbol 은 '변수' 로써, 대문자로 시작 해야 한다. (ex. father(X,tom) 여기서 X는 변수)

 

3)  Function Symbol 은 ' 함수' 로써, 소문자로 시작 해야 한다. (ex. 위에서의 likes나  father와 같이)

 

 

 그리고 앞에서 언급했듯이 술어 논리에는 '한정자(quantifier)' 라는게 붙을 수 있다. 한정자에는 2가지 종류가 있는데 universal quantifier 인 ∀ 와, existential quantifier인 ∃ 가 있다. ∀X likes(X,ice_cream) 은 아이스크림을 좋아하는 모든 X는 이라는 뜻을 갖는다. ∃Y friends(Y,Jim) 이라는 것은, 짐이라는 친구를 가진 어떤 Y는 이라는 뜻을 갖는다.  이들은 아래의 룰에 따른다.

 

1) -∀X P(Y) ≡  ∃X -P(X)

2) -∃Y P(Y) ≡  ∀Y -P(Y)

3) ∀X (p(X) ∨ q(X)) ≡ ∀X p(X) ∨ ∀ Y q(Y)

4) ∃X (p(X) ∧ q(X)) ≡ ∃X p(X) ∧ ∃ Y q(Y)

'Courses > `2012 AI' 카테고리의 다른 글

Predicate, Clause form 실습  (0) 2012.05.07
LISP  (0) 2012.05.01
Resolution Theorem Proving  (0) 2012.05.01
Unification  (0) 2012.05.01
Using Inference Rules to Produce Predicate Calculus Expressions  (0) 2012.05.01

+ Recent posts