CS/자료구조

그래프(Graph)

이충무 2022. 9. 21. 01:12

개요


  • 정점과 간선들의 유한 집합
  • G = (V, E)
  • 정점(Vertex)
    • 여러 특성을 가지는 객체
    • 노드(node)와 같은 의미
  • 간선(edge)
    • 정점을 잇는 선
    • 객체들의 연결관계를 나타냄
    • 링크(link)라고도 함
  • 인접 정점
    • 간선으로 직접 연결된 정점
  • 간선은 방향성이 있는 경우와 없는 경우 존재

그래프의 종류


무방향 그래프 (Undirected Graph)

  • 방향이 없는 그래프
  • 노드는 간선을 통해 양방향으로 통행 가능
  • 노드 A와 B가 연결된 경우 (A, B) 또는 (B,A)로 표현
  • 정점의 차수
    • 하나의 정점에서 인접한 정점의 개수

방향 그래프(Directed Graph)

  • 간선에 방향이 있는 그래프
  • 노드 A에서 노드B로 가는 간선이 있을 때 <A,B>라고 표현
  • 진입 차수
    • 방향 그래프에서 외부에서 정점으로 들어오는 간선의 수
  • 진출 차수
    • 방향 그래프에서 정점에서 외부로 나가는 간선의 수

가중치 그래프(Weighted Graph), 네트워크(Network)

  • 간선에 비용 또는 가중치가 할당된 그래프

연결 그래프, 비연결 그래프

연결 그래프

  • 무방향 그래프의 모든 노드에 대해 항상 경로가 존재하는 그래프

비연결 그래프

  • 무방향 그래프에서 특정 노드에 대해 경로가 존재하지 않는 그래프

사이클, 비순환 그래프

사이클

  • 단순 경로의 시작 노드와 종료 노드가 동일한 경우

비순환 그래프

  • 사이클이 없는 그래프

완전 그래프

  • 그래프의 모든 노드가 서로 연결되어 있는 그래프

그래프와 트리의 차이


 

  그래프  트리
방향성 방향, 무방향 방향
사이클 순환, 비순환, 자기순환 비순환
루트 노드 루트 개념 없음 한 개의 루트 존재
부모-자식 부모-자식 개념 없음 1개의 부모 노드 존재(루트 제외)
모델 네트워크 모델 계층 모델
간선 수 자유 N-1 개

그래프의 표현


인접 행렬(Adjacent Matrix)

  • 인접 행렬의 경우 각각의 정점끼리 간선이 연결되어 있는지 여부나 가중치를 행렬로 표현
  • 장점
    • 2차원 배열에 모든 정점의 간선 정보가 있어 두 정점간 연결 정보의 조회에 O(1)의 시간 복잡도를 가짐
    • 인접리스트에 비해 구현이 쉬움
  • 단점
    • 모든 정점에 대해 간선 정보를 대입해야 하므로 노드 추가나 삭제에 O(n^2)의 시간 복잡도를 가짐
    • 무조건 2차원 배열이 필요해 필요 이상의 메모리 낭비

인접 리스트(Adjacent List)

  • 인접 리스트의 경우 각 정점을 표시하고 해당 정점에서 연결된 정점을 연결 리스트로 표현
  • 장점
    • 정점들의 연결 정보를 탐색할 때 O(n)의 시간 복잡도를 가짐
    • 필요한 만큼의 메모리만 사용하기 때문에 메모리 낭비가 적음
  • 단점
    • 특정 두 정점이 연결되어있는 조회 시 인접행렬에 비해 오래 걸림 → O(E)
    • 구현이 비교적 어려움

깊이 우선 탐색 VS 너비 우선 탐색


깊이 우선 탐색(DFS, Deep First Search)

  • 한방향으로 인접한 정점이 없을 때 까지 탐색 한 후 다른 방향으로 탐색하는 방식
  • 모든 노드를 방문하고자 하는 경우
  • 너비 우선 탐색보다 간단한 구조
  • 검색속도는 너비 우선 탐색 보다 느림
  • 스택이나 재귀함수를 통해 구현

너비 우선 탐색(BFS, Breadth First Search)

  • 너비 우선 탐색은 해당 정점에 인접한 정점을 먼저 탐색하는 방식
  • 두 노드 사이의 최단 경로를 찾는 경우
  • 깊이 우선 탐색에 비해 검색속도가 빠름
  • 큐를 이용하여 구현

 

신장 트리(Spanning Tree)


개요

  • 그래프 내 모든 정점을 포함하는 트리
  • 그래프의 최소 연결 부분 그래프
    • 간선 수가 가장 적음
    • n개의 정점을 가지는 그래프의 최소 간선 수는 n-1개
    • n-1개의 간선을 가진 그래프는 트리의 형태를 가지고 이러한 트리를 신장 트리라고 부름

특징

  • DFS, BFS를 이용하여 그래프에서 신장 트리 탐색 가능
    • 탐색 도중 사용된 간선의 개수가 n-1개
  • 하나의 그래프에 많은 신장트리 존재
  • 모든 정점들이 연결되어 있고 사이클이 포함되어 있으면 안됨
  • n개의 정점을 (n-1)개의 간선으로 연결된 그래프