You are on page 1of 22

Arithmetic

Coding
HOÀNG VĂN HÙNG - 18520794
NGUYỄN ANH KHOA - 18520922
NGUYỄN HUỲNH NHI - 18521204
1. Tổng quan về Arithmetic

Arithmetic coding (AC) là thuâ ̣t toán nén dữ liê ̣u dựa trên lý thuyết thông tin. Nó
cho phép chúng ta lưu trữ thông tin với số lượng bits tối thiểu. Claude Shannon chỉ
ra rằng không thể nào lưu trữ thông tin với số bits nhỏ hơn entropy của thông tin
này. AC cho phép chúng ta tiến tới gần giới hạn entropy này với khoảng cách 2 bits.

2
2. Cải thiện so với Huffman

Arithmetic coding vượt trội về hầu hết các khía cạnh so với phương pháp
Huffman. Hiệu suất của AC tối ưu hơn mà không cần phải chặn dữ liệu đầu
vào. Nó khuyến khích sự tách biệt rõ ràng giữa mô hình đại diện cho dữ liệu
và mã hóa thông tin liên quan đến mô hình đó. Nó đáp ứng các mô hình
thích nghi dễ dàng và hiệu quả tính toán.

3
3. Mục tiêu

Mục tiêu của phương pháp là tìm ra một khoảng duy nhất thể hiện một
chuỗi ký tự có độ dài cố định, tiếp theo cần chọn trong khoảng này một
số thập phân thích hợp, và coi đấy là mã biểu diễn cho chuỗi ký tự trên.
Quá trình mã hóa được khởi tạo với khoảng ban đầu là [0, 1).
Arithmetic Coding thường có tỷ lệ nén tốt hơn phương pháp Huffman, vì
nó tạo ra một mã hiệu duy nhất biểu diễn cho cả chuỗi ký tự thay vì một
mã riêng biệt cho từng ký tự.

4
4. Chi tiết thuật toán mã hoá và
ví dụ
Đầu vào của quá trình giải mã là một chuỗi kí tự, và đầu ra là một phân số thập phân

Bài toán : Nén chuỗi “BACA” với xác suất xuất hiện PA = 0.5, PB = 0.25 và PC = 0.25

BACA ???

5
Bước 1 :
 

1.0
C
0.75
B
0.5
A

6
Bước 2 :
D = 0.75 – 0.5 = 0.25
Range(Kí tự) = Giá trị đáy Giá trị đáy + D x (P(Kí tự))

1.0 0.75
C C
0.75 0.6875
B B
0.5 0.625
A A

0 0.5

7
Bước 3 :
D = 0.625 – 0.5 = 0.125
Range(Kí tự) = Giá trị đáy Giá trị đáy + D x (P(Kí tự))

1.0 0.75 0.625

C C C
0.75 0.6875 0.59375
B B B
0.5 0.625 0.5625

A A A

0 0.5 0.5

8
Bước 4 :

1.0 0.75 0.625 0.625

C C C C
0.75 0.6875 0.59375 0.6171875
B B B B
0.5 0.625 0.5625 0.609375

A A A A

0 0.5 0.5 0.59375

9
Bước 5 :
Dựa theo số lượng và các số liệu của khoảng cuối để chuyển thành dạng mã hoá

1.0 0.75 0.625 0.625

C C C C
0.75 0.6875 0.59375 0.6171875
B B B B
0.5 0.625 0.5625 0.609375

A A A A

0 0.5 0.5 0.59375

10
Kết quả

 
BACA

11
5. Chi tiết thuật toán giải mã và ví
dụ
Đầu vào của quá trình giải mã là một số thập phân và các xác suất của ký tự đầu vào, đầu ra
là một chuỗi kí tự

Bài toán : Giải nén mã tín hiệu 0.609375 với PA = 0.5, PB = 0.25 và PC = 0.25

0.609375 ???

12
Bước 1 :
Chia khoảng [0,1) thành các khoảng phụ với xác suất xuất hiện của các kí tự đầu vào

Xét tín hiệu 0.609375 thuộc khoảng B.

1.0
C
0.75
B
0.5
A

13
Bước 2 :
Xét tín hiệu 0.609375 thuộc khoảng A .

1.0 0.75
D(B) = 0.75 – 0.5 = 0.25.
C C
0.75 0.6875 Khoảng của “A” = 0.5 -> 0.5 + 0.25*0.5 = 0.5 -> 0.625
B B
0.5 0.625 Khoảng của “B” = 0.625 -> 0.625 + 0.25*0.25 = 0.625 -> 0.6875

A A Khoảng của “C” = 0.6875 -> 0.6875 + 0.25*0.25 = 0.6875 -> 0.75

0 0.5

14
Bước 3 :
Xét tín hiệu 0.609375 thuộc khoảng C.

1.0 0.75 0.625

C C C
0.75 0.6875 0.59375
B B B
0.5 0.625 0.5625

A A A

0 0.5 0.5

15
Bước 4 :
Xét tín hiệu 0.609375 thuộc khoảng A.

1.0 0.75 0.625 0.625

C C C C
0.75 0.6875 0.59375 0.6171875
B B B B
0.5 0.625 0.5625 0.609375

A A A A

0 0.5 0.5 0.59375

16
4. Chi tiết thuật toán giải mã và ví
dụ

0.609375 BACA

17
Số liệu so sánh

18
Số liệu so sánh

19
5. Ưu, nhược điểm
+ Ưu điểm:

- Là giải thuật nén không mất mát.

- Thường có hệ số nén tốt hơn so với các giải thuật nén entropy khác.

+ Nhược điểm:

- Cài đặt phức tạp hơn các giải thuật entropy khác.

- Dễ bị lỗi trong quá trình giải mã nếu tín hiệu mã hóa truyền vào bị sai lệch.

- Tồn tại nhiều bằng sáng chế về arithmetic coding nên việc sử dụng thuật toán có thể bị tính
phí bản quyền.

20
6. Tài liệu tham khảo
1. Nén dữ liệu sử dụng phương pháp mã hóa số học – Hà Diệu Thúy – Đại học Thái
Nguyên – Trường đại học CNTT & Truyền thông - 2013.

2. Arithmetic Coding- A Reliable Implementation - Lakshmi Sasilal - Dr. V. K. Govindan -


International Journal of Computer Applications - Volume 73– No.7, July 2013.

21
Thank you

You might also like