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ํ๊ฒ ๋๋ค.
The Knapsack Problem
๋๋์ด ๊ฐ๋ฐฉ์ ์ ์ผ ๋น์ผ ๋ฌผ๊ฑด์ ์ด๋ค ๊ฒ์ ๋ฃ์ด์ผ ํ๋์ง์ ๊ฐ์ ๋๋
The Knapsack Problem
2๊ฐ์ง ๋ฒ์ ์ด ์กด์ฌํ๋ค. 1๋ฒ ์งธ์ ๊ฒฝ์ฐ ๋ฌผ๊ฑด์ ๋๋ ์ ์๋ ๊ฒฝ์ฐ์ด๊ณ 2 ๋ฒ์งธ์ ๊ฒฝ์ฐ ์ผ๋ถ๋ง์ ๊ฐ์ ธ์ฌ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๋ค.
1๋ฒ์ DP๋ก ํ ์ ์๊ณ 2๋ฒ์ Greedy๋ก๋ ํ ์ ์๋ค. 1๋ฒ์ Greedy ๋ฐฉ๋ฒ์ผ๋ก ํธ๋ ๊ฒ์ด ๋ถ๊ฐํ๋ค.
๋๋ค optimal substructure property๊ฐ ์กด์ฌํ๋ค.
Fractional knapsack problem
Theif๊ฐ ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ฐ์ง, per pound ๋น ๊ฐ์ฅ ํฐ ๊ฒ์ ๊ฐ์ง ๊ฒ์ ๊ฐ์ ธ์จ๋ค. ๊ทธ๋ฌ๋๋ฐ๋ ๊ฐ์ ธ์ฌ ์ ์์ผ๋ฉด ๋ค์ ๊ฒ์ ๋ฃ๊ฒ ๋๋ค.
0-1 Knapsack Problem
knapsack์ capacity๋ W๋งํผ ๊ฐ๋นํ ์ ์๋ค๊ณ ํ๊ณ S์ set์ผ๋ก ๊ตฌ์ฑ๋์ด์๋ค. ๊ฐ๊ฐ์ Item ๋ค์ Index์ Value๊ฐ ์กด์ฌํ๋ค.
W๋ผ๋ ๊ฐ์ ํด๋นํ๋ ๊ฒ๋ค์ Integer๋ก ๊ฐ์ ํ๋ค. Weight์ 20๊น์ง ๊ฐ๋นํ ์ ์๋ค๊ณ ๊ฐ์ ํ๋ค.
Brute force approach
n๊ฐ์ ์์ดํ
์ด ์๋ค๋ฉด 2^n๊ฐ์ ์์ดํ
๋ค์ด ์กด์ฌํ๋ค. ๊ฐ๊ฐ์ ๊ฒฝ์ฐ์ ๋ํด์ Benefit Value๊ฐ ์ผ๋ง์ธ๊ฐ๋ฅผ ๊ณ์ฐํ๊ฒ ๋๋ค. ๋ชจ๋ ๊ฒฝ์ฐ๊ฐ ๊ฐ๋ฅ์ฑ์ด ์์ง ์์ผ๋ฏ๋ก ๋ชจ๋ ๊ณ์ฐ์ ํด์ผํ๋ค. ๊ฐ๋นํ์ง ๋ชปํ๋ W์ ๊ฒฝ์ฐ ์ ์ธ๋ฅผ ํ๊ฒ ๋๋ค. W ์์์ ์ด์ต์ด ๊ฐ์ฅ ํฐ ๊ฒ์ ์ทจํ๊ฒ ๋๋ค. Total Value๊ฐ ์ต๋์น์ด๊ณ ๊ทธ๊ฒ์ ๋ฌด๊ฒ๋ ๊ฐ๋นํ ์ ์๋ W๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ์ ํด๋นํ๋ค. ์ธํฐ 2^n์ด๋ผ๊ณ ํํํ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ๊ต์ฅํ ๋๋ฆฐ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ํ ์ ์๋ค.
0-1 Knapsack Problem
fractional knapsack์ Greedy๊ฐ ํตํ๋ค. DP๋ฅผ ํ๊ธฐ ์ํด์ Subproblem์ ์ ์ ์ํด์ผ ํ๋ค. Optimal Substructure๋ฅผ ์ ์ง์ํฌ ์ ์๋ SubProblem์ ์ ์ ์ํด์ผ ํ๋ค. Optimal Substructure๋ฅผ ๊ฐ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋์ฒ๋ผ ํ์ธํ ์ ์๋ค. n๊ฐ ์ค์์ 1๋ฒ ๋ถํฐ k๋ฒ ๊น์ง ์ ์ํ ์ ์๋ ๊ฒ์ ๋ณด๊ฒ ๋๋ค. ์ ์ฒด 1๋ถํฐ N๊น์ง ์ค k๋ฅผ ๊ฐ์ ธ์ค๋๋ก ์ ์ํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
Dynamic Programming
N๊ฐ์ ์์ดํ
์ค k๊ฐ์ ํด๋นํ๋ ์์ดํ
๋ค์ subProblem์ผ๋ก ์ ์ํ๋ฉด ์ณ์ง ์์์ ๋ณผ ์ ์๋ค.
Dynamic Programming
4๊ฐ๋ฅผ ์ง์ด ๋ฃ๋๋ผ๋ Weight์ด 14๋ฐ์ ๋์ง ์๊ณ 4๊ฐ์ ์์ดํ
์ weight์ value๋ฅผ ์ด๋ ๊ฒ ๊ฐ์ ธ๊ฐ๊ฒ ๋๋ค. S5๋ฅผ ์๊ฐํ๊ฒ ๋๋ฉด S4๋ฅผ ์ด์ฉํ๊ณ 5๋ฒ์งธ Weight๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด 4๋ฒ์ ์ ํํ์ง ์๊ณ 5๋ฒ์ ๊ณ ๋ฅด๊ฒ ๋๋ค. S5 ๋ S4๋ฅผ ์ด์ฉํ์ง ์๊ณ ํ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก Optimal Substructure๊ฐ ์๋ค๊ณ ํ ์ ์๋ค. ์ด๋ ๊ฒ ๋ ๊ฒฝ์ฐ Sub Problem์ ์ ๋๋ก ์์ฑํ์ง ๋ชปํ ๊ฒฝ์ฐ์ ํด๋นํ๋ค. ๋ค๋ฅธ ๊ฒฝ์ฐ๋ก Define์ ํ๊ณ ํ์ด๋ฅผ ์งํํด์ผ ํ๋ค.
Dynamic Programming
Fractional Knapsap์ ์๋ฅผ ์ ์์ผ๋ฏ๋ก Greedy๋ก ํ ์ ์๊ณ 0-1์ DP๋ก ํ์ด์ผ ํ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ Optimal SubStructure๋ฅผ ๊ฐ์ง๋๋ก ์ด๋ป๊ฒ ๊ตฌ์ฑ์ ํด์ผ ํ๋๊ฐ.
Defining a program
S4๋ S5์ Part๊ฐ ์๋๋ค. flaw, ๊ฒฐํจ์ด ์๋ค๋ ๊ฒ. SubProblem์ ํ ๋ ํ๋์ ํ๋ผ๋ฏธํฐ W๋ฅผ ๋๊ฒ ๋๋ค. Weight๋ฅผ ๋ชจ๋ ํฌํจํด์ ๋ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ์ ์ํ๊ณ ์ ํ๋ค. B[k,w],์์ B๋ Benefit์ ํด๋นํ๋ค. 1๋ถํฐ k์ ํด๋นํ๋ ์์ดํ
๊ณผ w๋ ๊ฐ ์์ดํ
์ ํด๋นํ๋ Weight์ ํด๋นํ๋ค.
Recursive Formula for subproblems
B[k,W]๋ ์ต์ข
Solution์ด ๋๋ค. ์ด๊ฒ์ SubProblem์ ์ด๋ป๊ฒ ์ ์ ๋๋ํ๋ฉด B[k-1,w]๊ฐ ๋๋ค. ๋๋ B[k,w-1]๋ SubProblem์ด ๋ ์ ์๋ค. k๋ฒ์งธ ์์ดํ
์ knapsack์ ๋ฃ๋ ๊ฒ์ด ์ข์๊ฐ ์ข์ง ์์๊ฐ๋ฅผ ํ๋ณํด์ผ ํ๋ค. ์ฒซ ๋ฒ์งธ ์์ ๊ฒฝ์ฐ ๋ฃ์ผ๋ ค๋ weight์ ํฉ์ด W๋ณด๋ค ํฐ ๊ฒฝ์ฐ์ด๋ฏ๋ก ๋ชป์ง์ด ๋ฃ๊ธฐ ๋๋ฌธ์ ์ด์ Subproblem์ ์ทจํ๋ฉด ๋๋ค. ๋ง์ฝ k๋ฒ์งธ ์์ดํ
์ ์ง์ด๋ฃ์ ์ ์๋ค๊ณ ํ๋ฉด Benefit์ ์ต๋๊ฐ์ ๊ณ์ฐํด์ผ ํ๋ค. k-1๋ฒ์งธ์ ์์ดํ
์ ๋น๊ตํด์
Pseudocode
'๐ Major Study (Bachelor) > ๐จ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ 7์ฃผ์ฐจ ์์์ผ (0) | 2022.04.08 |
---|---|
์๊ณ ๋ฆฌ์ฆ 6์ฃผ์ฐจ ๋ชฉ์์ผ (0) | 2022.04.07 |
์๊ณ ๋ฆฌ์ฆ 5์ฃผ์ฐจ ์์์ผ ๊ฐ์ (0) | 2022.04.04 |
์๊ณ ๋ฆฌ์ฆ 4์ฃผ์ฐจ ๋ชฉ์์ผ (0) | 2022.03.24 |
์๊ณ ๋ฆฌ์ฆ 4์ฃผ์ฐจ ์์์ผ ๊ฐ์ (0) | 2022.03.24 |