그래프란 연결의 집합을 모형화 한 것이다.
그래프는 정점(node) 과 간선(edge)로 이루어져 있는데, 정점은 여러 개의 다른 정점과 바로 이어질 수 있다. 이렇게 바로 이어진 정점을 이웃이라고 한다. 그래서 2
는 1
의 이웃이다.
최단 경로 문제를 푸는 알고리즘 이다.
최단경로를 정리 하자면 두가지 질문에 대해 대답할수 있다.
1. 정점 a에서 정점 b로 가는 경로가 존재 하는가?
2. 정점 a에서 정점 b로 가는 최단 경로는 무엇인가?
큐(대기열) 는 큐 안의 원소에 임의로 접근할수 없는데, 삽입과 제거와 같은 연산을 사용한다.
그래프 표현은 해시 테이블로 할수 있다!
해시 테이블을 사용하면 키에 값을 할당 할수 있는데 이런 경우에는 어떤 정점에 이웃하는 정점을 할당 하면 된다.
예를 들면 아래의 코드와 같다.
let graph = {};
graph["I"] = ["alice", "bob", "claire"];
알고리즘이 구현되는 방식은 다음과 같다
YES?
작업완료 | NO?
그사람의 이웃을 모두 큐에 추가한다.큐를 갱신할 때 push와 pop을 사용하는 것이다!
참고
'Hello Coding 알고리즘' 책을 공부하여 요약정리한 내용입니다.