[자료구조] 그래프(Graph)
그래프(Graph)
그래프란 연결되어 있는 객체 간의 관계를 표현하는 자료구조이다.
그래프의 종류는 크게 3가지로 나뉜다.
- 무방향 그래프(undirected graph)
- 방향 그래프(directed graph)
- 가중치 그래프(weighted graph)

더 넘어가기 전에, 그래프에서 알아야할 용어가 있다.
- 싸이클
- 분절점

위의 개념들을 익혔다면 그 다음으로 익혀야할 건 그래프의 탐색이다.
그래프에서 탐색은 가장 기본적인 연산이지만, 많은 문제들이 단순히 그래프의 노드를 탐색하는 것으로 해결될만큼 중요하다.
그래프의 탐색 방법은 2가지다. (2가지 밖에 없다 !)
- 깊이 우선 탐색(DFS : Depth First Search)
- 너비 우선 탐색(BFS : Breath First Search)
DFS/BFS에 대한 설명은 생략
그래프의 응용
위의 그래프의 기본 개념을 숙지했다면 그래프가 어디에 응용되는지를 파악해야 한다.
여기서 아주 아주 중요한 2가지가 나온다 !!!! (아마 학부 수준에서 배우는 자료구조의 끝판왕이 아닐까싶다)
- 최소비용 신장트리
- 최단 경로
일단 2가지만 기억하자 !
최소비용 신장트리를 만들기 위해선 크루스칼 알고리즘이 사용된다. ( 현재 가장 적합한 알고리즘으로 알려져 있음 )
최단경로를 찾기 위해선 다익스트라 알고리즘이 사용된다.
'Algorithm > Theory' 카테고리의 다른 글
[자료구조] B-트리 (0) | 2020.02.13 |
---|---|
[알고리즘] 최소비용 신장트리(MST) - Kruskal 알고리즘 (0) | 2019.12.12 |
[자료구조] 서로소 집합(Disjoint-Set) (0) | 2019.11.13 |
[알고리즘] 동적 계획법(Dynamic Programming) (0) | 2019.10.24 |
[자료구조] 이분 그래프 (Bipartite Graph) (0) | 2019.09.24 |
댓글
이 글 공유하기
다른 글
-
[자료구조] B-트리
[자료구조] B-트리
2020.02.13B-트리 (B-Tree)란? DB 인덱스에 관해 공부하다가, 동적 Multi-Level Index에서 B-트리를 사용한다는걸 알게 되었다. B-트리에 대해 정리해보자. B-트리는 데이터베이스와 파일 시스템에서 널리 사용되는 트리 자료구조의 일종이다. 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조. 방대한 양의 저장된 자료를 검색해야 하는 경우 검색어와 자료를 일일이 비교하는건 비효율적이다. B-트리는 데이터를 정렬된 상태로 보관하고, 삽입 및 삭제를 대수 시간으로 할 수 있게 해준다. B-트리의 모양은 다음과 같다. B-트리의 성립조건은 다음과 같다. 노드가 가지는 데이터의 수가 N개라면, 자식 노드의 갯수는 N+1개이다. 노드가 가지는 데이터는 정렬된 상… -
[알고리즘] 최소비용 신장트리(MST) - Kruskal 알고리즘
[알고리즘] 최소비용 신장트리(MST) - Kruskal 알고리즘
2019.12.12 -
[자료구조] 서로소 집합(Disjoint-Set)
[자료구조] 서로소 집합(Disjoint-Set)
2019.11.131. 서로소 집합(Disjoint-Set)이란? Disjoint-Set은 많은 서로소 부분 집합들로 나눠진 원소들에 대한 정보를 저장하고 조작하는 자료구조입니다. Disjoint-Set은 두 가지 연산을 제공합니다. Find 연산: 어떤 원소가 주어졌을 때, 이 원소가 속한 집합을 반환합니다. 집합의 대표(representative)를 반환합니다. Union 연산: 두 개의 집합을 하나의 집합으로 합칩니다. 즉, 두 노드가 같은 그래프에 속하는지 판별하거나, 하나의 그래프로 합칠 때 사용할 수 있습니다. 아래와 같이 어떠한 연결도 없는 8개의 노드가 있다고 가정해보겠습니다. 보통 그래프라 하믄 여러 개의 노드들이 간선으로 연결되어 있는 그림을 떠올리실텐데, 위처럼 노드가 1개여도 그래프입니다. 즉, 위 … -
[알고리즘] 동적 계획법(Dynamic Programming)
[알고리즘] 동적 계획법(Dynamic Programming)
2019.10.241. 동적 계획법(Dynamic Programming, DP)이란? 동적 계획법(Dynamic Programming, DP)은 큰 문제를 작은 문제로 나눠서 푸는 알고리즘 설계 기법이다. 분할 정복 알고리즘과 차이는 메모이제이션의 필요여부다. 분할 정복 알고리즘은 계산된 소문제의 출력값을 저장하지 않는다. (1회용) 동적 계획법은 계산된 소문제의 출력값을 저장해서 다음 계산때 사용한다. (재활용) 동적 계획법을 적용시킬 수 있는 예시는 다음과 같다. f(a,b) = f(a-1,b) + f(a,b-1) (a,b >= 1 ) f(0,0) = 1, 임의의 자연수 n에 대해 f(n,0) = f(0,n) = 1 위 그림에서 초록색으로 칠해논 부분이 문제를 작은 문제로 분할하는 과정에서 중복되는 문제다. 그림의 패…
댓글을 사용할 수 없습니다.