Step-by-Step
[Graph] 그래프 본문
그래프(Graph)
정점(Vertex)와 간선(Edge)로 구성된 자료구조
그래프 G는 꼭짓점의 집합 V와 변의 집합 E의 순서쌍으로 정의된다
G = ( V , E )
그래프 용어
- 정점(vetex) : 노드(node)라고 불리며 데이터가 저장되는 장소
- 간선(edge) : 링크, arcs 라고 불리며 노드간의 관계를 나타냄
- 인접 정점(adjacent vertex) : 간선에 의해 직접 연결된 정점
- 정점의 차수(degree) : 무방향 그래프에서 하나의 정점에 인접한 정점의 수
- 진입 차수(in-degree) : 방향 그래프에서 외부에서 오는 간선의 수
- 진출 차수(out-degree) : 방향 그래프에서 외부로 향하는 간선의 수
- 단순 경로(simple path) : 경로 중 반복되는 정점이 없는 경우
- 사이클(cycle) : 단순 경로의 시작 정점과 종료 정점이 동일한 경우
그래프 특징
- 그래프는 네트워크 모델이다
- 그래프는 노드 간 무방향, 방향, 양방향 경로를 가질 수 있다
- 그래프는 루트 노드, 부모 - 자식 관계라는 개념이 없다
- 그래프의 순회는 DFS(깊이 우선 탐색)과 BFS(너비 우선 탐색)이 있다
- 그래프는 순환(Cyclic) 또는 비순환(Acyclic)이다
- 그래프마다 간선이 있을 수도 있고 없을 수도 있다
- 트리는 그래프의 한 종류이다
그래프의 종류
1. 무방향 그래프 (Undirected Graph)
- 무방향 그래프의 간선은 간선을 통해서 양 방향으로 갈 수 있다
- 정점 A와 정점 B를 연결하는 간선은 ( A , B )와 같이 정점의 쌍으로 표현한다
2. 방향 그래프 (Directed Graph)
- 간선에 방향성이 존재하는 그래프로 간선이 향하는 방향으로만 갈 수 있다
- 정점 A에서 정점 B로 연결하는 간선은 < A , B >와 같이 표시한다
3. 가중치 그래프 (Weighted Graph)
- 간선에 비용이나 가중치가 할당된 그래프이다
- '네트워크(Network)'라고도 한다
4. 연결 그래프 (Connected Graph)
- 무방향 그래프에 있는 모든 정점쌍에 대해서 항상 경로가 존재하는 경우
- 노드들이 하나도 빠짐없이 간선에 의해 연결되어 있는 그래프
5. 비연결 그래프 (Disconnected Graph)
- 무방향 그래프에서 특정 정점쌍 사이에 경로가 존재하지 않는 경우
6. 순환 그래프 (Cyclic Graph)
- 단순 경로의 시작 정점과 종료 정점이 동일한 경우
7. 비순환 그래프 (Acyclic Graph)
- 사이클이 없는 그래프
8. 완전 그래프 (Complete Graph)
- 그래프에 속해 있는 모든 정점이 서로 연결되어 있는 그래프
9. 부분 그래프 (SubGraph)
- 어떤 그래프의 꼭짓점과 변 가운데 일부러 이루어진 그래프
그래프 구현
1. 인접 행렬
- 그래프에서 노드 간의 연결을 2차원 배열로 나타낸 방식 예) adj[][]
- 노드 간에 연결이 되어 있으면 1 없으면 0으로 표시한다
- 대각성분을 기준으로 한 대칭행렬이다
- adj[i][j] : 노드 i에서 j로 가는 간선이 있으면 1 없으면 0
2. 인접 리스트
- 그래프의 연결되어 있는 노드들을 하나의 연결 리스트로 표현하는 방법
- 그래프의 연결관계를 vector 배열로 나타내는 방식 예) vector<int> adj[]
- 각 노드에 인접하게 연결되어 있는 노드들을 순서에 상관없이 이어준다
- adj[i] : 노드 i에 연결된 노드들을 원소로 갖는 vector
[참조]
https://sarah950716.tistory.com/12
'CS공부 > 자료구조' 카테고리의 다른 글
[자료구조] 큐(Queue)와 Java로 구현 (0) | 2021.12.12 |
---|---|
[자료구조] 순환 (0) | 2021.12.08 |
[자료구조] 스택(Stack)과 Java로 구현 (0) | 2021.12.08 |
[자료구조] 추상 데이터 타입 (0) | 2021.12.02 |
자료구조와 알고리즘 (0) | 2021.12.02 |
Comments