Suppose you are using the LZW algorithm to encode the message CCCDABCAADA contents of the dictionary at the beginning of encoding are: (1) A (2) B (3) C (4) D What are the first 4 code words when encoding the above string?

5 phương ánCó giải thích

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "(3) (5) (4) (1)". LZW luôn giữ một chuỗi đang khớp, chỉ phát mã khi thêm ký tự mới làm chuỗi đó không còn trong từ điển, và chuỗi dài hơn vừa thất bại chính là mục được thêm với mã kế tiếp. Trên CCCDABCAADA với từ điển đầu chỉ có (1) là A, (2) là B, (3) là C, (4) là D: chuỗi đang khớp là C, gặp C thứ hai thì CC chưa có nên phát (3) và thêm CC thành (5), chuỗi đang khớp lại là C; đọc C thứ ba thì CC đã có mã nên chuỗi đang khớp thành CC, gặp D thì CCD chưa có nên phát (5) và thêm CCD thành (6); chuỗi đang khớp là D, gặp A thì DA chưa có nên phát (4) và thêm DA thành (7); chuỗi đang khớp là A, gặp B thì AB chưa có nên phát (1). Vì vậy "(3) (1) (1) (2)" sai vì nó phát từng ký tự rời và không dùng mục CC vừa thêm; "(3) (5) (6) (4)" sai vì (6) là mã vừa được tạo ở chính bước phát (5), mà LZW không bao giờ phát ngay mã nó mới thêm; "(3) (5) (3) (2)" sai vì sau khi phát (5) thì phần còn lại bắt đầu từ D chứ không phải C; "(5) (1) (4) (2)" sai vì (5) chưa tồn tại lúc bắt đầu, từ điển ban đầu chỉ có bốn mục.

Cùng phần 8

Xuất hiện trong 1 bộ đề