그래프(graph) 개념과 표현

Reading time ~1 minute

인프런의 영리한 프로그래밍을 위한 알고리즘 강좌를 보고 작성한 문서입니다.


그래프

(무방향) 그래프 G = (V, E)

  • V : 노드(node) 혹은 정점(vertex)

  • E : 노드쌍을 연결하는 에지(edge) 혹은 링크(link)

  • 개체(object)들 간의 이진관계를 표현

  • n=|V|, m=|E|

    그래프1

방향 그래프와 가중치 그래프

방향_그래프

방향그래프(Directed Graph) G = (V, E)

  • 에지 (u, v)는 u로부터 v로의 방향을 가짐

가중치(weighted) 그래프

  • 에지마다 가중치(weight)가 지정

그래프의 표현

인접행렬 (adjacency matrix)

그래프의_표현

인접리스트 (adjacency list)

그래프의_표현2

  • 정점 집합을 표현하는 하나의 배열과
  • 각 정점마다 인접한 정점들의 연결 리스트

방향 그래프

  • 인접행렬은 비대칭

  • 인접 리스트는 m개의 노드를 가짐

    방향_그래프_표현

가중치 그래프의 인접행렬 표현

에지의 존재를 나타내는 값으로 1대신 에지의 가중치를 저장

에지가 없을 때 혹은 대각선:

  • 특별히 정해진 규칙은 없으며, 그래프와 가중치가 의미하는 바에 따라서

  • 예: 가중치가 거리 혹은 비용을 의미하는 경우라면 에지가 없으면 ∞, 대각선은 0

  • 예: 만약 가중치가 용량을 의미한다면 에지가 없을때 0, 대각선은 ∞
    (대각선은 자기자신을 의미)


경로와 연결성

  • 무방향 그래프 G = (V, E)에서 노드 u와 v를 연결하는 경로(path)가 존재할 때 v와 u는 서로 연결되어 있다고 말함

  • 모든 노드 쌍들이 서로 연결된 그래프를 연결된(connected) 그래프라고 한다.

  • 연결요소 (connected component)

    경로와_연결성