Topic

그래프(Graph)

JackerLab 2025. 3. 30. 02:18
728x90
반응형

개요

그래프(Graph)는 객체(정점, Vertex)와 이들 사이의 연결 관계(간선, Edge)를 표현하는 비선형 자료구조로, 소셜 네트워크, 지도, 통신망, 관계형 데이터 등 현실 세계의 다양한 구조를 표현하는 데 사용된다. 방향성, 가중치, 순환 여부에 따라 다양한 그래프가 존재하며, 탐색, 최단 경로, 최소 신장 트리, 위상 정렬 등의 알고리즘이 활용된다.


1. 그래프의 구성 요소

구성 요소 설명
정점(Vertex) 데이터를 저장하는 노드 (점)
간선(Edge) 정점 간의 연결 관계 (선)
인접 정점 특정 정점과 직접 연결된 정점
차수(Degree) 정점과 연결된 간선의 수

2. 그래프의 분류

분류 기준 유형 설명
방향성 방향 그래프 간선에 방향이 있음 (A → B)
  무방향 그래프 간선에 방향이 없음 (A — B)
가중치 가중치 그래프 간선에 비용/거리 값이 있음
  비가중치 그래프 간선에 값이 없음
순환성 순환 그래프 사이클 존재 가능
  비순환 그래프(DAG) 사이클이 없는 그래프

3. 그래프의 표현 방식

방식 설명 시간 복잡도
인접 행렬 2차원 배열, V×V 간선 확인 O(1), 메모리 낭비 가능
인접 리스트 각 정점이 연결된 정점 리스트를 가짐 간선 탐색 O(정점의 차수)

4. 파이썬 그래프 구현 예시 (인접 리스트)

graph = {
    'A': ['B', 'C'],
    'B': ['A', 'D'],
    'C': ['A', 'D'],
    'D': ['B', 'C']
}

그래프는 딕셔너리로 구현하는 것이 가장 직관적이다.


5. 주요 그래프 알고리즘

알고리즘 설명 복잡도
DFS 깊이 우선 탐색 O(V + E)
BFS 너비 우선 탐색 O(V + E)
다익스트라 가중치 최단 경로 O(E log V) (힙 사용)
벨만-포드 음수 간선 포함 최단 경로 O(VE)
플로이드-워셜 모든 정점 간 최단 거리 O(V³)
크루스칼/프림 최소 신장 트리 O(E log V)
위상 정렬 DAG의 정렬된 순서 탐색 O(V + E)

6. 그래프의 활용 분야

분야 활용 예시
소셜 네트워크 친구/팔로우 관계 모델링
내비게이션 지점 간 경로 탐색, 도로 네트워크
웹 크롤링 하이퍼링크 구조 탐색
통신 네트워크 라우팅, 연결성 분석
데이터 분석 추천 시스템, 그래프 기반 클러스터링
컴파일러 의존성 그래프, 위상 정렬

7. 그래프 관련 용어 정리

용어 정의
경로(Path) 정점들을 순서대로 연결한 것
사이클(Cycle) 시작과 끝이 같은 경로
연결 그래프 모든 정점이 연결된 그래프
비연결 그래프 일부 정점이 고립된 그래프
DAG 방향성이 있고 사이클이 없는 그래프

8. 결론

그래프는 복잡한 관계와 구조를 효과적으로 표현할 수 있는 범용적인 자료구조다. 방향성, 가중치, 순환 여부에 따라 다양한 알고리즘이 적용되며, 현실 세계 문제를 모델링하는 데 매우 적합하다. 그래프 구조의 표현 방식과 DFS/BFS를 비롯한 핵심 알고리즘을 정확히 이해하면 대부분의 실전 문제를 효율적으로 해결할 수 있다.

728x90
반응형

'Topic' 카테고리의 다른 글

DeFi (Decentralized Finance)  (0) 2025.03.30
NFT (Non-Fungible Token)  (7) 2025.03.30
해시 테이블(Hash Table)  (1) 2025.03.30
힙(Heap)  (0) 2025.03.30
이진 탐색 트리(Binary Search Tree, BST)  (0) 2025.03.29