๐ Major Study (Bachelor)/๐จ Algorithm
์๊ณ ๋ฆฌ์ฆ 6์ฃผ์ฐจ ๊ฐ์
UKHYUN22
2022. 4. 4. 16:47
728x90
Huffman Codes: Text Encoding
Encoding๊ณผ Decoding. ์ ์์์ Analog์ ํธ๋ฅผ Digital๋ก ๋ฐ๊ฟ๋ Encoding์ด๋ผ๊ณ ํ๋ค. ์ ์ฐ์์๋ ํ๋ก๊ทธ๋๋ฐ, ๋ถํธํ๋ฅผ Encoding์ด๋ผ๊ณ ํ๋ค. Data๋ฅผ 0๊ณผ 1์ ์ ํธ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ์๋ฏธํจ. ๋ฐ๋์ ๊ณผ์ ์ Decoding์ด๋ผ๊ณ ๋ถ๋ฆ. ๊ณต๋ฐฑ๋ ์บ๋ฆญํฐ๋ก ์ฒ๋ฆฌ๊ฐ ๋๋ค. 17byte๋ณด๋ค ์ ๊ฒ ์ด๋ป๊ฒ ํํํ๋๊ฐ
Huffman code
12๊ฐ์ ์ผ๋ฆญํฐ๋ฅผ 4๋นํธ๋ก ํํํ ์ ์๋ค. 4๋นํธ๋ก ์ถฉ๋ถํ๋ค. ์ด์ ์ ์ฌ์ฉํ๋ 17byte์ ๋นํด Compactํ๊ฒ ํํํ ์ ์๊ฒ ๋๋ค. 2๊ฐ์ ๋ฐฉ๋ฒ ๋ ๋ค fixed layer๋ผ๊ณ ํํํ๋ค.
Huffman Codes
์ด๋ค ์ผ๋ฆญํฐ๋ 3bit ์ด๋ค ์ผ๋ฆญํฐ๋ 4bit๋ก ์ฌ์ฉํด์ bit์๋ฅผ saveํ ์ ์๋๋ก ๋ง๋ ๋ค. ์ด๋ ๊ฒ ํ๋ ๊ฒ์ Huffman code๋ผ๊ณ ๋ถ๋ฅธ๋ค. Variable length๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Prefix codes
Prefix๋ ๋ฌด์์ธ๊ฐ. 1010์ด๊ณ 10 ์ด๋ฉด 10์ด Prefix๊ฐ ๋๋ค. ์์ ๊ณตํต๋ ๊ฒ์ Prefix๋ผ๊ณ ๋ถ๋ฅธ๋ค.
i๊น์ง prefix์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด๋ค.
Why Prefix codes
Prefix๊ฐ ์๋ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์. prefix ๊ด๊ณ์ ์๋ ๊ฒ๋ค์ด ์กด์ฌํ๋ฏ๋ก prefix code๊ฐ ์๋๋ค. star๋ผ๋ ๊ฒ์ encoding ํ๊ณ decoding์ ์งํํ ๋ ์ ๋ชป split์ ํด๋ฒ๋ฆฌ๋ฉด ์๋ชป๋ ๋จ์ด๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋๋ค. ๊ทธ ์ด์ ๋ Prefix ์ฝ๋๊ฐ ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
Why are Prefix codes Unambiguous
์ฒซ ๋ฒ์งธ ์ผ๋ฆญํฐ๋ฅผ ์ ๋งคํ์ง ์๊ฒ ์ค์ ํ๋ ๊ฒ์ด๋ค. Prefix ํ๋ค๋ฉด ๋ช
ํํ๊ฒ ๊ตฌ๋ถํ ์ ์๋ค.
Prefix code
๋ค๋ฅธ codeword์ prefix๊ฐ ์๋ ๊ฒ์ Prefix code๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๊ฐ์ฅ ์ต์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฉํด์ Encoding์ ํ ์ ์๋ค๋ ๊ฒ. Decoding์ ํ ๋ ํ๋์ฉ counting์ ํ๋ฉด์ Choice๊ฐ ํ๋๋ฐ์ ์์ ๋๊น์ง ๊ฐ์ถ๋ฆฌ๋ฉด์ ์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
Decoding/encoding tree
Frequency๋ ๋ฐ์ํ ์ผ๋ฆญํฐ์ ๋น๋์์ด๋ค. ๋ชจ์๋ณด๋ค ์์์ด ๋ ๋์ฌ ์ ์๊ธฐ ๋๋ฌธ์ a์ ์ซ์๊ฐ ๋ ๋ง์ด ์กด์ฌํ๋ค. a : 3bit x 45,000 ... ์ด๋ ๊ฒ ๊ณ์ฐ์ด ๋๋ค.
Cost of encoding a file
frequency์ ๊ฐ๊ฐ ๋นํธ์ ํด๋นํ๋ ๊ฒ์ ๊ณฑํ๊ฒ ๋๋ค.
Huffman Code
๋ฐ์ดํฐ๋ฅผ ์์ถํ ์ ์๊ณ Prefix๋ฅผ ์ต์๊ฐ ๋๋๋ก ๋ง๋ค ์ ์๋ค.
Huffman's Algorithm
Character์ ๊ฐ์ C๋ฅผ n์ ๋ฃ๊ณ ๊ฐ๊ฐ์ C๋ฅผ Priority Queue์ ๋ฃ๋๋ค. Extract Min ํ๋ฉด ๋งจ ์ฒ์ f ๊ทธ ๋ค์ e๊ฐ ๋์จ๋ค. ์ Greedy์ธ๊ฐ. ํด๋น ์๊ฐ์ ๊ฐ์ฅ Frequ ๊ฐ ๊ฐ์ฅ ์ ์ ๊ฒ์ ์ ํํด์ ์งํํ๊ธฐ ๋๋ฌธ์ด๋ค. ์๊ฐ ๋ณต์ก๋๋ nlgn์ ํด๋นํ๋ค. ์ผ๋ฆญํฐ ๊ฐ์๊ฐ ๋ช ๊ฐ ์ธ์ง์ ํด๋นํ๋ ๊ฒ์ ์ธํ N ์ด๋ผ๊ณ ํ ์ ์๋ค. 2๋ฒ ์ค์ Priority Queue์ด๋ฏ๋ก ๋น
์ค nlgn ๋ ์ ํํ๊ฒ ํ๋ฉด ์ธํฐ N์ด๋ผ๊ณ ํํํ ์ ์๋ค. loop๋ ์ธํ N๋งํผ ๋์๊ฐ๋ค. ๊ฐ๊ฐ์ Extract Min์ height์ ํด๋นํ๋ ๋น
์ค lgn์ ํด๋นํ๋ ๋งํผ ๊ฑธ๋ฆฐ๋ค. ๋ง์
์ ์ธํ 1์ด๊ณ Insert๋ lgn์ ํด๋นํ๋ค. lgn์ด n๋งํผ ๋์๊ฐ๋ฏ๋ก nlgn์ด Running time์ ํด๋นํ๋ค๊ณ ํ ์ ์๋ค. f์ g๋ฅผ Extractํ๊ฒ ๋๊ณ ๋ํด์ ๋ค์ Insertํ๊ฒ ๋๋ค.