[알고리즘] 허프만 코드란?

2023. 9. 12. 15:34·공부
728x90

 

✅Huffman code

데이터를 압축하는 알고리즘이다. 데이터의 각 글자 빈도수를 알고 있을 경우 데이터를 압축하는 데 효과적이다.

 

예를 들어 e : 15번 | t : 12번 | n : 8번 | i : 6번 | s : 4번 의 빈도로 나타난 데이터가 있다고 해보자. 이 데이터를 압축하고자 하는 것이 우리의 목적이며 이를 위해 허프만 트리를 사용할 것이다.

 

1️⃣ 빈도수가 작은 것부터 차례대로 정렬한다. s : 4번 | i : 6번 | n : 8번 | t : 12번 | e : 15번

2️⃣ 빈도가 가장 작은 것부터 모아 트리로 엮는다. 부모노드는 각 노드의 빈도수를 합친 수다.

3️⃣ 부모노드의 값보다 작은 것이 있을 경우 그 부모노드와 작은 값의 노드를 연결, 다시 두 값을 합친 트리를 만든다. 이때 부모노드 값보다 작은 것이 2개라면? 기존 부모 노드와 엮지 말고 새로운 자식-부모 관계를 만든다. 이를 반복한다.

이게 바로 우리가 원하는 모양의 허프만 트리다. 이때 왼쪽 자식은 1, 오른쪽 자식은 0을 가진다. 즉,

다음과 같은 모양이 된다. 이렇게 우리가 n을 찾는다면 값은 11이 된다. s는 101, i는 100, t는 01, e는 00이라는 값을 갖는다. 빈도가 높은 것은 짧은 코드를, 빈도가 낮은 것은 긴 코드를 가지니 효율적이다.

 

https://github.com/Jujinsol/algorithm/blob/3dbb65d7ac9e3ff82aba0ad80913076066f1f77b/etc/Huffman.c

 

728x90

'공부' 카테고리의 다른 글

[React] npm error code ENOENT  (0) 2025.02.04
[React] Module not found: Error: Can't resolve 'web-vitals'  (0) 2025.01.24
Unexpected method 'appcast' called on Cask adoptopenjdk 에러  (0) 2025.01.10
[Coding] 직렬화(Serialization), 역직렬화(Deserialization)란?  (0) 2022.06.04
[Coding] 하드코딩이란?  (0) 2022.05.03
'공부' 카테고리의 다른 글
  • [React] Module not found: Error: Can't resolve 'web-vitals'
  • Unexpected method 'appcast' called on Cask adoptopenjdk 에러
  • [Coding] 직렬화(Serialization), 역직렬화(Deserialization)란?
  • [Coding] 하드코딩이란?
돌멩이수프
돌멩이수프
Information technology
  • 돌멩이수프
    WHAT DOES "IT" STAND FOR?
    돌멩이수프
  • 전체
    오늘
    어제
    • 분류 전체보기 (238) N
      • 언어 (73)
        • html (3)
        • css (1)
        • java (6)
        • C (26)
        • C++ (2)
        • C# (29)
      • 공부 (7)
        • Unity (43)
        • 게임 서버 (26)
        • 네트워크 (5)
        • 데이터베이스 (7)
        • EFCore (19)
        • 기타 (14)
        • Git (5)
        • 운영체제 (1)
        • 소프트웨어공학 (21)
      • 2024-여름 (12)
      • 자기 관리 (3) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Entityfamework
    디자인패턴
    자바
    게임서버
    C#
    Python
    java
    백준
    네트워크
    unity
    HTML
    tcp
    C
    C언어
    EntityFramework
    coding
    EFCore
    라즈베리파이
    코딩
    유니티
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
돌멩이수프
[알고리즘] 허프만 코드란?
상단으로

티스토리툴바