Đồ Án Cấu Trúc Dữ Liệu Và Giải Thuật 2 : Huffman Code

Thảo luận trong 'Công Nghệ Thông Tin' bắt đầu bởi Mai Kul, 15/12/13.

  1. Mai Kul

    Mai Kul New Member

    Bài viết:
    1,299
    Được thích:
    0
    Điểm thành tích:
    0
    Xu:
    0Xu
    1.Giới thiệu về thuật toán 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 để nén 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 đề xuất bởi David A. Huffman khi ông còn là sinh viên
    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 một 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 là một mã tiền tố. Sau đây là khái niệm về mã tiền tố:

    2. Mã tiền tố (prefix-free binary code)

    - Để mã hóa các kí hiệu (kí tự, chữ số, .) ta thay chúng bằng các xâu nhị
    phân, được gọi là từ mã của kí hiệu đó. Chẳng hạn bộ mã ASCII, mã hóa cho 256
    kí hiệu là biểu diễn nhị phân của các số từ 0 đến 255, mỗi từ mã gồm 8 bít. Trong ASCII từ mã của kí tự "a" là 1100001, của kí tự "A" là 1000001. Trong cách mã hóa này các từ mã của tất cả 256 kí hiệu có độ dài bằng nhau (mỗi từ mã 8 bít). Nó
    được gọi là mã hóa với độ dài không đổi.

    - Khi mã hóa một tài liệu có thể không sử dụng đến tất cả 256 kí hiệu. Hơn nữa trong tài liệu chữ cái "a" chỉ có thể xuất hiện 1000000 lần còn chữ cái "A" có
    thể chỉ xuất hiện 2, 3 lần. Như vậy ta có thể không cần dùng đủ 8 bít để mã hóa
    cho một ký hiệu, hơn nữa độ dài (số bít) dành cho mỗi kí hiệu có thể khác nhau, kí hiệu nào xuất hiện nhiều lần thì nên dùng số bít ít, ký hiệu nào xuất hiện ít thì có
    thể mã hóa bằng từ mã dài hơn. Như vậy ta có việc mã hóa với độ dài thay đổi. Tuy nhiên, nếu mã hóa với độ dài thay đổi, khi giải mã ta làm thế nào phân biệt được xâu bít nào là mã hóa của ký hiệu nào. Một trong các giải pháp là dùng các dấu phẩy (",") hoặc một kí hiệu quy ước nào đó để tách từ mã của các kí tự đứng
    cạnh nhau. Nhưng như thế số các dấu phẩy sẽ chiếm một không gian đáng kể trong bản mã. Một cách giải quyết khác dẫn đến khái niệm mã tiền tố
    - Mã tiền tố là bộ các từ mã của một tập hợp các kí hiệu sao cho từ mã của

    MỤC LỤC
    I. Thuật toán Huffman
    II. Khái quát về chương trình
    III. Các vấn đề chung trong xây dựng chương trình
     

    Các file đính kèm:

Đang tải...