Step-by-Step

[Graph] 그래프 본문

CS공부/자료구조

[Graph] 그래프

희주(KHJ) 2021. 7. 5. 14:38

그래프(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

https://velog.io/@gimtommang11/자료구조그래프

https://ko.wikipedia.org/wiki/그래프_(자료_구조)

Comments