인접 행렬

IT 위키

인접 행렬(Adjacency Matrix)은 그래프를 표현하는 방법 중 하나로, 정점 간의 연결 관계를 2차원 행렬 형태로 나타낸다. 인접 행렬은 그래프의 저장과 연산을 효율적으로 수행하는 데 사용된다.

1 정의[편집 | 원본 편집]

인접 행렬 A는 그래프 G = (V, E)에 대해 다음과 같이 정의된다.

  • Aij = 1 (i에서 j로 간선이 존재하면 1)
  • Aij = 0 (i에서 j로 간선이 없으면 0)

무향 그래프의 경우 인접 행렬은 대칭 행렬이 된다.

2 인접 행렬의 특징[편집 | 원본 편집]

  • 그래프의 정점 개수가 V일 때, 인접 행렬의 크기는 V × V이다.
  • 밀도가 높은 그래프(간선이 많은 경우)에 적합하다.
  • 간선이 있는지 확인하는 연산은 O(1)로 빠르다.
  • 공간 복잡도는 O(V²)이며, 희소 그래프에는 비효율적이다.

3 인접 행렬 예제[편집 | 원본 편집]

다음 무향 그래프를 인접 행렬로 표현한다.

  • 정점 집합 V = {1, 2, 3, 4}
  • 간선 집합 E = {(1,2), (1,3), (2,3), (3,4)}
인접 행렬 예제
정점 1 2 3 4
1 0 1 1 0
2 1 0 1 0
3 1 1 0 1
4 0 0 1 0

4 가중 그래프의 인접 행렬[편집 | 원본 편집]

가중 그래프(Weighted Graph)의 경우, 인접 행렬의 값은 간선의 가중치로 저장된다.

  • Aij = w (i에서 j로 가중치 w의 간선이 있을 경우)
  • Aij = 0 (간선이 없을 경우)

예제:

가중 그래프의 인접 행렬
정점 1 2 3 4
1 0 5 2 0
2 5 0 1 0
3 2 1 0 3
4 0 0 3 0

5 인접 행렬 vs 인접 리스트[편집 | 원본 편집]

인접 행렬과 인접 리스트 비교
항목 인접 행렬 인접 리스트
공간 복잡도 O(V²) O(V + E)
간선 존재 확인 O(1) O(degree)
모든 간선 순회 O(V²) O(E)
희소 그래프 적합성 낮음 높음

6 인접 행렬의 활용[편집 | 원본 편집]

  • 그래프 탐색
    • DFS, BFS 알고리즘에서 간선 존재 여부 확인이 빠름.
  • 최단 경로 알고리즘
    • 플로이드-워셜 알고리즘에서 인접 행렬을 사용함.
  • 네트워크 분석
    • 컴퓨터 네트워크 및 사회 연결망 분석(SNA)에 활용됨.

7 같이 보기[편집 | 원본 편집]

8 참고 문헌[편집 | 원본 편집]

  • Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms. MIT Press.