Có ai trong số các bạn biết một thuật toán nén không mất dữ liệu, thuật toán này tạo ra các đầu ra không đầu không? Ví dụ không lưu trữ cây huffman được sử dụng để nén nó? Tôi không nói về cây huffman mã hóa cứng, nhưng tôi muốn biết nếu có bất kỳ thuật toán có thể nén và giải nén đầu vào mà không lưu trữ một số siêu dữ liệu trong đầu ra của nó. Hay điều này thậm chí về mặt lý thuyết là không thể?Tôi có thể tìm thuật toán nén không mất dữ liệu ở đâu, tạo ra kết quả đầu ra không có đầu trang?
Trả lời
Adaptive Huffman coding thực hiện chính xác điều đó. Nói chung, thuật ngữ adaptive coding được sử dụng để mô tả entropy codes với thuộc tính này. Một số dictionary codes cũng có thuộc tính này, ví dụ: run-length encoding (RLE) và Lempel-Ziv-Welch (LZW).
Run Length Encoding sẽ là một ví dụ
Tất nhiên nó là posible. Trong số những người khác, gia đình máy nén LZ không cần phải xuất ra bất cứ thứ gì ngoài dữ liệu nén, vì từ điển được xây dựng trên mạng dưới dạng tiến trình nén (hoặc giải nén). Bạn có nhiều triển khai tham chiếu cho các thuật toán loại LZ đó. Ví dụ: LZMA, thành phần của 7zip.
lzo lò xo cần lưu ý. nó được sử dụng trong OpenVPN, với kết quả tuyệt vời
Tại sao bạn tìm kiếm thuật toán nén với đầu ra nén không đầu không?
Có lẽ (a) bạn có một hệ thống như điện thoại 2 chiều cần nén/giải nén trực tuyến độ trễ thấp. Danh mục mã hóa thích ứng của thuật toán nén được đề cập bởi Zach Scrivena và họ LZ của dictionary compression thuật toán được đề cập bởi Diego Sevilla và Javier là tuyệt vời cho loại ứng dụng này. Triển khai thực tế các thuật toán này thường là do có một hoặc hai byte siêu dữ liệu ngay từ đầu (làm cho chúng vô ích cho (b) ứng dụng), nhưng điều đó có ít hoặc không ảnh hưởng đến độ trễ.
Có lẽ (b) bạn chủ yếu quan tâm đến mật mã, và bạn nghe rằng việc nén trước mã hóa cung cấp một số thuộc tính bảo mật được cải thiện, miễn là văn bản nén không có tiêu đề siêu dữ liệu cố định "giường cũi". Thuật toán mã hóa hiện đại không phải (như chúng tôi biết) dễ bị tổn thương với "nôi" như vậy, nhưng nếu bạn hoang tưởng, bạn có thể quan tâm đến việc nén nén sinh học (a, b, c, v.v.). Không thể phát hiện lỗi khi truyền (bit lật, bit được chèn, bit đã xóa, vv) khi người nhận nhận được kết quả nén như vậy (làm cho các thuật toán này không đặc biệt hữu ích cho (a) ứng dụng).
Có lẽ (c) bạn quan tâm đến việc nén tiêu đề vì một số lý do khác. Âm thanh hấp dẫn - lý do đó là gì?
Bạn có nghĩa là "thuật toán mã hóa * hiện đại không dễ bị tổn thương", phải không? –
@PeterCordes: Bạn nói đúng. Đã sửa. –
- 1. StyleCop-Đầu ra của tôi ở đâu?
- 2. Tôi có thể tìm hiểu cách kết hợp các thuật toán và cấu trúc dữ liệu ở đâu?
- 3. Tôi có thể tìm đầu đọc Lisp ở đâu?
- 4. 'Ngăn đầu ra kiểm tra' ở đâu?
- 5. Thuật toán nén dữ liệu
- 6. Đầu ra chụp dữ liệu
- 7. Hiển thị kết quả truy vấn không có dòng bảng trong vỏ mysql (đầu ra không đầu ra)
- 8. Tạo đầu ra LaTeX từ khung dữ liệu R
- 9. Có thể cắt bớt đầu ra khi xem nội dung của các khung dữ liệu không?
- 10. Tôi có thể tìm các thuật toán nhân và chia nhỏ ở đâu?
- 11. Tôi có thể tìm phần mềm phát hiện khuôn mặt, thuật toán, v.v ... ở đâu?
- 12. Tôi có thể tìm các thuật toán đóng gói thùng 2d mã nguồn mở ở đâu?
- 13. Đầu ra hồi quy dữ liệu có thể xảy ra vs plyr
- 14. Làm cách nào để ngăn GROUP_CONCAT tạo kết quả khi không có dữ liệu đầu vào?
- 15. Tôi có thể tìm tài liệu cho BlueZ ở đâu?
- 16. Làm thế nào để bạn thậm chí có thể cung cấp đầu vào FST (openFST)? Đầu ra ở đâu?
- 17. Đầu ra hồ sơ Hadoop - ở đâu và cái gì?
- 18. Đầu ra không có dòng mới
- 19. IntelliJ có thể tạo siêu liên kết tới mã nguồn từ đầu ra log4j không?
- 20. SSIS - Đầu ra lỗi nguồn (Không có hàng nào được gửi tới (các) đầu ra lỗi ....)
- 21. Có thể tinh chỉnh đầu ra của clojure.test không?
- 22. Công việc đa cấu hình - đầu ra ở đâu?
- 23. Tôi có thể tìm tài liệu về Hpricot ở đâu?
- 24. Tôi có thể tìm tài liệu ASP MVC ở đâu?
- 25. VisualStudio: không có đầu ra gỡ lỗi
- 26. Có cách nào để chuyển đổi markdown thành asciidoc (hoặc có thể tạo ra cùng một đầu ra HTML) không?
- 27. Tôi có thể tìm GACUtil ở đâu?
- 28. Có một thuật toán hiệu quả để tạo ra một thân lõm 2D?
- 29. firebug: có thể lưu đầu ra vào tệp không?
- 30. Tôi có nên đóng dòng đầu ra servlet không?
Ngay cả RLE cũng yêu cầu một số kiến thức về dữ liệu là gì và cách mã hóa RLE. Thuật toán giải nén cần phải biết nếu nó đang đếm bit, hoặc byte, màu sắc hoặc mẫu âm thanh, v.v. –
Đó là hoặc được mã hóa cứng vào chính thuật toán nén/giải nén, hoặc tiêu đề. –
Có, nhưng nói chung nó được mã hóa cứng trong thuật toán, trong khi các bảng mã hóa huffman thường được lưu trữ với dữ liệu nén. –