Tài liệu Nghiên cứu phương pháp giải mã golay bằng thuật toán Vetcan - Trần Thị Hường: Hóa học & Kỹ thuật môi trường
T. T. Hường, T. Đ. Chuyển, V. H. Thích, “Nghiên cứu phương pháp thuật toán vetcan.” 134
NGHIÊN CỨU PHƯƠNG PHÁP GIẢI MÃ GOLAY
BẰNG THUẬT TOÁN VETCAN
Trần Thị Hường*, Trần Đức Chuyển, Vũ Hữu Thích
Tóm tắt: Trong bài báo này, các tác giả trình bày một thuật toán mới sử dụng
mã Golay, nhằm nâng cao khả năng sửa lỗi với số lỗi lớn hơn nhiều so với mã
thông thường, khả năng kiểm soát lỗi của thuật toán dựa vào tính chất của mã vòng,
mã khối tuyến tính. Thuật toán vetcan có ý nghĩa là lấy toàn bộ các từ mã trong
không gian của bộ mã đối ngẫu để quyết định từ mã nhận được với độ lợi giải mã
lên tới 1,85 dB so với phương pháp giải mã cứng HDD tại BER = 10-4, tuy nhiên, độ
phức tạp giải mã tăng theo hàm mũ với số mũ là số bit kiểm tra của mã đối ngẫu.
Quá trình giải mã này có ưu điểm làm việc tin cậy, độ ổn định cao, xử lý nhiều dữ
liệu của hệ thống một cách chính xác và nhanh chóng.
Từ khóa: Mã Golay; Thuật toán vetcan; Giải mã dùng mã ...
7 trang |
Chia sẻ: quangot475 | Lượt xem: 601 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Nghiên cứu phương pháp giải mã golay bằng thuật toán Vetcan - Trần Thị Hường, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Hóa học & Kỹ thuật môi trường
T. T. Hường, T. Đ. Chuyển, V. H. Thích, “Nghiên cứu phương pháp thuật toán vetcan.” 134
NGHIÊN CỨU PHƯƠNG PHÁP GIẢI MÃ GOLAY
BẰNG THUẬT TOÁN VETCAN
Trần Thị Hường*, Trần Đức Chuyển, Vũ Hữu Thích
Tóm tắt: Trong bài báo này, các tác giả trình bày một thuật toán mới sử dụng
mã Golay, nhằm nâng cao khả năng sửa lỗi với số lỗi lớn hơn nhiều so với mã
thông thường, khả năng kiểm soát lỗi của thuật toán dựa vào tính chất của mã vòng,
mã khối tuyến tính. Thuật toán vetcan có ý nghĩa là lấy toàn bộ các từ mã trong
không gian của bộ mã đối ngẫu để quyết định từ mã nhận được với độ lợi giải mã
lên tới 1,85 dB so với phương pháp giải mã cứng HDD tại BER = 10-4, tuy nhiên, độ
phức tạp giải mã tăng theo hàm mũ với số mũ là số bit kiểm tra của mã đối ngẫu.
Quá trình giải mã này có ưu điểm làm việc tin cậy, độ ổn định cao, xử lý nhiều dữ
liệu của hệ thống một cách chính xác và nhanh chóng.
Từ khóa: Mã Golay; Thuật toán vetcan; Giải mã dùng mã Golay.
1. ĐẶT VẤN ĐỀ
Hiện nay, cùng với sự phát triển ngày càng cao của kỹ thuật vi xử lý; các onchip mới;
các thuật toán thông minh và máy tính số, việc sửa lỗi trước (Forward Error Correction –
FEC) có ý nghĩa thực tiễn, quan trọng để cải thiện tỉ lệ lỗi bít (BER) của các hệ thống
tuyền dẫn và lưu trữ số. Mã nhị phân Golay (23,12,7) là mã nhị phân sửa được lỗi rất lớn,
hoàn hảo được giới thiệu năm 1949, [1], với các tính chất toán học đặc biệt. Việc thêm vào
một bít kiểm tra chẵn lẻ sẽ tạo ra mã nhị phân mở rộng tự đối ngẫu (24,12,8) tỉ lệ ½ và
được ứng dụng nhiều trong thực tế (ví dụ trên tàu vũ trụ làm nhiệm vụ Voyager năm 1977)
hay cũng được sử dụng như là một mã kiểm soát lỗi độc lập bên trong các hệ thống kết
hợp để xử lý tín hiệu.
Trong bài báo này, việc nghiên cứu các thuật toán nhằm áp dụng cho mã Golay để đạt
được hiệu suất mong muốn với độ phức tạp chấp nhân được là điều mong mỏi của các nhà
khoa học. Bài báo này giới thiệu về mã Golay và các thuật toán giải mã, từ đó đưa ra cải
tiến mới. Kết quả mô phỏng trên kênh AWGN cho minh chứng về hiệu quả của thuật toán
mới nâng cao chất lượng giải mã cho mã Golay. Các tác giả sử dụng phần mềm Matlab -
Simulink để tiến hành mô phỏng đánh giá kết quả nhằm kiểm chứng thực nghiệm, đánh
giá chất lượng của bộ thuật toán, [3, 4].
2. XÂY DỰNG LÝ THUYẾT VỀ PHƯƠNG PHÁP GIẢI MÃ
2.1. Quá trình mã hóa
Mã nhị phân tuyến tính C(n,k) được gọi là mã vòng nếu mọi từ mã c Є C, thì từ mã
dịch vòng sang trái hay phải đều thuộc C, [2].
Giả sử từ mã c được biểu diễn dạng đa thức c(x):
2 n-1
0 1 2 n-1c(x) = c + c x + c x + ... + c .x (1)
thì có thể chứng minh được mã nhị phân tuyến tính luôn tồn tại một đa thức sinh g(x) có
bậc r:
2 n-1
0 1 2 n-1c(x) = c + c x + c x + ... + c .x (2)
Từ mã c(x) được tạo ra ở đầu ra bộ mã hóa có đa thức sinh g(x) nên ta có:
c(x) = m(x).g(x) (3)
Các hệ số trong các đa thức c(x) và g(x) có thể nhận các giá trị nhị phân 0 hoặc 1; m(x)
là đa thức bản tin với k là hệ số cũng nhận các giá trị nhị phân 0 hoặc 1. Lúc này, đa thức
bản tin m(x) có dạng:
Nghiên cứu khoa học công nghệ
Tạp chí Nghiên cứu KH&CN quân sự, Số 56, 08 - 2018 135
2 k-1
0 1 2 k-1m(x) = m + m x + m x +.... + m x (4)
trong đó, mi là các véc tơ mang tin.
Với mã Golay ta có thể thực hiện mã hóa dựa vào tính chất của mã vòng, khi đó, với
mã Golay (23,12,7) có đa thức sinh g(x) có bậc là 11 và được biểu diễn ở dạng:
5 6 7 9 11g(x) = 1 + x + x + x + x + x + x (5)
đa thức g(x) có bậc 11 và được biểu diễn dạng ma trận G: Thực hiện chuyển đổi hàng
trong ma trận G, ma trận sinh dạng hệ thống của mã được biểu thị như sau:
1 0 1 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0
1 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0
1 1 0 0 0 1 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0
1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0 1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0
1 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0
0 1 0 1 1 0 1 1 1 1 0 0 0
SG
0 0 0 0 0 0 1 0 0 0
0 0 1 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0
1 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0
0 1 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1
| kP I
(6)
Trong đó, P là ma trận kiểm tra tính chẵn lẻ, Ik ma trận đơn vị với k = 12, từ mã dạng
hệ thống thu được biểu diễn như sau: c = M.GS.
Dựa vào tính chất của mã vòng ta có thể xác định được ma trận kiểm tra H từ các đa
thức kiểm tra: h(x), h(x) = (x23 – 1)/g(x). Đa thức đối ngẫu h*(x) = h(x-1).
Đa thức: h(x) = h0 + h1x + h2x
2 +hkx
k, k = n – r. Từ đó, ta có ma trận kiểm tra H có
dạng:
1 0
1 1 0
1 0
1 0
...... 0 ..... 0 0
0 ..... 0 ..... 0
..... ...... ...... ..... ..... ..... ...... .....
0 ..... 0 ..... 0
0 ..... 0 0 .....
k
k
k
h h h
h h h
H
h h h
h h h
(7)
Đa thức kiểm tra h(x) của mã GOLAY (23,12) thì:
h(x) = (x23 -1)/g(x) = x12+ x10 +x7 +x4 + x3 + x2 + x +1, bậc của h(x) là 12 nên ma trận
kiểm tra H(12 x 23) được biểu diễn như biểu thức (8).
Để truyền tín hiệu qua kênh, từ mã c được điều chế BPSK. Trong quá trình truyền tín
hiệu điều chế cBPSK bị tác động bởi nhiễu Gauss trắng cộng tính (AWGN - Additive White
GaussianNoise) w có kỳ vọng bằng không và phương sai 2/0
2 N với N0 mật độ phổ
công suất tạp âm.
Hóa học & Kỹ thuật môi trường
T. T. Hường, T. Đ. Chuyển, V. H. Thích, “Nghiên cứu phương pháp thuật toán vetcan.” 136
1 0 1 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
0 1 0 1 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0
0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 1 0 1 0 0 1
H
0 0 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1
(8)
Biến đổi hàng trong (8) biến đổi (P,Ik) thành [Ik,P
T) trong (6) ta có:
1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 1 0
0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 1
0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 1 0
0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 1
0 0 0 0 1 0 0 0 0 0 0 1 1 0 9 1 0 0 0 1 1 1 1
0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 1 0 1 0 1 0 1
, 0
0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0
0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0
0 0 0
T
SH I P 1
0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 1 1 0
0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 1 0 1
(9)
Phương pháp giải mã thông thường là giải mã cứng (Hard Decision Decoding – HDD)
thì cho chất lượng giải mã rất thấp. Chuỗi tín hiệu đầu vào bộ giải mã c’(sau giải điều chế)
bắt buộc phải nhận thông tin trực tiếp từ tin bị nhiễu Y.
Bộ giải mã cứng HDD tính syndrome và véc tơ lỗi tương ứng:
S = Y.HT = (cBPSK + e).H
T = e.HT (10)
với HT ma trận chuyển vị của ma trận kiểm tra H, e véc tơ lỗi.
Từ mã quyết định tại đầu ra bộ giải mã HDD.
'lc c e (11)
Giải mã cứng HDD cho mã Golay với chiều dài từ mã khá lớn cho chất lượng thấp do
lượng thông tin sử dụng cho giải mã hạn chế (từ tin bị nhiễu và ma trận kiểm tra H).
Theo lý thuyết mã khối tuyến tính, bộ giải mã mã vòng C(n,k) đều tồn tại bộ mã C’(n,r)
(r số lượng bit kiểm tra). Mã C’(n,r) được tạo ra từ đa tức kiểm tra h(x) của c(n,k), mà h(x)
= (xn + 1)/g(x), đa thức đối ngẫu h*(x) = h(1/x) các bit trong mã C’(n,r) đều chứa thông tin
giải mã.
Từ phân tích trên, thay vì sử dụng ma trận kiểm tra H, thuật toán VETCAN sẽ tìm toàn
bộ thông tin giải mã trong mã C’(n,r) (2r từ mã) và lấy thông tin mềm của các bit tin trong
toàn bộ không gian bộ mã để quyết định từ mã đầu ra.
Nghiên cứu khoa học công nghệ
Tạp chí Nghiên cứu KH&CN quân sự, Số 56, 08 - 2018 137
Đa thức kiểm tra tính chẵn lẻ có dạng: h(x) = h0 + h1x + h2x
2 + + hk-1x
k-1 với k = n – r
là thừa số của đa thức: xn + 1= g(x).h(x). Nên c(x).h(x) = 0.
2.2. Giải mã GOLAY bằng thuật toán VETCAN
Xét mã Golay (23,12,7) có khoảng cách Hamming tối thiểu dmin = 7, có thể xác định
được các mẫu lỗi có trọng lượng ít hơn hoặc bằng t = [(dmin -1)/2] = [(7-1)/2] = 3 lỗi, như
vậy, với phương pháp giải mã cứng HDD chỉ có thể sửa lỗi tối đa là 3. Để cải thiện khả
năng sủa lỗi lớn hơn với mã GOLAY thì thuật toán vetcan được xây dựng để quét toàn bộ
thông tin trong từ mã để quyết định từ mã đầu ra.
Khi truyền từ mã bất kỳ C = (c1,c2,cn) của mã Golay qua kênh, dưới tác động của
nhiễu AWGN tại đầu thu ta nhận được tin của mã Golay qua kênh, dưới tác động của
nhiễu AWGN tại đầu thu ta nhận được tin y. Bộ giải điều chế tính tỷ lệ theo hàm Log tại
các điểm tin nhận được c’ = (c’1 , c’2,c’n) để xác định sự ảnh hưởng của y đến c’ ta sử
dụng biểu thức sau, [3]:
,
,
,
Pr( | 1
ln
Pr( | 0
i
i
i
y c
L c
y c
(12)
trong đó, Pr(x) là xác suất của x, Pr(x|y) là xác suất có điều kiện của x với điều kiện y đã
cho.
Từ mã c’ được đưa tới bộ giải mã, tập tin đầu vào mềm L(c’) sử dụng thông tin nhận
được từ tất cả các bit trong không gian của từ mã C’(n,r) được tạo ra từ ma trận H để quyết
định từ mã đầu ra c với độ tin cây cao nhất, [4].
Với khicl 0 :
,
2
,
1 1
tan( ( / 2)) 0
r
liki
n
c
l i
k i
P L c
(13)
Với 1lc thì Pl < 0, với δli = 1 khi l = i và δli = 0 khi l ≠ i, c’ki = 0 là bit thứ i của từ
mã thứ k trong mã C’(n,r). Thuật toán vetcan được sử dụng để giải mã Golay được trình
bày như hình 1.
Bước 1: Sau khi nhận được tin đầu vào mềm L(c’) của bit tin từ bộ giải điều chế, bộ giải
mã tính giá trị pi cho từng bít tin tương ứng với:
1))(exp(
1))(exp(
))2/(tanh(
i
i
ii
cL
cL
cLp (14)
Bước 2: Quyết định cứng từ mã đầu ra dựa vào tin nhận được từ tất cả các bit tin trong
không gian mã:
Với bit 0lc khi đó giá trị pi là:
0))2/((tan
2
1
,
1
,
r
liki
k
c
i
n
i
l cLP
(15)
Tăng giá trị l lên 1 cho tới khi l < n .
Ngược lại với 1lc khi Pl < 0.
Hóa học & Kỹ thuật môi trường
T. T. Hường, T. Đ. Chuyển, V. H. Thích, “Nghiên cứu phương pháp thuật toán vetcan.” 138
Hình 1. Lưu đồ thuật toán giải mã Golay.
Bảng 1. Kích thước ma trận kiểm soát lỗi của thuật toán HDD, kích thước không gian
kiểm tra theo VETCAN và độ lợi mã hóa của thuật toán VETCAN so với thuật toán HDD.
Bộ mã Kích thước ma trận
kiểm tra của HDD
Kích thước không gian
kiểm tra của VETCAN
Độ lợi mã hóa của
VETCAN so với HDD
G(23,11) 11 x 23 (211 – 1) x 23 1,81dB
G(24,12) 12 x 24 (212 – 1) x24 1,85dB
3. KẾT QUẢ MÔ PHỎNG VÀ THẢO LUẬN
Sau khi nghiên cứu tuật toán và xây dựng chương trình mô phỏng trên phần mềm
Matlab - Simulink để tiến hành mô phỏng đánh giá kết quả nhằm kiểm chứng tính đúng
đắn của thuật toán, đánh giá chất lượng của bộ thuật toán.
0))2/((tan
2
1
,
1
,
r
liki
k
c
i
n
i
l cLP
Bắt đầu
0|Pr(
1|Pr(
ln
,
,
,
i
i
i
cy
cy
cL
l = 1
Pi = tan(L(ci /2)
Với i = 1n
Cl’=0
S
Đ
Cl = 1
l < n
l = l + 1
Đ
S
c’ = cl’ (l = 1n)
Kết thúc
Nghiên cứu khoa học công nghệ
Tạp chí Nghiên cứu KH&CN quân sự, Số 56, 08 - 2018 139
Kết quả mô phỏng được thực hiện trên phần mềm Matlab, với mã Golay (23,11) và mã
Golay mở (24,12), giả sử tín hiệu được điều chế BPSK truyền trên kênh AWGN. Thực
hiện mô phỏng đánh giá chất lượng giải mã của thuật toán vetcan và giải mã cứng HDD
cho kết quả trên hình 2.
0 1 2 3 4 5 6 7 8
10
-7
10
-6
10
-5
10
-4
10
-3
10
-2
10
-1
10
0
EbNo[dB]
B
E
R
BER Golay tren kenh Gauss
HDD Golay(23,11)
HDD Golay(24,12)
Vetcan Golay(23,11)
Vetcan Golay(24,12)
Hình 2. Kết quả mô phỏng của mã GOLAY bằng thuật toán VETCAN.
Quan sát kết quả mô phỏng ta thấy chất lượng giải mã của thuật toán VETCAN tốt hơn
rất nhiều so với giải mã cứng HDD. Đánh giá hiệu quả kiểm soát lỗi của thuật toán
VETCAN tại BER = 10-4 thì VETCAN cho độ lợi đối với mã GOLAY và mã GOLAY mở
rộng, độ lợi tương ứng là 1,81 dB và 1,85 dB so với giải mã cứng HDD. Tuy nhiên, thuật
toán VETCAN này chỉ ra độ phức tạp giải mã được cho ở bảng 1, bảng chỉ ra độ phức tạp
giải mã bằng cách so sánh số hàng của ma trận phải tính toán để kiểm soát lỗi trong thuật
toán VETCAN, HDD ứng với BER = 10-4.
Áp dụng thuật toán VETCAN cho mã Golay mở rộng có thể đạt được độ lợi 1,85dB so
với thuật toán HDD. Như vậy, các mã tốc độ càng thấp thì cho độ lợi mã hóa càng cao và
kích thước ma trận tham gia kiểm soát lỗi càng lớn. Đây là một trong những kết quả tốt
được minh chứng cho thuật toán đã được thiết kế.
4. KẾT LUẬN
Kết quả mô phỏng của bài báo trình bày phân tích đánh giá hiệu quả sử dụng thuật toán
VETCAN cho mã GOLAY và mã GOLAY mở rộng về độ lợi mã hóa và phức tạp giải mã.
So với thuật toán giải mã cứng HDD thì độ lợi của thuật toán VETCAN là 1,85dB với mã
Golay. Tuy nhiên, để đạt được hiệu quả kiểm soát lỗi tốt hơn thì thuật toán giải mã
VETCAN phải trả giá là tăng độ phức tạp của thuật toán theo hàm mũ 2r. Vậy thuật toán
đề xuất phù hợp với các mã tuyến tính có độ dư nhỏ. Bên cạnh đó, thuật toán này thực
hiện với dụng lượng bộ nhớ nhỏ hơn rất nhiều, và giảm đáng kể về thời gian (20%) giải
mã so với thuật toán HDD.
Các kết quả mô phỏng đã chứng tỏ rằng bộ thuật toán nghiên cứu được tính toán, xây
dựng trong bài báo hoàn toàn có thể thực hiện trên thực tế, trong các lĩnh vực điện, điện tử
và truyền thông; quốc phòng và an ninh hiện nay.
Hóa học & Kỹ thuật môi trường
T. T. Hường, T. Đ. Chuyển, V. H. Thích, “Nghiên cứu phương pháp thuật toán vetcan.” 140
TÀI LIỆU THAM KHẢO
[1]. M.J.E Golay, “Notes on digital coding” Proc, rd. 37, p.67, (1949).
[2]. S. B. Wicher, “Error control Systems for Digital Communication and Storage”.
Prentice Hall, (1995).
[3]. H, Greenberger, “An iterative algorithm for decoding block codes transmitted over a
memoryless channel”, DSN progress report 42 - 47 July anh August, (1978).
[4]. Han, Yunghsiang S. Hartmann, Carlos R.P; Chih-Chieh Chen, “Efcient Maximum –
likelihood Sof – Decision Decoding of Linear Block codes Using Algorithm A”
(1991). Electrical Engineering and computer Science Technical Reports. Paper 134,
12-1991.
[5]. Czeslaw Koscielny, “Extended (24, 12) Binary Golay Code: Encoding and Decoding
Procedures”. Wroclaw University of Applied Informatics, Wroclaw, Poland, (2006).
ABSTRACT
THE RESEARCH METHOD OF GOLAY CODES BY VETCAN ALGORITHM
In this paper, the authors present a new algorithm using the Golay code, to
improve the error correction capability with a much larger number of errors than
the conventional code, the ability to control the error of the algorithm is based on
the nature of code loops, linear block codes. The vetcan algorithm is meant to take
all the code words in the space of the dual-code set to determine the code word with
a decoding gain of up to 1.85 dB compared to the hard disk decoding method at
BER = 10-4, but the exponential complexity increases exponentially with the
exponent being the number of double-checking codes. This decoding process has the
advantage of being reliable, highly stable, and able to handle a lot of system data
accurately and quickly.
Keywords: The code Golay; Vetcan algorithm; Decode using Golay code.
Nhận bài ngày 18 tháng 2 năm 2018
Hoàn thiện ngày 2 tháng 5 năm 2018
Chấp nhận đăng ngày 10 tháng 8 năm 2018
Địa chỉ:
Khoa Điện tử, Trường Đại học Kinh tế Kỹ thuật Công nghiệp - Bộ Công thương.
* Email: huongtt@uneti.edu.vn; tdchuyen@uneti.edu.vn.
Các file đính kèm theo tài liệu này:
- 15_chuyen_9313_2150458.pdf