그래프

Updated:

강의 사이트
  • http://www.kocw.net/home/search/kemView.do?kemId=1148815

그래프

1. 그래프 (Graph)

  • undirected graph라고도 한다.

  • directed graph는 (u, v)와 (v, u)가 서로 다를 때를 말한다.
  • 위의 그림에서 철수에서 영희로 가는 방향(엣지), 영희에서 철수로 가는 방향가 서로 다르다고 정의 할 때

2. 그래프의 표현

2.1 인접행렬 (adjacency matrix)

  • (1, 2)의 값이 1, (2, 1)의 값도 1 서로 이렇게 (i, j ), (j, i) 값이 같다면 인접행렬이라고 한다.
  • 어떤 노드에 인접한 모든 노드를 찾으려면 O (N) 시간이 걸린다. 왜냐하면 노드 3의 경우 인접한 노드가 1,2,5, 7, 8이다. 인접행렬에서 3행의 모든 열을 검색해야 한다.
  • (U, V) 검색은 당연히 한 번만 검색하면 되기 때문에 O(1)

2.2 인접리스트 (adjacency list)

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

  • n은 노드의 개수

  • m은 edge의 개수
  • 리스트를 구성하는 총 노드의 개수가 2m인 이유는 인접한 노드들의 엣지가 양방향이므로 각 노드에 하나씩 있기 때문에. 예를 들어 노드 2를 보면 연결된 엣지들에 5가 있고 노드 5에는 엣지들에 2가 있기 때문에

  • 저장 공간 O(n+m) : 원래는 O(n+ 2m)인데 표현에 의해서 이렇게

  • 어떤 노드 v에 인접한 모든 노드 찾기 : O(degree(v)) 시간. 노드에 연결된 노드들만 검사하면 되는 시간. 물론 최악으로 한 노드가 모든 노드를 연결되어 있다면 n-1이 될 수 있음.
  • 어떤 에지 (u, v)가 존재하는지 검사 : O(degree(u)) 시간. 노드 v인접 노드 찾기랑 같은 원리

2.3 방향 그래프

  • 단방향 엣지만 있는 경우
  • 자신을 가르키는 엣지도 있음

  • 인접행렬은 비대칭
  • 인접리스트는 m개의 노드를 가짐

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

  • 에지의 존재를 나타내는 값으로 1 대신 에지의 가중치를 저장
  • 에지가 없을 때 혹은 대각선
    • 특별히 정해진 규칙은 없으며, 그래프와 가중치가 의미하는 바에 따라서
    • 예 : 가중치가 거리 혹은 비용을 의미하는 경우라면 에지가 없으면 무한대. 대각선은 0
    • 예 : 만약 가중치가 용량을 의미한다면 에지가 없을 때 0. 대각선은 무한대.
  • 무한대라고 해서 우리가 아는 무한대가 아니라 그냥 가져다 쓰는 느낌. 가는 방향(에지)가 없다고 보자.
  • 용량은 예를 들어서 노드 i에서 노드 j로 가는데 길이 3가지 or 10가지가 있다. 도시로 이야기하면 서울에서 대구까지는 길이 2개 대구에서 부산으로는 4개 이렇게 얘기할 때 4개가 하나의 엣지로 보는 것

4. 경로와 연결성

  • 무향향 그래프로가 일단 가정하고 간다.
  • 무방향 그래프 G=(V,E)에서 노드 u와 노드 v를 연결하는 경로(path)가 존재할 때 v와 u는 서로 연결되어 있다고 말함
  • 노든 노드 쌍들이 서로 연결된 그래프를 연결된(connected) 그래프라고 한다.
  • 연결요소 (connected component)

  • 위 그림에서는 3개의 연결 요소가 있다~ 라고 말할 수 있다.