본문 바로가기

자료구조 알고리즘

그래프 기초

현실 세계의 사물이나 추상적인 개념 간의 연결 관계를 표현 정점 : 데이터를 표현(사물, 개념 등)

간선 : 정점들을 연결하는데 사용

순환, 비순환 구조를 이룸. 방향이 있는, 없는 그래프가 각각있음. 루트 노드 개념이 없음. 2개 이사의 경로가 가능. 네트워크 모델

 

가중치 그래프

지하철 역 간의 거리를 가중치로 표현 예

 

방향 그래프

 

구현 시 인접 리스트, 인접 행렬로 구현 가능

 

인접 행렬일 경우, 두 정점을 연결하는 간선을 조회할 때 O(1) 시간 복잡도

정점(i) 의 차수를 구할 때는 인접행렬의 i 번째 해의 값을 모두 더하므로 O(n) 의 시간복잡도

인접 행렬 일 경우, 메모리 공간이 더 사용되는 단점

그래프의 모든 간선의 수를 알아내려면 인접행렬 전체를 순회해야해서 O(n2) 의 시간복잡도 단점

 

인접 리스트 일 경우

존재하는 간선만 관리하면 되서 메모리 사용 측면에서 효율적

그래프의 모든 간선 수를 알아낼때 시작 노드부터 모든 간선을 탐색하므로 O(n + 간선수) 의 시간이 소요

단점

두 정점을 연결하는 간선을 조회하거나 정점의 차수를 알기 위해서는 정점의 인접 리스트를 탐색해야 해서 정점의 차수만큼의 시간이 필요.

 

 

'자료구조 알고리즘' 카테고리의 다른 글

DFS  (0) 2024.05.29
그래프 구현  (0) 2024.05.29
선형 자료 구조 - (스택, 벡터, 리스트 구현)  (0) 2024.05.29
이진 탐색 트리와 균형 이진 트리  (0) 2024.05.27
BFS DFS 차이  (0) 2024.05.27