PDA

View Full Version : Thuật toán nén dữ liệu



tranvu
01-02-2005, 19:19
Các bạn giúp mình về thuật toán nén dữ liệu (như BMP,MPG) cao nhất.

Free4Fun
02-02-2005, 16:28
Chào bạn,

Cách đây 6 tháng, tôi có làm 1 đề tài về nén ảnh (gồm cả nén dữ liệu bằng Java) có gỏi code lên Planet-source-code.com. Bạn vào đây xem thửu có dùng được gì không.

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=4640&lngWId=2

Hope this helps

TDH

tranvu
02-02-2005, 22:51
thanks a lot!:D
Có rất nhiều thuật toán về nén dữ lịêu bạn chỉ tui một số đi.Thanks!!

Nhưng cái nèo best !!
Bạn cho code c/c++ nha,tui mù java

Free4Fun
03-02-2005, 09:07
vậy bạn nghiên cứu lý thuyết về nén dữ liệu đi. bạn sẽ thấy không có thuật toán nào là hoàn hảo đâu. Với mỗi loại dữ liệu thì 1 thuật toán sẽ tối ưu hoặc không:

Chăng hạn bạn cần nén dữ liệu có 50 bit '1' và 50 bit '0' khi đó RLE là hiệu quả vì cần lưu số 50-50 là xong. Nhưng nếu dùng Huffman và LZW sẽ không hiệu quả vì phải lưu cây mã hóa kèm theo (Huffman) hoặc từ điển (LZW). Ngược lại nếu mã hóa 100 dữ liệu toìan các bít '0' và '1' ngẫu nhiên thì chưa chắc RLE hiệu quả vì có khi còn làm cho file nén 'phình' to hơn.

Vì vậy tôi có 1 gợi ý là bạn nên theo cách của Winzip, rar. Hình như (tôi không chắc lắm vì có lần đọc lướt trên mạng) các chương trình đó có 2 giai đoạn: tiền xử lý tức là đánh giá hiệu quả các giải thuật rồi quyết định chọn giải thuât tối ưu, sau đó mới đến giai đoạn nén thực sự.

Tôi không tự viết code cho các thuật toán nén= c/c++ nhưng thực sự nó không khác Java lắm đâu. Hãy vô Google và search = khóa compression algorithms bạn sẽ có vô số tài liệu và cả code tham khảo (đọc cả 3 đời chưa hết :-)

Chúc bạn thành công
TDH