Lesson 21 — Huffman Encoding
Greedy xây cây nhị phân tối ưu để nén dữ liệu. Ba module: (1) xây cây từng bước, (2) gán mã 0/1, (3) encode/decode + tỉ lệ nén.
① Build tree — ghép 2 node nhẹ nhất từng bước
Min-heap hiện tại (nhỏ nhất bên trái):
Nhập văn bản rồi bấm Đếm & khởi tạo heap.
② Gán mã — đi cây trái=0, phải=1
Dùng cây vừa xây ở Module ①. DFS gán mã từ gốc: rẽ trái thêm 0, rẽ phải thêm 1; tới lá thì chuỗi bit là mã của ký tự.
Xây cây ở Module ① trước, rồi bấm Gán 1 lá.
③ Encode / Decode + tỉ lệ nén
Dùng bảng mã từ Module ②. So sánh với fixed-length (đủ bit để phân biệt các ký tự trong văn bản).
Bit stream Huffman (màu xen kẽ theo ký tự):
—
Decode (đi theo cây):
—
Fixed-length: —
Huffman: —
Tiết kiệm: —
Hoàn tất Module ① và ② trước, rồi bấm Encode.