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

Bài tập lớn đề 2 tìm hiểu thuật toán nén số học, cho ví dụ minh hoạ

13 0 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

Tiêu đề Tìm hiểu thuật toán nén số học, cho ví dụ minh hoạ
Tác giả Vũ Đức Thọ
Người hướng dẫn Trần Duy Hùng
Trường học Trường Đại học Mở Hà Nội, Khoa Công nghệ Thông tin
Chuyên ngành Công nghệ đa phương tiện
Thể loại Bài tập lớn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 13
Dung lượng 1,37 MB

Nội dung

TRƯỜNG ĐẠI HỌC M HÀ NỞ ỘI KHOA CÔNG NGHỆ THÔNG TIN --- BÀI TẬP LỚN MÔN: CÔNG NGHỆ ĐA PHƯƠNG TIỆN ĐỀ 2 Tìm hiểu thuật toán nén số học, cho ví d minh hoụ ạ Giảng viên hư ng d n: Tr n Duy

Trang 1

TRƯỜNG ĐẠI HỌ C M HÀ N Ở ỘI

KHOA CÔNG NGHỆ THÔNG TIN -

BÀI TẬP LỚN MÔN: CÔNG NGHỆ ĐA PHƯƠNG TIỆN

ĐỀ 2 Tìm hiểu thuật toán nén số họ c, cho ví d minh ho ụ ạ

Giảng viên hư ng d n: Tr n Duy Hùng ớ ẫ ầ Sinh viên thực hiện : Vũ Đức Thọ Lớp : 1910A05

Hà Nội – 2023

Trang 2

MỤC LỤC

I GIỚI THIỆU V NÉN D Ề Ữ ỆU LI 3

II PHÂN LOẠI NÉN DỮ ỆU LI 3

1 Nén tổn thất 3

2 Nén không tổn thất 4

III CÁC KHÁI NIỆM LIÊN QUAN 4

1 Nén dữ ệu li 4

2 Sự phân b ký t 4 ố ự 3 Sự lặ p lại các ký t 4 ự 4 Độ dư th ừa 4

5 Đơn vị đo thông tin(Entropy) và đ dài trung bình c ộ ủa từ mã 5

IV THUẬT TOÁN NÉN SỐ HỌC 5

1 Sơ lược về thuật toán nén s ố học 5

2 Ý tưởng thuật toán 5

2.1 Mã hoá 6

2.2 Giải mã 6

3 Thuật toán 6

3.1 Mã hoá 6

3.2 Giải mã 10

V VÍ DỤ MINH HO Ạ 11 VI TÀI LIỆU THAM KHẢO 13

Trang 3

I GIỚI THIỆU V NÉN D Ề Ữ ỆU LI

Cùng với sự hoà nh p cậ ủa tin h c vớọ i các lĩnh vực trong đ i sống hi n ờ ệ đại ngày nay thì việc xử lý các lo i tạ ập tin với các kiểu file khác nhau là điều tất yếu, và cá loại tập tin này thư ng có kích thườ ớc lớn nên nhi u khi ề

nó gây khó khăn trong công tác truy n gề ửi và lưu tr Vì vữ ậy, khi lưu trữ hay truy n gề ửi ngư i ta mong muờ ốn giảm đến mức thấp nhất dung lượng

bộ ớ nh mà các tập tin này chiếm dụng để dễ dàng t chức, quản lý và tiết ổ kiệm kinh phí

Để đáp ng các yêu c u trên ngưứ ầ ời ta đã nghĩ ra các phương pháp làm cho các thông tin đó chiếm ít dung lượng hơn b ng cách nén chúng Hiằ ểu đơn gi n thì đó là quá trình giả ảm dung lượng nhớ cần thiết cho các tập tin

mà vẫn bi u diể ễn cùng một lượng thông tin như trước

Đã có rất nhi u phương pháp nén đưề ợc cho ra đời M t trong sộ ố đó là

thuật toán nén số học

Thuật toán nén số học đư c sợ ử dụng đ nénể dữ liệu b ng cách sằ ử dụng

mã hoá entropy Thuật toán này được đề xuất lần đ u tiên vào năm 1976 ầ bởi nhà toán học người Mỹ Robert M Fano Thuật toán này sử dụng phép tính số học đ mã hoá các ký tể ự trong chu i dỗ ữ liệu

II PHÂN LOẠI NÉN DỮ ỆU LI

Nén dữ liệu chia thành 2 dạng là nén t n thổ ất và nén không tổn thất

1 Nén tổn thất

- Nén tổn thất là kỹ thu t nén chậ ấp nh n mậ ất mát m t lượng thông tin ộ nhất đinh để đạt được hiểu qu nén cao, nén t n thả ổ ất thích hợp với các tập tin hình nh, âm thanh đã đưả ợc số hoá Theo b n chả ất việc

biểu di n thông tin tương tễ ự ới dạng s ngay tdư ố ừ đầu đã chứa các sai số Hầu hết các kỹ thuật nén tổn thất đều có thể diều ch nh đỉ ể cân

Trang 4

bằng giữa độ chính xác và hiệu quả nén, Đối v i các thông tin bớ ị mất mát không phải là vấn đ quan tr ng bề ọ ởi vì nó có thể được khôi ph c ụ lại, Do đó ở đây chúng ta ch quan tâmỉ đến hi u quệ ả nén mà thôi

2 Nén kh ông tổ n th ất

- Nén không tổn thất là phương pháp nén đảm bảo không mất mát thông tin sau quá trình mã hoá và gi i mã Sau khi nén và gi i nén ả ả thì nó ph i tả ạo ra một bản sao chính xác so với lúc đầu Kỹ thuật này

sử dụng đ lưu tr và truy n cá cơ sể ữ ề ở dữ liệu, các b ng tính đi n tả ệ ử,

cá văn bản… vì với vavs t p tin này thì việậ c mất mát dù chỉ 1 bit thông tin cũng là điều không thể chấp nh n đưậ ợc

III CÁC KHÁI NIỆM LIÊN QUAN

1 Nén dữ ệu li

- Nén dữ liệu là quá trình giảm dung lượng thông tin “dư thừa” trong

dữ liệu gốc và làm cho lượng thông tin thu được sau nén thường nhỏ hơn dữ liệu gốc rất nhiều Do vậy, ti t kiệm được bộ nhớ ế và giảm

thời gian trao đổi dữ ệu trên, mang lạli i thông tin mà l i cho phép ạ chúng ta khôi phục lạ ữ ệu i d li ban đầu

2 Sự phân b ký t ố ự

- Một số ký t (Pixel) xuấự t hiện vớ ần xuấ ớn hơn so với t t l i các ký tự khác t ng dỏ ữ liệu gốc(ảnh, ) Ta có thể thay th nhữế ng ký t này ự bằng từ mã nhị phân nhi u bit hơn và các ký tề ự xuất hiện ít hơn b ng ằ

mã nhị phân ít bit hơn

3 Sự lặ p lại cá ký t c ự

- Một chu i cá ký tỗ ự (bit 1 hoặc 0) đư c lợ ặp lại nhiều l n Ta có thầ ể

mã hoá chuỗi lặp đó b ng it bit hơn.ằ

4 Độ dư th ừa

Trang 5

- Nếu nh ng ký t nào đó xuữ ự ất hiện ở một v trí mà ta có thị ể đoán trước đư c khi mã hoá ta có thợ ể giữ vị trí mà ký tự đó xuất hiện thay

vì lưu trữ các ký t đó ự

5 Đơn vị đo thông tin(Entropy) và độ dài trung bình c ủa từ mã

- Lý thuyết thông tin sử dụng thuật ngữ Entropy là đơn vị đo thông tin được mã hoá trong một thông điệp Entropy của một thông điệp càng cao thì thông tin nó chứa đựng càng nhiều

- Độ dài trung bình của từ mã là giá trị trung bình của tất cả các từ mã trong m t bộ ộ mã Đ dài trung bình của t mã không th nào nhộ ừ ể ỏ hơn entropy của nguồn số liệu được mã hoá và do đó một bộ mã t i ố

ưu là một bộ mã có độ dài trung bình cảu từ mã gần với entropy của nguồn dữ liệ u

IV THUẬT TOÁN NÉN SỐ HỌC

1 Sơ lược về thuật toán nén s ố học

- Nén số học là một trong những phương pháp nén không t n hao tuy ổ nhiên ngay t khi ra đừ ời, phương pháp này không mang tính khả thi

vì nó phức tạp về mặt khái niệm lẫn việc th c hiự ện trong thực tế Khi thực hiện phương pháp này nó yêu c u bộ nhớ ầ có dung lượng l n, ớ thời gian thực hiện lâu nên trong một th i gian dài nó vờ ẫn chỉ mang tính thử nghiệm ở trong các cuộc thí nghiệm và nghiên cứu Cho đ n ế khi có sự phát tri n cể ủa t c đố ộ tính toán cũng như dung lượng bộ nhớ các máy tính thì phương pháp này mới được người ta chú ý đến nhi u ề hơn Khi đó người ta m i nghĩ đến viớ ệc áp dụng phương pháp này vào trong thực tế

2 Ý tưởng thuật toán

Trang 6

Thuật toán nén số học áp dụng cho rất nhiều việc như nén hình ảnh, văn bản, dữ liệu,… Dưới đây là chi ti t thu t toán nén văn bế ậ ản

2.1 Mã hoá

- Không thay thế cá ký tự đầu vào b ng cá tằ ừ mã riêng biệt mà thay

th luế ồng ký hi u đ u vào b ng mệ ầ ằ ột từ mã duy nhất ở đầu ra Đ u ra ầ

là m t sộ ố lớn hơn 0 và nh hơn 1

- Phân chia khoảng giữa 0 và 1 d a vào sự ự phân b xác suố ất của kí hiệu trong mô hình đax xây d ng đự ể bắt đầu hoạt động Kho ng này ả

được tính lại sau khi có m t ký tộ ự ợc mã hoá đư

- Giả sử chúng ta có một thông điệp bao g m các ký t khác nhau ồ ự thuộc bảng chữ cái alphabet có độ lớn giới hạn Cũng giả sử rằng chúng ta biết xác su t xu t hiấ ấ ện của mỗi ký tự là khác nhau, và ta tìm cách diễn tả lại thông điệp đó mà dùng một số bit nhỏ nhất có th ể Với thu t toán nén sậ ố học nó không tạo ra t ng từ ừ mã riêng biệt cho từng ký tự mà nó chỉ tạo ra một từ mã duy nhất cho toàn bộ nguồn

số liệu T mã này sừ ẽ bị thay đổi trong quá trình mã hoá m i khi có ỗ thêm m t ký tộ ự được mã hoá Do đó t mã ừ ở đầu ra không còn là một số nguyên các bit nữa mà là một số lẻ các bit Vì vậy nó g n vầ ới entropy hơn mà mang lại hiệu qu nén tả ốt nhất

2.2 Giải mã

- Để giải mã ta tìm ký tự đầu tiên của thông điệp b ng cáh tìm xem ằ giá trị củ ừ a t mã mà b mã hoá gưộ ở đến là bao nhiêu và nằm trong khoảng nào và nó tương đương với ký tự nào và xuất nó ra

3 Thuật toán

3.1 Mã hoá

Trang 7

- Bước mã hoá cơ sở của bộ mã hoá được th c hiự ện bới arithmetic_encode(l,h,t) trong đó l và h l n lưầ ợt là mức thấp và mức cao c a biủ ến đ m trước khi tích luỹ số tầế n s trong ngữ cảnh của các ố

ký tự tương ứng, hàm này mã hoá 1 ký tự giả sử ngầm định nó xuất hiện h - l lần trong t ng sổ ố t lần, và nó chỉ định vùng xác suất là [ l/h, h/t ] Tr ng thái nạ ội t i cạ ủa bộ mã hoá được cho bởi 2 giá tr là R và ị

L, trong đó L là mức thấp hi n t i và R là vùng củệ ạ a đoạn đang mã hoá, và tại m i giai đoỗ ạn thì thông đi p có thệ ể được diễ ả bất kì n t giai đo n nào trong đo n [ L, ạ ạ L+R ] Giá trị L và R được th hiệể n thông qua b bit, L được kh i tạở o là 0 và nó có giá trị nằm giữa 0 và (2^b) – [2^(b-2)], R được khởi to là 2^(b ạ -1) và có giá trị nằm giữa 2^(b-2) + 1 và 2^(b 1) Cho 0 1 h - £ £ £ t và t là tổng t n sầ ố của tất

cả ký t khác nhau đư c chự ợ ỉ định trong ngữ cảnh, t phải tho mãn ả điều ki n t ệ £ 2^f với f là s bit đã dùng đố ể giữ tần số của ký t cà có ự thể không vượt quá giá tr điều khi n bị ể ởi lựa chọn của b và kích thước máy đang dùng

Đầu vào là các bi n thành ph n l, h, t ế ầ

Đầu ra là các bit bi u di n kí t ể ễ ự đó

Trang 8

- Hoạt động cơ sở của b mã hoá, trong các bước 1, 2 và 3 là làm nhỏ ộ khoảng [L, L + R ) thành các kho ng nh hơn đả ỏ ể biểu di n cá ký tễ ự mới [ l/t, h/t ], mang l i m t vùng m i là [L + R.l/t, L+ R.h/t] Giá trạ ộ ớ ị của L và R được cập nhật để phản ánh vùng mới này Vùng này phải chuẩn hoá l i thành các giai đo n đ ngăn c n nó trạ ạ ể ả ở thành các khoảng quá nhỏ để ễn t dùng b bit cdi ả ủa giá trị này

- Để giảm tối đa sự mất mát hiệu qu nén bả ởi sự chia không chính xác của không gian mã, R nên được gi a ữ ở giá trị lớn n u có thế ể và trong hoạt động hi n tệ ại, nó pahir có độ rộng tối thiểu cũng như t Đi u này ề được th c hiự ện b ng cách duy trì trong kho ng 2^(b 2) < R < 2^(bằ ả - -1) trước mỗi bước mã hoá và khẳng đ nh r ng t ị ằ £ 2^f với f £ b-2 Đó

là R ph i đưả ợc chuẩn hoá một cánh định kỳ với m t hoộ ặc nhiều hơn

cá bit ở đầu ra Chi tiết của quá trình chuẩn hoá này phù h p vợ ới sự chuẩn hoá l i của L, R và chu n hoá l i R là m t bưạ ẩ ạ ộ ớc c a ủ arithmetic_encode()

Trang 9

- Trong thuật toán chuẩn hoá lại R trong bộ mã hoá, khi L và L+R đều

£ 2^(b-1), bit 0 có thể là đầu ra và L, R nên đi u ch nh cho đúng ề ỉ Tương tự, k t quế ả đầu ra có thể là bit 1 khi cả 2 đ u l n hoen 2^(bề ớ -1) Khi R £ 2^(b-2) và cả 2 trư ng h p trên khôgn ch p nh n, kho ng ờ ợ ấ ậ ả [L, L+R) phải thuộc 2^(b-1) Trong trường h p th 3 thì biợ ứ ến bit_outstanding được tăng, đây là biến lưu trữ tấ ả t c các bit biểu di n ễ

ký tự đầu vào, do đó bit 0 hoặc 1 c a đủ ầu ra s đi theo sau bẽ ởi m t ộ hoặc nhi u bit đề ối lập với nó Hàm bit_plus_follow() kiểm tra vị tí

có sự tồn tại các bit ngư c nhau c a các bit tợ ủ ại th i gian mà nó đườ ợc gọi là trên đầu ra với m t bit khác đã biộ ết

- Hàm big_plus_follow(x): Ghi bit x có giá trị 0 hahy 1 vào dãy bit đầu ra C ng vào bộ ất kỳ một bit tự do nào voà sau cá bit đó n u biế ết được rằng nó ngư c nhau: ợ

big_plus_follow(x)

{

Trang 10

1 write_one_bit(x) –

2 Trong khi bit_outstanding >0 ch– ạy

Gán bit_outstanding = bit_outstanding – 1 }

Giá trị mới của L và R sẽ ể th hiện việc thay đổi trạng thái mã hoá các thông tin còn lại của ký tự

3.2 Giải mã

- Với V là của sổ hiện tại mở rọng với b bit vào luồng bit đã nén 2 hàm decode_target(t) và arithmetic_decode(l,h,t) tương đương với 2

bước cơ bản được yêu cầu để ải mã m t ký t Giá tr target() dgi ộ ự ị ựa trên V và giá tị của t đã dùng trong mã hoá tương đương, nó đáp ứng cho quá trình tìm kiếm c u trúc dấ ữ liệu và xác đ nh ký tị ự s, tìm ký

tự với 1 target £ £ h Rồ ọi g i hàm aritthmetic_decode() thay đ i giá ổ trị của cá biến L và R để ể th hiện sự thay đ i tương đương trong bổ ộ

mã hoá khi gọi hàm arithmetic_encode()

Trang 11

- Hàm decode_target():

decode_target()

{

Return (((V – L +1) x t) -1)/R

}

V VÍ DỤ MINH HO Ạ

Cho tần số xuất hiện ký tự A là 1/4 và tần số xuất hiện ký tự B là 3/4 Xét việc mã hóa trong trường hợp chuỗi mã hóa là hợp thành của 2 ký tự một

pA=1/4, pB=3/4, pAA = pA x pA = 1/16 , pAB = pA x pB = 3/16, pBA =

pB x pA = 3/16 , pBB = pB x pB = 9/16

Sau khi đã chia được các khoảng cho mỗi ký tự đơn, tiếp tục chia các khoảng của bước trước cho 2 ký tự ghép Cụ thể là khoảng [0, 1/ 4) của A

Trang 12

được chia thành hai khoảng cho AA, AB dựa vào tần số xuất hiện của chúng

Trang 13

VI TÀI LIỆU THAM KHẢO

[1]-https://neptune.ai/blog/lossless data -

-compression-using-arithmetic - encoding-in python- - and - - its applications - - in deep learning -[2]- https://go-compression.github.io/algorithms/arithmetic/

[3]-https://www.sciencedirect.com/topics/computer-science/arithmetic coding

Ngày đăng: 08/04/2024, 12:51

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

TÀI LIỆU LIÊN QUAN

w