IT용어위키



인접 행렬

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

정의

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

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

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

인접 행렬의 특징

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

인접 행렬 예제

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

  • 정점 집합 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

가중 그래프의 인접 행렬

가중 그래프(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

인접 행렬 vs 인접 리스트

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

인접 행렬의 활용

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

같이 보기

참고 문헌

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

  출처: IT위키(IT위키에서 최신 문서 보기)
  * 본 페이지는 공대위키에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 공대위키에서 확인하세요!