Sự phức tạp của việc tính toán mã miễn phí tiền tố tối ưu là gì, khi tần số tương tự nhau?


13

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:θ(nlgn)

  1. 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 σ )σσO(nlgσ)

  2. 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].kO(n16k)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?O(nmin{16k,lgσ})


THE O(nk) 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 - O(16kn) hoạt động trên đầu vào chưa được sắp xếp và - Hoạt động O(9klog2k1n) trên đầu vào được sắp xếp


  1. 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 O(nlgn) (sắp xếp dựa trên, như thuật toán O(nlgn) cho mã của Huffman) và trong O(nh) (quà tặng gói) được thay thế bởi thuật toán của Kirkpatrick và Seidel trong O(nlgh) (sau này được chứng minh là tối ưu với độ phức tạp của mẫu O(nH(n1,,nk) ). Trong trường hợp Mã tiền tố miễn phí, O(nlgn) so với O(nk) cho thấy khả năng của thuật toán có độ phức tạp O(nlgk) hoặc thậm chí O(nH(n1,,nk) trong đó ni là số lượng từ mã i, 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 .nini

  2. 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: θ(lgn)

    • Với , vàn=3f1=1/2εf2=f3=1/4+ε
    • lgfi=2 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.n/4
  3. 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:k

    • 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.k=nθ(lgn)n2

Câu trả lời:


1

Phải mất vài năm (năm!), Nhưng đây là câu trả lời một phần cho câu hỏi:

http://arxiv.org/abs/1602.00023

Tiền mã tối ưu miễn phí với phân loại một phần Jérémy Barbay (Gửi vào ngày 29 tháng 1 năm 2016)

Chúng tôi mô tả một thuật toán tính toán mã miễn phí tiền tố tối ưu cho n trọng số dương chưa được sắp xếp theo thời gian trong O (n (1 + lgα)) ⊆O (nlgn), trong đó phép thay thế α∈ [1..n − 1] đo lượng sắp xếp theo yêu cầu của tính toán. Độ phức tạp không triệu chứng này nằm trong một yếu tố không đổi của tối ưu trong mô hình tính toán cây quyết định đại số, trong trường hợp xấu nhất trong tất cả các trường hợp kích thước n và xen kẽ α. Các kết quả như vậy tinh chỉnh trạng thái phức tạp nghệ thuật của (nlgn) trong trường hợp xấu nhất so với các trường hợp kích thước n trong cùng một mô hình tính toán, một mốc trong nén và mã hóa từ năm 1952, bằng sự kết hợp đơn thuần của thuật toán của van Leeuwen để tính tiền tố tối ưu mã miễn phí từ các trọng số được sắp xếp (được biết đến từ năm 1976), với Cấu trúc dữ liệu hoãn lại để sắp xếp một phần nhiều trang tùy thuộc vào các truy vấn trên đó (được biết từ năm 1988).

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.