Người ta biết rằng có một thuật toán tối ưu trường hợp xấu nhất để tính mã Huffman theo thời gian . Điều này được cải thiện theo hai cách trực giao:
Mã miễn phí tiền tố tối ưu có thể được tính nhanh hơn nếu tập hợp các tần số riêng biệt nhỏ (ví dụ: size ): sắp xếp tần số bằng [Munro và Spira, 1976] để tận dụng giá trị nhỏ của và tính toán cây Huffman trong thời gian tuyến tính từ các tần số được sắp xếp. Điều này mang lại một giải pháp trongσ O ( n lg σ )
Có một thuật toán để tính các mã tương đương trong đó là số lượng độ dài mã riêng biệt [Belal và Elmasry].k
Có cách nào để kết hợp các kỹ thuật đó, để cải thiện độ phức tạp tốt nhất hiện tại của không?
THE KẾT QUẢ TỪ STACS 2006 SEEM TO WRONG , Elmasry xuất bản trên ARXIV năm 2010 (http://arxiv.org/abs/cs/0509015) một phiên bản thông báo - hoạt động trên đầu vào chưa được sắp xếp và - Hoạt động trên đầu vào được sắp xếp
Tôi thấy một sự tương tự với sự phức tạp của việc tính toán vỏ lồi phẳng, trong đó các thuật toán trong (sắp xếp dựa trên, như thuật toán cho mã của Huffman) và trong (quà tặng gói) được thay thế bởi thuật toán của Kirkpatrick và Seidel trong (sau này được chứng minh là tối ưu với độ phức tạp của mẫu ). Trong trường hợp Mã tiền tố miễn phí, so với cho thấy khả năng của thuật toán có độ phức tạp hoặc thậm chí trong đó là số lượng từ mã , sử dụng sự tương tự của một cạnh của thân lồi bao phủ trỏ đến độ dài mã bao gồm các ký hiệu .
Một ví dụ đơn giản cho thấy việc sắp xếp các giá trị logarit (làm tròn) của tần số (theo thời gian tuyến tính trong mô hình RAM từ ) không cung cấp mã miễn phí tiền tố tối ưu trong thời gian tuyến tính:
- Với , và
- vì vậy sắp xếp nhật ký không thay đổi thứ tự
- Tuy nhiên, hai mã trong ba chi phí bit nhiều hơn tối ưu.
Một câu hỏi thú vị khác là giảm độ phức tạp khi lớn, tức là tất cả các mã có độ dài riêng biệt:
- ví dụ khi các tần số đều có giá trị log riêng biệt. Trong trường hợp này, người ta có thể sắp xếp tần số theo thời gian tuyến tính trong RAM từ và tính mã Huffman theo thời gian tuyến tính (vì sắp xếp các giá trị nhật ký của chúng là đủ để sắp xếp các giá trị), dẫn đến thời gian tuyến tính tổng thể , tốt hơn nhiều so với từ thuật toán từ Belal và Elmasry.