You are on page 1of 3

BÀI TẬP LẬP TRÌNH

MÔN LÝ THUYẾT THÔNG TIN


Giáo Viên: Hồ Văn Quân
Email: hcquan@dit.hcmut.edu.vn
Mục đích: Đây là một hình thức để khuyến khích các bạn sinh viên tham gia tìm hiểu môn học và
rèn luyện thêm kỹ năng lập trình.
Các qui định:
1. Các nhóm sẽ viết bằng một trong các ngôn ngữ sau: Delphi, Visual Basic, Visual C++, Java,
C#, Visual Basic.NET.
2. Các nhóm khác nhau nếu thực hiện cùng một đề thì nên viết bằng các ngôn ngữ khác nhau. Nếu
giáo viên phát hiện có việc copy mã nguồn thì các thành viên trong nhóm sẽ bị trừ 2 điểm vào
điểm thi học kỳ.
3. Các nhóm có liên quan với nhau phải phối hợp với nhau để thực hiện.
4. Mỗi nhóm không được quá 2n người cho đề n điểm.
5. Số điểm mỗi người trong nhóm thực hiện một đề sẽ bằng số điểm của đề chia cho số thành viên
của nhóm. Điểm cộng chỉ tính theo thang 0.5, 1.0, 1.5, … không tính tới 2 số lẽ chẳng hạn 0.75.
6. Mỗi người có thể tham gia nhiều nhóm, mỗi nhóm có thể thực hiện nhiều đề.
7. Tổng điểm cộng cuối học kỳ tối đa của mỗi người là 2 điểm. Nếu điểm cộng vượt quá 2 thì
phần vượt quá không được tính.
8. Các nhóm phải nộp sản phẩm vào ĐÚNG tuần 15 (tuần dự trữ), nếu nộp trước hay sau thời
gian trên thì không được xem xét. Sau khi nộp các sinh viên sẽ được thông báo ngày mang máy
lên trình bày với giáo viên. Các sinh viên không lên báo cáo sẽ không được cộng điểm. Mỗi đề
được trình bày trong vòng 5 đến 10 phút. Chú ý KHI MANG MÁY VÀO TRƯỜNG CÁC
SINH VIÊN PHẢI XIN “GIẤY MANG MÁY VÀO TRƯỜNG” Ở CHỖ CÁC CHÚ BẢO
VỆ TRƯỜNG.
9. Mỗi nhóm sẽ đặt chương trình trong một thư mục có tên là mã số sinh viên của các thành viên
trong nhóm, chẳng hạn 50012345_50054321_50056789. Trong thư mục này phải có file
tacgia.txt ghi rõ thông tin của các thành viên trong nhóm bao gồm họ tên, mã số, nhóm lớp,
làm bài tập nào, viết bằng ngôn ngữ gì. Ví dụ
Nguyễn Văn A 50012345 Nhóm 3A
Trần Văn B 50054321 Nhóm 2B
Làm các bài tập 1, 3, 6
Ngôn ngữ Visual C++
Hình thức nộp:
Cách 1, các nhóm sẽ ftp lên máy của giảng viên vào thời gian được qui định.
Cách 2, các nhóm sẽ gởi mail cho giáo viên theo địa chỉ hcquan@dit.hcmut.edu.vn với subject
chính xác như sau kể cả chữ hoa lẫn chữ thường “Bai tap lon LTTT” vào thời gian được qui
định.
10. Sản phẩm nộp phải bao gồm source code và chương trình đã dịch sang mã máy. Source code
phải có chú thích rõ ràng ở từng phần chẳng hạn mục đích của từng phần và ý nghĩa của các
câu lệnh quan trọng. Ngoài ra nếu để chạy được chương trình cần có điều kiện gì về môi trường
hệ điều hành cũng như cần phải thực hiện các thao tác gì thì phải nêu rõ trong một file help.txt
đi kèm.
11. Các bài nộp không đúng qui định sẽ không được tính điểm.
12. Nếu các bạn sinh viên có ý kiến đóng góp gì trong vấn đề này thì có thể gởi mail về cho giáo
viên theo địa chỉ ở trên.

Trang 1
DANH SÁCH CÁC ĐỀ
Ñeà 1. (1,5đ)
Xây dựng chương trình có các chức năng sau: cho phép nhập vào các nguồn tin, lưu được vào
file và đọc lên từ file. Sắp xếp các tin theo thứ tự giảm dần của xác suất. Tính lượng tin riêng
của mỗi tin, lượng tin của một dãy tin bất kỳ do người sử dụng nhập vào. Lượng tin trung bình
của nguồn. (Các cơ số có thể tùy ý do người sử dụng chọn). Giao diện chương trình phải thân
thiện với người sử dụng. Gợi ý: việc nhập và hiển thị nên trình bày dưới dạng bảng.
Ñeà 2. (3đ)
Xây dựng bảng thử mã cho một bộ mã của một nguồn tin. Trả lời bộ mã có phân tách được hay
không. Nếu không phân tách được thì hãy chỉ ra hai dãy tin khác nhau trùng vào một dãy kí
hiệu mã. Nếu phân tách được thì cho biết độ chậm giải mã và thực hiện giải thuật tách mã.
Ñeà 3. (1,5đ)
Viết chương trình xác định một bộ mã có thõa mãn bất đẳng thức Kraft hay không. Viết
chương trình tạo cây mã prefix cho một dãy số thõa mãn bất đẳng thức Kraft (m = 2).

Dành cho các đề 4, 5, 6, 7


Cho nguồn tin X.
Ñeà 4. (2đ)
H(X )
Hiện thực giải thuật Shannon với m = 2 cho nguồn X. Tính l , H(X), tỉ số
l
Hiện thực công việc trên cho nguồn X.X và X.X.X.
Ñeà 5. (3đ)
H(X )
Hiện thực giải thuật Fano với m = 2 và m = 3. Tính l , H(X), tỉ số
l
Hiện thực công việc trên cho nguồn X.X và X.X.X.
Ñeà 6. (3đ)
H (X )
Hiện thực giải thuật Huffman với m = 2 và m = 3. Tính l , H(X), tỉ số
l
Hiện thực công việc trên cho nguồn X.X và X.X.X
Ñeà 7. (2đ)
Hiện thực giải thuật mã hoá nguồn phổ quát với m = 2.
Ñeà 8. (1,5đ)
Xây dựng chương trình cho phép nhập vào: (1) hai nguồn tin X, Y, (2) các xác suất p(xi) của X,
(3) ma trận các xác suất điều kiện p(yj | xi). Tính các xác suất p(xi, yj), p(yj). Tính các lượng tin
tương hỗ I(xi, yj), các lượng tin có điều kiện I(xi | yj), lượng tin tương hỗ trung bình I(X, Y),
lượng tin có điều kiện trung bình I(X | Y).
Ñeà 9. (2đ)
Viết chương trình bao gồm các thủ tục sau: cho phép nhập vào một bộ mã đều, cho biết khoảng
cách Hamming của bộ mã (và cặp từ mã có khoảng cách đó). Cho biết bộ mã có khả năng phát
hiện sai mấy bit và sửa sai được mấy bit. Xác định xem bộ mã có là mã tuyến tính không. Nếu
có thì xác định ma trận sinh của bộ mã. Biến đổi một ma trận sinh thành ma trận sinh dạng hệ
thống. Tìm các ma trận kiểm tra tương ứng với một ma trận sinh.
Ñeà 10. (3đ)
Tìm các bộ mã có nhiều từ mã nhất có thể có chiều dài từ mã l, quãng cách Hamming d. Các số
l và d thay đổi như sau: 1 < l < 32, 1 < d < 7. Nếu là mã tuyến tính trình bày ma trận sinh và ma
trận kiểm tra của nó. Có khả năng lưu kết quả tìm được vào file.
Ñeà 11. (3đ)

Trang 2
Tìm các bộ mã có nhiều từ mã nhất có thể có chiều dài từ mã l, quãng cách Hamming d. Các số
l và d thay đổi như sau: 1 < l < 32, 1 < d < 7. Nếu là mã tuyến tính trình bày ma trận sinh và ma
trận kiểm tra của nó. Có khả năng lưu kết quả tìm được vào file.
Ñeà 12. (2đ)
Cho một ma trận sinh. Viết chương trình mã hóa thông báo thành từ mã. Viết chương trình phát
hiện sai và sửa sai 1 bit cho một mã tuyến tính có d >2 và rút ra thông báo tương ứng với từ mã
nhận được.
Ñeà 13. (3đ)
Viết chương trình mã hóa cho mã tuyến tính Hamming, vị trí các bit thông báo được người sử
dụng chỉ định. Có xuất ra phương trình biểu diễn công thức phụ thuộc của các bit kiểm tra dựa
vào các bit thông báo. Thực hiện quá trình phát hiện sai và sửa sai cho từ mã nhận được và rút
ra thông báo tương ứng với từ mã nhận được.
Ñeà 14. (3đ)
Viết chương trình tìm đa thức sinh. Nếu tìm được hãy xác định: (1) ma trận sinh, (2) ma trận
sinh hệ thống, (3) các ma trận kiểm tra của bộ mã. Viết chương trình mã hóa một thông báo
thành từ mã bằng ma trận sinh và ma trận sinh hệ thống. Cho biết khoảng cách Hamming của
bộ mã, khả năng phát hiện sai và sửa sai.
Ñeà 15. (4đ)
Viết chương trình mô phỏng việc truyền tin của một hệ thống truyền tin chống nhiễu bao gồm
các việc sau: (1) cho phép chọn hay nhập vào ma trận sinh; (2) thực hiện việc mã hóa thông báo
thành từ mã; (3) thực hiện việc random nhiễu trong khả năng phát hiện sai được; (4) thực hiện
việc phát hiện sai; (5) Sửa sai nếu được, ngược lại thông báo phát lại; (6) giải mã để tìm ra
thông báo gởi.

Trang 3

You might also like