지능형 시스템

지시 ch2) 탐색

chris3471 2025. 3. 24. 00:32
728x90
반응형

상태공간과 탐색

 - 탐색 (search) : 상태 공간에서 시작 상태에서 목표 상태까지의 경로를 찾는 과정

 - 상태공간 (state space) : 가능한 모든 상태의 집합

 - 연산자 : 상태에서 다음 상태로의 전이 규칙

 

탐색 과정

 

 

예시)

1. 8-puzzle

 - 상태공간은 퍼즐의 각 배치, 연산자는 퍼즐의 각 타일을 상하좌우로 움직이는 것

 

8-puzzle

 

 

2. N-Queen 문제

 - N*N 체스판에 N개의 퀸을 배치하는 문제

 - 상태는 퀸의 위치, 연산자는 퀸의 이동

N-Qeen 문제

 

 - 상태 공간 : 각각의 퀸을 정해진 열에서만 움직이게 한다.

 - 연산자 : 

연산자

 

 

탐색 트리 (Search Tree)

 

 - 노드 : 상태를 나타내는 트리의 각 지점

 - 루트 : 탐색 트리의 시작 상태

 - 간선 : 연산자를 나타내는 트리의 연결

 - 탐색 과정에서 트리는 상태를 확장하며 목표 상태를 찾는다.

 

탐색 트리 설명

 

 

탐색 트리 예제 : N-queen Problem

 

 

기본적인 탐색 기법

 

1. 맹목적인 탐색 (Blind Search Method)

 - 목표 노드에 대한 정보를 사용하지 않고 기계적인 방법으로 상태를 확장

 

2. 경험적 탐색 (Heuristic Search Method)

 - 목표 노드에 대한 경험적 정보를 사용하여 효율적인 탐색이 가능

 - 경험적인 정보 = 휴리스틱 (Heuristic)

 

탐색 알고리즘 종류

 

탐색 성능 측정

 

 - 완결성 : 문제에 해답이 있다면, 반드시 해답을 찾을 수 있는지 여부

 - 최적성 : 가장 비용이 적은 해답을 찾을 수 있는지 여부

 

 - 시간 복잡도 : 해답을 찾는데 걸리는 시간

 - 공간 복잡도 : 탐색을 수행하는데 필요한 메모리의 양

 

 

맹목적인 탐색

1. 깊이 우선 탐색(DFS)

 - 탐색 트리에서 목표가 있을 가능성이 있는 노드를 찾아 계속 전진

 - 문제점 :  중복된 상태를 방문할 수 있으므로 이를 방지하기 위한

                 Open List(확장된 상태)Closed List(탐색 완료된 상태)가 필요

 

DFS 과정

 

 

 

DFS 알고리즘 : 

1. 루트 노드를 Open List에 추가하고 탐색을 시작

2. 목표 상태에 도달하면 SUCCESS를 반환하고, 아니면 자식 노드를 생성하여 Open List에 추가

수도 코드

 

 

시험 문제 !!!!!!!!!!

중간고사!!!!! LIFO구조

 

 

 

2. 너비 우선 탐색(BFS)

 

- 루트 노드의 모든 자식 노드를 탐색한 후, 그 다음 레벨로 내려가며 탐색을 계속함

- BFS 알고리즘도 DFS와유사하지만, 자식 노드를 큐처럼 처리하여 확장 순서를 관리

 

BFS 과정

 

수도 코드

 

Closed List를 deque 해줌

 

맹목적 탐색 알고리즘 분석

 

1. 깊이 우선 탐색 알고리즘(DFS) 분석

 - 완결성 : 무한한 상태 공간에서는 완결적이지 않음 BUT 유한한 상태공간에서는 완결성 보장

 - 최적성 : 보장되지 않음

 - 시간 복잡도 : O(b^m) 

   - b : 각 단계에서 확장되는 상태의 가지 수

   - m : 트리의 최대 깊이

 - 공간 복잡도 : O(bm)

DFS

 

 

2. 너비 우선 탐색 알고리즘(BFS) 분석

 - 완결성 : 유한한 상태공간에서는 완결성 보장

 - 최적성 : 보장

 - 시간 복잡도 : O(b^d)

   - b : 각 단계에서 확장되는 상태의 가지 수

   - d : 목표 노드의 깊이

 - 공간 복잡도 : O(b^d)

BFS

 

 

깊이 우선 탐색 vs 너비 우선 탐색

 

- 깊이 우선 탐색은 최적해를 보장하지 않지만, 적은 메모리로 수행 가능

- 너비 우선 탐색은 최적해를 보장하지만, 메모리 요구량이 지수적으로 커짐

 

시험문제!!!!

특히 최적성과 공간복잡도!!!!!!

 

 

 

3. 깊이 제한 탐색 (DLS - Depth Limited Search)

 

- DFS의 단점인 높은 시간 복잡도높은 비용을 해결하기 위해 깊이를 제한하여 탐색을 수행

- 완경성이 보장되지 않는 한계가 있음

 

DLS 트리

 

 

Quiz ) 루마니아 Map 경로 찾기 문제를 푼다면 깊이 제한을 몇으로 하는 것이 적절할까?

Answer ) Map에 있는 도시의 수 (모든 도시를 탐색할 수 있기 때문에)

 

루마니아 Map

 

 

4. 반복 심화 탐색 (Iterative Deepening DFS)

- DLS의 깊이 제한을 순차적으로 완화하여 탐색하는 기법

- 이 방식은 깊이 우선 탐색의 장점과 너비 우선 탐색의 장점을 결합한 형태

ID-DFS 과정

 

 

5. 균일 비용 탐색 (Uniform Cost Search - Dijstra's Algorithm) 

- 다익스트라 알고리즘을 사용하여 간선 비용을 고려한 최적 경로를 찾음

- 비용이 가장 적은 경로를 선택하여 탐색을 진행

균일 비용 탐색 과정

 

시험문제!!!! 최적의 경로와 그 때의 비용은?

O->S->R->P (328)

 

 

경험적 탐색 알고리즘 분석

휴리스틱 예시 (8-Puzzle)

현재 상태와 목표 상태

 

휴리스틱에 따라 값이 달라짐

 

휴리스틱1의 경우는 4, 휴리스틱 2의 경우는 6 이다.

 

시험 문제!!!

 

 

 1. 언덕 등반 방법 (Hill Climbing Method)

 - 최적화된 값을 찾기 위해 가장 좋은 평가 값을 가진 자식 노드를 선택하여 탐색을 진행

 - 적용 휴리스틱 : 현재 제 위치에 있지 않은 타일의 수 (휴리스틱은 문제의 조건)

언덕 등반 방법을 이용 사례

 

언덕 등반 방법의 수도 코드

 

 

지역 최소/최대 문제 (Local Mimimum/Maximum Problem)

 

 - 이 방법은 휴리스틱 값에만 의존하므로, 목표 상태가 아닌 지역 최소값에 도달할 위험이 존재

 - 생성된 자식 노드의 휴리스틱 값이 부모 노드보다 더 높거나 같은 경우가 나올 수 있음

지역 최소 문제

 

 

 2. A* 알고리즘

- 힐 클라이밍의 한계를 극복 (힐 클라이밍은 오직 목표 노드와의 h(n)만을 고려)

  (시작 노드에서 멀어지게 되면 그만큼 비용이 더 드는 것이기 때문에 경로의 비용도 평가 함수에 추가 필요)

- f(n) = g(n) + h(n) (시작 노드에서 현재 노드까지 오는 비용 + 현재 노드에서 목표 노드까지의 추정 거리)

- 적용되는 휴리스틱이 허용성 (Admissibility)을 갖추면 최적의 비용으로 해를 찾는다

 

예시

 

 

A* 의 수도코드

 

 

연습문제)

연습문제

728x90
반응형

'지능형 시스템' 카테고리의 다른 글

지시 ch6) 머신러닝 기초  (0) 2025.04.09
지시 ch5) 유전 알고리즘  (0) 2025.04.02
지시 ch3) 게임 트리  (1) 2025.03.24