본문 바로가기
Study/개념 정리

[Study] Graph와 길찾기

by chobbo 2024. 7. 19.

길찾기 알고리즘 종류

- DFS / BFS

- 다익스트라 알고리즘

- 플로이드 워셜 알고리즘

- A* 알고리즘

 

 

각 길찾기 알고리즘의 차이점?

 DFS / BFS

 

CT-Study/PART 2/Chapter 5, DFS&BFS.md at master · JeongEunJi1127/CT-Study

🔎 코딩테스트 공부 결과물 정리를 위한 저장소 . Contribute to JeongEunJi1127/CT-Study development by creating an account on GitHub.

github.com

 

 

 

다익스트라 알고리즘

- 특정 노드에서 갈 수 있는 모든 경로에 대한 최단 거리를 찾고 그 중 가장 비용이 적은 노드를 선택

- 위의 정의에서 알 수 있듯이 그리디 알고리즘으로 분류된다

- 시간복잡도 : O(N^2) (개선된 다익스트라 알고리즘은 O(ElogV) (V = 노드의 개수, E = 간선의 개수) )

 

 

CT-Study/PART 2/Chapter 9, 최단 경로.md at master · JeongEunJi1127/CT-Study

🔎 코딩테스트 공부 결과물 정리를 위한 저장소 . Contribute to JeongEunJi1127/CT-Study development by creating an account on GitHub.

github.com

 

 

플로이드 워셜 알고리즘

- 모든 지점에서 다른 모든 지점까지의 최단 경로를 모두 구해야 하는 경우에 사용

- 시간복잡도 : O(N^3) 

 

 

A* 알고리즘

아래 참고

 

 

A* 알고리즘

다익스트라 알고리즘을 확장하여 만들어진 경로 탐색 알고리즘 

출발 꼭짓점에서 목표 꼭짓점까지 가는 최단 경로를 찾아내는 휴리스틱 기반의 그래프 탐색 알고리즘

즉, 출발지와 도착지가 주어질 때 최단 경로를 찾는 휴리스틱 알고리즘이다.

다음으로 갈 정점을 결정할 때 목표 지점으로 부터 멀어지는 것을 고려하지 않는 다익스트라 알고리즘과 달리 에이스타 알고리즘은 목표 지점까지의 추정 코스트도 함께 고려해서 탐색한다.

1. 그래프 상에서의 모든 정점의 부모 노드를 -1로 초기화하고, 비용은 INF값으로 설정한다.
2. 시작노드의 비용을 0으로 초기화하고, 시작노드의 부모노드는 시작노드를 가리킨다.
3. 현재 노드를 기준으로 모든 방향의 노드에 대한 비용을 계산한다.
4. 비용이 계산된 노드들 중 최소 비용을 가지는 노드가 다음 노드가 된다.
5. 다음 노드의 부모노드는 현재 노드를 가리킨다.
6. 3~5를 반복한다.
7. 만약 다음 노드가 도착노드라면, 탐색을 중지하고 최적의 경로를 계산한다.

 

 

 

 

예시

Graph가 무엇인지 알고 있나요?

노드(node)와 노드를 연결하는 간선(edge)들로 이루어져 있는 자료구조

& 사이클 존재 가능

& 루트 노드 존재 X

& 방향 그래프 뿐 아니라 무방향 그래프도 존재한다

 

Tree는 Graph인가요? Graph는 Tree인가요?

Tree는 Graph이다. Graph가 더 큰 개념

 

NavMesh가 길찾기를 위해 사용하는 알고리즘은 무엇인가요?

: A* 알고리즘

'Study > 개념 정리' 카테고리의 다른 글

[Study] 멀티스레드 & GPU  (0) 2024.07.23
[Study] JSON과 직렬화  (0) 2024.07.22
[Study] Tree  (0) 2024.07.18
[Study] 최적화  (0) 2024.07.17
[Study] 코루틴  (0) 2024.07.16