최선 우선 탐색(BFS)

jhin·2023년 6월 27일
0

알고리즘

목록 보기
7/13

개념

최선 우선 탐색 (Best-First Search)
최선 우선 탐색은 특정한 평가 함수(heuristic function)에 따라 노드를 선택하여 탐색하는 알고리즘입니다. 평가 함수는 각 노드가 목표에 얼마나 가까운지를 나타내는 값이며, 가장 작은 평가 값을 가진 노드를 선택하여 탐색합니다. 최선 우선 탐색은 주로 최적화 문제나 경로 탐색에서 사용되며, A* 알고리즘이 가장 대표적인 예입니다. 최선 우선 탐색은 탐색의 효율성을 높일 수 있지만, 최단 경로를 보장하지는 않습니다.


예시

예시를 위해 최단 경로 탐색 문제를 생각해 보겠습니다. 다음과 같은 그래프에서 A부터 G까지의 최단 경로를 찾는 문제입니다. 각 간선의 가중치는 숫자로 표시되어 있습니다.

       A
     / | \
    B  C  D
   / \   / \
  E   F G   H
초기 상태:
시작 정점: A
방문한 정점: []

시작 정점 A 방문:
방문한 정점: [A]

A의 이웃 정점 B, C, D 평가:
평가 함수 값: B(5), C(3), D(8)

C가 가장 낮은 평가 함수 값을 가지므로 C 선택:
방문한 정점: [A, C]

C의 이웃 정점 G, F 평가:
평가 함수 값: G(2), F(6)

G가 가장 낮은 평가 함수 값을 가지므로 G 선택:
방문한 정점: [A, C, G]

G의 이웃 정점이 없으므로, 탐색을 종료합니다.

최선 우선 탐색은 휴리스틱 함수를 사용하여 각 후보 상태를 평가하여 가장 최적의 선택을 우선적으로 탐색합니다. 이 알고리즘은 주어진 문제에 대한 최적의 해를 빠르게 찾을 수 있을 때 유용하게 사용됩니다. 다만, 휴리스틱 함수의 평가가 가장 최적의 해를 보장하지는 않을 수 있습니다.

0개의 댓글