
그래프 자료구조 핸드북 요약
주요 개요
- 핵심 요약: 그래프는 정점(vertices)과 간선(edges)으로 구성된 비선형 데이터 구조로, 현실 세계의 복잡한 관계를 모델링하고 분석하는 데 필수적이다.
- 핸드북 구성: 그래프의 정의 및 목적, 종류, 내부 구조(표현 방식), 주요 연산, 핵심 알고리즘, 활용 사례, 구현 시 고려 사항 순으로 상세히 설명한다.
1. 그래프의 정의 및 목적
그래프는 유한한 정점 집합 V와 정점 간의 연결 관계를 나타내는 간선 집합 E로 구성된다1.
- 정점(Vertex, Node): 데이터 단위 또는 개체를 표현
- 간선(Edge, Link): 정점 간의 관계를 표현
- 목적:
- 복잡 네트워크(소셜 네트워크, 통신망, 도로망 등) 모델링
- 경로 탐색·최적화, 연결성 분석, 패턴 탐지
2. 그래프의 종류
구분 | 설명 |
---|---|
무방향 그래프 | 간선(u,v)와 (v,u)가 동일, 간선에 방향성 없음 |
방향 그래프 | 간선이 순서를 가지며 화살표로 표시 |
가중 그래프 | 간선에 비용·거리·용량 등의 값을 부여 |
비가중 그래프 | 모든 간선의 가중치가 동일하거나 가중치가 없음 |
사이클/비순환 | 순환 경로가 존재하는지 여부에 따라 구분 |
완전 그래프 | 모든 정점 쌍이 직접 연결된 그래프 |
트리(특수 무방향) | 사이클이 없고 연결된 무방향 그래프 |
3. 그래프 표현 방식
3.1 인접 행렬(Adjacency Matrix)
- 크기 V×V 이차원 배열로 표현
- 간선 존재 여부 또는 가중치 저장
- 장점: 간선 검사 O(1)
- 단점: 희소 그래프에서 메모리 비효율적
3.2 인접 리스트(Adjacency List)
- 크기 V 배열, 각 원소에 연결된 정점 리스트 저장
- 메모리 절약, 간선 개수 E에 비례
- 장점: 순회 시 효율적, 희소 그래프에 적합
- 단점: 두 정점 간 연결 여부 확인 시 O(deg(v))
3.3 발생 행렬(Incidence Matrix)
- 정점 행 × 간선 열 행렬, 정점·간선의 관계 표시
- 특수 분석에 활용
4. 기본 연산
연산 | 설명 | 시간 복잡도(인접 리스트 기준) |
---|---|---|
add_vertex(G, x) | 정점 x 추가 | O(1) |
remove_vertex(G, x) | 정점 x 제거 | O(deg(x)+V) |
add_edge(G, u, v, w) | 간선 (u,v) 추가, 가중치 w 설정 | O(1) |
remove_edge(G, u, v) | 간선 (u,v) 제거 | O(deg(u)) |
adjacent(G, u, v) | u와 v가 인접한지 확인 | O(deg(u)) |
neighbors(G, u) | u의 모든 이웃 정점 반환 | O(deg(u)) |
get_edge_value(G, u,v) | 간선 (u,v)의 가중치 반환 | O(deg(u)) |
5. 핵심 알고리즘
5.1 그래프 탐색
5.2 최단 경로
- 다익스트라 알고리즘: 비음수 가중치 그래프 최단 경로, 우선순위 큐 활용3.
- 벨만-포드 알고리즘: 음수 간선 허용, O(VE) 시간 복잡도.
5.3 최소 신장 트리
- 프림(Prim), 크루스칼(Kruskal): 네트워크 설계, 비용 최소화에 활용.
5.4 연결성 분석
- 유니온-파인드(Disjoint Set): 집합 합치기 및 찾기, 동적 연결성 관리2.
6. 활용 사례
6.1 소셜 네트워크
6.2 네트워크 라우팅
6.3 지도 및 내비게이션
- 도시·교차로·도로를 그래프로 모델링하여 최단 경로 산출5.
6.4 추천 시스템
- 사용자·아이템 관계로 그래프 구축, 순회·클러스터링으로 개인화 추천4.
6.5 웹 크롤러
- 웹페이지·하이퍼링크 그래프로 저장, BFS로 사이트 전체 색인 생성4.
6.6 기타 분야
- 생물정보학(단백질 상호작용), 프로젝트 스케줄링(DAG), 데이터베이스 쿼리 최적화 등5.
7. 구현 시 고려 사항
- 메모리 사용량: 표현 방식 선택 시 V, E의 관계 고려
- 알고리즘 복잡도: 탐색 vs 최단 경로 vs MST 요구사항 분석
- 동적 변경 지원: 실시간 그래프 업데이트 빈도 및 비용 검토
- 순환 및 연결성 관리: 사이클 검출, 비연결 성분 처리 필요
8. 결론
그래프 자료구조는 다양한 분야의 복잡한 관계 문제를 해결하는 핵심 도구이다. 정점·간선의 표현 방식, 탐색 및 최적화 알고리즘, 구체적 활용 사례를 이해함으로써 소프트웨어 및 데이터 분석에서 필수적인 역량을 갖출 수 있다.
⁂