Huffman Coding
ํํ๋ง ๋ถํธํ(Huffman coding)๋ ๋ฌด์์ค ์์ถ์ ์ฐ์ด๋ ์ํธ๋กํผ ๋ถํธํ์ ์ผ์ข ์ผ๋ก, ๋ฐ์ดํฐ ๋ฌธ์์ ๋ฑ์ฅ ๋น๋์ ๋ฐ๋ผ์ ๋ค๋ฅธ ๊ธธ์ด์ ๋ถํธ๋ฅผ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
์์ถ์ด๋ ์์ฒญ๋๊ฒ ํฐ ๋ฌธ์ (๋ง์ ๋นํธ๋ฅผ ํ์๋ก ํ๋)์ ์ ๋ณด๋ฅผ ๊ณ ์ค๋ํ ํํํ๋ฉด์๋ ์ ์ฒด ๋นํธ๋์ ์ค์ผ ์ ์๋ ํจ๊ณผ์ ์ธ ๋ถํธํ ๊ธฐ์ ์ ๊ณผ์ ์ด๋ค.
๋ฌด์์ค ์์ถ์ ๋ฐ์ดํฐ ์์ถ์ ์ผ์ข ์ผ๋ก ์์ค ์์ถ์ ๋ฐ๋๋ง์ด๋ค. ์๋์ ์ ๋ณด๋ฅผ ๊ทธ๋๋ก ๋ณด์กดํด์ผ ํ๊ธฐ ๋๋ฌธ์, ์ ๋ณด ์ํธ๋กํผ์ ํ๊ณ๊ฐ ๊ทธ๋๋ก ๋ฐ์๋๋ค. ์ฌ๊ธฐ์์ ์ ๋ณด ์ํธ๋กํผ์ ํ๊ณ๋ ๊ฐ๋ณ ์ ๋ณด์ ํ๋ฅ ๊ฐ์ ์ํ์ฌ ๊ณ์ฐ๋๋ ๊ฐ์ด ์๋, ์ ์ฒด ์ ํธ์ ์๊ด๊ด๊ณ๋ฅผ ๋ฐ์ํ ํ๊ณ๊ฐ์ด๋ค.
์ํธ๋กํผ ์ธ์ฝ๋ฉ or ์ํธ๋กํผ ๋ถํธํ(entropy encoding) : ์ฌ๋ณผ์ด ๋์ฌ ํ๋ฅ ์ ๋ฐ๋ผ ์ฌ๋ณผ์ ๋ํ๋ด๋ ์ฝ๋์ ๊ธธ์ด๋ฅผ ๋ฌ๋ฆฌํ๋ ๋ถํธํ ๋ฐฉ๋ฒ
์ํธ๋กํผ๋ ๊ฐ ๊ธฐํธ๊ฐ ํฌํจํ๋ ํ๊ท ์ ๋ณด๋์ ์๋ฏธ
Shannon ๋ถํธํ ์ด๋ก ์์๋ ์ํธ๋กํผ๋ฅผ ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ต์ ์ด๋ผ ๋งํ๋ค.
์์ฃผ ๋ฐ์ํ๋ ๊ธฐํธ๋ฅผ ์ฐพ์๋ด๋ ๋ฐ ๋ชฉ์ ์ด์๋ค.
๊ฐ๋ณ ๊ธธ์ด ๋ถํธํ(VLC) : ๋ ์์ฃผ ๋ฐ์ํ๋ ๊ธฐํธ๋ ๋ ์ ์ ๋นํธ๋ก ๋ถํธํ
์ฆ, ์์ฃผ ๋ฐ์ํ๋ ๊ธฐํธ๋ ๋นจ๋ฆฌ ์ ์ก๋ ์ ์๋ ์ฝ๋(์ ์ ๋นํธ), ์์ฃผ ๋ฐ์ํ์ง ์๋ ๊ฒ์ ๊ธด ์ฝ๋๊ฐ ๋ถ์ฌ๋๋ค.
ํํ๋ง ์๊ณ ๋ฆฌ์ฆ์ ๋ถํธํ ์์๋ ์๋์์ ์๋ก ์งํํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์๊ณ ๋ฆฌ์ฆ

์ด๊ธฐํ : ๋ชจ๋ ๊ธฐํธ๋ฅผ ์ถํ ๋น๋์์ ๋ฐ๋ผ ๋์ดํ๋ค.
๋จ ํ ๊ฐ์ง ๊ธฐํธ๊ฐ ๋จ์ ๋๊น์ง ์๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ๋ค.
๋ชฉ๋ก์ผ๋ก๋ถํฐ ๊ฐ์ฅ ๋น๋๊ฐ ๋ฎ์ ๊ฒ์ 2๊ฐ ๊ณ ๋ฅธ๋ค.
ํํ๋ง์ด ๋ ๊ฐ์ง ๊ธฐํธ๋ฅผ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ ๋ถํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ์์ ๋ ธ๋๋ฅด ์์ฑํ๋ค.
๋ถ๋ชจ ๋ ธ๋ ๋จ ๊ธฐํธ๋ค์ ๋น๋์๋ฅผ ๋ํ์ฌ ์ฃผ ๋ ธ๋์ ํ ๋นํ๊ณ ๋ชฉ๋ก์ ์์์ ๋ง๋๋ก ๋ชฉ๋ก์ ์ฝ์ ํ๋ค.
๋ชฉ๋ก์์ ๋ถ๋ชจ๋ ธ๋์ ํฌํจ๋ ๊ธฐํธ๋ฅผ ์ ๊ฑฐํ๋ค.
๋ฃจํธ๋ ธ๋๋ก๋ถํฐ์ ๊ฒฝ๋ก์์ ๊ฐ ๊ฐ์ง์ ์ฝ๋์๋๋ฅผ ๋ถ์ฌํ๋ค.

ํํ๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ ๊ธฐํธ๋ฅผ ๋ฆฌํ ๋ ธ๋๋ก ํ๋ ์ด์ง ํธ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ ์ ๋ ๋ถํธ๋ฅผ ๋ง๋ค์ด ๋ด๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
๊ตฌํ
Huffman ์๊ณ ๋ฆฌ์ฆ์ ์ต์๋น๋ ์๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด์ ์ฐ์ ์์ ํ๋ฅผ ํ์๋กํ๋ค. ์ต์ํ์ ์ฌ์ฉํด์ ๊ตฌํํด๋ณด์๋ค.
๊ตฌ์กฐ์ฒด
new_node
Heap ์ด๊ธฐํ
heapify
๋ ๊ฐ์ subtree๊ฐ min heap์ผ๋ root์ ์ถ๊ฐ๋ ๋ ธ๋๋ฅผ ํฌํจํ ์ ์ฒด๊ฐ heap์ ์กฐ๊ฑด์ ๋ง์กฑํ๋๋ก ๊ฐ ๋ ธ๋์ ์์น๋ฅผ ์กฐ์
delete
insert
heap ์์ฑ
์ถ๋ ฅ
Huffman ์์ฑ
Main
๊ฒฐ๊ณผ
์์ฉ
ํฉ์ค
JPEG
MPEG
Last updated
Was this helpful?