Greedy Algorithm, 탐욕 알고리즘

Greedy 알고리즘이 최적의 답을 보장하는 경우

회의실 배정 문제 (Activity Selection Problem)

회의실이 하나 뿐인데, 이 회의실을 쓰고 싶은 팀은 많다. 회의가 서로 겹치지 않고 최대한 많은 회의를 배정해야한다.

def Greedy(T):
    T.sort(key=lambda T: T[0])
    T.sort(key=lambda T: T[1])
    L = [0]
    k = 0
    i = 1
    while i < len(T):
        if T[i][0] >= T[k][1] and k != i:
            L.append(i)
            k = i
        else:
            i += 1
    return L

⇒ 수행시간 : 정렬 + 회의 개수 = $O(nlogn) +O(n)$ = $O(nlogn)$

허프만 코드(Huffman Coding) 문제

ASCII는 문자 하나에 고정길이 비트가 할당 → 문자가 몇개든 개당 똑같은 메모리 필요.

문자들이 나타나는 빈도수(frequency)가 다르기에 자주 사용되는 문자에게는 짧은 길이의 코드를, 자주 등장하지 않는 문자에는 조금 더 긴 코드를 할당하는 게 전체 필요한 비트 수를 줄일 수 있다. ⇒가변 길이 코드

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/df4a9422-8a74-4aa4-b199-f3bb1af3f215/Untitled.png