문제해결을 위한 인공지능기법

인공지능 기법은 지능적인 판단이 필요한 게임이나 문제의 해결에 있어서 매우 유용하다. 우리 인간의 일상적인 행동도 어떤 의미에서는 프로그램된 것으로 볼 수 있다. 그러나 컴퓨터를 통한 판단은 인간보다 훨씬 느리고 융통 성이 없으며 지능적인 수준에서도 상당한 차이가 있다.

우리는어떤 문제를 해결하기 위하여 수학에서의 공리와 유사한 기본적인 규칙인 생성규칙을 이용하게 된다. 그러나 이러한 생성규칙들이 아무리 완벽하다고 해도 적절 하고도 효과적인 제어방법이 없다면 문제해결의 길은 멀어진다. 좋은 제어방법조건들로는 제어방법이 변화를 일으켜야 한다는 점과 효과 적인 제어전략이 필요하다는 것이다. 똑같은 규칙만을 계속하여 실행 시키지않고 문제해결을 위해 전체를 효과적으로 탐색하는 것이 필요하다.

생성시스팀에는 많은 규칙들이 있다. 그러나 특정한 어느 시점에서 적용할 수 있는 규칙은 오직 하나뿐이다. 실제 상황에서는 여러가지 규칙들이 중복 적으로 존재할 수도 있는데 이 경우에는 경합이 벌어지게 되며 이를 해소하기 위해 다음과 같은 방법들이 사용된다.

첫째,최초에 발견된 적용가능한 규칙을 적용한다. 둘째, 사용자가 정해놓은우선순위에 따른다. 셋째, 가장 최근에 얻어진 데이터와 관련된 규칙을 적용 한다. 그외에도 전문가시스팀의 경우에는 확실한 정도를 나타내는 확신도에 따라 선택하며 최근에는 퍼지를 이용한 근사추론의 방법도 많이 연구되고 있다. 이러한 인공지능기법을 이용한 대표적인 문제인 "선교사와 식인종문제"를 살펴보자. 우선 문제의 정의는 다음과 같다. 3명의 선교사와 3명의 식인종과 배 한척이 강의 한쪽 둑에 있다. 선교사와 식인종은 배를 타고 모두가 강을건너려고 한다. 그러나 유감스럽게도 이동에 있어서 다음의 제약조건들을 지켜야 한다. 첫째, 배는 기껏해야 2명을 탑승시킬 수 있다. 둘째, 선교사와 식인종 모두가 배를 조정할 수 있다. 셋째, 만약 어느편의 둑이든지간에 식인종의 수가 선교사의 숫자보다 많을 경우에는 식인종이 선교사를 해친다.

이러한조건하에서 이들이 모두 무사하게 건널 방법은 무엇일까? 이러한 종류의 문제를 풀기 위해서는 문제의 초기상태와 목표상태를 명확하게 표현하는 것이 필요하다. 강의 양쪽 둑에 있는 선교사는 몇명인가? 강의 양쪽 둑에 있는 식인종의 수는 몇명인가? 배는 강의 어느쪽 둑에 위치 하고 있는가등이다. 주어진 초기상태로부터 목표상태까지의 이동을 위해서는 기본적인 규칙들을 사용하게 된다. 문제해결을 위해서는 주어진 조건들을 만족해야 하므로 여기에 따르는 제약조건들을 만족시키는 규칙들을 만들어 사용한다.

이문제에 대한 하나의 가능한 해결책은 다음과 같다. 1단계, 선교사 1명과 식인종 1명을 왼쪽 둑에서 오른쪽 둑으로 옮긴다. 2단계, 선교사 1명을 오른쪽 둑으로 옮긴다. 3단계, 식인종 2명을 왼쪽 둑에서 오른쪽 둑으로 옮긴다. 4단계, 식인종 1명을 오른쪽 둑에서 왼쪽 둑으로 옮긴다. 5단계, 선교사 2명을 왼쪽 둑에서 오른쪽 둑으로 옮긴다. 6단계, 선교사 1명과 식인종 1명을 오른쪽 둑에서 왼쪽으로 옮긴다. 7단계, 선교사 2명을 왼쪽둑에서 오른쪽 둑으로 옮긴다. 8단계, 식인종 1명을 오른쪽 둑에서 왼쪽으로 옮긴다. 9단계 식인종 2명을 왼쪽 둑으로 옮긴다. 10단계, 선교사 1명을 오른쪽 둑에서 왼쪽 둑으로 옮긴다. 11단계, 선교사 1명과 식인종 1명을 왼쪽둑에서 오른쪽둑 으로 옮긴다.

위와같은 과정을 거쳐 선교사 3명과 식인종 3명 모두가 왼쪽 둑에서 오른쪽 둑으로 무사히 건넘으로써 이 문제는 해결되었다. 이것은 인공지능 프로그램 언어인 리스프(LISP)를 사용하여 별 어려움없이 구현될 수 있다.

이것외의 고전적인 문제들로는 "원숭이와 바나나" "하노이의 탑" 등이 있는데 위와 같은 규칙을 이용하여 실세계에서 일어날 수 있는 여러가지 문제들 을 해결할 수 있다.