그래프는 N:M의 자료를 나타낸다.
그래프를 표현하는 방법은 인접 행렬과 인접 리스트가 있다.
isConnected(i,j) : O(1)
adjecentList[] : O(V)
공간 복잡도 : V^2
무방향 그래프의 경우 대각선을 기준으로 대칭성을 갖는다.
그래프의 순회 방법 DFS,BFS
모든 정점과 간선을 살펴봐야 하므로 O(V+E)
방문 체크는 필수이다. 트리와 달리 방문한 곳을 재방문할 여지가 있기 때문이다.
최단경로는 주어진 그래프의 형태와 구하고자 하는 상황에 따라 달라진다.
간선의 가중치가 양수이면서, 한 정점에서 다른 모든 정점으로의 최단 거리를 알고자 할 때 : 다익스트라 O(ElogV, V^2)
- 방문하지 않은 정점 중 가장 가까운 정점을 선택
모든 정점에서 다른 모든정점으로의 최단 거리를 알고자 할 때 : 플로이드 워셜 O(V^3)
- 2차원 INF 초기화 후, 경유지, 출발지, 도착지의 3중 포문으로 구현한다.
간선의 가중치가 음수가 포함되어 있다면 : 벨만포드 O(VE)
- 아이디어는 다익스트라랑 같은데 모든 정점에 대해서 모든 간선을 확인하며