PDA

View Full Version : Hỏi về thuật toán huffman



nuilua3
05-04-2005, 11:42
Chào mọi người.Tôi đang cần cài đặt thuật toán Huffman bằng C++.Nhưng không hiểu là khi đã mã hóa một kí tự ví dụ A là 001 thì làm sao để máy hiểu là ta đã mã hóa kí tự A chỉ với 3 bit như trên.(Bình thường máy sẽ lưu kí tụ A như mã ASCI với 8 bit 01000001)

bete
05-04-2005, 18:33
Thân gủi nuilua3:

Nếu là huffman tĩnh: khi nén: đọc hết toàn bộ dữ liệu cần nén rồi xây dựng cây tối ưu; rồi ghi cây huffman và dữ liệu đã nén ở đầu ra. Khi giải nén: đọc đầu vào; xây dựng lại cây; đi theo nhánh 001: hết đi tiếp được => đọc kí tự lưu tại nút lá => biết là 'A'

Nếu là huffman động: khi nén: đọc dữ liệu tới đâu thì cập nhật cây cho tối ưu tới đó; khi giải nén: cập nhật cây liên tục; đi theo nhánh 001: hết đi tiếp được => đọc kí tự lưu tại nút lá => biết là 'A'

(có gì sai sót xin các bạn chỉ giúp, cám ơn rất nhiều)

-thân

nuilua3
05-04-2005, 22:55
Cảm ơn BeBe.Thực ra cái tôi muốn hiêu là sẽ lưu trứ dữ liệu đã nén như nào.Có thể copy file nén đó không...Tôi vẫn đang tìm hiểu vấn đề này

bete
06-04-2005, 01:53
Thân gửi nuilua3: ví dụ bạn mã của A là 001, của B là 010, của C là 011
Bạn muốn ghi ABC đã nén => phải ghi liên tiếp 001 (A), 010 (B) và 011 (C) vô đầu ra(file) => phải ghi 001010011 (nối lại) => phải ghi 00101001 và 1******x (tách ra từng nhóm 8 bit, trong đó x có giá trị tùy ý: dữ liệu muốn ghi ra chỉ có 9 bit nhưng phải ghi 16 bit (2 byte) => thêm vô 7 bit tùy ý

Ghi (khi nén) theo kiểu dữ liệu nhị phân (vẫn có thể copy file nén bình thường) => phải đọc vô (khi giải nén) theo kiểu dữ liệu nhị phân

-thân

nhocval
14-03-2009, 17:10
Nếu mình ko nhầm thì
cái này là tĩnh: http://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Huffman_tree_2.svg/625px-Huffman_tree_2.svg.png
Huffman tree generated from the exact frequencies of the text "this is an example of a huffman tree". The frequencies and codes of each character are below. Encoding the sentence with this code requires 135 bits, not counting space for the tree.

còn cái này là động: http://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Huffman_coding_example.svg/277px-Huffman_coding_example.svg.png

mrlehoangan
15-03-2009, 09:56
That ra khinghien cuứ mã huffman chúng ta chỉ tạo ra được bảng mã thôi để có thể mã hóa bằng lỹ thuyết, con nếu tổ chức lưu trữ trong máy tính, theo em thì phải dùng thêm hợp ngữ mới được.

summerlant
16-03-2009, 00:41
Tui từng triển khai Huffman rùi nhưng mà chậm lắm, hệ số nén thì quá thấp so với RAR, ZIP... Nếu cần thì email đi!

tranthehiep17
24-03-2009, 21:39
bạn có thể cho mình bài của bạn để mình tham khảo đựoc không? Mình cũng đang làm bài nen file bằng thuật toán huffman mà. Mail của mình là: tranthehiep17@gmail.com, mình cảm ơn nhé.

tóc ngắn
05-04-2009, 18:27
mấy bạn ơi cho mình cũng đang làm bài tập giải nén file nữa nè bạn dùm cho mình xin code của bạn dể mình tham khảo dc ko? bạn có thể gởi qua mail của mình là:ngocmaida07tt@yahoo.com. cho mình cảm ơn trước nha.

xprize67
02-04-2010, 08:58
bạn ơi bọn mình cũng phải làm bài tập này, ban gửi cho mình với "mail:hunter671987@gmail.com" thank bạn trước nhá

hoanglinhkd
15-09-2011, 15:59
Các bạn có thể vào topic sắp tới của mình. Hiện tại mình chưa thể post Link download lên diễn đàn.

hoanglinhkd
16-09-2011, 09:47
Đây là đồ án của mình lúc làm chương trình nén và giải nén dùng thuật toán Huffman Static.
Link Download (http://adf.ly/2k0hk)
Các bạn chờ 5 giây, rồi click vào chữ SKIP AD để thấy link mediafire nha.
Chúc bạn học tốt.
http://i610.photobucket.com/albums/tt190/hoanglinhkd/SKIPAD.png