Graph
Graph 정의
정점(Vertex)과 간선(Edge)의 집합
그래프 용어 정리
방향 그래프 (Directed Graph) : 간선에 방향이 있는 그래프
무방향 그래프(Undirected Graph) : 간선에 방향이 없는 그래프
차수(Degree) : 임의의 정점에 인접한 정점의 수
경로 : 시작 정점 u로부터 도착 정점 v까지의 정점들
- 단순 경로 : 경로 내 모든 정점들이 다른 경우
- Cycle : 시작 정점과 도착 정점이 동일한 경우
연결 성분 (Connected Component) : 그래프에서 정점들이 서로 연결되어 있는 부분
가중치 그래프 (Weighted Graph) : 간선에 가중치가 부여된 그래프
신장트리 (Spanning Tree) : 그래프가 하나의 연결성분으로 구성되어 있을 때, 그래프의 모든 정점들을 cycle없이 연결하는 부분 그래프
그래프 구현 방법
그래프를 구현하기 위한 방법으로 2가지가 존재한다.
- 인접행렬 (Adajacent Matrix) : 2차원 배열로 표현하는 방법으로 n개의 정점이 존재한다고 하였을 떄 , n x n 배열로 표현하여 그래프의 정점 i 와 정점 j 간에 연결선이 존재하면 1을 표시하고, 연결선이 존재하지 않으면 0을 표시하여 구성한다. dense graph를 표현할떄 유리하다.
- 장점 : 정점간의 연결선 여부를 O(1) 으로 파악 가능
- 단점 : O(N^2)의 공간 복잡도를 가짐
- 인접 리스트 (Adjacency List) : 정점과 해당 정점에 인접한 정점들을 연결리스트로 표현하는 방식으로, n개의 정점이 존재한다고 하였을떄, n x n 연결리스트로 구성된다. sparse graph를 표현할떄 유리하다.
- 장점: O(N+E)의 공간 복잡도를 가짐
- 단점 : 정점간의 연결선 여부를 O(N) 으로 파악가능
1 | public class Graph<T> { |