이번 글에서는 MST(Minimum Spanning Tree, 최소 신장 트리)의 간단한 개념과 Prim Algorithm에 대해 다룰 것입니다.
[그래프] 다익스트라 알고리즘
서론
다익스트라 알고리즘은 한 정점에서 다른 모든 정점까지 가는 최단 거리와 경로를 구하는 알고리즘입니다.
그리디 기법을 기반으로 작동하며, 음수 간선이 있는 그래프에서는 사용할 수 없습니다.
[그래프] 플로이드 와샬 알고리즘
[그래프] 위상 정렬
서론
위상 정렬은 그래프 중에서도 DAG에서만 사용 가능한 알고리즘입니다.
DAG는 Directed Acyclic Graph의 줄임말이며, 사이클이 없는 유향(방향) 그래프입니다.
위상 정렬은 유향 그래프의 방향성을 거스르지 않게 정점들을 나열하는 것입니다.
마치 스타크래프트에서 해처리가 있어야 스포닝 풀을 지을 수 있고, 스포닝 풀이 있어야 히드라리스크 덴과 레어를 지을 수 있는 것처럼 어떤 일을 수행하기 전에 미리 해야할 일이 있다면, 미리 수행해야 할 일을 먼저 하는 것과 같다고 볼 수 있습니다.
[그래프] 그래프의 탐색
서론
이 글에서는 DFS와 BFS에 대해 설명할 것입니다.
DFS는 Depth First Search의 약자이며, 해석하면 깊이 우선 탐색입니다.
BFS는 Breadth First Search의 약자이며, 해것하면 너비 우선 탐색입니다.
[그래프] 그래프의 표현방법
그래프의 두 가지 표현방법
그래프의 표현 방법은 대부분 2가지 중 하나를 사용하는데, 하나는 인접 행렬, 다른 하나는 인접 리스트입니다.
인접 행렬은 말 그대로 행렬(2차원 배열)로 표현하고, 인접 리스트는 연결 리스트(Linked List) 혹은 동적 배열(ex. C++ vector 컨테이너)를 사용해 구현합니다.
[그래프] 그래프란?
그래프란?
이런 형태로 생긴 것을 그래프라고 합니다.
동그라미 부분을 Vertex(혹은 Node, 정점)라 부르고 정점끼리 이은 선분을 Edge(간선)라고 부릅니다.
[탐색] 이진 탐색(Binary Search)
이진탐색이란?
순차 탐색은 배열의 길이가 n이라면, 최대 n번 계산해야 해를 구할 수 있습니다.
이번에 다룰 이진탐색은 특정 조건만 만족하면 순차 탐색보다 훨씬 더 빠르게 해를 구할 수 있습니다.
[탐색] 선형 탐색(Linear Search)
서론
이번 글에서는 선형 탐색의 여러 방법을 소개합니다.
먼저, 기본적인 순차 탐색(Sequential Search)을 간단히 설명하고, 자기 구성 순차 탐색(Self-Organizing Sequential Search)을 설명하겠습니다.
자기 구성 순차 탐색 에서는 전진 이동법(Move to Front Method)과 전위법(Transpose Method)을 소개할 것입니다.
[시간복잡도] 재귀 알고리즘의 시간복잡도
서론
반복문으로 이루어진 알고리즘은 시간 복잡도를 구하기가 비교적 쉽습니다.
그러면, 재귀 호출로 이루어진 알고리즘의 시간 복잡도는 어떻게 구할까요?
이것이 이 글의 주제입니다.