Mã Huffman tốt như thế nào khi không có chữ cái xác suất lớn?


21

Mã Huffman cho phân phối xác suất p là mã tiền tố có độ dài từ mã trung bình có trọng số tối thiểu pii , trong đó i là độ dài của từ mã thứ i . Một định lý nổi tiếng là độ dài trung bình trên mỗi ký hiệu của mã Huffman nằm giữa H(p)H(p)+1 , trong đó H(p)=ipilog2pi là entropy Shannon của phân phối xác suất.

Ví dụ xấu chính tắc, trong đó độ dài trung bình vượt quá entropy của Shannon gần 1, là phân phối xác suất như {.999,.001} , trong đó entropy gần 0 và độ dài từ mã trung bình là 1. Điều này tạo ra một khoảng cách giữa entropy và độ dài từ mã gần 1 .

Nhưng điều gì xảy ra khi có một ràng buộc về xác suất lớn nhất trong phân phối xác suất? Ví dụ, giả sử rằng tất cả các xác suất nhỏ hơn 12 . Khoảng trống lớn nhất tôi có thể tìm thấy trong trường hợp này là phân phối xác suất, chẳng hạn như{.499,.499,.002}, trong đó entropy nhỉnh hơn 1 và độ dài từ mã trung bình nhỏ hơn 1,5, cho khoảng cách tiếp cận0.5. Đây có phải là điều tốt nhất bạn có thể làm? Bạn có thể đưa ra một giới hạn trên về khoảng cách nhỏ hơn 1 cho trường hợp này không?

Bây giờ, hãy xem xét trường hợp tất cả các xác suất là rất nhỏ. Giả sử bạn chọn một phân bố xác suất trên M chữ, từng có xác xuất 1/M . Trong trường hợp này, khoảng cách lớn nhất xảy ra nếu bạn chọn M2kln2 . Tại đây, bạn nhận được khoảng cách khoảng

1+lnln2ln2ln20.08607.
Đây có phải là điều tốt nhất bạn có thể làm trong tình huống mà tất cả các xác suất đều nhỏ?

Câu hỏi này được lấy cảm hứng từ câu hỏi TCS Stackexchange này .

Câu trả lời:


19

Có rất nhiều bài nghiên cứu chính xác vấn đề bạn đề cập. Cuốn đầu tiên trong sê-ri là một bài báo của Gallager, "Biến thể về chủ đề của Huffman", IEEE-IT, tập. 24, 1978, trang 668-674. Ông chứng minh rằng sự khác biệt giữa độ dài từ mã trung bình của một mã Huffman và entropy (mà ông gọi là số lượng "dư thừa") luôn luôn là đúng ít hơn (= xác suất lớn nhất trong phân bố xác suất), trong trường hợp p 1 / 2 , và nó là ít hơn p + 0,086 , nếu p < 1 / 2 . Giới hạn tốt hơn được biết đến, bạn có thể tìm thấy chúng trong rất nhiều bài báo trích dẫn công việc của Gallager.pp1/2p+0.086p<1/2


2
Giới hạn tối ưu đã được tìm thấy bởi Manstetten, Giới hạn chặt chẽ về sự dư thừa của mã Huffman .
Yuval Filmus

2

Đánh giá bởi ràng buộc, tôi tin rằng bạn có ý định đặt một câu hỏi khác nhau ... hoặc bạn chỉ không nói rõ cách bạn lấy "trung bình". Vì vậy, tôi sẽ trả lời cả hai. Câu trả lời là không cho cả hai câu hỏi.H(p)H(p)+1

Thứ nhất, nếu bạn xác định chiều dài mã trung bình sử dụng một phân bố đều hơn từ mã và mất như trên ràng buộc về khả năng của bất kỳ một yếu tố, sau đó xem xét các mã có độ dài q + k nơi 2 q - 1 từ mã có chiều dài q2 q + k - 1 còn lại có chiều dài q + k . Đối với phân phối được mã hóa hoàn hảo bởi mã này, độ dài trung bình tiếp cận q + k , trừ khi bạn cũng có giới hạn thấp hơn cho xác suất của một yếu tố, trong khi entropy là2qq+k2q1q2q+k1q+kq+k .q+k2

Bây giờ chúng ta hãy xem xét "độ dài trung bình" có nghĩa là độ dài từ mã trung bình khi mã Huffman được sử dụng để mã cho . Tại đây, các ràng buộc là chặt chẽ, và phân phối ví dụ đạt được nó trong giới hạn là một trong đó mỗi phần tử xảy ra với xác suất 2 q ± 1 / 2 cho q Z . (Phần tử cuối cùng được gán bất kỳ xác suất còn sót lại nào, nhưng nó sẽ không tạo ra sự khác biệt bất thường).p2q±1/2qZ.

Ví dụ: xem xét Sau đóq=7.

mang lạiMột=52,B=76. Phân phối của chúng tôi có52phần tử với xác suất2 - 6,5 ,76với xác suất2 - 7,5 và một phần tử có phần còn lại.A+B=128,A2+B/2128,maxAZAA=52,B=765226.57627.5

Sau đó , trong khi mã Huffman đạt ( 52 0,5 - 76 0,5 ) / 128 0,99436 mất entropy. (Ngẫu nhiên, sự mất mát dữ liệu ngẫu nhiên có một cái tên, cho dù bạn làm Huffman mã hóa hoặc tùy tiện mã hóa cho Q : các Kullback-Liebler phân kỳ D ( P Q ) = Σ p iH(X)=(526.5+767.5)/128=7.09375(520.5760.5)/1280.99436Q . Sử dụng nó, tôi đã phát hiện ra một vài ngày trước, dẫn đến giới hạn hai mặt chặt chẽ hơn, như bạn có thể thấy trên Wikipedia cho các giới hạn của Chernoff.)D(PQ)=pilogpiqi+(1pi)log1pi1qi


1
Tôi hơi khó hiểu với ví dụ thứ hai này. Nếu bạn có 128 từ mã, thì có một mã có độ dài từ trung bình 7 (thực tế, tất cả các độ dài từ có 7), điều này mâu thuẫn với tuyên bố của bạn rằng entropy là 7.09375. Entropy của phân phối này (mà bạn nhận được bằng cách lấy trung bình có trọng số là chứ không phải trung bình) là 6,88, trong khi độ dài trung bình của mã Huffman là 7. Điều này tạo ra một khoảng cách (hoặc phân kỳ Kullback-Liebler) trong khoảng 0,12, có vẻ khá hơn một chút so với ví dụ của tôi, nhưng không gần với 1.log2pi
Peter Shor

Và thực sự, bạn đã đúng. Tôi dự định hỏi về độ dài từ mã dự kiến ​​theo phân phối xác suất . p
Peter Shor

Rất tiếc, tôi đã nhầm lẫn về vs B . Chúng tôi vẫn muốn Một AB ít hơn2k, nhưng một cái gì đó nhưA+2B=2k, để buộc các mục nhỏ hơn vào hàng thấp hơn. Điều này cho phépmột= 2 - 1 / A2+B/22kA+2B=2kA=21/221B.
Carl

Trên thực tế đó sẽ là ... nhưng hệ phương trình này không có giải pháp tích cực - có vẻ như chúng ta không thể buộc mọi thứ phải là nửa lũy thừa của 2 . Vì vậy, thay vì 2A+B21/2 chúng ta có thể xem xét, ví dụ(1+x)/2kcho một nửa mã Huffman và(1-x)/2 k + 1 cho phần còn lại, đưa ra32kmục ...1/2(1+x)/2k(1x)/2k+132k
Carl

Vì vậy, hãy thử điều này (không tối ưu - tôi cho rằng điều đó phụ thuộc vào cách bạn quyết định làm tròn hoặc lên). mục với xác suất 1 / 128128 mục với xác suất 1 / 256 có entropy 7,5 . Thay vì thay đổi điều đó để 64 mục với xác suất 1 / 128 641/1281281/2567.564128mục với xác suất1/256(2-1/1/1282128. Entropy của phân phối này là1/(21/256(21/2)mang đến cho 6,4023, trong khi entropy của mã Huffman là 7,5 dưới đồng phục, và(1-2 - 1,5 )*7+2 - 1,5 *8=7,3535. Vì vậy, trừ khi tôi tính toán sai (và tôi thường làm), điều này cho khoảng cách khoảng0,95. 1/(22)7.5+(11/(2(2)))5.802(121.5)7+21.58=7.3535.0.95
Carl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.