정의
그래프와 트리의 차이
무방향 그래프 vs 방향 그래프
무방향 그래프 (Undirected Graph)
- 두 정점을 연결하는 간선에 방향이 없는 그래프
방향 그래프 (Directed Graph)
- 두 정점을 연결하는 간선에 방향이 존재하는 그래프
가중치 그래프 (Weighted Graph)
연결 그래프 vs 비연결 그래프
연결 그래프 (Connected Graph)
- 무방향 그래프에 있는 모든 정점쌍에 대해서 항상 경로가 존재하는 경우
비연결 그래프 (Disconnected Graph)
- 무방향 그래프에서 특정 정점쌍 사이에 경로가 존재하지 않는 경우
완전 그래프 (Complete Graph)
인접 리스트 (Adjacency List)
그래프의 노드들을 리스트로 표현한 방법
주로 정점의 리스트 배열을 만들어 관계를 설정하여 구현합니다.
장점
1. 정점들의 연결 정보를 탐색할 때 O(n)의 시간이면 가능합니다. (n : 간선의 갯수)
2. 필요한 만큼의 공간만 사용하기 때문에 공간의 낭비가 적습니다.
단점
1. 특정 두 점이 연결되어 있는지 확인하는 시간이 인접행렬에 비해 오래 걸립니다.
2. 구현이 비교적 어렵습니다.
**인접 행렬 (Adjacency Matrix)
그래프의 노드를 2차원 배열로 만든 것입니다.
matrix[i][j] 가 true라면 i → j로의 간선이 존재한다는 뜻이다.
장점
1. 두 점에 대한 연결 정보를 탐색할 때 O(1)의 시간복잡도면 가능합니다.
(2차원 배열안에 모든 정점들의 간선 정보를 담기 때문에)
2. 구현이 비교적 간편합니다.
단점
1. 모든 정점에 대해 간선 정보를 대입해야 하므로 O(n2)의 시간복잡도가 소요됩니다.
2. 무조건 2차원 배열이 필요하기에 필요 이상의 공간이 낭비됩니다.