탐색 1
탐색 Preview
탐색과 문제 해결
상태 공간 탐색
상태 공간과 탐색
상태(state)
탐색(search)
상태 공간(state space)
상태 공간 그래프(state space graph)
탐색문제 예제
상태공간 예제
예) 8-Puzzle 문제 모델링

인공지능에서의 탐색 기법
추론을 통한 탐색
탐색 트리 구축

1) 맹목적(무정보) 탐색(blind search)
(1) 너비 우선 탐색(Breadth-First Search, BFS)
• 시작 정점 방문 후 시작 정점과 연결된 모든 정점들을 왼쪽부터 차례
대로 방문
• 그 후 level의 순서에 따라 차례로 탐색
• 즉 level 0, level 1, level 2, … 의 순서로 탐색
• 그림에서 1, 2, 3, 4, 5, 6의 순서로 방문
• Queue이용, 최적해 보장 → 메모리 많이 필요
(2) 깊이 우선 탐색(Depth First Search, DFS)
• 첫 정점(node) 방문, 왼쪽으로 이동하여 계속 탐색
• 탐색할 정점이 없으면, 되돌아와서 순환적으로 탐색
• 그림에서 1, 2, 3, 4, 5, 6의 순서로 방문
• Stack, 재귀 구현 → 장점(메모리 적음) vs 단점(최적성 X)
(3) 반복적 깊이심화(증가) 탐색(Iterative Deepening Search, IDS)
• 깊이 한계를 1씩 증가 시키며 그때마다 깊이 우선 탐색 을 반복적으로 실행 하는 알고리즘
• 반복적 깊이심화 탐색(IDS)의 작동 방식
① 깊이 1에서 시작 : 깊이 한계(depth limit)를 0으로 설정하고 깊이 우선 탐색을 실행합니다.
② 점진적 깊이 증가 : 깊이 한계를 1씩 늘려가며 각 단계마다 깊이 우선 탐색을 반복적으로 실행합니다.
③ 목표 탐색 : 목표 노드에 도달할 때까지 이 과정을 반복합니다.
• 메모리 효율과 최단경로 보장
• DFS + BFS의 장점만을 취하는 알고리즘
• 맹목적 탐색 적용시 우선 고려 대상
(4) 양방향 탐색
• 초기노드와 목적노드에서 동시에 너비 우선 탐색을 진행
• 중간에 만나도록 하여 초기 노드에서 목표 노드로의 최단 경로를 찾는 방법
맹목적(무정보) 탐색 정리
너비우선 탐색(BFS)은 최적의 해를 찾으나 메모리 사용이 비효율적이다.
깊이우선 탐색(DFS)은 메모리 사용이 효율적이나 최적의 해를 보장하지 못한다.
반복적 깊이우선 탐색(IDS)은 메모리 사용이 효율적이면서도 최적의 해를 보장한다.
2) 경험적(정보이용)탐색(informed search)
(1) A* 알고리즘 (경로 탐색)
• 지식을 이용하여 탐색 진행
• ‘문제 해결에 매우 효과적인 탐색 알고리즘
• 출발점(시작)에서 목표지점(끝)까지의 최적 경로 탐색의 한 방법
• 가장 비용이 적거나 짧은 경로 찾기(전체 비용을 최소로 하는 노드 확장)
• 평가 함수 f를 사용하여 다음에 이동할 경로를 결정함
비교) 다익스트라 알고리즘 – 시작점은 있고 임의의 목표점에 대해 최단 거리 찾는 방식

휴리스틱 함수heuristic function
• 상태의 좋은 정도를 측정하는 평가 함수evaluation function
• 인공지능에서는 평가 함수를 휴리스틱 함수heuristic function라 부름
Ex) 8-puzzle 두 가지 휴리스틱 함수
① 불일치 수: 제자리에 없는 수를 셈
② 맨해튼 거리의 합: 제자리를 찾아가는데 필요한 거리의 합
• 경험적 탐색은 경험적 평가 함수 h(n)를 사용하여 목표 상태까지의
좋은 정도를 평가한다.
• 일반적으로 경험적 탐색은 최적의 해를 보장하지는 못한다.
• 그러나 A* 알고리듬은 경험적 탐색 방법임에도 불구하고, h(n)이 허용성을 만족하면 최적의 해를 보장한다.

(2) 언덕 오르기 (hill climbing)
• 현재 노드 -> 휴리스틱 평가 값이 가장 좋은 것 하나만을 선택해서 확장하는 기법
• 매 단계 가장 좋은 이웃 하나로 “오르기”; 큐/백트래킹 거의 없음(지역탐색)
• 장점: 메모리·구현 매우 단순, 매우 빠름.
• 단점: 지역 최적/평지(plateau)/능선(ridge)에 갇힘
→ 무완전, 비최적.
① 먼저 현재 위치를 기준으로 해서, 각 방향의 높이를 판단한다.(노드의 확장)
② 만일 모든 위치가 현 위치보다 낮다면 그 곳을 정상이라고 판단한다(목표상태인가의 검사).
③ 현 위치가 정상이 아니라면 확인된 위치 중 가장 높은 곳으로 이동한다(후계 노드의 선택).
(3) 최상우선 탐색 (best-first search)
• 가장 유망해 보이는 노드를 먼저 선택하여 탐색하는 방식
• 노드의 평가 함수 f(n)(유망도를 나타내는 휴리스틱 값) 값을 기준으로 우선순위 큐에서 가장 작은 값을 가진 노드를 꺼내 확장
알고리즘 :
① 시작 노드를 f(start) 값으로 우선순위 큐에 넣음
② 큐가 빌 때까지 반복:
• f(n)이 가장 작은 노드를 꺼냄
• 목표라면 경로 반환
• 이웃 노드 생성 후 f(n) 계산 → 큐에 추가
③ 큐가 비면 해 없음
f(n)에 따라 다양한 변형 가능:
• Greedy Best-First: f(n)=h(n) → 순수 휴리스틱 기반, 빠르지만 최적해 보장 X
• A* 탐색: f(n)=g(n)+h(n) → 경로비용+휴리스틱, h가 허용적(admissible)이면 최적해 보장
• 최상우선탐색은 A* 탐색 알고리즘 과정과 유사
• 차이점은 노드의 값을 계산하는 방식
• 최상우선탐색 - 현재 노드로부터 목표 노드까지의 거리 (휴리스틱 목적함수)
• A* 탐색 - (출발 노드 ~ 현재 노드까지의 거리) + (현재 노드~목표 노드까지의 예상 거리)