[AI]Unformed Search

cloudbread·2025년 10월 16일

1. 탐색

  • 탐색: 상태 공간에서 시작 상태에서 목표상태까지의 경로를 찾는 것
  • 상태 (state) : 문제 해결 과정에서의 현재 상황 (예: 8-puzzle에서 퍼즐 배열, Hanoi에서 탑 상태)
  • 상태 공간 (state space) : 모든 가능한 상태들의 집합
  • 연산자 : 다음 상태를 생성 (8-puzzle -> 조각 이동, Hanoi -> 원판 이동)
  • 탐색 트리 (search tree) : 상태를 노드(node), 연산자를 간선(edge)로 표시

2. 문제 해결 과정의 두 가지 접근

(1). 직접적 기법

  • 문제 해결을 위해 순차적 단계 프로그래밍을 하는 방식
  • 문제의 모든 단계가 코드에 직접 명시
  • 초기 상태가 바뀌면 프로그램 다시 수정
  • 인공적인 판단 X
# N = 5일 때
result = 1 + 2 + 3 + 4 + 5
print(result)
  • 문제 상태가 바뀌면 (예 N = 10) 코드 수정 필요
  • Hanoi Tower 문제 => 디스크 3개를 A-> C로 옮기는 과정 직접 코딩 (이때 초기 상태 (디스크 계수)가 달라지면 코드 수정 필요

(2). 지능적 기법

  • 현재 상태(state)와 목표 상태(goal)만 알려주면 컴퓨터가 스스로 해를 찾아가는 과정
  • 탐색(Search)를 사용하여 상태 공간을 자동 탐색
  • 탐색 과정에서 지능적 판단이 필요 => 최적해 혹은 적당한 해 도출
  • Hanoi Tower 문제 : DFS, BFS 같은 탐색 알고리즘을 사용하여 목표 상태에 도달

4. 탐색 기법 분류

(1). 맹목적 탐색 (Uninformed / Blind / Random )

  • 목표에 대한 정보 없이 모든 후보를 체계적으로 탐색
  • DFS, BFS, Uniform-Cost Search

(2). 경험적 탐색 (Heuristic/Informed)

  • 목표 상태와의 "거리"나 경험적인 정보를 활용
  • Greedy Search, Hill Clmbing, Simulated Annealing, A* Search
  • BFS : 루트에서 시작하여 깊이 1 -> 깊이 2 -> 깊이 3 순으로 차례대로 검색
    ▫ 최단 경로 보장 (모든 간선 비용이 동일할 경우)
    ▫ 목표에 도달하는 가장 짧은 단계 탐색 가능
    ▫ 메모리 사용량 큼 (노드를 큐에 저장해야 하므로 상태 공간이 커지면 비효율적)
    ▫ Level-order 순서대로 노드 방문

  • DFS : 한 경로를 끝까지 탐색한 후 막히면 뒤로 돌아와 다른 경로 탐색
    ▫ 메모리 절약 가능
    ▫ 목표해가 깊은 곳에 위치하면 빠르게 접근 가능
    ▫ 최적해 보장 불가 (먼저 발견된 해가 최단 경로가 아닐 수 있음)
    ▫ 무한 루프 가능 (깊이가 무한할 경우 대책 필요 -> depth limit)
    ▫ pre-order, In-order, Post-order

  • 구분BFSDFS
    탐색 방식너비 우선 (같은 깊이 노드 먼저)깊이 우선 (한 경로 끝까지)
    자료구조큐(Queue)스택(Stack) / 재귀
    메모리많이 사용적게 사용
    최단 경로보장보장 X
    목표 깊이얕은 목표 → 빠름깊은 목표 → 빠름
    단점상태 공간 크면 비효율무한 루프 가능, 최적해 X
profile
잡다한거 다 공부중....

0개의 댓글