Nộn tớn hiệu audio đó được số hoỏ
2.3.2. Phương phỏp mó Huffman.
Vào năm 1952, D.A.Huffman đó phỏt triển một kỹ thuật mó hoỏ mới mà cú thể tạo ra độ dài trung bỡnh của từ mó ngắn nhất đối với tập phần tử nguồn và kết hợp với xỏc suất của chỳng.
Mó Huffman thuộc loại mó entropy hoặc mó thống kờ, sử dụng ít bit để mó cỏc giỏ trị hay xảy ra (xỏc suất xuất hiện cao) và nhiều bit để mó cỏc giỏ trị ít xảy ra (Xỏc suất xuất hiện thấp), từ đú tốc độ bit sẽ giảm một cỏch đỏng kể. Độ dài trung bỡnh ngắn nhất mà phương phỏp mó Huffman đạt được cho tất cả cỏc phần tử nguồn chớnh xỏc tới luỹ thừa của 1/2.
Núi túm lại, nú cú thể cho độ dài trung bỡnh của từ mó Huffman giới hạn trờn bởi:
(2.3)
Trong đú: H là lượng entropy nguồn. H là lợng entropy nguồn. P là xỏc suất của cỏc phần tử như nguồn.
Để thực hiện như vậy, Huffman đó thực hiện quỏ trỡnh mó như sau: Bước 1: Liệt kờ cỏc xỏc suất của cỏc phần tử nguồn, và tạo ra cỏc tập nút bằng cỏch cho những xỏc suất này thành cỏc nhỏnh của cõy nhị phõn.
Bước 2: Lấy 2 nút với xỏc suất nhỏ nhất từ tập nút, tạo ra một xỏc suất mới bằng tổng xỏc suất của xỏc suất đú.
Bước 3: Tạo ra một nút mẹ với cỏc xỏc suất mới, và đỏnh dấu 1 cho nút con ở trờn và 0 cho nút con ở dưới.
Bước 4: Tạo tiếp tập nút bằng cỏch thay thế 2 nút với xỏc suất nhỏ nhất cho nút mới. Nếu tập nút chỉ chứa 1 nút thỡ kết thỳc, ngược lại thỡ quay lại bước 2.
Từ đú bộ mó sẽ được thiết lập bằng cỏch dựng một tập hợp số và đỏnh giỏ xỏc suất của mỗi sự kiện. Sự tối ưu cú thể đạt được bằng cỏch thiết kế một bảng mó riờng biệt cho mỗi phần tử được mó hoỏ, nhưng điều này sẽ làm tăng
số bảng mó.
Muốn lập được bảng mó cần tớnh xỏc suất xuất hiện của mỗi phần tử trong tập mó. Dựa vào đú xõy dựng một cõy khụng cõn bằng (tức là gồm một số nhỏnh khụng dài bằng nhau). Mức khụng cõn bằng của cõy phụ thuộc vào xỏc suất xuất hiện của cỏc phần tử. Một cõy xõy dựng như vậy gọi là cõy mó Huffman. Hỡnh 2.5 mụ tả một cõy mó huffman, được xõy dựng cho một chuỗi dữ liệu cần phỏt đi là: “aaaabbcd”.
Nút gốc (8) 0 1 0 1 Nút nhỏnh (4)Nút lỏ Nút lá 0 1 a(4) 1 a(4) Nút nhỏnh (2)Nút lỏ Nút lá 0 1b(2) 1 b(2) Nút lỏ Nút lỏ Nút lá d(1)c(1) c(1) Hỡnh 2.5. Cõy mó Huffman.
Cõy mó Huffman là một cõy nhị phõn cú cỏc nhỏnh được gỏn cho giỏ trị 0 hoặc 1. Gốc của cõy được gọi là nút gốc, cũn cỏc điểm rẽ nhỏnh được gọi là nút lỏ. Mỗi nút lỏ được gỏn tương ứng với một phần tử cần mó hoỏ.
Từ một nút nhỏnh, khi rẽ thành hai nhỏnh mới thỡ nhỏnh bờn trỏi được gỏn cho giỏ trị 0 và nhỏnh bờn phải được gỏn cho giỏ trị 1 (việc gỏn này cú thể làm ngược lại). Từ mó của một phần tử được xỏc định bằng cỏch đi từ nút gốc đến nút lỏ tương ứng với phần tử đú. Cỏc bit của từ mó được tập hợp từ cỏc giỏ trị tương ứng của nhỏnh phải đi qua.
được từng bit một. Do cỏc từ mó Huffman cú tớnh “Prefix”, nghĩa là khụng cú một từ mó ngắn hơn nào trựng với phần đầu của một từ mó dài hơn. Nhờ vào tớnh chất này, việc giải mó ở bờn thu trở nờn đơn giản, là xuất phỏt từ nút gốc và lần lượt đi theo nhỏnh tương ứng với bớt nhận được cho đến khi được một nút lỏ (nghĩa là nhận được đủ một từ mó hợp lệ).
Núi chung, mó hoỏ Huffman đạt hiệu suất thấp khi xỏc suất xuất hiện cỏc phần tử gần như nhau. Ngược lại, nú đạt hiệu suất cao khi xỏc suất xuất hiện cỏc phần tử chờnh lệch nhau lớn. Mặc dự vậy, mó Huffman là một trong những kỹ thuật nộn quan trọng mà chỳng ta thường gặp trong cỏc tiờu chuẩn nộn.