본문 바로가기

자료구조

그래프 (Graph)

정의  G=(V, E)

[ V = 공집합이 아닌 정점(vertex)들의 유한집합 ]

[ E = 정점들의 쌍인 간선(edge)들의 집합 ]

 

 

무방향 그래프 (Undirected Graph)

방향 그래프 (Directed Graph)
V(G1) = {0, 1, 2, 3}
E(G1) = {(0,1), (0,2), (0,3), (1,2), (1,3), 2,3)}
  V(G3) = {0, 1, 2}
E(G3) = {<0,1>, <1,0>, <1,2>}

<u,v> = <꼬리, 머리>

E(G)의 간선 (u, v)에 대해

u와 v는 인접한다(adjacent)라고 하며

간선 (u, v)는 정점 u와 v에 부속된다(incident)고 한다.

 

 

완전 그래프 (Complete Graph)

n개의 정점을 갖는 무방향 그래프

간선 최대수 = n(n-1)/2

 

 

부분 그래프 (Sub Graph)

원래 그래프의 일부분. V(G') ⊆ V(G)

 

 

경로

E(G)에 속한 간선 (u, i1), (i1, i2), ... (ik, v)에 대해, 정점 u부터 정점 v까지의 경로는 u, i1, i2, ..., ik, v

경로의 길이

경로 상에 있는 간선들의 수

 

 

단순 경로 (Simple Path) : 처음과 마지막을 제외한 모든 정점들이 서로 다른 경로

단순 방향 경로 (Simple Directed Path) : 방향 그래프에서의 단순 경로

사이클 (Cycle) : 처음과 마지막이 같은 단순 경로

 

 

연결 그래프 (Connected Graph) 비연결 그래프
무방향 그래프 G에서 임의의 두 정점 사이에 경로가 존재
하나의 연결요소로만 구성될 때 성립
 

 

연결 요소 (Connected Component) 강력 연결 요소 (Strongly Connected Component)
무방향 graph에서 최대 연결된 부분 그래프 방향 graph의 두 정점 u,v가 서로에 대한 방향 경로가 존재하여 
이의 최대 강력 연결된 부분 그래프

H1 = {0, 1, 2, 3}, H2 = {4, 5, 6, 7}



{0, 1}, {2}

 

 

정점의 차수 (degree) : 정점에 부속한 간선들의 수

                              방향 그래프 - 진입 차수(indegree) & 진출 차수(outdegree)

 

di = 2e

[ e = 간선수 ]   [ di = 정점 i의 차수 ]

 

 

그래프 표현법

1. 인접행렬 (Adjacency Matrix)

G = (V, E)에서 정점의 수가 n일 때, G의 인접행렬은 n×n의 2차원 배열

$n^2-n$개의 항 조사 (전체 - 대각선) → O($n^2$) 소요

밀집 graph에 주로 사용 (대부분 1)

 

 

무방향 그래프

$\sum_{j=0}^{n-1}A[i][j]$ = 정점 i의 차수

 

방향 그래프

$\sum_{j=0}^{n-1}A[i][j]$ = 정점 i의 진출 차수

 

 

 

2. 인접 리스트 (Adjacency List)

인접행렬의 n행들을 n개의 연결 리스트로 표현

무방향 그래프 - n개의 head node, 2e개의 list node → O(n+e) 소요

희소 graph에 주로 사용 (대부분 0)

 

 

그래프 인접 행렬 인접 리스트

 

 

가중치 그래프

간선에 가중치를 갖는 graph

 

표현 방법

① 인접 행렬

    간선 O : 1 대신 가중치

    간선 X  : 0 혹은 ∞

② 인접 리스트

    각 node에 weight field 추가

 

 

 

'자료구조' 카테고리의 다른 글

그래프 (Graph) - 최소비용 신장 트리 (Minimum Cost Spanning Tree)  (0) 2020.07.28
이진 탐색 트리 (Binary Search Tree, BST)  (0) 2020.07.25
최대 히프  (0) 2020.07.25
트리 (Tree)  (0) 2020.07.24
자료구조 개념, 종류  (0) 2020.07.12