6. Bố cục của luận văn
2.3. Quy trình nén dữ liệu theo mã Huffman
2.3.1 Giới thiệu về mã Huffman
Trong khoa học máy tính và lý thuyết thông tin, mã Huffman là một thuật toán mã hóa dùng để mã hóa dữ liệu. Nó dựa trên bảng tần suất xuất hiện các kí tự cần mã hóa để xây dựng một bộ mã nhị phân cho các kí tự đó sao cho dung lƣợng (số bít) sau khi mã hóa là nhỏ nhất. Thuật toán đƣợc
a c d e 0 0 0 0 0 1 1 1 1 1 b f
Số hóa bởi Trung tâm Học liệu - ĐHTN
http://www.lrc.tnu.edu.vn/
đề xuất bởi David A. Huffman khi ông còn là nghiên cứu sinh Ph.D. tại MIT, và công bố năm 1952 trong bài báo "A Method for the Construction of Minimum-Redundancy Codes". Sau này Huffman đã trở thành giảng viên ở MIT và sau đó ở khoa Khoa học máy tính của Đại học California, Santa Cruz, Trƣờng Kỹ nghệ Baskin (Baskin School of Engineering). Mã Huffman thích hợp với kiểu dữ liệu văn bản. Tƣ tƣởng chính nhƣ sau: Thay vì lƣu trữ mỗi ký hiệu là 8 bit (mã ASCII), dựa vào tần suất xuất hiện của mỗi ký hiệu mà ta sẽ biểu diễn ít bit đối với ký hiệu có tần suất cao và nhiều bit để biểu diễn ký hiệu có tần suất thấp. Ví dụ ta có luồng dữ liệu là: AABBBADACCCB, với mỗi ký hiệu đƣợc lƣu trữ bình thƣờng là 8 bit thì ta phải mất 8x12=96 bit, trong khi đó với phƣơng pháp mã hoá Huffman dựa vào xác suất xuất hiện: A= 4/10, C=3/10,B=4/10,D=1/10, giả sử ta biểu diễn cho ký hiệu A là 1 bit, B là 2 bit, C là 3 bit, D là 4 bit thì chỉ tốn lƣợng bit là: 1x4+2x4+3x3+4x1=25 bit. Nhƣ vậy, ta đã tiết kiệm đƣợc 71 bit lƣu trữ. [6]