: 그리디 알고리즘은 최적화 문제를 해결하는 알고리즘이다.
: 입력 데이터 간의 관계를 고려하지 않고 수행과정에서 '욕심내어' 최소값 또는 최대값을 가진 데이터를 선택한다. (근시안적인 선택)
: 매 수행 과정마다 최적의 값을 선택하기 때문에 최종 결과가 최적해가 아닐 수 있다.
: Diminishing returns
F(A + d ) - F(A) >= F(B + d)-F(B)
: 남은 액수를 초과하지 않는 조건하에 '욕심내어' 가장 큰 액면의 동전을 취한다.
-> 최적해가 아닐 수 있다. (입력 데이터와 액면가에 따라 변화)
: 주어진 가중치 그래프에서 사이클이 없이 모든 점들을 연결시킨 트리들 중 간선들의 가중치 합이 최소인 트리
: 그래프의 점의 수가 n일 때, 신장 트리에는 (n-1)개의 간선이 있다.
: 트리에 간선을 하나 추가시키면, 반드시 사이클이 만들어진다.
시간복잡도 : O(mlogm) (간선 정렬) + O (log * m) (사이클 검사)
= O(mlogm)
: 어떤 임의의 점을 선택하냐에 따라 결과가 달라질 수 있다.
시간복잡도: O(n^2)
Binary Heap을 사용하면 시간복잡도가 감소한다.
: 하나의 정점에서 다른 모든 정점으로 가는 최단경로를 알고 싶을 때 사용한다.
확정된 점은 빨간색, 확정되지 않은 점은 파란색으로 표시했다.
간선 완화(Edge Relaxation) : 최신으로 선택한 점을 경유해 가중치가 감소한다면 그 점의 가중치를 갱신한다.
시간복잡도: O(n^2)
Binary Heap 사용 시 O(mlogm)