1. Trang chủ
  2. » Luận Văn - Báo Cáo

Công nghệ nén tệp thực thi Binary Delta và các ứng dụng trong mạng và truyền dữ liệu máy tính

36 169 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 36
Dung lượng 0,91 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Phương pháp này có ưu điểm là bên phát và bên thu chỉ cần có chung phần mềm nén và giải nén, ngoài ra còn có thể áp dụng được để truyền dữ liệu qua các modem không hỗ trợ nén dữ liệu hoặ

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Nguyễn Thị Hương

CÔNG NGHỆ NÉN DELTA ỨNG DỤNG TRONG CẬP NHẬT PHẦN MỀM TẠI NGÂN

HÀNG CÔNG THƯƠNG VIỆT NAM

Ngành: Công nghệ thông tin Chuyên ngành: Truyền dữ liệu và mạng máy tính

Trang 2

TRANG PHỤ BÌA ……….1

LỜI CAM ĐOAN Error! Bookmark not defined LỜI CẢM ƠN Error! Bookmark not defined MỤC LỤC 1

DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT 4

DANH MỤC CÁC BẢNG BIỂU 5

DANH MỤC CÁC HÌNH VẼ 6

MỞ ĐẦU 7

CHƯƠNG 1 - GIỚI THIỆU CHUNG VỀ MỘT SỐ CÔNG NGHỆ NÉN 8

1.1 Tầm quan trọng của nén dữ liệu trong truyền tin 8

1.2 Nguyên tắc của nén dữ liệu 8

1.3 Một số phương pháp nén dữ liệu 9

1.3.1 Phương pháp mã hoá độ dài loạt (Run-Length Encoding) 9

1.3.2 Phương pháp mã hoá Huffman 11

1.3.3 Phương pháp nén LZW 12

1.3.4 Chọn phương pháp nén 15

CHƯƠNG 2 – CÔNG NGHỆ NÉN DELTA 17

2.1 Tổng quan về công nghệ nén Delta 17

2.1.1 Tổng quan 17

2.1.2 Tính hiệu quả 18

2.2 Nền tảng 19

2.1.3 Nền tảng chung 19

2.1.4 Bộ nén LZ77 - Nền tảng của bộ nén Delta 20

2.3 Thuật toán nén Delta 23

2.3.1 Giới thiệu 23

2.3.2 Đặt vấn đề: 25

2.3.3 Những nghiên cứu đầu tiên 26

2.3.4 Thuật toán cơ bản 27

2.3.5 Sự cải tiến của thuật toán 31 2.3.6 Xây dựng lại xâu đích Error! Bookmark not defined.

2.4 Một vài kết quả thí nghiệm Error! Bookmark not defined.

2.5 Các vấn đề liên quan Error! Bookmark not defined.

2.5.1 Khoảng trống miễn cưỡng trong bộ nén delta Error! Bookmark not defined.

2.5.2 Chọn file tham chiếu Error! Bookmark not defined.

2.5.3 Đồng bộ các file từ xa Error! Bookmark not defined.

2.5.3.1 Thuật toán rsync Error! Bookmark not defined.

2.5.3.2 Các kết quả thực nghiệm của rsync Error! Bookmark not defined.

2.5.3.3 Các ứng dụng Error! Bookmark not defined CHƯƠNG 3 - ỨNG DỤNG THUẬT TOÁN NÉN DELTA TRONG VIỆC CẬP NHẬT CÁC PHẦN MỀM NGHIỆP VỤ TẠI NGÂN HÀNG CÔNG THƯƠNG VIỆT NAMError!

Trang 3

3.1 Mô hình hệ thống công nghệ thông tin trong ngân hàng Công Thương Việt NamError! Bookmark not defined.

3.2 Quy trình cập nhật các phần mềm nghiệp vụ trong ngân hàng Công Thương Việt Nam

Error! Bookmark not defined.

3.3 Chương trình cập nhật tự động các phần mềm nghiệp vụ Error! Bookmark not defined.

3.3.1 Thiết kế hệ thống Error! Bookmark not defined.

3.3.2 Thiết kế chương trình Error! Bookmark not defined.

3.3.2.1 Chương trình đặt lịch tự động Error! Bookmark not defined.

3.3.2.2 Chương trình quản lý trên Server TW Error! Bookmark not defined.

3.3.2.2.1 Quản lý gói cập nhật Error! Bookmark not defined.

3.3.2.3.2 Quản lý danh sách chi nhánh Error! Bookmark not defined.

3.3.2.3.3 Quản lý danh sách ứng dụng Error! Bookmark not defined.

3.3.2.3.4 Upload thủ công gói cập nhật Error! Bookmark not defined.

3.3.2.3.5 Xem nhật ký upload Error! Bookmark not defined.

3.3.3 Thực thi chương trình Error! Bookmark not defined.

3.3.3.1 Chương trình đặt lịch tự động Error! Bookmark not defined.

3.3.3.2 Chương trình quản lý trên server TW Error! Bookmark not defined.

3.3.3.2.1 Quản lý gói cập nhật Error! Bookmark not defined.

3.3.3.2.2 Quản lý danh sách chi nhánh Error! Bookmark not defined.

3.3.3.2.3 Quản lý danh sách ứng dụng Error! Bookmark not defined.

3.3.3.2.4 Upload thủ công gói cập nhật Error! Bookmark not defined.

3.3.3.2.5 Xem nhật ký upload Error! Bookmark not defined CHƯƠNG 4 - KẾT LUẬN Error! Bookmark not defined 4.1 Kết luận Error! Bookmark not defined 4.2 Ưu nhược điểm của phương pháp Error! Bookmark not defined 4.3 Hướng nghiên cứu trong tương lai Error! Bookmark not defined TÀI LIỆU THAM KHẢO 33 Bảng đối chiếu encoding các bộ chữ hiện hành với UnicodeError! Bookmark not defined Thuật toán Knuth-Morris-Pratt Pattern Matching Error! Bookmark not defined.

CHƯƠNG 2

Trang 4

CHƯƠNG 3 DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT

Chữ viết tắt Nội dung tiếng Anh Nội dung tiếng Việt

Delta compression Differential compression Phương pháp nén dựa trên

sự sai khác nhau giữa 2 file

Điều chế biên độ trực giao

ngôn ngữ lập trình nào đó) nhằm thực hiện một mục đích cho trước

Format

Mã định dạng unicode

Trang 5

CHƯƠNG 4 DANH MỤC CÁC BẢNG BIỂU

Bảng 2.1: Các kết quả nén cho bộ dữ liệu gcc và emacs (KB /s) 23

Bảng 2.2: Các kết quả nén cho tập dữ liệu gcc và emacs (KB)Error! Bookmark not defined Bảng 2.3: Các kết quả nén cho emacs với các tập dữ liệu khác nhau (KB)Error! Bookmark not defined

CHƯƠNG 5

Trang 6

Hình 3.6: Mối quan hệ giữa chức năng quản lý danh sách chi nhánh và các chức năng khác

Error! Bookmark not defined Hình 3.7: Các mô đun chính của chức năng Quản lý danh sách ứng dụngError! Bookmark not defined

Hình 3.8: Mối quan hệ giữa chức năng Quản lý danh sách ứng dụng và chức năng Quản lý gói

cập nhật Error! Bookmark not defined

Hình 3.9: Mối quan hệ giữa chức năng Upload thủ công gói cập nhật và các chức năng khác

Error! Bookmark not defined Hình 3.10: Mối quan hệ giữa chức năng Xem nhật ký upload và các chức năng khác Error! Bookmark not defined

Hình 3.11: Thực thi chương trình đặt lịch tự động (1) Error! Bookmark not defined Hình 3.12: Thực thi chương trình đặt lịch tự động (2) Error! Bookmark not defined Hình 3.13: Thực thi chương trình đặt lịch tự động (3) Error! Bookmark not defined Hình 3.14: Thực thi chương trình đặt lịch tự động (4) Error! Bookmark not defined Hình 3.15: Thực thi chương trình đặt lịch tự động (5) Error! Bookmark not defined Hình 3.16: Thực thi chương trình đặt lịch tự động (6) Error! Bookmark not defined Hình 3.17: Thực thi chương trình đặt lịch tự động (6) Error! Bookmark not defined Hình 3.18: Giao diện màn hình quản lý trên Server TW Error! Bookmark not defined Hình 3.19: Thực thi mô đun Quản lý gói cập nhật (1) Error! Bookmark not defined Hình 3.20: Thực thi mô đun Quản lý gói cập nhật (2) Error! Bookmark not defined Hình 3.21: Thực thi mô đun Quản lý gói cập nhật (3) Error! Bookmark not defined Hình 3.22: Thực thi mô đun Quản lý gói cập nhật (4) Error! Bookmark not defined Hình 3.23: Thực thi mô đun Quản lý danh sách chi nhánh (1)Error! Bookmark not defined Hình 3.24: Thực thi mô đun Quản lý danh sách chi nhánh (2)Error! Bookmark not defined Hình 3.25: Thực thi mô đun Quản lý danh sách chi nhánh (3)Error! Bookmark not defined Hình 3.26: Thực thi mô đun Quản lý danh sách ứng dụng (1) Error! Bookmark not defined Hình 3.27: Thực thi mô đun Quản lý danh sách ứng dụng (2) Error! Bookmark not defined Hình 3.28: Thực thi mô đun Upload thủ công gói cập nhật (1)Error! Bookmark not defined Hình 3.29: Thực thi mô đun Upload thủ công gói cập nhật (2)Error! Bookmark not defined Hình 3.30: Thực thi mô đun Upload thủ công gói cập nhật (3)Error! Bookmark not defined Hình 3.31: Thực thi mô đun Xem nhật ký upload (1) Error! Bookmark not defined Hình 3.32: Thực thi mô đun Xem nhật ký upload (2) Error! Bookmark not defined

Trang 8

CHƯƠNG 8 MỞ ĐẦU

Trong các lĩnh vực của công nghệ thông tin - viễn thông hiện nay, việc truyền tải tin tức đã là một công việc xảy ra thường xuyên Tuy nhiên, thông tin được truyền tải đi thường rất lớn, điều này gây khó khăn cho công việc truyền tải: gây tốn kém tài nguyên mạng, tiêu phí khả năng của hệ thống… Để giải quyết vấn đề đó, các thuật toán nén đã được ra đời

Mỗi phương pháp nén có hiệu quả khác nhau với các loại tệp khác nhau Luận văn này

sẽ trình bày một phương pháp nén có hiệu quả cao trong việc truyền tải tệp tin trên mạng phục vụ cho việc cập nhật phiên bản của tệp tin Phương pháp dựa trên sự sai khác nhau giữa tệp nguồn và tệp đích (gọi là Differential Compression – hay Delta Compression) - trong quá trình cập nhật, tệp nguồn là tệp cũ, tệp đích là tệp mới- và tạo ra một bản vá có kích thước nhỏ đáng kể so với tệp đích Khi đó, thay vì phải truyền tệp đích có kích thước lớn trên mạng, ta chỉ cần truyền bản vá có kích thước rất nhỏ Phương pháp đã đạt được tỉ lệ nén cao, rất hiệu quả trong việc tiết kiệm tài nguyên mạng Nếu tỷ lệ nén cho các tệp thực thi thường dao động quanh 3:1 thì tỷ lệ nén của bản vá so với tệp đích theo phương pháp Delta có thể nằm trong khoảng từ 10:1 tới 1000:1 và thậm chí có thể lớn hơn – tùy thuộc vào dung lượng tệp đích và mức độ khác biệt của nó với tệp nguồn Luận văn cũng trình bày ứng dụng của phương pháp nén trong việc cập nhật phần mềm nghiệp vụ tại Ngân hàng Công thương Việt Nam

Trang 9

8.1 CHƯƠNG 1 - GIỚI THIỆU CHUNG VỀ MỘT SỐ CÔNG NGHỆ NÉN 1.1 Tầm quan trọng của nén dữ liệu trong truyền tin

Trong kỹ thuật truyền tin nối tiếp, do các bit dữ liệu được truyền đi nối tiếp, lại bị giới hạn về dải thông của kênh truyền và giới hạn về các chuẩn ghép nối nên tốc độ truyền tin tương đối chậm Ðể tăng tốc độ truyền, ta có thể dùng nhiều phương pháp như sử dụng kỹ thuật điều chế pha nhiều mức, điều chế QAM, TCM

Nén dữ liệu trước khi truyền đi cũng là một trong các phương pháp nhằm tăng tốc độ truyền dữ liệu Trong các modem hiện đại, việc thực hiện nén dữ liệu trước khi truyền đi

có thể được thực hiện ngay trong modem theo các giao thức V42bis Phương pháp này đòi hỏi hai modem phải có cùng một giao thức nén dữ liệu, điều này nhiều khi khó thoả mãn

Có một phương pháp khác là thực hiện nén các tập tin ngay tại các máy vi tính trước khi truyền đi, tại các máy tính nhận, các tập tin lại được giải nén để phục hồi lại dạng ban đầu Phương pháp này có ưu điểm là bên phát và bên thu chỉ cần có chung phần mềm nén và giải nén, ngoài ra còn có thể áp dụng được để truyền dữ liệu qua các modem không hỗ trợ nén dữ liệu hoặc truyền dữ liệu trực tiếp qua cổng COM của máy tính Nhược điểm của phương pháp này là các máy vi tính phải tốn thêm thời gian nén và giải nén, nhưng do sự phát triển nhanh chóng của các bộ vi xử lý mà thời gian thực hiện nén

và giải nén được giảm nhỏ hơn rất nhiều thời gian để truyền dữ liệu Ví dụ, khi truyền một tập tin có kích thước là 100Kbyte với dạng thức của một SDU là: 8 bits dữ liệu, 2 bit STOP và 1 bit START, không dùng bit chẵn lẻ, tốc độ truyền là 9600bits/giây thì mất khoảng 120 giây, trong khi một máy vi tính với bộ vi xử lí 80386 có thể thực hiện nén tập tin trên xuống còn 50Kbyte chỉ mất chưa đến 10 giây

1.2 Nguyên tắc của nén dữ liệu

Thông thường, hầu hết các tập tin trong máy tính có rất nhiều thông tin dư thừa, việc thực hiện nén tập tin thực chất là mã hoá lại các tập tin để loại bỏ các thông tin dư thừa Nhìn chung không thể có phương phát nén tổng quát nào cho kết quả tốt đối với tất cả các loại tập tin vì nếu không ta sẽ áp dụng n lần phương pháp nén này để đạt được một tập tin nhỏ tuỳ ý! Kỹ thuật nén tập tin thường được áp dụng cho các tập tin văn bản

Trang 10

(Trong đó có một số kí tự nào đó có xác suất xuất hiện nhiều hơn các kí tự khác), các tập tin ảnh bitmap (Mà có thể có những mảng lớn đồng nhất), các tập tin dùng để biểu diễn

âm thanh dưới dạng số hoá và các tín hiệu tương tự (analog signal) khác (Các tín hiệu này có thể có các mẫu được lặp lại nhiều lần) Ðối với các tập tin nhị phân như tập tin chương trình thì sau khi nén cũng không tiết kiệm được nhiều

Ngoài ra, trong một số trường hợp để nâng cao hệ số nén người ta có thể bỏ bớt một số thông tin của tập tin (Ví dụ như kỹ thật nén ảnh JPEG)

1.3 Một số phương pháp nén dữ liệu

8.1.1.1 1.3.1 Phương pháp mã hoá độ dài loạt (Run-Length Encoding)

Loại dư thừa đơn giản nhất trong một tập tin là các đường chạy dài gồm các kí tự lặp lại, điều này thường thấy trong các tập tin đồ hoạ bitmap, các vùng dữ liệu hằng của các tập tin chương trình, một số tập tin văn bản

Ví dụ, xét chuỗi sau:

AAAABBBAABBBBBCCCCCCCCDABCBAAABBBBCCCD

Chuỗi này có thể được mã hoá một cách cô đọng hơn bằng cách thay thế chuỗi kí tự lặp lại bằng một thể hiện duy nhất của kí tự lặp lại cùng với một biến đếm số lần kí tự đó được lặp lại Ta muốn nói rằng chuỗi này gồm bốn chữ A theo sau bởi ba chữ B rồi lại theo sau bởi hai chữ A, rồi lại theo sau bởi năm chữ B Việc nén một chuỗi theo phương pháp này được gọi là mã hoá độ dài loạt Khi có những loạt dài, việc tiết kiệm có thể là đáng kể Có nhiều cách để thực hiện ý tưởng này, tuỳ thuộc vào các đặc trưng của ứng dụng (các loạt chạy có khuynh hướng tương đối dài hay không ? Có bao nhiêu bit được dùng để mã hoá các kí tự đang được mã ?)

Nếu ta biết rằng chuỗi của chúng ta chỉ chứa các chữ cái, thì ta có thể mã hoá biến đếm một cách đơn giản bằng cách xen kẽ các con số với các chữ cái Vì vậy chuỗi kí tự trên được mã hoá lại như sau:

4A3BAA5B8CDABCB3A4B3CD

Ở đây "4A" có nghĩa là "bốn chữ A" Chú ý là không đáng để mã hoá các loạt chạy có

độ dài 1 hoặc 2 vì cần đến hai kí tự để mã hoá

Trang 11

Ðối với các tập tin nhị phân một phiên bản được tinh chế của phương pháp này được dùng để thu được sự tiết kiệm ÐÁNG KỂ Ý tưởng ở đây là lưu lại các độ dài loạt, tận dụng sự kiện các loạt chạy thay đổi giữa 0 và 1 để tránh phải lưu chính các số 0 và 1 đó Ðiều này giả định rằng có một vài loạt chạy ngắn (Ta tiết kiệm các bit trên một loạt chạy chỉ khi độ dài của đường chạy là lớn hơn số bit cần để biễu diễn chính nó trong dạng nhị phân), nhưng khó có phương pháp mã hoá độ dài loạt nào hoạt động thật tốt trừ phi hầu hết các loạt chạy đều dài

Việc mã hoá độ dài loạt cần đến các biễu diễn riêng biệt cho tập tin và cho bản đã được

mã hoá của nó, vì vậy nó không thể dùng cho mọi tập tin, điều này có thể hoàn toàn bất lợi Ví dụ, phương pháp nén tập tin kí tự đã được đề nghị ở trên sẽ không dùng được đối với các chuỗi kí tự có chứa số Nếu những kí tự khác được sử dụng để mã hoá các số đếm, thì nó sẽ không làm việc với các chuỗi chứa các kí tự đó Giả sử ta phải mã hoá bất

kì kí tự nào từ một bảng chữ cái cố định bằng cách chỉ dùng các kí tự từ bảng chữ cái đó

Ðể minh hoạ, giả sử ta phải mã hoá bất kì một chuỗi nào từ một chữ cái đó, ta sẽ giả định rằng ta chỉ có 26 chữ cái trong bảng chữ cái (và cả khoảng trống) để làm việc

Ðể có thể dùng vài chữ cái để biểu diễn các số và các kí tự khác biểu diễn các phần tử của chuỗi sẽ được mã hoá, ta phải chọn một kí tự được gọi là kí tự "Escape" Mỗi một sự xuất hiện của kí tự đó báo hiệu rằng hai chữ cái tiếp theo sẽ tạo thành một cặp (số đếm,

kí tự) với các số đếm được biểu diễn bằng cách dùng kí tự thứ i của bảng chữ cái để biểu diễn số i Vì vậy, chuỗi ví dụ của chúng ta sẽ được biểu diễn như sau với Q được xem là các kí tự "Escape"

QDABBBAABQHCDABCBAAAQDBCCCD

Tổ hợp của kí tự "Escape", số đếm và một kí tự lặp lại được gọi là một dãy Escape Chú

ý rằng không đáng để mã hoá các đường chạy có chiều dài ít hơn bốn kí tự, vì ít nhất là cần đến ba kí tự để mã hoá bất kì một loạt chạy nào

Trong trường hợp bản thân kí tự "Escape" xuất hiện trong dãy kí tự cần mã hoá ta sử dụng một dãy "Escape" với số đếm là 0 (kí tự space) để biểu diễn kí tự "Escape" Như vậy trong trường hợp kí tự "Escape" xuất hiện nhiều thì có thể làm cho tập tin nén phình

to hơn trước

Trang 12

Các loạt chạy dài có thể được cắt ra để mã hoá bằng nhiều dãy Escape, ví dụ, một loạt chạy gồm 51 chữ A sẽ được mã hoá như QZAQYA bằng cách dùng trên

Phương pháp mã hoá độ dài loạt thường được áp dụng cho các tập tin đồ hoạ bitmap vì ở

đó thường có các mảng lớn cùng màu được biểu diễn dưới dạng bitmap là các chuỗi bit

có đường chạy dài Trên thực tế, nó được dùng trong các tập tin PCX, RLE

8.1.1.2 1.3.2 Phương pháp mã hoá Huffman

Các tập tin của máy tính được lưu dưới dạng các kí tự có chiều dài không đổi là 8 bits Trong nhiều tập tin, xác suất xuất hiện các kí tự này là nhiều hơn các kí tự khác, từ đó ta thấy ngay rằng nếu chỉ dùng một vài bit để biểu diễn cho các kí tự có xác suất xuất hiện lớn và dùng nhiều bit hơn để biểu diễn cho các kí tự có xác suất xuất hiện nhỏ thì có thể tiết kiệm được độ dài tập tin một cách đáng kể Ví dụ, để mã hoá một chuỗi như sau:

"ABRACADABRA"

Nếu mã hoá chuỗi trên trong dạng mã nhị phân 5 bit ta sẽ có dãy bit sau:

0000100010100100000100011000010010000001000101001000001

Ðể giải mã thông điệp này, chỉ đơn giản là đọc ra 5 bits ở từng thời điểm và chuyển đổi

nó tương ứng với việc mã hoá nhị phân đã được định nghĩa ở trên Trong mã chuẩn này, chữ D xuất hiện chỉ một lần sẽ cần số lượng bit giống chữ A xuất hiện nhiều lần

Ta có thể gán các chuỗi bit ngắn nhất cho các kí tự được dùng phổ biến nhất, giả sử ta gán: A là 0, B là 1, R là 01, C là 10 và D là 11 thì chuỗi trên được biễu diễn như sau:

0 1 01 0 10 0 11 0 1 01 0

Ví dụ này chỉ dùng 15 bits so với 55 bits như ở trên, nhưng nó không thực sự là một mã

vì phải lệ thuộc vào khoảng trống để phân cách các kí tự Nếu không có dấu phân cách thì ta không thể giải mã được thông điệp này Ta cũng có thể chọn các từ mã sao cho thông điệp có thể được giải mã mà không cần dấu phân cách, ví dụ như: A là 11, B là 00,

C là 010, D là 10 và R là 011, các từ mã này gọi là các từ mã có tính prefix (Không có từ

mã nào là tiền tố của từ mã khác) Với các từ mã này ta có thể mã hoá thông điệp trên như sau:

Trang 13

1100011110101110110001111

Với chuỗi đã mã hoá này ta hoàn toàn có thể giải mã được mà không cần dấu phân cách Nhưng bằng cách nào để tìm ra bảng mã một cách tốt nhất ? Vào năm 1952, D.Huffman

đã phát minh ra một cách tổng quát để tìm ra bảng mã này một cách tốt nhất

- Bước đầu tiên trong việc xây dựng mã Huffman là đếm số lần xuất hiện của mỗi kí tự trong tập tin sẽ được mã hoá

- Bước tiếp theo là xây dựng một cây nhị phân với các tần số được chứa trong các nút Hai nút có tấn số bé nhất được tìm thấy và một nút mới được tạo ra với hai nút con là các nút đó với giá trị tần số của nút mới bằng tổng tần suất của hai nút con Tiếp theo hai nút mới với tần số nhỏ nhất lại được tìm thấy và một nút mới nữa lại được tao ra theo cách trên Lặp lại như vậy cho đến khi tất cả các nút được tổ hợp thành một cây duy nhất

- Sau khi có cây nhị phân, bảng mã Huffman được phát sinh bằng cách thay thế các tần

số ở nút đáy bằng các kí tự tương ứng

Ưu điểm của phương pháp mã hoá Huffman là đạt được hệ số nén cao (Hệ số nén tuỳ thuộc vào cấu trúc của các tập tin) Nhược điểm của phương pháp này là bên nhận muốn giải mã được thông điệp thì phải có một bảng mã giống như bảng mã ở bên gửi, do đó khi nén các tập tin bé hệ số nén không được cao

8.1.1.3 1.3.3 Phương pháp nén LZW

Phương pháp nén LZW được phát minh bởi Lempel - Zip và Welch Nó hoạt động đựa trên một ý tưởng rất đơn giản là người mã hoá và người giải mã cùng xây dựng bản mã Nguyên tắc hoạt động của nó như sau:

- Một xâu kí tự là một tập hợp từ hai kí tự trở lên

- Nhớ tất cả các xâu kí tự đã gặp và gán cho nó một dấu hiệu (token) riêng

- Nếu lần sau gặp lại xâu kí tự đó, xâu kí tự sẽ được thay thế bằng dấu hiệu của nó Phần quan trọng nhất của phương pháp nén này là phải tạo một mảng rất lớn dùng để lưu giữ các xâu kí tự đã gặp (Mảng này được gọi là "Từ điển") Khi các byte dữ liệu cần nén được đem đến, chúng liền được giữ lại trong một bộ đệm chứa (Accumulator) và đem so sánh với các chuỗi đã có trong "từ điển" Nếu chuỗi dữ liệu trong bộ đệm chứa không có trong "từ điển" thì nó được bổ sung thêm vào "từ điển" và chỉ số của chuỗi ở trong "từ

Trang 14

điển" chính là dấu hiệu của chuỗi Nếu chuỗi trong bộ đệm chứa đã có trong "từ điển" thì dấu hiệu của chuỗi được đem ra thay cho chuỗi ở dòng dữ liệu ra Có bốn qui tắc để thực hiên việc nén dữ liệu theo thuật toán LZW là:

Qui tắc 1: 256 dấu hiệu đầu tiên được dành cho các kí tự đơn (0 - 0ffh) Qui tắc 2: Cố gắng so sánh với "từ điển" khi trong bộ đệm chứa đã có nhiều hơn hai kí

tự

Qui tắc 3: Các kí tự ở đầu vào (nhận từ tập tin sẽ được nén) được bổ sung vào bộ đệm chứa đến khi chuỗi kí tự trong bộ đệm chứa không có trong "từ điển" Qui tắc 4: Khi bộ đệm chứa có một chuỗi mà trong "từ điển" không có thì chuỗi trong bộ đệm chứa được đem vào "từ điển" Kí tự cuối cùng của chuỗi kí tự trong bộ đệm chứa phải ở lại trong bộ đệm chứa để tiếp tục tạo thành chuỗi mới

Ví dụ: Các bước để mã hoá chuỗi "!BAN!BA!BAA!BAR!" như sau (Bảng 4 1):

- Bước 1: Kí tự thứ nhất ‘!’ được cất vào bộ đệm chứa để chuẩn bị tạo nên một chuỗi

- Bước 2: Kí tự thứ hai ‘B’ nối thêm vào sau kí tự ! Vì trong "từ điển" chưa có chuỗi "!B" nên chuỗi này được thêm vào "từ điển" và được gán dấu hiệu là 100h (Vì từ 000h đến 0ffh được dành riêng cho các kí tự đơn: Qui tắc 1) ‘!’ được gửi

ra còn ‘B’ phải ở lại trong bộ đệm chứa

Trang 15

- Bước 3: Kí tự thứ ba ‘A’ thêm vào sau ‘B’ Chuỗi "BA" cũng chưa có trong "từ điển" nên nó được thêm vào "từ điển" và gán dấu hiệu là 101h ‘A’ ở lại trong bộ đệm chứa còn ‘B’ được gửi ra

Trang 16

- Bước 4: Kí tự thứ tư ‘N’ thêm vào sau ‘A’ tạo thành chuỗi "AN" cũng chưa có trong "từ điển" nên được thêm vào "từ điển" và có dấu hiệu là 102h ‘N’ ở lại trong

bộ đệm chứa còn ‘A’ được gửi ra

- Bước 5: Kí tự thứ năm ‘!’ thêm vào sau ‘N’ để tạo thành chuỗi "N!", "N!" được thêm vào "từ điển" với dấu hiệu là 103h ‘!’ ở lại còn ‘N’ được gửi ra

- Bước 6: Kí tự thứ sáu ‘B’ thêm vào sau ‘!’ Lần này thì chuỗi "B!" đã có trong "từ điển" nên không có kí tự nào được gửi ra "B!" tiếp tục ở lại trong "từ điển" để tạo

ra chuỗi mới

- Bước 7: Kí tự thứ bảy ‘A’ thêm vào sau ‘B’ để tạo thành chuỗi "B!A", do "B!A" không có trong "từ điển" nên nó được thêm vào "từ điển" và gán dấu hiệu là 104h đồng thời dấu hiệu 100h được gửi ra thay cho "B!" (Qui tắc 4) A tiếp tục ở lại trong bộ đệm chứa để tạo thành chuỗi mới

Các bước trên cứ thế tiếp tục cho đến khi hết tập tin cần nén Việc giảm kích thước chỉ thực sự bắt đầu tại bước 7 khi mà một dấu hiệu 12 bits là <100h> được gửi ra thay cho hai byte "B!"

Trong thuật toán nén này, phần lớn thời gian khi bắt đầu nén chủ yếu mất vào việc tạo

"từ điển" Khi "từ điển" đủ lớn, xác suất gặp chuỗi ở bộ đệm chứa trong "từ điển" tăng lên và càng nén được nhiều hơn Một điều cần chú ý ở đây là mỗi một dấu hiệu, ta phải lưu một chuỗi trong "từ điển" để so sánh Vì dấu hiệu được biểu diễn bằng một số 12 bits nên "từ điển" sẽ có 4096 lối vào, khi tăng số bit dể biễu diễn dấu hiệu lên thì hiệu quả nén sẽ tốt hơn nhưng lại bị giới hạn bởi bộ nhớ của máy tính Vì dụ, khi dùng 16 bits để biểu diễn một dấu hiệu thì "từ điển" phải có đến 65536 lối vào, nếu mỗi lối vào có khoảng 20 kí tự thì "từ điển" phải lớn khoảng 1,2 MB Với một từ điển có dung lượng như vậy rất khó có thể thực hiện trên các máy tính PC hoạt động dưới hệ điều hành DOS

vì giới hạn của một đoạn (Segment) là 64KB Ưu điểm của phương pháp nén LZW là bên nhận có thể tự xây dựng bảng mã mà không cần bên gửi phải gửi kèm theo bản tin nén

8.1.1.4 1.3.4 Chọn phương pháp nén

Mỗi phương pháp nén có các ưu nhược điểm riêng, thuật toán nén độ dài loạt (Runlength) không thể áp dụng cho mhiều loại tập tin được, ví dụ như tập tin chương

Trang 17

trình, tập tin cơ sở dữ liệu vì ở đó các loạt chạy là rất ngắn, do đó nếu áp dụng thuật toán này không những không làm bé tập tin mà còn làm phình to chúng

Hai thuật toán còn lại (Huffman và LZW) đều có thể áp dụng được để nén nhiều loại tập tin trên các máy vi tính

Thuật toán Huffman có ưu điểm là hệ số nén tương đối cao, phương pháp thực hiện tương đối đơn giản, đòi hỏi ít bộ nhớ, có thể xây dựng dựa trên các mảng bé hơn 64KB Nhược điểm của nó là phải chứa cả bảng mã vào tập tin nén thì phía nhận mới có thể giải

mã được do đó hiệu suất nén chỉ cao khi ta thực hiện nén các tập tin lớn

Thuật toán nén LZW có các ưu điểm là hệ số nén tương đối cao, trong tập tin nén không cần phải chứa bảng mã Nhược điểm của thuật toán này là tốn nhiều bộ nhớ, khó thực hiện dựa trên các mảng đơn giản (bé hơn 64KB)

Các thuật toán nén kể trên thường được áp dụng để nén các tập tin lưu trên máy tính hoặc trước khi truyền thông trên mạng Trong trường hợp tập tin cần truyền trên mạng chỉ là một bản vá cho các tệp thực thi mà phiên bản cũ của chúng đã tồn tại trên máy đích, việc áp dụng các thuật toán trên sẽ không thực sự hiệu quả

Một công nghệ nén khác được Microsoft phát triển nhằm cập nhật phiên bản mới cho các tệp thực thi Đó là công nghệ Delta Compression Nếu tỷ lệ nén cho các tệp thực thi thường dao động quanh 3:1 thì tỷ lệ nén của bản vá so với tệp đích theo công nghệ Delta có thể nằm trong khoảng từ 10:1 tới 1000:1 và thậm chí có thể lớn hơn – tùy thuộc vào dung lượng tệp đích và mức độ khác biệt của nó với tệp cơ sở Vì vậy, việc áp dụng công nghệ Delta vào thực tiễn sẽ có ý nghĩa lớn trong truyền dữ liệu trên mạng máy tính, giúp giảm lưu lượng trên đường truyền, giảm thời gian truyền nhận gói tin

Trang 18

8.2 CHƯƠNG 2 – CÔNG NGHỆ NÉN DELTA

Công nghệ nén Delta được phát triển bởi Microsoft, là một công nghệ nén dựa trên sự sai khác nhau của các file và được sử dụng cho việc cập nhật phần mềm Quá trình nén dựa trên sự sai khác giữa 2 file, do đó mà tạo ra một file có kích thước nhỏ đáng kể hơn

Hình 2.1 mô tả quá trình này Bộ nén chấp nhận dữ liệu F’ và đưa ra một đại diện đã nén

C(F’) Sau đó, bộ giải nén chấp nhận C(F’) và xây dựng lại dữ liệu ban đầu F’

Hình 2.1 Bộ nén dữ ệu thông thườ

Hệ thống nén Delta cũng sử dụng một bộ nén, nhưng bộ nén này chấp nhận 2 input: một file đích (target file) và một file tham chiếu hay file cơ sở (basic file) Giống như các bộ

Ngày đăng: 03/03/2018, 12:48

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. 9/2009 ,“Tổng quan thuật toán nén dữ liệu”, Diễn đàn sinh viên CNNT Đại học Duy Tân Sách, tạp chí
Tiêu đề: Tổng quan thuật toán nén dữ liệu”
2. Phạm Tuấn Anh (2008), Nghiên cứu các thuật toán nén , Tuyển tập báo cáo hội nghị sinh viên nghiên cứu khoa học, Đại học Đà Nẵng Sách, tạp chí
Tiêu đề: Nghiên cứu các thuật toán nén
Tác giả: Phạm Tuấn Anh
Năm: 2008
3. “http://www.echip.com.vn/echiproot/weblh/suutam/2002/vovisoft/doichieu.htm”,Bảng đối chiếu encoding các bộ chữ hiện hành với Unicode.Tiếng Anh Sách, tạp chí
Tiêu đề: http://www.echip.com.vn/echiproot/weblh/suutam/2002/vovisoft/doichieu.htm”,"Bảng đối chiếu encoding các bộ chữ hiện hành với Unicode
4. A. Cobbs (1995), “Fast approximate matching using suffix trees”, Combinatorial Pattern Matching Sách, tạp chí
Tiêu đề: Fast approximate matching using suffix trees”
Tác giả: A. Cobbs
Năm: 1995
5. G. Navarro, R. Baeza-Yates, E. Sutinen, J. Tarhio (2001), “Indexing methods for approximate string matching”, IEEE Data Eng. Bull (24) Sách, tạp chí
Tiêu đề: Indexing methods for approximate string matching”, " IEEE Data Eng. Bull
Tác giả: G. Navarro, R. Baeza-Yates, E. Sutinen, J. Tarhio
Năm: 2001
6. J.Hunt, K.P. Vo, and W.Tich (1992), “Delta algorithms: An empirical analysis” ACM Transactions on Computers Sách, tạp chí
Tiêu đề: Delta algorithms: An empirical analysis”
Tác giả: J.Hunt, K.P. Vo, and W.Tich
Năm: 1992
8. Ramesh C.Agarwal, Suchitra Amalapurapu (2001), “An approximation to the Greedy Algorithm for Differential Compression of Very Large Files” Sách, tạp chí
Tiêu đề: An approximation to the Greedy Algorithm for Differential Compression of Very Large Files
Tác giả: Ramesh C.Agarwal, Suchitra Amalapurapu
Năm: 2001
9. R.A. Baeza-Yates, G. Navarro (2000), “A faster algorithm for approximate string matching”, Proc. Seventh Ann. Symp. on Combinatorial Pattern Sách, tạp chí
Tiêu đề: A faster algorithm for approximate string matching”
Tác giả: R.A. Baeza-Yates, G. Navarro
Năm: 2000
10. R.A. Wagner and M.J.Fisher (2002), “The string – to – string correction problem” J.ACM, 168-173 Sách, tạp chí
Tiêu đề: The string – to – string correction problem” "J.ACM
Tác giả: R.A. Wagner and M.J.Fisher
Năm: 2002
11. R. Grossi, J.S. Vitter (1996), “Compressed suffix arrays and suffix trees with applications to text indexing and string matching”, ACM Sách, tạp chí
Tiêu đề: Compressed suffix arrays and suffix trees with applications to text indexing and string matching”
Tác giả: R. Grossi, J.S. Vitter
Năm: 1996
12. Torsten Suel, Nasir Memon, CIS Department Polytechnic University Brooklyn, NY 11201, “Algorithms for Delta Compression and Remote File Synchronization” Sách, tạp chí
Tiêu đề: Algorithms for Delta Compression and Remote File Synchronization
13. W. Tichy (1997), “The string – to – string correction problem with block moves”. ACM Transactions on Computers Sách, tạp chí
Tiêu đề: The string – to – string correction problem with block moves”
Tác giả: W. Tichy
Năm: 1997
7. J.Ziv and A.Lempel (1997), ”A universal algorithm for data compression” IEEE Transactions on Information Theory Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w