노드와 간선(노드와 노드를 잇는 선)으로 이루어진 자료구조이다.
트리와 그래프의 관계
- 큰 범위 안에서는 트리는 그래프의 일종이다.
트리
- 방향성이 있는 비순환 그래프
- 한 개의 루트 노드만이 존재 (자식 노드는 하나의 부모 노드만을 가진다.)
- 전위, 중위, 후위 순회 및 계층 순회(level-Order)
- 노드가 N개이면 항상 N-1개의 간선을 가짐
그래프
- 노드와 간선으로 이루어짐
- 방향성, 무방향성 그래프 모두 존재
- 루트 노드의 개념이 없다
- 깊이 우선 탐색(DFS : Depth First Search), 너비 우선 탐색(BFS :Breadth First Search)
- 그래프에 따라 간선의 수가 다르다
그래프의 종류
a. 무방향 그래프(Undirected Graph)
- 방향이 없는 그래프
- 간선을 통해, 노드는 양방향으로 갈 수 있다.
- 노드 A,B가 연결되어 있을 경우 (A,B) 또는 (B,A)로 표기한다.
(간선으로 A노드와 B노드가 연결되어 있는 경우)
b. 방향 그래프(Directed Graph)
- 간선에 방향이 있는 그래프 (간선이 -> 처럼 방향이 있다)
- 노드 A,B가 A->B로 연결되어 있는 경우 <A,B>로 표기한다.
c. 가중치 그래프(Weighted Graph)
- 간선에 비용 또는 가중치가 할당된 그래프
d. 연결 그래프(Connected Graph)
- 무방향 그래프에 있는 모든 노드에 대해 경로가 존재하는 경우
e. 비연결 그래프(Disconnected Graph)
- 무방향 그래프에서 특정 노드에 대해 경로가 존재하지 않는 경우
f. 싸이클(Cycle)
- 단순 경로의 시작 노드, 종료 노드가 동일한 경우
g. 비순환 그래프(Acyclic Graph)
- 사이클이 없는 그래프
h. 완전 그래프(Complete Graph)
- 그래프의 모든 노드가 서로 연결되어 있는 그래프
용어
a. 정점의차수(Degree)
- 무방향 그래프에서 하나의 정점에 인접한 정점의 수
b. 진입 차수(In-Degree)
- 방향 그래프에서 외부에서 오는 간선의 수
c. 진출 차수(Out-Degree)
- 방향 그래프에서 외부로 향하는 간선의 수
d. 경로 길이(Path Length)
- 경로를 구성하기 위해 사용된 간선의 수
e. 단순 경로(Simple Path)
- 처음 정점과 끝 정점을 제외하고 중복된 정점이 없는 경로
(처음, 끝 정점은 중복 가능)
f. 사이클(Cycle)
단순 경로의 시작 장점과 종료 정점이 동일한 경우
참고 출처
재미있는 사이트를 찾았다.
그래프 공부 중에 찾았는데 많은 사람들이 이용하는 알고리즘 문제 사이트인거 같다. BFS 문제를 하나 풀어보았는데 내가 얼마나 머리가 굳었는지 뼈져리게 느꼈다..
'프로그래밍 > 기본기ㆍ자료구조' 카테고리의 다른 글
Camel Case (카멜 표기법) (0) | 2020.04.22 |
---|---|
Map (맵) (0) | 2020.04.19 |
Tree (트리) (0) | 2020.04.15 |
DeQueue (데큐,데크) (2) | 2020.04.14 |
Priority Queue (우선순위 큐) (0) | 2020.04.14 |