목차
제1장 인공지능(Artificial Intelligence, AI)이란?
   1-1 인공지능의 정의 ... 13
   1-2 컴퓨터는 지능을 가질 수 있는가? ... 15
   1-3 인공지능 역사 ... 16
   1-4 인공지능 분야 ... 18
      1.4.1 전문가 시스템(Expert Systems) ... 18
      1.4.2 신경망(Neural Networks, NN) ... 19
      1.4.3 유전자 알고리즘(Genetic Algorithms, GA) ... 19
      1.4.4 튜링 테스트(Turing Test) ... 20
      1.4.5 퍼지 시스템 이론(Fuzzy System Theory) ... 21
      1.4.6 자연언어 시스템(Natural Language Systems) ... 22
   1-5 삼목게임(Tic-Tac-Toe)을 통한 인공지능의 이해 ... 22
제2장 Jess(Java Expert System Shell) 프로그래밍
   2.1 Jess란? ... 33
   2.2 Jess 시작하기 ... 33
      2.2.1 설치 ... 33
      2.2.2 Jess 실행하기 ... 34
   2.3 Jess vs. Prolog ... 36
   2.4 Jess 응용 분야 ... 38
   2.5 Jess 프로그래밍의 기초 ... 38
      2.5.1 원소 또는 기호(Atoms or Symbols) ... 38
      2.5.2 수(Numbers) ... 39
      2.5.3 문자열(Strings) ... 39
      2.5.4 주석문(Comments) ... 40
   2.6 구조(Structures) ... 40
      2.6.1 리스트(Lists) ... 40
      2.6.2 함수 호출(Calling Functions) ... 41
   2.7 변수(Variables) ... 42
      2.7.1 전역변수(Global Variables) ... 43
      2.7.2 일반리스트(Plain Lists) ... 44
   2.8 컨트롤(Control) ... 45
      2.8.1 foreach ... 45
      2.8.2 while ... 46
      2.8.3 if/then/else ... 47
   2.9 deffunction ... 48
   2.10 자바와의 연동 ... 51
   2.11 규칙기반 시스템(Rule-Based Systems) ... 52
      2.11.1 규칙 ... 53
      2.11.2 규칙기반 시스템의 동작 원리 ... 54
      2.11.3 사실(Facts) ... 57
   2.12 규칙과 추론 ... 64
      2.12.1 defrule 함수 ... 65
      2.12.2 작업메모리의 사실과 전건부의 일치 ... 67
      2.12.3 충돌해결(Conflict Resolution) ... 69
      2.12.4 원숭이와 바나나 문제(Monkey and Bananas Problem) 전체 프로그램 ... 72
   2.13 defquery ... 78
   2.14 여러 가지 문제들 ... 82
      2.14.1 물항아리 문제(A Water Jug Problem) ... 82
      2.14.2 선교사와 식인종 문제(Missionaries and Cannibals Problem) ... 105
제3장 탐색 방법(Search Methods)
   3.1 탐색을 위한 준비 ... 123
   3.2 그래프(Graphs) ... 125
   3.3 깊이-우선 탐색(Depth-First Search) ... 126
   3.4 너비-우선 탐색(Breadth-First Search) ... 129
   3.5 탐색방법을 적용한 물항아리 문제(A Water Jug Problem) ... 132
   3.6 휴리스틱 탐색(Heuristic Search) ... 136
      3.6.1 8-puzzle 문제 ... 138
      3.6.2 Hill-Climbing 탐색 ... 140
      3.6.3 최선 탐색(Best-First Search) ... 146
      3.6.4 A* 탐색(A* Search) ... 151
   3.7 게임용 탐색 ... 154
      3.7.1 반복적-점증 깊이-우선 탐색(Iterative-Deepening Depth-First Search) ... 155
      3.7.2 반복적-점증 A* 탐색(Iterative-Deepening A* Search) ... 162
      3.7.3 Minimax 프로시져 ... 162
      3.7.4 Minimax α-β 자르기 ... 164
   3.8 제약조건-만족(Constraint-Satisfaction) ... 167
제4장 지능형 에이전트(Intelligent Agent)
   4.1 인터넷과 웹, 에이전트, 그리고 자바 ... 179
      4.1.1 인터넷과 웹 ... 179
      4.1.2 지능형 에이전트 ... 179
      4.1.3 자바를 사용한 지능형 에이전트 ... 180
   4.2 자바를 이용한 지능형 에이전트 프로그램 예제 ... 181
      4.2.1 탐색 프로그램 ... 181
      4.2.2 탐색 프로그램의 설명 ... 188
   4.3 이동형 에이전트와 Java 기반의 Aglets 구현 기술 ... 206
      4.3.1 이동형 에이전트 ... 207
      4.3.2 에이전트 프로그래밍 언어 ... 211
      4.3.3 Aglets ... 215
      4.3.4 이동형 에이전트 프로그래밍 ... 216
      4.3.5 결론 ... 223
제5장 신경망(Neural Networks)
   5.1 신경망의 특징 ... 227
   5.2 신경망의 분류 ... 229
   5.3 Backpropagation(BP) 신경망 ... 230
   5.4 자바를 통한 Backpropagation(BP) 신경망의 구현 ... 234
   5.5 Kohonen Map(KMap) 신경망 ... 261
   5.6 자바를 통한 Kohonen Map(KMap) 신경망의 구현 ... 264
   5.7 Backpropagation(BP) 신경망을 이용한 자동차 번호판 문자 인식 프로그램의 구현 예제 ... 272
      5.7.1 자동차 번호판 문자 인식 시스템의 동작 및 구조 ... 272
      5.7.2 자동차 번호판의 특성 ... 274
      5.7.3 자동차 번호판의 문자 인식 방법 ... 275
      5.7.4 BP 신경망을 이용한 자동차 번호판 문자 인식 프로그램 ... 276
제6장 자연어 처리(Natural Language Processing)
   6.1 서론 ... 307
   6.2 언어분석의 단계 ... 307
   6.3 Context Free Grammar와 Parse Tree ... 308
   6.4 Jess로 Parser 구현하기 ... 310
   6.5 Ambiguity 문제 ... 312
   6.6 Augmented Transition Networks ... 316
   6.7 의미론적 문법(Semantic Grammars) ... 318
   6.8 음성인식 - 컴퓨터와의 대화 ... 322
제7장 퍼지 시스템(Fuzzy Systems)
   7.1 퍼지 시스템 ... 333
      7.1.1 퍼지 논리 ... 333
      7.1.2 퍼지집합의 표현 방법 ... 335
      7.1.3 퍼지 집합의 기본 연산 ... 336
   7.2 퍼지 추론 ... 339
      7.2.1 퍼지 벡터-행렬 곱(Fuzzy Vector-Matrix Multiplication) ... 340
      7.2.2 최대-최소 추론(Max-Min Inference) ... 342
      7.2.3 최대-곱 추론(Max-Product Inference) ... 344
      7.2.4 역퍼지화(Defuzzification) ... 346
   7.3 퍼지 시스템 활용 - 컨테이너 크레인 제어기(Container Crane Controller) ... 350
      7.3.1 초기상태의 역퍼지화(Defuzzification) ... 352
      7.3.2 이동 중의 역퍼지화(Defuzzification) ... 354
   7.4 FuzzyJ Toolkit ... 358
      7.4.1 FuzzyJ Toolkit 설치하기 ... 358
      7.4.2 간단한 퍼지규칙(Fuzzy Rules) ... 359
      7.4.3 최대-최소 추론 ... 366
      7.4.4 퍼지규칙 2개 이상의 최대-최소 추론 ... 369
      7.4.5 크레인 이동 중의 역퍼지화(Defuzzification)의 구현 ... 376
부록 A 프롤로그(PROLOG) 프로그래밍
   A.1 탐색을 위한 준비 ... 389
   A.2 그래프(Graphs) ... 391
      A.2.1 상수(constants): 원소(atoms)와 숫자(numbers) ... 391
      A.2.2 변수(variables) ... 393
      A.2.3 구조(Structures) ... 393
      A.2.4 사실(Facts)과 규칙(Rules)의 표현 ... 394
      A.2.5 질의(Questions) ... 396
      A.2.6 일치(match) ... 398
   A.3 깊이-우선 탐색(Depth-First Search) ... 399
   A.4 너비-우선 탐색(Breadth-First Search) ... 407
   A.5 탐색방법을 적용한 물항아리 문제(A Water Jug Problem) ... 416
      A.5.1 Factorial ... 416
      A.5.2 Membership ... 418
      A.5.3 Concatenation ... 421
      A.5.4 리스트에 항목 추가(Adding an Item) ... 423
      A.5.5 리스트의 항목 삭제(Deleting an Item) ... 425
      A.5.6 리스트 항목 개수의 출력(Number of List Items) ... 426
      A.5.7 물항아리 문제(A Water Jug Problem) ... 427
      A.5.8 선교사와 식인종 문제(Missionaries and Cannibals Problem) ... 429
      A.5.9 트리 데이터 형 표현하기(Representing a Tree Data Type) ... 431
      A.5.10 그래프 표현하기(Representing a Graph) ... 437
닫기