[알고리즘] A* 알고리즘

김성록·2023년 2월 14일

알고리즘

목록 보기
10/18

A* 알고리즘에 대해 설명해보세요.


A* 알고리즘의 작동 방식

  • A* 알고리즘은 그리디 알고리즘의 한 종류로, 시작 노드로부터 목표 노드까지의 최단 경로를 구하는 알고리즘이다.

  • 시작 노드부터 현재 노드까지의 비용을 g(n), 현재 노드에서 목표 노드까지의 예상 비용을 h(n)이라고 하면, 이 두 값을 더한 f(n) = g(n) + h(n)이 가장 최소가 되는 노드를 다음 탐색 노드로 정한다.

  • 이때 h(n)을 휴리스틱 함수라고 하며, 대표적인 예시로 맨해튼 거리 함수와 유클리디안 거리 함수가 있다. 이 휴리스틱 함수를 설계하는 방법에 따라 알고리즘의 성능이 결정된다.

  1. 출발 노드를 open list에 저장한다. open list는 검색 가능성이 있는 노드의 집합이다.
  2. 출발 노드와 인접한 노드들을 open list에 넣고 f(n)을 계산하여 저장한다.
  3. open list에서 출발 노드를 지우고, closed list에 넣어준다.
  4. open lsit에서 가장 작은 f(n) 비용을 가지고 있는 노드를 선택하고 위의 과정을 반복한다.
  5. 인접한 노드 중에 이미 open list에 있는 노드라면 현재 노드를 기준으로 해당 노드까지 이동할 때 g(n) 비용이 작아지는 지 확인한다. 낮아진다면 부모 노드를 현재 노드로 바꾸고 f(n), g(n) 비용을 다시 계산하여 저장한다.
  6. 목표 노드에 도달하거나 open list가 비게 될 때 까지 반복한다.
  7. 목표 노드부터 부모 노드를 거슬러 올라가게 되면 최단 경로를 찾을 수 있다.

A* 알고리즘의 특징

  • h(n)이 0일 때, A* 알고리즘은 다익스트라 알고리즘과 동일하게 작동한다.

  • 목표 노드까지의 거리에 대해 어떠한 힌트가 있는 경우 유용하다. 게임에서 캐릭터를 이동할 때 사용된다.

  • 휴리스틱 함수에 따라 빠른 최단 경로를 구할 수 있지만, 그 만큼 휴리스틱 함수에 의존도가 강하다.


결론

A* 알고리즘은 그리디 알고리즘의 한 종류로, 가중치 그래프에서 시작 노드로부터 목표 노드까지 최단 경로를 구하기 위한 알고리즘입니다. 시작 노드부터 현재 노드까지의 비용을 나타내는 g(n)과 현재 노드에서 목표 노드까지의 예상 비용을 나타내는 h(n)을 이용하여 최단 경로를 구해나가는데, 이때 h(n)을 휴리스틱 함수라고합니다. 휴리스틱 함수이 성능을 좌우하기 때문에 적절한 휴리스틱 함수를 설정하는 것이 이 알고리즘의 핵심입니다.

profile
예비 개발자

0개의 댓글