A* 알고리즘 최종 수정일 2026-06-25 02:31 조회수 5
대시보드

A* 알고리즘

기본 정보

  • 명칭: A* 알고리즘
  • 영문명: A* Search Algorithm
  • 분류: 경로 탐색(Pathfinding) 알고리즘
  • 최초 발표: 1968년
  • 개발자: Peter Hart, Nils Nilsson, Bertram Raphael
  • 주요 용도: 최단 경로 탐색
  • 관련 주제: #AStar #Pathfinding #AI #게임개발 #그래프

개요

A*(A-Star) 알고리즘은 현재까지 알려진 경로 탐색 알고리즘 중 가장 널리 사용되는 최단 경로 탐색 알고리즘 중 하나이다.

출발지(Start)에서 목적지(Goal)까지 이동할 때 단순히 가까운 곳만 찾는 것이 아니라, 앞으로 얼마나 더 가야 하는지까지 계산하여 가장 효율적인 경로를 찾는다.

게임 개발, 로봇 공학, 내비게이션, 물류 시스템, AI 분야에서 널리 사용된다.


핵심 아이디어

A*는 다음 공식을 사용한다.

f(n) = g(n) + h(n)
항목의미
g(n)시작점부터 현재 노드까지 실제 비용
h(n)목표까지 예상 비용(휴리스틱)
f(n)총 예상 비용

구조

시작점

↓

현재 위치

↓

목표 위치 예상

↓

가장 유망한 노드 선택

↓

목적지 도착

A*는 장애물을 피해 가장 짧은 경로를 찾는다.


동작 과정

Open List 생성

↓

시작점 추가

↓

가장 작은 f값 선택

↓

이웃 노드 탐색

↓

g,h,f 계산

↓

Open List 추가

↓

목적지 도착 시 종료

Open List

탐색 후보 노드 목록

Open List

↓

방문 예정

우선순위 큐(Priority Queue)를 사용한다.


Closed List

이미 방문한 노드 목록

Closed List

↓

방문 완료

중복 탐색을 방지한다.


휴리스틱(Heuristic)

목표까지 얼마나 남았는지 추정하는 값

대표 방식

Manhattan Distance

|x1-x2| + |y1-y2|

격자(Grid) 게임에서 많이 사용된다.


Euclidean Distance

√((x1-x2)² + (y1-y2)²)

실제 거리 계산


Diagonal Distance

대각선 이동 가능

전략 게임에서 자주 사용된다.


예제 계산

현재 위치

(1,1)

목표

(5,5)

Manhattan

|1-5| + |1-5|

=

8

의사 코드

while(OpenList){

    현재노드 선택

    목표인가?

    종료

    이웃 탐색

    비용 계산

    OpenList 추가

}

간단 구현 예시 (Python)

import heapq

open_list = []

heapq.heappush(
    open_list,
    (0, start)
)

while open_list:

    current = heapq.heappop(
        open_list
    )

    if current == goal:
        break

실제 구현에서는 g, h, f 값을 함께 관리한다.


시간 복잡도

최악의 경우

O(b^d)

| 기호 | 의미 |

| -- | ----- |

| b | 분기 수 |

| d | 탐색 깊이 |

실제 성능은 휴리스틱 품질에 크게 영향을 받는다.


A* vs 다익스트라

A*다익스트라
휴리스틱 사용휴리스틱 없음
목적지 방향 탐색전체 탐색
보통 더 빠름상대적으로 느림
게임 개발 활용네트워크 최단경로

A* vs BFS

A*BFS
비용 계산비용 계산 없음
휴리스틱 사용사용 안 함
최적 경로 탐색최단 칸 수 탐색
대규모 맵에 유리작은 맵에 적합

A* vs DFS

A*DFS
최단 경로 가능보장 안 됨
비용 계산없음
경로 품질 높음탐색 위주

게임 개발 활용

대표 사례

  • RTS 게임
  • RPG 게임
  • MMORPG
  • 전략 시뮬레이션
  • 타워 디펜스

RTS 예시

유닛

↓

A*

↓

최단 경로 계산

↓

이동

Unity 활용

Unity에서도 A*는 매우 많이 사용된다.

대표 패키지

  • A* Pathfinding Project
  • NavMesh

AI 활용

NPC

↓

A*

↓

플레이어 추적

로봇 공학 활용

로봇

↓

A*

↓

목적지 이동

장점

  • 최적 경로 탐색 가능
  • 매우 빠름
  • 휴리스틱 활용
  • 게임 개발에 적합
  • 장애물 회피 가능

단점

  • 메모리 사용량 높음
  • 휴리스틱 품질에 의존
  • 매우 큰 맵에서는 비용 증가
  • 동적 환경에서는 재계산 필요

실무 메모

실무에서는 다음과 같은 방식이 권장된다.

  • Grid 기반 게임에 적합
  • Open List는 Heap 사용
  • Manhattan 휴리스틱 활용
  • Closed List 사용 필수
  • 대형 맵은 영역 분할 고려
  • 실시간 게임은 경로 캐싱 적용
  • 이동 비용 가중치 설계
  • 장애물 업데이트 최적화
  • Unity는 NavMesh 우선 검토
  • AI 이동 시스템과 연계

A*와 함께 사용하는 기술


대표 활용 사례

  • 스타크래프트 유닛 이동
  • RPG NPC 이동
  • 로봇 경로 탐색
  • 물류 최적화
  • 지도 서비스
  • 드론 자동 이동
  • 자율주행 일부 경로 계산
  • 게임 AI

관련 문서


출처

  • A* Search Algorithm 논문
  • Red Blob Games Pathfinding Guide
  • AI Pathfinding 관련 연구 자료

메모

  • 다익스트라 알고리즘 문서 작성 권장
  • BFS/DFS 문서 작성 가능
  • Unity NavMesh 문서 작성 가능
  • 게임 AI 경로 탐색 심화 문서 작성 가능
  • A* 최적화 기법(Jump Point Search) 문서 작성 가능
  • 다익스트라, BFS, 게임 AI와 상호 링크 추천