3. Decompositions of Graphs (1) Graph


Sanjoy Dasgupta가 저술한 책인 Algorithms과 이기창님의 블로그, Heee님의 블로그를 참고하였다.


1. Graph(그래프)

노드(정점)와 엣지(간선)의 집합으로 구성된 자료구조

그림으로 나타내면 다음과 같다. 노드의 집합을 $V$, 간선의 집합을 $E$라고 표기한다.
또, 노드 $x$와 $y$의 간선을 $e = $ {$x, y$}라고 표기한다.


2. Graph(그래프) 용어 정리


3. Graph(그래프)의 종류

3-1. Sparse / Dense graph

노드의 개수 $\vert V \vert$, 간선의 개수 $\vert E \vert$에 대하여

3-2. Directed / Undirected graph
3-3. Weighted graph

Weighted graph(가중치 그래프) : 간선에 비용(가중치)이 할당된 그래프. 네트워크라고도 한다.

3-4. Connected / Disconnected graph
3-5. Cyclic / Acyclic graph
3-6. 기타


4. Graph(그래프)의 특징

Tree와 비교하여 Graph의 특징을 나타내면 다음과 같다.


5. Graph(그래프)의 구현

그래프의 구현방식으로는 인접리스트와 인접행렬이 있다.

보통 효율적인 측면에서 인접 리스트(Adjecency List)가 많이 사용되고 있다. 인접 행렬에서 각각 인접한 노드를 찾기 위해서는 모든 노드를 전부 순회해야하기 때문이다.


6. Graph(그래프)의 시간복잡도

전체 노드 수가 $V$개, 엣지 수가 $E$개라고 하자. 그래프에서 시간복잡도를 다루는 기준은 임의의 두 노드가 서로 인접해있는지 여부를 아는 것과 임의의 노드로부터 인접해있는 노드를 찾는 것이다.