A. A*
1. A* 알고리즘
a. A*란?
🌟 주어진 시작 지점에서 목표 지점까지의 최적 경로를 찾는 데 사용
- 그래프 검색 및 경로 탐색 알고리즘의 일종
- 출구의 개념을 알아 출구로 갈수록 가산점이 있음
- 그래프 내에서 가장 짧은 경로를 찾는 데 사용되며, 다양한 문제 도메인에서 널리 사용
- 우선순위 큐를 사용하여 구현
b. A*의 두가지 개념
- 비용 기능 (Cost function): 각 노드에 대해 시작 지점부터의 비용을 나타내는 함수. 즉, 입구에서부터의 비용
- 휴리스틱 (Heuristic): 각 노드에서 목표 지점까지의 추정 비용을 나타내는 함수. 휴리스틱은 종종 "거리" 또는 "비용"을 기반으로 함. 즉, 출구에서부터의 비용
c. 알고리즘
이 비용 기능과 휴리스틱을 사용하여 각 노드의 "평가 함수"를 계산
평가 함수가 가장 낮은 노드를 우선적으로 탐색
목표 지점에 도달할 때까지 계속해서 노드를 확장하고, 최적 경로를 찾음
d. 한계점
휴리스틱이 항상 실제 최적 경로를 제공하는 것은 아님
그러나 A*는 매우 효율적이라 광범위하게 사용됨
B. Maze Project
1. A* 기반 길찾기
a. CalculatePath_AStar()
1) 기초 틀 생성하기



꼭 g랑 h를 동시에 사용해야하는건 아니고
우선순위로 생각하는 (시작점에서 계산할건지, 혹은 목적지에서 계산할건지) 것에 따라 하나만 사용할 수 있음

2) 기본정보 작성






3) 예약시스템 구현



4) 대각선까지 지원해야 한다면


[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버 -
어디부터 시작할지 막막한 게임 프로그래밍 입문자를 위한 All-In-One 커리큘럼입니다. C++, 자료구조/알고리즘, STL, 게임 수학, Windows API, 게임 서버 입문으로 이어지는 알찬 커리큘럼으로 게임 프
www.inflearn.com
'자료구조와 알고리즘 > Algorithm' 카테고리의 다른 글
[게임 프로그래머 입문 올인원] STL Algorithms : 퀵정렬 (79강) (0) | 2024.03.28 |
---|---|
분할 정복(Divide and Conquer) 알고리즘 1 : 이진 탐색 (Binary Search) (0) | 2024.02.22 |
[게임 프로그래머 입문 올인원] 다익스트라 (61강) (0) | 2024.02.19 |
[게임 프로그래머 입문 올인원] 그래프와 알고리즘 : DFS, BFS (58, 59강) (0) | 2024.02.17 |
[게임 프로그래머 입문 올인원] 선형 자료구조 : 시간복잡도 (49강) (0) | 2024.02.14 |