1. 그래프의 정의: 07_Graph (이산수학)
  2. 그래프의 표현: 08_Graph (자료구조)
  3. Graph Algorithms

1. 그래프의 표현

항목인접 행렬인접 리스트
공간 복잡도(Space Complexity)
적합한 경우 (공간 효율적)밀집 그래프희소 그래프
인접 정점 열거
간선 존재 확인 (최악 )
전체 간선 수
항목인접 행렬인접 리스트
메모리O(n²)O(n + 2e)
간선 (u,v) 확인O(1)O(d_u)
v의 차수 계산O(n)O(d_v)
전체 간선 수O(n²)O(n + e)

1.1. 인접 리스트

  • 인접 리스트 (Adjacency List)

    • 개의 리스트로 구성된 배열

    • : 에 인접한 정점들이 저장됨

    • 각 정점마다 인접 정점들을 연결 리스트로 저장 (가중치 그래프면 가중치도 함께 저장)

  • Space Complexity:

    • Edge의 수가 적은 희소 그래프(Sparse Graph; )에서 효율적이다.
  • 장점: 희소 그래프에서 공간 효율적, 다양한 변형 지원

  • 단점: 간선 존재 확인이 (최악 )

그래프 종류합계저장 공간
방향 그래프Σ outdeg(v) = |E|
무방향 그래프Σ deg(v) = 2|E|

1.2. 인접 행렬

  • 인접 행렬 (Adjacency Matrix)

    • 행렬 A (n×n 크기의 2차원 배열 A로 표현)
      • 간선 가 있으면 , 없으면
    • 무방향 그래프에서는 대칭 행렬 ()
  • Space Complexity:

    • Edge의 수가 많은 밀집 그래프(Dense Graph; )에서 효율적이다.
  • 장점: 존재 확인

  • 단점: 큰 그래프에서 메모리 비효율적

  • 특징

    • 반사성(Reflexivity)이 있으면 모든 주대각선 1
    • 대칭성(Symmetric)이 있으면 대칭행렬, 무방향 그래프는 항상 대칭행렬