Dijkstra & A-Star

2025. 11. 20. 15:02·📊Algorithm/탐색

다익스트라 ( Dijkstra )

가중치가 있는 길 찾기 기본형

가중치 ( 거리 , 비용 )가 있는 그래프에서 시작점 → 모든 지점까지의 최단거리를 구하는 알고리즘

가장 가까운 길부터 차근차근 확정하는 방식이다.

 

 

작동 원리

네비게이션이 도로 전체를 훑어서 최단거리 지도를 만드는 과정이라고 보면 된다.

  1. 출발점에서 가장 가까운 노드부터 확정한다.
  2. 확정된 노드를 기준으로 주변 노드의 거리를 갱신 ( update ) 한다.
  3. 다시 "가장 가까운 노드"를 뽑는다.
  4. 이 과정을 반복하면 결국 모든 지점까지의 최단거리 테이블이 만들어진다.

역할 : 하나의 시작점에서 모든 노드까지의 최단 거리를 구하는 알고리즘

조건 : 간선 가중치가 음수가 아니어야 한다 ( 0 이상 )

탐색 방식 :

    └ 지금까지 발견한 거리 중에서 제일 짧은 노드를 하나씩 확정

    └ 어디가 목표인지 모른다는 느낌으로 , 사방으로 퍼져 나가며 최소 비용을 확정

 

목표 노드가 하나든 여러 개든 상관없이 전체 최단 거리 지도를 만든다

 

 

 

에이스타 ( A* , 다익스트라 + Heuristic 추가 )

목적지까지 최단 경로를 더 빨리 찾기 위한 최적화된 길찾기

Unity NavMesh 또는 2D Grid Pathfinding 에서 자주 사용된다

 

 

작동 원리

A* 는 다익스트라 방식에 휴리스틱 ( Heuristic )이라는 예상치를 더해 빠르게 목적지 방향으로 탐색하는 알고리즘

즉 , 가장 싸게 갈 수 있을 것 같은 길을 먼저 탐색한다.

역할 : 시작 노드 → 특정 목표 노드까지의 최단 경로를 찾는 알고리즘

핵심 차이 :

    └ 다익스트라는 지금까지 온 실제 거리 ( G ) 만 보고 판단한다

    └ A* 는 여기에 앞으로 남은 거리의 추정값 ( H )까지 더해서 F = G + H 로 판단한다

H ( 휴리스틱 )

    └ 목표까지 얼마나 남았을까? 대략적인 예측

    └ 예 : 2D 좌표에서 유클리드 거리 , 맨해튼 거리 등

A* 는 목표 방향으로 유망해 보이는 곳부터 집중적으로 탐색

제대로 된 휴리스틱을 쓰면 다익스트라보다 훨씬 적은 노드를 보고도 같은 최단 경로를 찾을 수 있다.

 

 

 

Dijkstra vs A - Star

공통점

  • 둘 다 가중치 그래프에서 최단 경로를 찾는 알고리즘이다
  • 간선 가중치가 음수가 아니면 최단 경로를 보장할 수 있다

차이점

항목 다익스트라 에이스타
목적 시작 → 모든 노드 최단거리 시작 → 특정 목표 노드 최단 경로
사용하는 값 G ( 지금까지 비용 ) G + H ( 실제 비용 + 휴리스틱 )
휴리스틱 ( H ) 사용하지 않는다 사용한다
탐색 범위 사방으로 고르게 퍼진다 목표 방향으로 치우쳐 탐색한다
속도 더 많은 노드를 탐색할 수도 있다 좋은 H 사용 시 훨씬 빠르다
특수 케이스 ㅡ H 를 항상 0 으로 두면 다익스트라와 같아진다
  • 다익스트라 : 목적지가 어딘지 상관없이 시작점에서 모든 노드까지의 최단거리를 계산
  • 에이스타 : 명확한 목표 지점이 반드시 있다. 목표가 어딘지 알기 때문에 H 으로 방향을 예측하면서 탐색한다.

 

 

정리

다익스트라 : 시작점에서 모든 곳까지 , 완전히 최단거리 지도를 만들어줘

에이스타 : 이 목표까지 가야 한다. 대충 방향 감 ( 휴리스틱 ) 도 있으니까 , 유망한 길부터 빠르게 찾아줘.

'📊Algorithm > 탐색' 카테고리의 다른 글

Dijkstra 다익스트라  (0) 2025.11.20
너비 우선 탐색 ( BFS )  (0) 2025.11.14
깊이 우선 탐색 ( DFS )  (0) 2025.11.14
A-Star ( A* )  (0) 2025.11.10
탐색 알고리즘 ( Search Algorithms )  (0) 2025.11.10
'📊Algorithm/탐색' 카테고리의 다른 글
  • Dijkstra 다익스트라
  • 너비 우선 탐색 ( BFS )
  • 깊이 우선 탐색 ( DFS )
  • A-Star ( A* )
DevHoChan
DevHoChan
맨땅에서 시작하는 코딩 도전
  • DevHoChan
    Debugging Life
    DevHoChan
  • 전체
    오늘
    어제
    • 분류 전체보기 (374)
      • 🕹️Game Life (1)
      • 🖥️Computer Science (5)
      • 📖TIL (141)
        • 🔥Projects (16)
        • 💡DevTips (5)
        • 🤔발생한 문제와 해결 (5)
        • 🔮Unity Graphics (5)
        • 🎤Interview (3)
        • ✅CodingTest (9)
      • 🚀Game Release (4)
      • 🧊Unity Basic (58)
        • 📌용어 사전 (1)
        • 에디터&인터페이스 (3)
        • 디버그 (1)
        • 라이프사이클 (4)
        • 게임오브젝트 (4)
        • 프리팹 (1)
        • 오브젝트풀링 (4)
        • 애트리뷰트 (2)
        • 트랜스폼 (4)
        • 물리&충돌 (1)
        • 프레임&델타타임 (4)
        • 코루틴&이벤트 (7)
        • 수학&보정함수 (3)
        • 디자인패턴 (9)
        • UGUI (3)
        • 벡터 ( Vector ) (3)
        • 씬 ( Scene ) (2)
        • 데이터 관리 (2)
      • ⭐C Sharp (99)
        • 📌용어 사전 (1)
        • 📌문법 사전 (6)
        • 메모리 관리 (3)
        • 00. 문법 (17)
        • 01. 변수 (3)
        • 02. 자료형 (2)
        • 03. 연산자 (6)
        • 04. 조건문 (2)
        • 05. 반복문 (2)
        • 06. 배열 (3)
        • 07. 메서드(함수) (7)
        • 08. 열거형 (3)
        • 09. 구조체 (2)
        • 10. 참조 (2)
        • 11. 객체 지향 (11)
        • 12. 델리게이트 (3)
        • 13. 디자인 패턴 (7)
        • 14. LINQ (1)
        • 📂▼자료구조 (2)
        • 15-1. 제네릭 (3)
        • 15-2. 배열 (4)
        • 15-3. 리스트 (2)
        • 15-4. 스택과 큐 (2)
        • 15-5. 딕셔너리 해시테이블 (2)
        • 15-6. 트리와 그래프 (3)
      • 📊Algorithm (16)
        • BigO (2)
        • 정렬 (4)
        • 셔플 (2)
        • 탐색 (6)
        • 최적화 (1)
      • 📝Game Design (16)
      • 🤖​AI Tools (12)
        • AI 리뷰 분석 (6)
        • Player2 (0)
        • 3D 모델링 (1)
        • 2D 스프라이트 (0)
        • 이미지 (2)
        • 사운드 (1)
        • 동영상 (1)
        • 문서 (1)
      • 🌍Network (6)
      • 🌱Github (11)
        • 기본 개념 (7)
        • 명령어 (1)
        • 도구 활용 (1)
      • ⚙️Visual Studio (5)
        • 🔧설치 및 환경설정 (2)
        • ⌨️HotKey (1)
        • 🚨디버깅 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    til
    자료구조
    메모리관리
    게임디자인
    기획
    algorithm
    gamedesign
    부트캠프
    unity
    디자인패턴
    게임기획
    OOP
    자료형
    객체지향
    GitHub
    문법
    c#
    CodingTest
    유니티
    csharp
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
DevHoChan
Dijkstra & A-Star
상단으로

티스토리툴바