알고리즘 공부/Greedy Algorithm 4

탐욕알고리즘의 예시

탐욕 알고리즘으로 최적해가 보장되지 않는 예시 탐욕 알고리즘은 대부분의 경우에서 최적해를 보장하지 못한다. 탐욕 알고리즘으로 최적해가 보장되는 예시 분할 가능한 배낭 문제 Prim 알고리즘 Kruskal 알고리즘 Dijkstra 알고리즘 회의실 배정 문제 허프만 암호화 알고리즘 동전 거스름돈 문제 문제 : 100원, 500원, 1000원이 있을 때, 1400원을 교환할 수 있는 최소 동전 개수를 구하라. 최적해인 경우 100원 : 100 x 14 = 14개 500원 : 500 x 2 + 100 x 4 = 6개 1000원 : 1000 x 1 + 100 x 4 = 5개 따라서 최소 동전 개수는 5개이다. 최적해가 아닌 경우 동전이 100원, 700원, 1000원일 경우 위와 같은 방법으로 실행 할 시 100..

매트로이드 이론

매트로이드란? 탐욕 알고리즘이 최적 해를 가려낼 수 있는 경우인지를 판별할 수 있게 하며, 독립성이라는 성질을 만족하는 수학적 공간 단, Greedy한 방법을 적용할 수 있는 모든 경우를 판별해낼 수 있는 것은 아니라서, 어떤 문제의 공간이 매트로이드 구조를 이루면, 탐욕 알고리즘이 최적해를 도출해낼 수 있지만, 탐욕 알고리즘이 최적해를 도출할 수 있는 모든 문제가 매트로이드 구조를 띄는 것은 아니다. 탐욕 알고리즘은 꼭 최적해가 아니여도 최적해에 근사한 값을 찾아낼 수 있다는 점에서 유용한 알고리즘이다. 💡 어떤 유한 집합 n의 부분 집합들의 집합인 𝐼(즉, 𝐼⊆ 2ⁿ)가 아래 성질을 만족하면 집합 𝐼는 Matroid이다. 매트로이드의 특성 상속성(Heredity) A∈I이고, B⊆A이면 B∈I이다. ..

Prim, Kruskal 알고리즘

Prim 알고리즘이란? 시작 정점에서부터 출발하여 신장트리 집합을 단계적으로 확장해나가는 방법 Prim 알고리즘의 동작 방법 시작 단계에서는 시작 정점만이 MST(최소 비용 신장 트리) 집합에 포함된다. 앞 단계에서 만들어진 MST 집합에 인접한 정점들 중에서 최소 간선으로 연결된 정점을 선택하여 트리를 확장한다. (즉, 가장 낮은 가중치를 먼저 선택한다.) 위의 과정을 트리가 (N-1)개의 간선을 가질 때까지 반복한다. Prim 알고리즘을 이용한 MST(최소 신장 트리)를 만드는 과정 정점 선택을 기반으로 하는 알고리즘 이전 단계에서 만들어진 신장 트리를 확장하는 방법 Prim 알고리즘의 시간 복잡도 for 반복문이 정점의 수 n만큼 반복하고, 내부 반복은 n번 반복(Prim의 경우 O(n²), Kru..

탐욕 알고리즘 - 개요

탐욕 알고리즘이란? 입력 데이터 간의 관계를 고려하지 않고 수행 과정에서 욕심 내어 최솟값 또는 최댓값을 가진 데이터를 선택하는 알고리즘 한 번 선택 시 선택한 데이터를 버리고 다른 것을 취하지 않는다. 이러한 특성 때문에 탐욕 알고리즘들은 매우 단순, 제한적인 문제들만 해결 가능하다 Prim, Kruskal 알고리즘이 탐욕 알고리즘에 해당한다 순간의 선택이 최선인 이유 그리디 알고리즘이 사용되기 위해 필요한 조건 2가지를 만족했을 때 사용하면 그리디 알고리즘은 순간의 선택에서 최선의 선택을 할 수 있다. 조건 1. 탐욕스러운 선택 조건 → 탐욕적인 선택은 항상 안전하다는 것이 보장되어야 하며, 안전하다는 의미는 이 선택으로 인해 전체 문제의 최적해를 반드시 도출할 수 있어야 한다는 것이다. 조건 2. ..