BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Nguyễn Đình Hân
BÀI TOÁN KIỂM ĐỊNH MÃ VÀ PHÂN BẬC
NGÔN NGỮ THEO ĐỘ KHÔNG NHẬP NHẰNG
LUẬN ÁN TIẾN SỸ CÔNG NGHỆ THÔNG TIN
Hà Nội - 2012
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Nguyễn Đình Hân
BÀI TOÁN KIỂM ĐỊNH MÃ VÀ PHÂN BẬC
NGÔN NGỮ THEO ĐỘ KHÔNG NHẬP NHẰNG
Chuyên ngành: Khoa học máy tính Mã số: 62.48.01.01
LUẬN ÁN TIẾN SỸ CÔNG NGHỆ THÔNG TIN
Người hướng dẫn khoa học:
1. GS.TSKH. Đỗ Long Vân
2. PGS.TS. Phan Trung Huy
Hà Nội - 2012
LỜI CAM ĐOAN
Tôi xin cam đoan các kết quả tôi trình bày trong luận án là hoàn toàn mới,
chưa từng được công bố trong bất kỳ một công trình khoa học của ai khác. Các kết quả được viết chung với các tác giả khác đều được sự đồng ý của đồng tác giả trước khi đưa vào luận án.
Hà Nội, ngày 16 tháng 8 năm 2012
Nguyễn Đình Hân
LỜI CẢM ƠN
Luận án được hoàn thành tại Viện Toán ứng dụng và Tin học, Trường Đại
học Bách Khoa Hà Nội, dưới sự hướng dẫn của GS.TSKH. Đỗ Long Vân và PGS.TS. Phan Trung Huy. Tác giả xin gửi lời cảm ơn sâu sắc tới hai thầy, trong suốt thời gian qua đã hướng dẫn, chỉ bảo tận tình để tác giả hoàn
thiện được luận án này.
Tác giả chân thành cảm ơn các thành viên của Seminar “Toán rời rạc và Tổ hợp”, Viện Toán học về những nhận xét và ý kiến trao đổi rất hữu ích, góp phần nâng cao chất lượng trình bày của luận án.
Tác giả trân trọng gửi lời cảm ơn tới Ban lãnh đạo Viện Toán ứng dụng và Tin học, và Viện Đào tạo Sau Đại học, các thầy cô giáo cùng toàn thể
các bạn đồng nghiệp tại Trường Đại học Bách Khoa Hà Nội về sự giúp đỡ chân tình, vô tư mà tác giả nhận được trong quá trình thực hiện luận án.
Tác giả xin bày tỏ lòng biết ơn đến Ban Giám hiệu Trường Đại học Sư phạm Kỹ thuật Hưng Yên, gia đình, các thầy cô giáo và các bạn đồng
nghiệp Khoa Công nghệ Thông tin, Phòng Quản lý Khoa học và Đối ngoại trong thời gian vừa qua đã giúp đỡ, tạo điều kiện thuận lợi và không ngừng
ủng hộ tác giả.
MỤC LỤC
1 DANH MỤC BẢNG, HÌNH VẼ
MỞ ĐẦU 2
1 CƠ SỞ LÝ THUYẾT MÃ 8
1.1 Nửa nhóm và vị nhóm . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2 Từ và ngôn ngữ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Otomat và ngôn ngữ chính quy . . . . . . . . . . . . . . . . . . . . . . 12
1.3.1 Otomat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.2 Ngôn ngữ chính quy . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4 Mã của các từ hữu hạn . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4.1 Mã và các tính chất đại số của mã . . . . . . . . . . . . . . . . 16
1.4.2 Độ trễ giải mã . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4.3 Tiêu chuẩn kiểm định mã . . . . . . . . . . . . . . . . . . . . . 19
1.5 Mã luân phiên và mã của các từ định biên . . . . . . . . . . . . . . . . 20
1.5.1 Mã luân phiên . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.5.2 Mã của các từ định biên . . . . . . . . . . . . . . . . . . . . . . 22
1.6 Mã của các từ vô hạn . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.6.1 Từ và ngôn ngữ từ vô hạn . . . . . . . . . . . . . . . . . . . . . 24
1.6.2 ω-mã . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.6.3 Z-mã . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG 26
26
2.1 Thuật toán kiểm định mã và ♦-mã . . . . . . . . . . . . . . . . . . . . 2.1.1 Tiêu chuẩn Sardinas-Patterson cải tiến . . . . . . . . . . . . . . 26
33
36
2.1.2 Thuật toán kiểm định mã trên vị nhóm . . . . . . . . . . . . . . 2.1.3 Thuật toán kiểm định ♦-mã . . . . . . . . . . . . . . . . . . . . 2.2 Thuật toán kiểm định ω-mã . . . . . . . . . . . . . . . . . . . . . . . . 40
2.2.1 Thủ tục kiểm định ω-mã trên ngôn ngữ . . . . . . . . . . . . . . 40
2.2.2 Thuật toán kiểm định ω-mã trên vị nhóm . . . . . . . . . . . . 44
2.2.3 Thuật toán kiểm định ω-mã trên đồ thị . . . . . . . . . . . . . . 46
2.3 Thuật toán kiểm định Z-mã . . . . . . . . . . . . . . . . . . . . . . . . 51
2.3.1 Thủ tục kiểm định Z-mã trên ngôn ngữ . . . . . . . . . . . . . 51
2.3.2 Thuật toán kiểm định Z-mã trên vị nhóm . . . . . . . . . . . . 57
2.3.3 Thuật toán kiểm định Z-mã trên đồ thị . . . . . . . . . . . . . 61
ii MỤC LỤC
3 ĐỘ KHÔNG NHẬP NHẰNG CỦA NGÔN NGỮ 66
3.1 Tính chất không nhập nhằng của ngôn ngữ . . . . . . . . . . . . . . . . 3.1.1 Tích không nhập nhằng và mã . . . . . . . . . . . . . . . . . . . 3.1.2 Xác định độ không nhập nhằng kiểu 1 . . . . . . . . . . . . . . 66 67 69
. . . . 3.1.2.1 Thủ tục xác định độ không nhập nhằng kiểu 1 3.1.2.2 Thuật toán xác định độ không nhập nhằng kiểu 1 . . . 69 72
3.1.3 Xác định độ không nhập nhằng kiểu 2 . . . . . . . . . . . . . . . . . . 3.1.3.1 Thủ tục xác định độ không nhập nhằng kiểu 2 3.1.3.2 Thuật toán xác định độ không nhập nhằng kiểu 2 . . . 74 74 79
3.2 Phân bậc ngôn ngữ theo tính không nhập nhằng . . . . . . . . . . . . . 3.2.1 Phân bậc kiểu 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Phân bậc kiểu 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 81 83
3.3 Độ trễ giải mã . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Độ trễ giải mã và độ không nhập nhằng . . . . . . . . . . . . . 83 83
84 84 90
3.3.2 Xác định độ trễ giải mã . . . . . . . . . . . . . . . . . . . . . . 3.3.2.1 Thủ tục xác định độ trễ giải mã cho ngôn ngữ . . . . . 3.3.2.2 Thuật toán tìm độ trễ giải mã cho ngôn ngữ chính quy 3.3.3 Thuật toán xác định độ trễ giải mã của ♦-mã . . . . . . . . . . 92
4 MỘT SỐ ỨNG DỤNG
4.1 Hệ mật đa trị và nhập nhằng . . . . . . . . . . . . . . . . . . . . . . . 94 94
97 4.2 Bài toán tương ứng Post và ứng dụng . . . . . . . . . . . . . . . . . . . 4.2.1 Bài toán tương ứng Post trên lớp ngôn ngữ từ định biên . . . . 97 4.2.2 Kỹ thuật bẫy cửa sập . . . . . . . . . . . . . . . . . . . . . . . . 103
KẾT LUẬN 104
TÀI LIỆU THAM KHẢO 106
DANH MỤC CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ 109
DANH MỤC BẢNG, HÌNH VẼ
1.1 Một overlap của hai từ liên hợp x và y . . . . . . . . . . . . . . . . . . 11
1.2 Một X-phân tích của từ w . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Khởi đầu một phân tích kép của từ w . . . . . . . . . . . . . . . . . . . 11 17
2.1 Một hướng cải tiến tiêu chuẩn kiểm định mã Sardinas-Patterson . . . . 27
2.2 Các ngôn ngữ X của Ví dụ 2.6 và 2.7 . . . . . . . . . . . . . . . . . . . 33
69 3.1 Minh họa một trường hợp tính toán các tập Ui, Vi+1 . . . . . . . . . . .
4.1 Cấu trúc điều khiển B . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Từ tuyệt mật w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 Bảng nhân bí mật B × B . . . . . . . . . . . . . . . . . . . . . . . . . . 98 98 99
4.3 Chi tiết cấu trúc từ tuyệt mật w . . . . . . . . . . . . . . . . . . . . . 101 4.2 Bảng kê xác suất tìm được nghiệm của bài toán . . . . . . . . . . . . . 102
MỞ ĐẦU
Mã có vai trò thiết yếu trong nhiều lĩnh vực như xử lý thông tin, nén dữ liệu, truyền thông và mật mã. Đặc biệt, theo sự tiến bộ của khoa học máy tính, nhu cầu sử dụng
mã trong biểu diễn, bảo mật thông tin ngày càng cấp thiết về thực tiễn, đòi hỏi những công trình nghiên cứu cả chiều sâu và chiều rộng. Trong số đó phải kể đến các bài toán trong lĩnh vực của lý thuyết mã và ứng dụng.
Ta biết rằng khái niệm mã khởi nguồn từ lý thuyết thông tin do Shannon đề xuất
năm 1949. Trong khuôn khổ lý thuyết này, sự phát triển của lý thuyết mã dẫn tới các nghiên cứu về mã có độ dài cố định liên quan đến các bài toán phát hiện lỗi và sửa lỗi trong truyền thông dữ liệu. Đến năm 1955, Sch¨utzenberger đề xuất hướng nghiên
cứu về mã có độ dài biến đổi sử dụng các phương pháp tổ hợp và đại số. Từ đó, nhiều công trình nghiên cứu đã nảy sinh, phát triển và nhận được những kết quả phong phú,
lý thú trong cả lý thuyết và ứng dụng. Lý thuyết mã ngày nay là một bộ phận không thể thiếu của khoa học máy tính, công nghệ thông tin và truyền thông..., có liên hệ chặt chẽ với các lý thuyết tổ hợp trên từ, lý thuyết otomat, ngôn ngữ hình thức và lý
thuyết nửa nhóm. Bài toán kiểm định mã và bài toán nghiên cứu các đặc tính của mã hay các ngôn ngữ hình thức trong mối quan hệ với mã là những bài toán được nhiều
nhà khoa học quan tâm nghiên cứu vì vai trò sâu sắc và rất cơ bản của chúng trong sự phát triển của lý thuyết mã nói riêng, của ngôn ngữ hình thức và lý thuyết biểu diễn thông tin nói chung.
Khái niệm mã được xem xét trong luận án là mã có độ dài biến đổi. Ta có thể hình dung một mã là một ngôn ngữ của các từ hữu hạn sao cho tích ghép của các từ của
nó có thể được “giải mã” một cách duy nhất. Tích ghép có hai dạng: trường hợp của mã là tích ghép hữu hạn và trường hợp của ω-mã, Z-mã là tích ghép vô hạn. Từ đó
có thể thấy rằng bài toán kiểm định một ngôn ngữ cho trước có là mã (ω-mã, Z-mã) không, là bài toán rất cơ bản của lý thuyết mã.
Sử dụng phương pháp tổ hợp trên từ để kiểm tra một ngôn ngữ cho trước có thỏa mãn định nghĩa của mã không, Sardinas và Patterson (1953) đã đưa ra một tiêu chuẩn kiểm định mã, còn gọi là tiêu chuẩn Sardinas-Patterson cho lớp ngôn ngữ tổng quát.
Ta để ý rằng, trong lĩnh vực của Toán học, tiêu chuẩn Sardinas-Patterson được xem là câu trả lời cho bài toán đặt ra. Tuy nhiên, nhiều nghiên cứu sâu trong các lĩnh vực
của Tin học, Tổ hợp, Tính toán... lại đòi hỏi tính kiến thiết với các thuật toán chi tiết. Về nguyên tắc, theo phương pháp của Sardinas và Patterson, các thuật toán như vậy chỉ có thể nhận được khi số cấu hình tổ hợp cần kiểm tra là hữu hạn. Đây là trường
hợp của các ngôn ngữ đoán nhận được, hoặc tương đương là các ngôn ngữ chính quy. Thuật toán kiểm định mã hiệu quả cho lớp ngôn ngữ chính quy hữu hạn đã được đề
MỞ ĐẦU 3
xuất bởi Rodeh (1982) với độ phức tạp thời gian là O(nm), ở đó n là tổng số từ mã của ngôn ngữ và m là tổng độ dài của chúng. Đối với lớp ngôn ngữ chính quy tổng quát, để thiết lập thuật toán, ta phải kết hợp với chúng các công cụ otomat hoặc vị nhóm hữu hạn. Khi đó ngôn ngữ đầu vào được giả thiết là đoán nhận được bởi một
otomat hữu hạn hoặc thỏa bởi một đồng cấu đại số. Nếu đầu vào cho bởi một otomat hữu hạn, thuật toán kiểm định mã tốt nhất được biết là của Robert (1996) có độ phức tạp thời gian là O(n2), với n là tổng số trạng thái và số cung của otomat đó. Trường hợp đầu vào là một đồng cấu đại số thì thuật toán là chưa được biết và câu hỏi tất yếu (câu hỏi 1) là: Có tồn tại một thuật toán hiệu quả kiểm định mã không?
Câu hỏi tương tự (câu hỏi 2) cũng được nêu ra khi ta xem xét bài toán kiểm định
ω-mã. Đối với Z-mã thì cho đến nay, ta mới biết đến tiêu chuẩn toán học kiểu Sardinas- Patterson của nhóm tác giả Đỗ Long Vân, Nguyễn Hương Lâm và Phan Trung Huy (1993), còn sự tồn tại một thuật toán kiểm định Z-mã thì chưa được biết. Mặt khác,
với các hình thức mã mở rộng, chẳng hạn một số mã mới cũng được nhóm nghiên cứu của tác giả phát triển gần đây như mã luân phiên và ♦-mã, thì câu hỏi (câu hỏi 3) là: Thuật toán kiểm định mã có thể mở rộng, hoặc cải biên để áp dụng cho Z-mã và các mã này không?
Từ những vấn đề và câu hỏi được đặt ra như trên, hướng nghiên cứu cải tiến thuật toán kiểm định mã và mã mở rộng là rất cần thiết và có ý nghĩa thời sự. Do đó, mục
tiêu thứ nhất của luận án là, dựa trên các thành tựu của đại số, lý thuyết otomat và lý thuyết đồ thị, thiết lập các thuật toán kiểm định mới, chất lượng tốt hơn cho mã và các thuật toán kiểm định cho các lớp mã khác gồm ♦-mã, ω-mã và Z-mã.
Đối với vấn đề kiểm định mã đặt ra trong câu hỏi 1, nếu tiếp cận theo phương pháp
kinh điển của Sardinas và Patterson thì theo tính chất đoán nhận ngôn ngữ bởi một đồng cấu đại số, ta sẽ nhận được một thuật toán cỡ hàm mũ vì trong thủ tục tính
toán, ta không tránh khỏi việc phải xem xét tất cả các tập con của vị nhóm hữu hạn đoán nhận ngôn ngữ đầu vào. Trong luận án, nhờ một kỹ thuật loang dần trong lý thuyết đồ thị, chúng tôi chứng minh một kết quả quan trọng cho phép nhận được một
tiêu chuẩn mới cải tiến từ tiêu chuẩn Sardinas-Patterson để kiểm định mã. Từ đó cho phép giảm số bước tính toán của thủ tục xuống cỡ tuyến tính theo kích thước của vị
nhóm đã cho. Kết quả nhận được là một thuật toán có độ phức tạp về mặt thời gian là một đa thức bậc hai hiệu quả, trả lời khẳng định cho câu hỏi đặt ra.
Liên quan đến câu hỏi 2, năm 1986, Staiger đã đề xuất một tiêu chuẩn đại số cho việc kiểm định ω-mã trên cơ sở của tiêu chuẩn Sardinas-Patterson. Từ kết quả này,
Augros và Litovsky (1999) đã phát triển một thuật toán dựa trên otomat hữu hạn để kiểm định một ngôn ngữ chính quy có là ω-mã không với độ phức tạp thời gian là O(n3), n là kích thước của vị nhóm các phép chuyển dịch của otomat tối tiểu đoán nhận ngôn ngữ đó. Với vị nhóm hữu hạn bất kỳ thỏa ngôn ngữ đầu vào (vị nhóm các phép chuyển dịch nói trên chỉ là một trường hợp riêng), chúng tôi đề xuất một tiêu
4 MỞ ĐẦU
chuẩn mới kiểm định ω-mã và dựa trên đồ thị hữu hạn có tô màu cung, thiết lập một thuật toán kiểm định ω-mã có độ phức tạp thời gian chỉ là O(n2), với n là kích thước của vị nhóm đã cho. Chúng tôi cũng mở rộng các kết quả nói trên, thiết lập các thuật toán mới, hiệu quả kiểm định ♦-mã và Z-mã, để trả lời câu hỏi 3.
Một bài toán cơ bản của ngôn ngữ hình thức có liên quan đến lý thuyết mã là bài
toán nghiên cứu dựa trên đặc điểm phân tích không nhập nhằng của một từ thành dãy các từ đặc biệt thuộc một ngôn ngữ đã cho, mà mã là một trường hợp riêng. Từ đó, tính không nhập nhằng trở thành một đối tượng được nghiên cứu trong mối liên hệ
với lý thuyết mã. Vì đặc tính không nhập nhằng liên quan đến phương pháp biểu diễn thông tin một cách duy nhất nên bài toán nghiên cứu về phân tích không nhập nhằng
sẽ đưa đến một hướng nghiên cứu mở rộng của lý thuyết mã.
Khái niệm không nhập nhằng xuất hiện khá thường xuyên trong lý thuyết khoa học máy tính. Chẳng hạn otomat không nhập nhằng, văn phạm không nhập nhằng hay các phép toán không nhập nhằng trên ngôn ngữ. Khi đó, không nhập nhằng thể hiện
tính duy nhất của quan hệ tồn tại một đường đi trong otomat, một dẫn xuất trong văn phạm hay một phân tích của từ thuộc ngôn ngữ. Định nghĩa của mã ngụ ý mã là
không nhập nhằng. Chi tiết hơn, ta biết rằng một mã X tùy ý là không nhập nhằng. Nghĩa là bất kỳ một thông điệp nào được mã hóa thành các từ của X sẽ được giải mã theo một cách duy nhất. Tuy nhiên, tính duy nhất không đảm bảo việc giải mã được
thực hiện dễ dàng. Ví dụ, nếu các chữ cái x, y, z trong một thông điệp được mã hóa lần lượt thành các từ b, ba, aa của X, thì việc giải mã không thể quyết định thông điệp
baaa . . . khởi đầu bởi b hay ba. Điều này phản ánh khía cạnh nhập nhằng của mã, liên quan đến độ trễ giải mã là một loại độ khó của quá trình giải mã được đề xuất bởi Gilbert và Moore (1959).
Biểu diễn mã thực chất là biểu diễn thông tin một cách duy nhất. Thật ngạc nhiên,
trong khi các nghiên cứu về tính không nhập nhằng và độ trễ giải mã của mã khá sôi động, có nhiều kết quả được thiết lập và ứng dụng mạnh mẽ trong lĩnh vực mật mã,
biểu diễn tri thức và nhiều lĩnh vực khác, thì tính không nhập nhằng của ngôn ngữ nói chung không là mã chưa được nghiên cứu. Các vấn đề và câu hỏi được đưa ra sau đây cho thấy tính cấp thiết phải có các nghiên cứu về chủ đề này.
Thứ nhất, phân lớp mã là một hướng nghiên cứu quan trọng của lý thuyết mã.
Chẳng hạn, liên quan đến cấu trúc tạo dựng của mã, mã prefix có thể được xây dựng một cách đơn giản, còn cấu trúc của mã tổng quát vẫn còn là vấn đề mở. Phân lớp mã theo độ trễ giải mã cho phép ta mở rộng những khái niệm của mã prefix (có độ trễ 0)
cho trường hợp mã tổng quát. Tuy nhiên phân bậc này bỏ qua các lớp ngôn ngữ không là mã, tạo ra một khoảng trống trong nghiên cứu lý thuyết mã hóa thông tin và ứng
dụng. Từ đó, phát sinh một câu hỏi (câu hỏi 4) là: Có tồn tại một phân bậc mịn của toàn bộ các ngôn ngữ theo tính không nhập nhằng không?
Hai là, trong lĩnh vực mật mã, nguyên lý chung là không có hệ mật tồn tại lâu dài
MỞ ĐẦU 5
trước sự tấn công, do đó luôn có nhu cầu thiết lập các hệ mật mới. Trong các hệ mật, mã là đối tượng bị tấn công. Khi đó, câu hỏi (câu hỏi 5) được đặt ra là: Nếu ta sử dụng
ngôn ngữ không phải là mã thì có nâng cao được hiệu quả an toàn chống tấn công cho các hệ mật không?
Nghiên cứu sâu về tính không nhập nhằng của ngôn ngữ còn đặt ra nhiệm vụ phải thiết lập các thuật toán tính toán các loại độ đo nhập nhằng và không nhập nhằng đã được đề cập, ở đây là độ trễ giải mã và độ không nhập nhằng của ngôn ngữ. Mặc dù
các tiêu chuẩn cho một ngôn ngữ có độ trễ giải mã hữu hạn đã được đưa ra bởi nhiều tác giả, chẳng hạn của Vũ Thành Nam (2007) cho mã và Devolder và các tác giả khác
(1994) cho ω-mã, thuật toán hiệu quả tính độ trễ giải mã vẫn chưa được biết. Hơn nữa, thiết lập các thuật toán tính độ trễ giải mã cho các lớp mã mới, thuật toán tính độ không nhập nhằng của ngôn ngữ theo hai kiểu khác nhau, mối quan hệ giữa chúng
và mối quan hệ của chúng với độ trễ giải mã là những vấn đề hoàn toàn mới.
Vì vậy, mục tiêu thứ hai của luận án là nghiên cứu những lớp ngôn ngữ gần mã
thông qua nghiên cứu về độ không nhập nhằng của ngôn ngữ xem như một yếu tố phản ánh sự “gần nhau” của một ngôn ngữ với một mã, và thiết lập phân bậc ngôn ngữ dựa trên độ không nhập nhằng của chúng.
Cuối cùng nhưng không kém quan trọng, mục tiêu thứ ba của luận án là, từ những
kết quả được thiết lập mới trong luận án, đề xuất một số sơ đồ ứng dụng.
Các kết quả nhận được của luận án đã trả lời khẳng định các câu hỏi 4 và 5, đồng
thời giải quyết các nhiệm vụ nghiên cứu về tính không nhập nhằng được đặt ra ở phần trên. Cụ thể, đặc trưng ranh giới của sự nhập nhằng và không nhập nhằng của một
ngôn ngữ bởi độ không nhập nhằng và phân lớp ngôn ngữ theo độ không nhập nhằng này, chúng tôi nhận được một phân bậc vô hạn rất mịn của toàn bộ các ngôn ngữ. Trong đó, mã thuộc lớp ngôn ngữ đặc biệt nằm trong phân bậc này. Đây là một bức
tranh tổng thể về lý thuyết, khởi đầu cho các nghiên cứu nhằm phát hiện những tính chất mới của các lớp mã và ngôn ngữ gần mã. Hai độ đo không nhập nhằng khác nhau
được đề xuất cho ngôn ngữ và những kết quả đã thiết lập cho thấy khả năng có thể ứng dụng những lớp ngôn ngữ không là mã cho mã hóa thông tin. Khi đó, độ không nhập nhằng k của ngôn ngữ được sử dụng, với 0 ≤ k ≤ ∞, đóng vai trò là một độ khó
mới liên quan đến quá trình giải mã. Việc xác định đúng giá trị k sẽ gây khó khăn cho đối phương khi thực hiện thám mã.
Bằng việc sử dụng các phương pháp và công cụ đại số, tổ hợp trên từ, các phương
pháp truyền thống của lý thuyết otomat hữu hạn và đồ thị, các kết quả chính của luận án được trình bày chi tiết trong các chương, từ Chương 2 đến Chương 4 của luận án với cấu trúc như sau.
Chương 1 được dành cho việc trình bày các khái niệm cần thiết làm cơ sở lý thuyết
thiết lập các kết quả mới ở các chương sau.
6 MỞ ĐẦU
Chương 2 chứa đựng các kết quả liên quan tới kiểm định mã và mã mở rộng. Mở đầu là một tiêu chuẩn mới kiểm định mã mà thực chất là tiêu chuẩn Sardinas-Patterson
cải tiến được đề xuất và chứng minh. Trên cơ sở tiêu chuẩn này, bốn thuật toán kiểm định có cùng độ phức tạp thời gian O(n2) được thiết lập, với n là kích thước của vị nhóm thỏa ngôn ngữ đầu vào. Cụ thể đó là:
− Thuật toán 2.2 kiểm định mã cho trường hợp ngôn ngữ chính quy, trên cơ sở của
Định lý 2.1.
− Thuật toán 2.3 kiểm định ♦-mã cho trường hợp ♦-ngôn ngữ chính quy, trên cơ
sở của Định lý 2.4.
− Thuật toán 2.4 kiểm định ω-mã cho trường hợp ngôn ngữ chính quy, trên cơ sở
của các Định lý 2.6 và 2.7.
− Thuật toán 2.5 kiểm định Z-mã cho trường hợp ngôn ngữ chính quy, trên cơ sở
của các Định lý 2.11, 2.12 và 2.13.
Thuật toán 2.2 nhận được nhờ sử dụng phương pháp đại số kết hợp với một cấu trúc dữ liệu đặc biệt kiểu stack trên vị nhóm hữu hạn. Thuật toán 2.3 có phương pháp
tiếp cận tương tự ngoại trừ một số tính chất đại số mở rộng được thiết lập cho lớp ♦-ngôn ngữ. Đối với ω-mã và Z-mã, để có các Thuật toán 2.4 và 2.5, phương pháp đại số kết hợp với phương pháp đồ thị được giới thiệu. Ở đó các kỹ thuật được trình bày
chi tiết gồm kỹ thuật chuyển biểu diễn đại số của bài toán sang biểu diễn đồ thị và kỹ thuật kiểm định chu trình đặc biệt trên đồ thị hữu hạn có tô màu cung. Các điều kiện
tương đương cho các bài toán được chứng minh đầy đủ cùng với độ phức tạp thời gian của từng bước thực hiện được tính toán chi tiết.
Chương 3 trình bày các khái niệm và kết quả mới làm rõ một khoảng trống trong
nghiên cứu lý thuyết mã hóa thông tin và ứng dụng. Đó là lớp các ngôn ngữ rất lớn đặc trưng bởi độ không nhập nhằng, nằm giữa lớp mã và lớp ngôn ngữ được định nghĩa bởi tích không nhập nhằng. Các đặc trưng tổ hợp và đại số của ngôn ngữ lần lượt được
thiết lập làm cơ sở đề xuất các thuật toán xác định các độ đo nhập nhằng và không nhập nhằng của chúng. Trong một số trường hợp đặc biệt, ta còn sử dụng công cụ
otomat hữu hạn kết hợp với ngôn ngữ để diễn tả các thuật toán. Ngoài hai phân bậc ngôn ngữ theo hai kiểu độ không nhập nhằng, các kết quả chính được thiết lập là:
− Thuật toán 3.1 xác định độ không nhập nhằng kiểu 1 cho lớp ngôn ngữ chính
quy, trên cơ sở của Định lý 3.1.
− Thuật toán dựa trên otomat hữu hạn xác định độ không nhập nhằng kiểu 2 cho
lớp ngôn ngữ chính quy, trên cơ sở của các Định lý 3.2 và 3.3.
− Thuật toán dựa trên otomat hữu hạn xác định độ trễ giải mã cho mã thuộc lớp
ngôn ngữ chính quy, trên cơ sở của các Định lý 3.4 và 3.5.
MỞ ĐẦU 7
− Thuật toán tổ hợp xác định độ trễ giải mã cho ♦-mã thuộc lớp ♦-ngôn ngữ chính
quy, trên cơ sở của các Định lý 3.6 và 3.7.
Thuật toán 3.1 là thuật toán kiểu Sardinas-Patterson cải tiến mà ta thiết lập trong Chương 2. Độ phức tạp thời gian của nó là O(n2). Các thuật toán còn lại đều có độ phức tạp thời gian cỡ hàm mũ theo n, với n là kích thước của vị nhóm thỏa ngôn ngữ đầu vào. Đây là đánh giá thô theo tính chất đoán nhận ngôn ngữ bởi một đồng cấu đại số. Các thuật toán hiệu quả hơn sẽ được xem xét như một hướng nghiên cứu tiếp
theo của luận án.
Chương 4 dành cho việc trình bày một số sơ đồ ứng dụng. Kết quả cụ thể như sau:
− Đối với lớp ngôn ngữ k-không nhập nhằng kiểu 1, đề xuất một hệ mật có tính
đa trị và nhập nhằng sử dụng các ngôn ngữ có độ nhập nhằng cao.
− Đối với lớp ngôn ngữ từ định biên, đề xuất một sơ đồ bảo mật và một hướng
nghiên cứu mở rộng để xây dựng các hệ mật mới dựa trên bẫy cửa sập là một dẫn xuất của bài toán không quyết định được PCP.
Các kết quả chính của luận án đã được công bố trong các công trình 1 - 16 (xem
Danh mục các công trình đã công bố, hoặc đã qua phản biện và đã được chấp nhận đăng của luận án) và đã được trình bày tại:
− Seminar “Toán rời rạc và Tổ hợp”, Phòng Cơ sở Toán học của Tin học, Viện Toán
học.
− Seminar khoa học, Bộ môn Toán Tin, Viện Toán ứng dụng và Tin học, Trường
Đại học Bách Khoa Hà Nội.
− Hội thảo quốc gia lần thứ XII “Một số vấn đề chọn lọc của Công nghệ thông tin
và truyền thông”, Biên Hòa, 5 - 6/8/2009.
− Hội thảo quốc gia lần thứ XIII “Một số vấn đề chọn lọc của Công nghệ thông tin
và truyền thông”, Hưng Yên, 19 - 20/8/2010.
− Hội nghị toàn quốc lần thứ III về Ứng dụng toán học, Hà Nội, 23 - 25/12/2010.
− Hội thảo quốc gia lần thứ XIV “Một số vấn đề chọn lọc của Công nghệ thông tin
và truyền thông”, Cần Thơ, 7 - 8/10/2011.
− Hội thảo quốc tế IEEE-RIVF 2012, Thành phố Hồ Chí Minh, 27/2 - 1/3/2012.
− Hội thảo quốc tế ACIIDS 2012, Kaohsiung, Taiwan, 19 - 21/3/2012.
Chương 1 CƠ SỞ LÝ THUYẾT MÃ
Trong chương này, chỉ những khái niệm cơ bản liên quan được sử dụng trong luận án mới được đề cập. Nội dung kiến thức về đại số, ngôn ngữ và mã của các từ hữu hạn
trình bày trong các mục, từ Mục 1.1 đến Mục 1.4, được tham khảo và trích dẫn từ các tài liệu [4; 5; 6; 7; 9; 13; 16; 18; 21; 27; 28]. Bên cạnh đó, luận án còn giới thiệu một số lớp mã dựa trên các hình thức tích mới có tính thời sự làm cơ sở để thiết lập
các thuật toán mới, hiệu quả cho các lớp mã này trong các chương tiếp theo. Nội dung kiến thức về mã luân phiên và mã của các từ định biên trình bày trong Mục 1.5 là
một hướng nghiên cứu mới trong lý thuyết mã, được đề xuất gần đây trong các công trình [14; 15; 23; 35; 36; 37; 38]. Kiến thức về ngôn ngữ và mã của các từ vô hạn xem như một sự mở rộng các khái niệm trong lý thuyết mã truyền thống cho trường hợp
vô hạn, được tổng hợp từ các tài liệu [3; 10; 11; 13; 19; 20; 24; 29; 31; 32; 33; 34], là nội dung của Mục 1.6.
Trong luận án, tập các số tự nhiên được ký hiệu là N. Lực lượng của một tập hợp X được ký hiệu là Card(X). Các bảng chữ đều được giả thiết là hữu hạn nếu không
nói gì khác.
1.1 Nửa nhóm và vị nhóm
Ta nhắc lại rằng một nửa nhóm S là một tập hợp được trang bị một phép toán hai ngôi kết hợp, nếu không nói gì thêm ta sẽ ký hiệu theo lối nhân. Một nửa nhóm con
(t.ư. nhóm con) T của S là một tập con của S cùng với phép toán cảm sinh làm cho T trở thành nửa nhóm (t.ư. nhóm). Nửa nhóm S là một vị nhóm nếu S có đơn vị. Đơn vị của vị nhóm S là duy nhất và được ký hiệu là 1S. Một vị nhóm con của vị nhóm S là một nửa nhóm con có chứa đơn vị của S.
Ví dụ 1.1 M = {0, 1} là vị nhóm nhân với phần tử đơn vị là 1.
Với vị nhóm M bất kỳ, ta trang bị cấu trúc vị nhóm cho tập tất cả các
Ví dụ 1.2 tập con P(M) của M bằng cách định nghĩa, với X, Y ⊂ M,
XY = {x.y | x ∈ X, y ∈ Y }.
Phần tử đơn vị là {1}.
1.2 Từ và ngôn ngữ 9
Từ các vị nhóm M, N ta có vị nhóm M × N là tích trực tiếp của M và
Ví dụ 1.3 N, M (n) là tích trực tiếp của n lần vị nhóm M.
Cho các nửa nhóm (vị nhóm) S và T . Ánh xạ ϕ : S → T được gọi là một đồng cấu
nửa nhóm (t.ư. vị nhóm) nếu với mọi a, b ∈ S,
ϕ(ab) = ϕ(a)ϕ(b) (t.ư. ϕ(ab) = ϕ(a)ϕ(b) và ϕ(1S) = 1T với 1S là đơn vị của S, 1T là đơn vị của T ).
Đồng cấu ϕ được gọi là đơn cấu (t.ư. toàn cấu, đẳng cấu) nếu ϕ là đơn ánh (t.ư. toàn ánh, song ánh). Một đồng cấu từ vị nhóm S vào chính nó thì được gọi là một tự
đồng cấu.
Cho M là một vị nhóm. Với x, y ∈ M, ta có
x−1y = {z ∈ M | x.z = y} và xy−1 = {z ∈ M | x = z.y}.
Với S, T ⊆ M, ta định nghĩa các phép cắt trái, phải của S bởi T
T −1S = {u ∈ M | ∃t ∈ T : t.u ∈ S} và ST −1 = {u ∈ M | ∃t ∈ T : u.t ∈ S}.
Ta có tính chất cơ bản sau đây
Cho M là một vị nhóm, P, K ⊆ M, P = K ∗ và m ∈ M. Khi đó
Tính chất 1.1 P −1(m−1K) = (m.P )−1K.
Chứng minh. Chứng minh P −1(m−1K) ⊆ (m.P )−1K. Ta có
w ∈ P −1(m−1K) ⇔ (∃p ∈ P, k ∈ K : w = p−1(m−1k) ⇔ k = m.p.w).
Vì vậy w = (m.p)−1k ∈ (m.P )−1K.
Chứng minh (m.P )−1K ⊆ P −1(m−1K). Ta có
w ∈ (m.P )−1K ⇔ (∃p ∈ P, k ∈ K : w = (m.p)−1k ⇔ k = m.p.w).
(cid:3) Vì vậy w = p−1(m−1k) ∈ P −1(m−1K).
1.2 Từ và ngôn ngữ
Cho A là một bảng chữ. Một từ w trên bảng chữ A là một dãy hữu hạn các phần tử của A
w = (a1, a2, . . . , an), ai ∈ A.
Tập tất cả các từ trên bảng chữ A được ký hiệu là A∗ và được trang bị phép nhân
(tích) ghép có tính chất kết hợp
(a1, a2, . . . , an)(b1, b2, . . . , bm) = (a1, a2, . . . , an, b1, b2, . . . , bm).
1 CƠ SỞ LÝ THUYẾT MÃ 10
Vì vậy, để thuận tiện ta viết
w = a1a2 · · · an
thay cho w = (a1, a2, . . . , an). Một phần tử a ∈ A được gọi là một chữ cái. Từ rỗng được ký hiệu là ε đóng vai trò là phần tử đơn vị trong phép nhân ghép. Do đó, tập A∗ có cấu trúc vị nhóm và A∗ được gọi là vị nhóm tự do trên A. Tập tất cả các từ khác rỗng trên A được ký hiệu là A+. Ta có A+ = A∗ − {ε}.
Độ dài |w| của từ w = a1a2 · · · an với ai ∈ A là n. Quy ước |ε| = 0. Ánh xạ w 7→ |w|
là một đồng cấu từ A∗ đến vị nhóm cộng N. Với n ≥ 0, ta ký hiệu
A và A≤n = {w ∈ A∗ | |w| ≤ n} Đặc biệt, A<0 = ∅ và A≤0 = {ε}. Một từ w ∈ A∗ là một khúc con của một từ x ∈ A∗ nếu tồn tại u, v ∈ A∗ sao cho
x = uwv. Quan hệ “là một khúc con của” là một quan hệ thứ tự bộ phận trên A∗. Một
khúc con w của x là khúc con thực sự nếu w 6= x. Một từ w ∈ A∗ là một khúc đầu
(t.ư. khúc đuôi ) của một từ x ∈ A∗ nếu tồn tại một từ u ∈ A∗ sao cho x = wu (t.ư.
x = uw). Quan hệ “là một khúc đầu của” (t.ư. “là một khúc đuôi của” ) cũng là một
quan hệ thứ tự bộ phận trên A∗. Ta viết w ≤p x (t.ư. w ≤s x) khi w là một khúc đầu
(t.ư. khúc đuôi) của x và w
w ≤p x, w0 ≤p x (t.ư. w ≤s x, w0 ≤s x), thì w và w0 so sánh được với nhau, tức là w ≤p w0 hoặc w0 ≤p w (t.ư. w ≤s w0 hoặc w0 ≤s w) Tập con X của A∗ được gọi là tập prefix nếu không có từ nào của X là khúc đầu thực sự của một từ khác trong X. Hai từ x, y ∈ A∗ được gọi là liên hợp nếu tồn tại các từ u, v sao cho x = uv, y = vu. (Xem Hình 1.1) Khi đó ta cũng gọi v là một overlap của x và y. Một tập con của A∗ được gọi là một ngôn ngữ trên A.
Với một ngôn ngữ X thuộc A∗, ta ký hiệu X ∗ vị nhóm con sinh bởi X, X ∗ = {x1x2 · · · xn | n ≥ 0, xi ∈ X} Tương tự, ta ký hiệu X + nửa nhóm con sinh bởi X, X + = {x1x2 · · · xn | n ≥ 1, xi ∈ X}. 1.2 Từ và ngôn ngữ 11 Hình 1.1 Một overlap của hai từ liên hợp x và y Ta có X ∗ − {ε} nếu ε /∈ X, X + = X ∗ nếu ε ∈ X.
Một phân tích của một từ w ∈ A∗ theo các từ của X cho bởi đẳng thức w =
x1x2 · · · xn, xi ∈ X, i ≥ 1. Khi đó, ta cũng nói w có một X-phân tích. Theo định nghĩa,
mỗi từ w ∈ X ∗ có ít nhất một X-phân tích. Để dễ hình dung, ta thường biểu diễn một
X-phân tích w = x1x2 · · · xn bằng hình sau. Hình 1.2 Một X-phân tích của từ w Cho X, Y ⊆ A∗ là các ngôn ngữ. Tích của X và Y , thương trái, thương phải của
X bởi Y là các ngôn ngữ được định nghĩa ở mục trước với vị nhóm M = A∗. Với
u, v ∈ M, ta sẽ viết uv thay cho u.v. Khi đó XY = {xy|x ∈ X, y ∈ Y }, Y −1X = {w ∈ A∗ | yw ∈ X, y ∈ Y }, XY −1 = {w ∈ A∗ | wy ∈ X, y ∈ Y }. Ký hiệu u−1X, Xu−1 được sử dụng khi tập Y chỉ có một phần tử Y = {u}. Cho X, Y, Z ⊆ A∗ là các ngôn ngữ. Khi đó X −1(Y ∪ Z) = X −1Y ∪ Tính chất 1.2
X −1Z. Chứng minh. Chứng minh X −1(Y ∪Z) ⊆ X −1Y ∪X −1Z. Với w bất kỳ, w ∈ X −1(Y ∪Z),
tồn tại x ∈ X sao cho xw ∈ Y ∪ Z. Từ xw ∈ Y hoặc xw ∈ Z ta có w ∈ X −1Y hoặc
w ∈ X −1Z. Vậy w ∈ X −1Y ∪ X −1Z. Chứng minh X −1Y ∪ X −1Z ⊆ X −1(Y ∪ Z). Với w bất kỳ, w ∈ X −1Y ∪ X −1Z, tồn
tại x ∈ X sao cho xw ∈ Y hoặc xw ∈ Z. Từ xw ∈ Y ∪ Z ta có w ∈ X −1(Y ∪ Z). (cid:3) 12 1 CƠ SỞ LÝ THUYẾT MÃ Cho X, Y, Z ⊆ A∗ là các ngôn ngữ. Ta có (Y ∪ Z)−1X = Y −1X ∪ Tính chất 1.3
Z −1X. Chứng minh. Chứng minh (Y ∪Z)−1X ⊆ Y −1X∪Z −1X. Với w bất kỳ, w ∈ (Y ∪Z)−1X,
tồn tại u ∈ Y ∪ Z sao cho uw ∈ X. Nếu u ∈ Y thì uw ∈ X và w ∈ Y −1X. Nếu u ∈ Z
thì uw ∈ X và w ∈ Z −1X. Vậy, w ∈ Z −1X ∪ Z −1X. Chứng minh Y −1X ∪ Z −1X ⊆ (Y ∪ Z)−1X. Với w bất kỳ, w ∈ Y −1X ∪ Z −1X. Nếu
w ∈ Y −1X, thì tồn tại y ∈ Y sao cho yw ∈ X. Nếu w ∈ Z −1X, thì tồn tại z ∈ Z sao
cho zw ∈ X. Tức là, tồn tại u ∈ Y ∪ Z sao cho uw ∈ X. Vậy, w ∈ (Y ∪ Z)−1X.
(cid:3) Cho A là một bảng chữ, một otomat trên A là một bộ A = (Q, A, F) gồm một tập
hữu hạn các trạng thái Q và tập các cung F ⊆ Q × A × Q, mỗi cung có dạng (p, a, q)
với p là đỉnh đầu, q là đỉnh cuối và a là nhãn của cung. Ta còn biểu diễn một otomat
với tập trạng thái khởi đầu I ⊆ Q và tập trạng thái kết thúc T ⊆ Q bởi (Q, A, F, I, T )
hoặc ngắn gọn (Q, I, T ) khi A và F cố định. Otomat A = (Q, A, F) là hữu hạn nếu tập trạng thái Q hữu hạn.
Một đường đi trong otomat A là một dãy c = (f1, f2, . . . , fn) các cung liền nhau 1 ≤ i ≤ n. fi = (qi, ai, qi+1), w Số n được gọi là độ dài của đường đi c. Từ w = a1a2 · · · an là nhãn của đường c.
Trạng thái q1 là điểm đầu và trạng thái qn+1 là điểm cuối của c. Để thuận tiện khi
tham chiếu đến đường đi c, ta sử dụng ký hiệu c : q1 −→ qn+1. w
−→ t, i ∈ I, t ∈ T }. Quy ước, với mỗi trạng thái q ∈ Q, có một đường đi độ dài 0, nhãn ε, từ q đến q.
Một đường đi c : i −→ t là đường đi thành công nếu i ∈ I và t ∈ T . Ngôn ngữ đoán
nhận được bởi A, ký hiệu là L(A), được định nghĩa là tập các nhãn của các đường đi
thành công: L(A) = {w ∈ A∗ | ∃c : i Một otomat A = (Q, I, T ) là đơn định nếu Card(I)=1 và nếu (p, a, q), (p, a, r) ∈ F ⇒ q = r. Vì vậy, với mỗi p ∈ Q và a ∈ A, có nhiều nhất một trạng thái q ∈ Q sao cho
a p −→ q. Với p ∈ Q và a ∈ A, ta định nghĩa p.a = nếu (p, a, q) ∈ F,
nếu (p, a, q) /∈ F. q
∅
1.3 Otomat và ngôn ngữ chính quy 13 Hàm bộ phận Q × A −→ Q định nghĩa như trên được mở rộng cho từ bằng cách đặt, với mọi q ∈ Q, p.ε = p, và, với w ∈ A∗ và a ∈ A, p.wa = (p.w).a. Hàm định nghĩa như trên được gọi là hàm chuyển của A. Khi đó, với I = {i} ta có L(A) = {w ∈ A∗ | i.w ∈ T }. Lớp các ngôn ngữ chính quy trên A∗ (trên A+) được ký hiệu là RecA∗ (RecA+). Ta
biết rằng RecA∗ là lớp các ngôn ngữ sinh bởi các ngôn ngữ {a}, với a là một chữ cái
thuộc A, các phép toán Boole (∪, ∩, −), phép nhân ghép và phép lặp *, và cũng là lớp
các ngôn ngữ đoán nhận được bởi otomat hữu hạn, RecA+ = {L ∈ RecA∗ | L ⊆ A+}.
Ta có Lớp các ngôn ngữ chính quy trên A∗ đóng đối với phép toán Mệnh đề 1.1 ([5])
Boole: phép hợp (∪), phép giao (∩), phép lấy phần bù (−). Cho X ⊆ A∗ là một ngôn ngữ chính quy. Ta định nghĩa một otomat hữu hạn đặc biệt A(X) = (Q, i, T ) như sau. Các trạng thái của A(X) là các tập khác rỗng u−1X với u ∈ A∗. Trạng thái khởi đầu là X = ε−1X, và các trạng thái kết thúc có chứa từ
rỗng. Hàm chuyển cho một trạng thái Y = u−1X và một chữ cái a ∈ A được cho bởi a
−→ a−1Y . Y Đây là một hàm bộ phận và ta có L(A(X)) = X. Ta biết rằng theo [5], otomat A(X) được gọi là otomat tối tiểu của X theo nghĩa đơn định, có số trạng thái ít nhất mà đoán nhận X. Cho A = (Q, i, T ) là một otomat đơn định. Ta xem xét tập F của các hàm bộ phận
từ Q đến Q. Các hàm này được viết về phía bên phải: nếu q ∈ Q và m ∈ F khi đó ảnh
của q bởi m được ký hiệu là qm. Hàm hợp được định nghĩa bởi 14 1 CƠ SỞ LÝ THUYẾT MÃ q(mn) = (qm)n. Khi đó, F lập thành một vị nhóm.
Xét ϕ là một ánh xạ cho tương ứng mỗi từ w ∈ A∗ một hàm bộ phận từ Q đến Q định nghĩa bởi qϕ(w) = q.w. Khi đó, ánh xạ ϕ là một đồng cấu từ A∗ đến vị nhóm F, và vị nhóm ϕ(A∗) của F được gọi là vị nhóm các phép chuyển dịch của otomat A. Một đồng cấu ϕ từ A∗ đến một vị nhóm M được gọi là thỏa ngôn ngữ X ⊆ A∗ nếu tồn tại B ⊆ M, B = ϕ(X) sao cho ϕ−1(B) = X. Khi đó, ta cũng nói X thỏa bởi M và X cho bởi một bộ ba (ϕ, M, B).
Cho X, Y ⊆ A∗ là các ngôn ngữ. Ta thiết lập bổ đề kỹ thuật sau đây về tính thỏa được làm cơ sở xây dựng các thuật toán trên vị nhóm trong các chương tiếp theo. Giả sử h : A∗ → M là một toàn cấu vị nhóm thỏa X và Y và giả sử Bổ đề 1.1
X = h−1(K), Y = h−1(L), h(X +) = T với K, L, T ⊆ M. Khi đó X ∪ Y = h−1(K ∪ L), X ∩ Y = h−1(K ∩ L), X − Y = h−1(K − L),
X −1Y = h−1(K −1L), XY −1 = h−1(KL−1), (X +)−1Y = h−1(T −1L),
Y (X +)−1 = h−1(LT −1). Chứng minh. Giả sử X = h−1(K), Y = h−1(L), K, L ⊆ P , ta chứng minh X ∪ Y =
h−1(K ∪ L). Trước hết, ta chứng minh X ∪ Y ⊆ h−1(K ∪ L). Thật vậy, với mọi w ∈ X ∪ Y , ta có h(w) ∈ K hoặc h(w) ∈ L. Vậy X ∪ Y ⊆ h−1(K ∪ L). Ngược lại, ta chứng minh h−1(K ∪ L) ⊆ X ∪ Y . Thật vậy, với mọi w ∈ h−1(K ∪ L), ta có h(w) ∈ K ∪ L. Nghĩa là w ∈ X ∪ Y . Vậy h−1(K ∪ L) ⊆ X ∪ Y . Ta chứng minh tương tự cho các quan hệ X ∩Y = h−1(K ∩L), X −Y = h−1(K −L), X −1Y = h−1(K −1L) và XY −1 = h−1(KL−1). Từ giả thiết h(X +) = T và X = h−1(K) ta có K + = T . Để chứng minh (X +)−1Y = h−1(T −1L), ta chứng minh (X +)−1Y ⊆ h−1(T −1L) và h−1(T −1L) ⊆ (X +)−1Y . Trước hết, ta chứng minh (X +)−1Y ⊆ h−1(T −1L). Thật vậy, với mọi w ∈
(X +)−1Y , tồn tại x1, x2, . . . , xn ∈ X, y ∈ Y sao cho x1x2 · · · xnw = y. Từ đó suy ra
h(x1).h(x2) · · · h(xn).h(w) = h(y) ∈ L. Hơn nữa, từ h(xi) ∈ K suy ra h(w) ∈ (K +)−1L.
Vậy w ∈ h−1(T −1L). Ngược lại, ta chứng minh h−1(T −1L) ⊆ (X +)−1. Đặt w ∈ h−1(T −1L), ta có h(w) ∈ T −1L = (K +)−1L ⇔ ∃α ∈ K + : α.h(w) ∈ L. 15 1.3 Otomat và ngôn ngữ chính quy Từ α ∈ K + suy ra α = α1.α2 · · · αp, αi ∈ K, i = 1, . . . , p. Từ giả thiết h là toàn
cấu và X = h−1(K) suy ra tồn tại xi ∈ X, i = 1, . . . , p sao cho αi = h(xi). Ta có
α = h(x1x2 · · · xp), khi đó α.h(w) = h(x1x2 · · · xpw). Từ đó suy ra x1x2 · · · xpw ∈
h−1(L) = Y và ta có w ∈ (X +)−1Y . Chứng minh Y (X +)−1 = h−1(LT −1) tương tự. (cid:3) Vậy chứng minh được hoàn thành. Cho X ⊆ A∗ là một ngôn ngữ. Với w ∈ A∗, ta định nghĩa tập ngữ cảnh Context(w) = {(u, v) ∈ A∗ × A∗ | uwv ∈ X}. Tương đẳng cú pháp của X là một quan hệ tương đương ≡X trên A∗ được định nghĩa bởi w ≡X w0 ⇔ Context(w) = Context(w0). Tập thương của A∗/ ≡X, theo định nghĩa, là vị nhóm cú pháp của X. Ta ký hiệu
vị nhóm cú pháp của X là MX và ký hiệu ϕX là đồng cấu chính tắc từ A∗ đến MX,
gọi là đồng cấu cú pháp của X. Cho X ⊆ A∗ là một ngôn ngữ, ta có các kết quả sau đây về tính thỏa được theo ϕX, mối liên hệ giữa vị nhóm cú pháp của X và otomat tối tiểu A(X). Mệnh đề 1.2 ([5]) Cho X ⊆ A∗ là một ngôn ngữ và cho ϕ : A∗ → M là một toàn
cấu vị nhóm. Nếu ϕ thỏa X thì tồn tại một đồng cấu ψ từ M đến vị nhóm cú pháp
MX sao cho ϕX = ψ ◦ ϕ. Cho X ⊆ A∗ là một ngôn ngữ. Vị nhóm cú pháp của X đẳng Mệnh đề 1.3 ([5])
cấu với vị nhóm các phép chuyển dịch của otomat tối tiểu A(X). Định lý sau đây đặc trưng các tính chất của otomat hữu hạn Định lý 1.1 ([5]) Cho X ⊆ A∗ là một ngôn ngữ. Các mệnh đề sau đây là tương đương (i) X là chính quy. (ii) X đoán nhận được bởi một otomat hữu hạn (hoặc X là đoán nhận được).
(iii) Otomat tối tiểu A(X) là hữu hạn.
(iv) Họ các tập u−1X, với u ∈ A∗, là hữu hạn. (v) Vị nhóm cú pháp MX là hữu hạn.
(vi) X thỏa bởi một đồng cấu từ A∗ đến một vị nhóm hữu hạn M. 16 1 CƠ SỞ LÝ THUYẾT MÃ Nhận xét 1.1 Giả sử X ⊆ A+ thỏa bởi một đồng cấu vị nhóm ϕ : A∗ → M từ A∗
đến một vị nhóm hữu hạn M. Nếu X là ngôn ngữ chính quy, ta có thể chọn M là vị nhóm các phép chuyển dịch của otomat tối tiểu đoán nhận X, hoặc vị nhóm cú pháp
MX hữu hạn của X. Ta gọi m =Card(MX) là chỉ số của tương đẳng cú pháp của X,
hay đơn giản, m là chỉ số của X, hoặc X có chỉ số m. Từ Bổ đề 1.1 và Mệnh đề 1.1, ta có Cho X, Y ⊆ A∗ là các ngôn ngữ chính quy, P là một vị nhóm hữu hạn
Hệ quả 1.1
và h : A∗ → P là một toàn cấu vị nhóm. Nếu X và Y cùng thỏa bởi h, thì h thỏa tất
cả các ngôn ngữ L ∈ A (X, Y ), với A (X, Y ) là tập tất cả các ngôn ngữ sinh bởi X, Y
nhờ thực hiện một số hữu hạn các phép toán hợp, giao, lấy phần bù, lấy thương trái và
lấy thương phải. Mệnh đề sau đây được suy từ định nghĩa cho phép ta xây dựng toàn cấu h trong hệ quả trên. Cho X, Y ⊆ A∗ là các ngôn ngữ chính quy, f : A∗ → M và g : A∗ →
Mệnh đề 1.4
N là các đồng cấu vị nhóm, f thỏa X và g thỏa Y . Giả sử h : A∗ → P ⊆ M × N là
một toàn cấu vị nhóm cho bởi: ∀a ∈ A∗, h(a) = (f (a), g(a)) và P là một vị nhóm con
của M × N sinh bởi tập tất cả các phần tử h(a), a ∈ A. Khi đó h thỏa đồng thời X và Y . Cho ϕ : A∗ → M là một đồng cấu vị nhóm thỏa X, X ⊆ A∗, A 6= ∅ và cho ∗ Ví dụ 1.4
Y = {ε}. Ta xây dựng toàn cấu h thỏa cả X và Y theo một trong hai cách sau. = P . Cách 1. Cho Z2 = {0, 1} là vị nhóm nhân modulo 2 của các số nguyên với đơn vị 1.
Rõ ràng, Y = {ε} thỏa bởi đồng cấu g : A∗ → Z2, được định nghĩa bởi: g(ε) = 1 và với
mọi a ∈ A, g(a) = 0. Ta có thể kiểm tra X và Y = {ε} cùng thỏa bởi toàn cấu vị nhóm
h : A∗ → P ⊆ M × Z2 được cho bởi: ∀a ∈ A, h(a) = (ϕ(a), 0), 1P = h(ε) = (1M , 1).
Đặt K = h(A) ∪ 1P = {(h(a), 0) | a ∈ A} ∪ 1P , ta có K Cách 2. Mở rộng vị nhóm M thành vị nhóm M 1 = M ∪ {1} với 1 /∈ M là phần tử đơn vị mới của M 1 bởi điều kiện (1.x = x.1 = x, ∀x ∈ M 1). Định nghĩa h0 : A∗ → M 1 bởi h0(a) = ϕ(a), ∀a ∈ A và h0(ε) = 1.
Từ h0 : A∗ → M 1 ta định nghĩa toàn cấu h : A∗ → P = h0(A)∗ ⊆ M 1 cho bởi h0: h(a) = h0(a), ∀a ∈ A, h(ε) = h0(ε) = 1. Trong phần này ta xem xét định nghĩa và một số tính chất quan trọng của mã. Trước
hết ta nhắc lại khái niệm tích không nhập nhằng là cơ sở để xây dựng khái niệm mã. 1.4 Mã của các từ hữu hạn 17 Cho A là một bảng chữ và X, Y ⊆ A∗ là các ngôn ngữ. Tích XY là không nhập nhằng nếu mỗi từ w ∈ XY có duy nhất một phân tích w = xy với x ∈ X, y ∈ Y . Giả sử A là một bảng chữ hữu hạn. Tập X ⊆ A+ là mã trên A Định nghĩa 1.1
nếu với mọi n, m ≥ 1 và với mọi x1, x2, . . . , xn, y1, y2, . . . , ym ∈ X, nếu có x1x2 · · · xn = y1y2 · · · ym thì khi đó n = m và với i = 1, . . . , n. xi = yi Cho X ⊆ A∗ là một ngôn ngữ. Từ định nghĩa của mã ta suy ra các tính chất sau đây. Tính chất 1.4 X là mã nếu mỗi từ w ∈ A∗ (t.ư. w ∈ X ∗) có nhiều nhất (t.ư. chỉ
có duy nhất) một X-phân tích. Tính chất 1.5 X là mã khi và chỉ khi X −1X ∩ X ∗(X ∗)−1 = {ε}. Ngôn ngữ X = {ab, abb, bb} trên bảng chữ A = {a, b} là mã. Thật vậy,
Ví dụ 1.5
giả sử X không là mã. Khi đó tồn tại một từ w ∈ X + có độ dài tối tiểu thừa nhận hai
X-phân tích khác nhau, w = x1x2 · · · xn = y1y2 · · · ym với x1 6= y1 (n, m ≥ 1, xi, yj ∈ X). Từ x1 6= y1 suy ra x1 là khúc đầu của y1 hoặc ngược lại. Giả
sử x1 là khúc đầu của y1. Với X như trên, ta có x1 = ab và y1 = abb. Từ đó suy ra
x2 = bb, y2 = bb. Vậy y1 = x1b, y1y2 = x1x2b. Thực hiện chứng minh quy nạp theo
k ≥ 1, ta có xk+1 = bb và yk+1 = bb. Từ đó suy ra y1y2 · · · yk+1 = x1x2 · · · xk+1b với mọi
k ≥ 1. Điều này có nghĩa là không thể có từ w hữu hạn thừa nhận hai X-phân tích khác nhau, trái với giả thiết. Hình 1.3 Khởi đầu một phân tích kép của từ w Cho A = {a, b} và X = {b, abb, abbba, bbba, baabb}. Ngôn ngữ X không là Ví dụ 1.6
mã vì tồn tại từ w = abbbabbbaabb, w có hai X-phân tích khác nhau, w = (abbba)(bbba)(abb) = (abb)(b)(abb)(baabb). 18 1 CƠ SỞ LÝ THUYẾT MÃ Định nghĩa mã theo cách sau đây cho phép ta diễn tả ý nghĩa của thuật ngữ mã. Mệnh đề 1.5 ([5]) Nếu X ⊂ A∗ là mã thì mỗi đồng cấu β : B∗ → A∗ cảm sinh
một song ánh từ bảng chữ B đến X là đơn cấu. Ngược lại, nếu tồn tại một đơn cấu
β : B∗ → A∗ sao cho X = β(B), thì X là mã. Một đơn cấu β : B∗ → A∗ với X = β(B) được gọi là một đồng cấu mã đối với X.
Mệnh đề 1.5 trình bày nghĩa gốc của thuật ngữ mã vì các từ của X mã hóa các chữ
cái của bảng chữ B. Thủ tục mã kết hợp một từ bản rõ b1b2 · · · bn (bi ∈ B) với một từ
mã β(b1) · · · β(bn) bởi sử dụng đồng cấu mã β. Sự kiện β là đơn cấu đảm bảo từ mã
được giải mã theo một cách duy nhất thành từ bản rõ ban đầu. Từ Mệnh đề 1.5 ta có Hệ quả 1.2 ([5]) Giả sử α : A∗ → C ∗ là một đơn cấu. Nếu X là mã trên A, thì
α(X) là mã trên C. Nếu Y là mã trên C, thì α−1(Y ) là mã trên A. Hệ quả 1.3 ([5]) Nếu X ⊂ A∗ là mã, thì khi đó X n là mã với mọi n > 0. Ta nhắc lại rằng một vị nhóm con M của A∗ là tự do khi và chỉ khi mọi m ∈ M −{ε}
có duy nhất một phân tích trong X = (M − {ε}) − (M − {ε})2 [18]. Mã X cảm sinh vị
nhóm con tự do M của A∗ được gọi là cơ sở của M. Mối liên hệ giữa mã và vị nhóm
con sinh bởi mã được thiết lập qua các tính chất sau đây. Mệnh đề 1.6 ([5]) Giả sử A là một bảng chữ. Khi đó, mỗi vị nhóm con M của A∗
có một tập sinh cực tiểu duy nhất X = (M − {ε}) − (M − {ε})2. Tập M = {ai, i ∈ N, i 6= 1} là một vị nhóm con của A∗ với A = {a, b}. Cơ
Ví dụ 1.7
sở của M là X = {a2, a3}. Tuy nhiên, M không phải là vị nhóm con tự do vì a6 ∈ M
có hai phân tích khác nhau trong X, a6 = a2.a2.a2 = a3.a3. Mệnh đề 1.7 ([5]) Nếu M là một vị nhóm con tự do của A∗, thì khi đó tập sinh
cực tiểu của M là mã. Ngược lại, nếu X ⊂ A∗ là mã, thì vị nhóm con X ∗ của A∗ là tự
do có tập sinh cực tiểu X. Giả sử X và Y là các mã trên A. Nếu X ∗ = Y ∗, thì khi đó Hệ quả 1.4 ([5])
X = Y . Khái niệm độ trễ giải mã được giới thiệu nhằm mở rộng các khái niệm của mã prefix cho trường hợp mã thông thường. Ta biết rằng lớp mã prefix có độ trễ 0, do đó mã có
độ trễ giải mã giới nội là trường hợp tổng quát của mã prefix. Ta nhắc lại rằng ngôn
ngữ X ⊂ A∗ là mã prefix khi và chỉ khi X là mã và X là tập prefix. Khái niệm độ trễ
giải mã được định nghĩa như sau. 1.4 Mã của các từ hữu hạn 19 Giả sử X là một tập con của A+. Khi đó X được gọi là có độ trễ Định nghĩa 1.2
giải mã hữu hạn nếu có một số nguyên d ≥ 0 sao cho ∀x, x0 ∈ X, ∀y ∈ X d, ∀u ∈ A∗, xyu ∈ x0X ∗ ⇒ x = x0. (1.1) Dễ thấy rằng nếu hệ thức (1.1) thoả mãn với d nào đó thì nó cũng đúng với mọi
d0 ≥ d. Nếu X có độ trễ giải mã hữu hạn thì số nguyên nhỏ nhất thoả hệ thức (1.1)
được gọi là độ trễ giải mã của X, số nguyên bất kỳ thỏa hệ thức (1.1) được gọi là độ trễ giải mã yếu của X. Cho A = {a, b}. Khi đó tập X = {ab, abb, baab} có độ trễ giải mã d = 1 Ví dụ 1.8
và tập Y = {a, ab, b2} có độ trễ giải mã vô hạn. Ta có mệnh đề sau đây về mối quan hệ giữa mã và độ trễ giải mã. Mệnh đề 1.8 ([5]) Cho X ⊂ A∗. Nếu X có độ trễ giải mã hữu hạn thì X là mã. Cho tập X như trong Ví dụ 1.8. Bằng định nghĩa, ta có thể kiểm tra tập Ví dụ 1.9
X là mã. Thuật toán kiểm định mã là một thuật toán cốt lõi và kinh điển trong lý thuyết mã, cần thiết cho các nghiên cứu về mã truyền thống và các hình thức mã mới. Trong phần
này, ta nhắc lại thuật toán kinh điển Sardinas-Patterson. Cho một ngôn ngữ X ⊆ A+, ta xem xét các tập phần dư Ui kết hợp với X được định nghĩa đệ quy như sau. i X ∪ X −1Ui, U1 = X −1X − {ε} (1.2) i ≥ 1. Ui+1 = U −1 Định lý cơ bản sau đây của Sardinas và Patterson cung cấp một tiêu chuẩn kiểm định mã. Định lý 1.2 ([5]) Tập X ⊆ A+ là mã khi và chỉ khi các tập Ui được định nghĩa theo công thức (1.2) không chứa từ rỗng. Đối với lớp ngôn ngữ chính quy, ta có kết quả quan trọng là Mệnh đề 1.9 ([5]) Nếu X là một ngôn ngữ chính quy, thì tập tất cả các Ui (i ≥ 1) được định nghĩa theo công thức (1.2) là hữu hạn. Mệnh đề 1.9 khẳng định Định lý 1.2 cung cấp cho ta một thuật toán kiểm định một ngôn ngữ chính quy cho trước có là mã không. Tuy nhiên, cho đến nay việc xác định
chính xác độ phức tạp của thuật toán kiểm định mã vẫn còn là vấn đề mở (xem [6]). 20 1 CƠ SỞ LÝ THUYẾT MÃ Cho A = {a, b} và X = {b, abb, abbba, bbba, baabb}. Tập X không là mã Ví dụ 1.10
vì tồn tại từ w = abbbabbbaabb, w có hai phân tích khác nhau trong X, w = (abbba)(bbba)(abb) = (abb)(b)(abb)(baabb). Sử dụng thuật toán kiểm tra mã, ta có U1 = {ba, aabb, ba}, U2 = {a, ba, abb}, U3 = {ε, a, ba, bb, bbba, abb}. Vì ε ∈ U3, suy ra X không là mã. Như một hệ quả của Mệnh đề 1.4 (Mục 1.3), trong trường hợp X là
Nhận xét 1.2
ngôn ngữ chính quy, lấy M là MX - vị nhóm cú pháp hữu hạn của X, ta suy ra rằng
tất cả các tập Ui thuộc vào tập hữu hạn A (X, Y ) sinh bởi X, Y và đóng đối với các
phép toán hợp, giao, lấy phần bù, lấy thương trái và lấy thương phải. Card(A (X, Y ))
≤ 22.m, với m là chỉ số của X. Cho một ngôn ngữ chính quy X ⊆ A∗ có chỉ số m, đặt Y = {ε}. Từ
Nhận xét 1.3
vị nhóm P được xác định như Ví dụ 1.4 (Cách 1), cỡ của P là 2.m, khi đó cỡ của
A (X, Y ) là 22.m và từ tính chất Ui ⊆ A (X, Y ), ∀i ≥ 1, ta suy ra rằng số bước tính
toán trong tiêu chuẩn Sardinas-Patterson chính là số các tập Ui khác nhau, tối đa là
22.m. Nhận xét 1.4 Giả sử Vi (i ≥ 1), V1 ⊆ V2 ⊆ · · · ⊆ A∗ là một dãy tăng bất kỳ sao cho
mọi tập Vi cùng thỏa bởi một toàn cấu vị nhóm h : A∗ → P , với P là một vị nhóm
hữu hạn. Khi đó tồn tại một dãy tăng K1 ⊆ K2 ⊆ · · · ⊆ P sao cho Vi = h−1(Ki)
với i = 1, 2, . . .. Dãy tăng này là hữu hạn và tổng số phần tử của nó không vượt quá
Card(P ). Các Nhận xét 1.2, 1.3 và 1.4 cung cấp một kỹ thuật để ta xây dựng các tiêu chuẩn kiểm định mã mới. Mã luân phiên có thể được xem là một sự mở rộng của biểu diễn mã, nó được định
nghĩa trên một cặp ngôn ngữ thay vì một ngôn ngữ như mã truyền thống (xem [14;
15; 23; 35; 38]). Từ một cặp ngôn ngữ X, Y cho trước, khái niệm phân tích luân phiên, mã luân phiên theo X, Y được định nghĩa như sau. Định nghĩa 1.3 ([35]) Giả sử A là một bảng chữ, X, Y ⊆ A+, w ∈ A+. Khi đó, (i) từ w có một phân tích luân phiên theo (X, Y ) nếu w = u1u2 · · · un (n ≥ 2),
trong đó, u1 ∈ X, nếu ui ∈ X thì ui+1 ∈ Y và nếu ui ∈ Y thì ui+1 ∈ X với i =
1, . . . , n − 1. 1.5 Mã luân phiên và mã của các từ định biên 21 (ii) từ w có một phân tích luân phiên theo {X, Y } nếu w có một phân tích luân phiên theo (X, Y ) hoặc (Y, X). (iii) hai phân tích luân phiên theo {X, Y } được gọi là cùng kiểu trái (t.ư. cùng
kiểu phải) nếu chúng cùng bắt đầu (t.ư. cùng kết thúc) với các từ trong X hoặc trong
Y . (iv) hai phân tích luân phiên theo {X, Y } được gọi là cùng kiểu nếu chúng là cùng kiểu trái và cùng kiểu phải. Định nghĩa 1.4 ([35]) Giả sử A là một bảng chữ, X, Y ⊆ A+, w ∈ A+. Khi đó, (i) cặp {X, Y } được gọi là mã luân phiên nếu mỗi từ w ∈ A+ có nhiều nhất một phân tích luân phiên theo {X, Y }. (ii) cặp {X, Y } được gọi là mã luân phiên chẵn hay mã luân phiên cùng kiểu
nếu không tồn tại từ nào của A+ có hai phân tích luân phiên cùng kiểu khác nhau theo
{X, Y }. Cho X = {aa, aaa}, Y = {ab, bb, bbb}, dễ dàng chứng tỏ cặp {X, Y } là
Ví dụ 1.11
mã luân phiên. Thật vậy, nếu {X, Y } không là mã luân phiên thì tồn tại từ w ∈ A+
có hai phân tích luân phiên 1u0 2 · · · u0 m, u1 6= u0
1. 1|, có nghĩa u1 là khúc đầu thực sự của u0 2 = bb hoặc u0 w = u1u2 · · · un = u0 Giả sử |u1| < |u0
1, với X, Y ở trên, chỉ có khả
năng u1 = aa và u0
1 = aaa. Từ đó ta có u2 ∈ Y bắt đầu bằng chữ cái a, do đó chỉ có
thể là u2 = ab. Từ kết quả u2 = ab ta có u0
2 = bbb, do đó u3 ∈ X, bắt đầu
bằng chữ cái b. Điều này không thể xảy ra vì X không chứa từ bắt đầu bằng chữ cái b. Cho X = {x} và Y = {x2}. Cặp {X, Y } không là mã luân phiên vì tồn
Ví dụ 1.12
tại từ w = x3 = (x)(x2) = (x2)(x). Cặp {X, Y } là mã luân phiên chẵn vì X và Y cùng
chỉ có một phần tử duy nhất, do đó không tồn tại từ nào của A+ có hai phân tích luân
phiên cùng kiểu khác nhau theo {X, Y }. Ví dụ sau thể hiện tính phổ dụng của mã luân phiên, mã luân phiên chẵn đối với biểu diễn thông tin trong máy tính. Trong máy tính điện tử, mỗi tệp nhị phân có thể được biểu diễn như Ví dụ 1.13
một chuỗi các bit 0, 1. Chẳng hạn, w = 101011000011001101100001011101. Đặt X = {1}+, Y = {0}+, khi đó w là một phân tích luân phiên theo {X, Y }. Nếu
ta bổ sung một bit 1 vào đầu w và một bit 0 vào cuối w thì chuỗi kết quả luôn là một chuỗi phân tích luân phiên theo (X, Y ). Cụ thể, với w ở trên, ta có w0 = 1w0 = 11010110000110011011000010111010. 22 1 CƠ SỞ LÝ THUYẾT MÃ Khái niệm từ định biên (♦-từ) và ngôn ngữ từ định biên (♦-ngôn ngữ) được đề xuất
trong [37] cho phép ta biểu diễn các tích ghép truyền thống và tích luân phiên thông
qua phép tích biên trên cấu trúc đại số mới của các ♦-từ. Đây là cơ sở cho việc nghiên
cứu và thiết lập các tính chất đại số của mã luân phiên trong mối liên hệ với mã truyền
thống. Hơn nữa, mã của các từ định biên (♦-mã) nhận được từ tích biên nói trên có
thể được xem là một sự mở rộng của biểu diễn mã. Trước hết, ta nhắc lại một số khái niệm cơ sở (chi tiết xem trong [37]). Cho A là một bảng hữu hạn các chữ cái và tập B = {0, 1}. Ta định nghĩa tập các từ định biên trên A như sau: A♦ = {(i, a, j) | a ∈ A hoặc a = ε, i, j ∈ B} A∗ A∗ A∗ A∗ ♦ = {(i, w, j) | w ∈ A∗ i, j ∈ B} ∪ {θ, e}
/ = {(0, w, 1) | w ∈ A∗ ∪ {θ, e}
. = {(1, w, 0) | w ∈ A∗ ∪ {θ, e}
4 = {(0, w, 0) | w ∈ A∗ ∪ {θ, e}
O = {(1, w, 1) | w ∈ A∗ ∪ {θ, e} A∗ ♦ = A∗ Mỗi phần tử (i, w, j), w ∈ A∗ được gọi là một ♦-từ. Ta có A∗ ♦ là ♦-vị nhóm được
♦ có phần tử đơn vị e và phần tử không θ. Với mọi
♦, ta có kết hợp với A. A+
♦ − {e}. A∗
x = (i1, w1, j1), y = (i2, w2, j2) ∈ A∗ (i1, w1w2, j2) nếu j1 = i2 θ x.y =
nếu j1 6= i2 ♦, x.θ = θ.x = θ, x.e = e.x = x. và với mọi x ∈ A∗ Xét vị nhóm M bất kỳ với đơn vị là 1. Đặt M♦ = {(i, m, j) | m ∈ M, i, j ∈ B}, thì
♦. Tổng quát, M♦ là một ♦-vị nhóm được mở rộng từ M. Với M = A∗, ta có M♦ = A∗
nếu M đẳng cấu với M♦, thì M được xem là một ♦-vị nhóm. Cho M là một vị nhóm tùy ý với đơn vị là 1. Xét một nửa nhóm B =
{(0, 0), (0, 1), (1, 0), (1, 1), 0} với phép toán: ∀(i, j), (i0, j0) ∈ B, (i, j).(i0, j0) = (i, j0)
nếu j = i0, ngược lại (i, j).(i0, j0) = 0. 0.x = x.0 = 0, ∀x ∈ B. Ta xây dựng vị nhóm
M = M × B ∪ {e}, với e /∈ M × B là đơn vị của M và phép toán hai ngôi được định
nghĩa bởi: ∀(m, (i, j)), (n, (i0, j0)) ∈ M, (mn, (i, j0)) nếu j = i0 (mn, 0) nếu j 6= i0 (m, (i, j)).(n, (i0, j0)) =
1.5 Mã luân phiên và mã của các từ định biên 23 và với mọi u ∈ M, u.0 = 0.u = u. Đặt I = {(m, 0) | m ∈ M}, thì I là một ideal. Thương Rees M/I đẳng cấu với
♦-vị nhóm M♦ qua tương ứng (m, (i, j)) ∈ M/I ↔ (i, m, j) ∈ M♦, với θ = I đóng vai
trò là phần tử không của M/I. Vì vậy, nếu M = A∗ thì M/I đẳng cấu với A∗
♦, với
I = {(w, 0) | w ∈ A∗}. Cho M là một vị nhóm với phần tử đơn vị 1 và phần tử không 0. Một ♦-đồng cấu
♦ → M thỏa ba điều kiện sau vị nhóm (viết tắt là ♦-đồng cấu) là một ánh xạ ϕ : A∗
đây: ♦, x, y 6= θ thì ϕ(x.y) = ϕ(x).ϕ(y). (a) ∀x, y ∈ A∗ (b) ϕ(e) = 1. (c) ϕ(θ) = 0. Một ♦-đồng cấu vị nhóm ϕ được gọi là ♦-đơn cấu (t.ư. ♦-toàn cấu, ♦-đẳng cấu) nếu ϕ là đồng cấu vị nhóm và là đơn ánh (t.ư. là toàn ánh, song ánh). ♦ được gọi là một ♦-ngôn ngữ trên A. Cho X ⊆ A∗ ♦, một từ x ∈ A∗
♦
có một phân tích trong X nếu x có thể biểu diễn dưới dạng x = x1.x2. · · · .xn với n ≥ 1,
với xi ∈ X, i = 1, . . . , n.
Cho X, Y ⊆ A∗
là Y −1X = {u ∈ A∗ ♦, thương trái và thương phải của X bởi Y được định nghĩa lần lượt
♦ : ∃y ∈ Y, y.u ∈ X} và XY −1 = {w ∈ A∗ ♦ : ∃y ∈ Y, u.y ∈ X}. Một tập X ⊆ A∗ ♦, ta nói X thỏa bởi một ♦-đồng cấu vị nhóm ϕ : A∗ ♦ → M nếu tồn tại Cho X ⊆ A∗ B ⊆ M sao cho X = ϕ−1(B). Từ Hệ quả 3.4 [36], ta có ♦ là một ♦-ngôn ngữ. Các điều kiện sau đây là tương đương Bổ đề 1.2 Cho X ⊆ A∗ (i) X là ♦-ngôn ngữ chính quy. (ii) X đoán nhận được bởi một ♦-otomat hữu hạn (hay X là ♦-ngôn ngữ đoán nhận được). ♦ đến một vị nhóm hữu hạn. (iii) X thỏa bởi một ♦-đồng cấu vị nhóm từ A∗ Vì vậy, mọi ♦-ngôn ngữ chính quy (♦-ngôn ngữ đoán nhận được) trong luận án được
hiểu theo nghĩa là các ♦-ngôn ngữ thỏa bởi một ♦-đồng cấu vị nhóm. ♦ là một ♦-mã nếu với mọi θ 6= x ∈ A+ ♦, x có Tập X ⊆ A+ Định nghĩa 1.5 ([35])
nhiều nhất một phân tích trong X. Cho A = {a, b} và B = {0, 1}. Khi đó X = {(0, a, 1), (0, b, 1), (1, abb, 0)}
Ví dụ 1.14
là ♦-mã. Ngược lại Y = {(0, a, 1), (1, b, 0), (0, ab, 0), (0, ba, 1)} không là ♦-mã vì tồn tại
một ♦-từ x có hai phân tích khác nhau, x = (0, ababab, 0) = (0, ab, 0)(0, ab, 0)(0, ab, 0) =
(0, a, 1)(1, b, 0)(0, ab, 0)(0, ab, 0). 24 1 CƠ SỞ LÝ THUYẾT MÃ Giả sử A là một bảng chữ hữu hạn. Một ω-từ bên trái (t.ư. bên phải, hai phía) là
từ vô hạn phía bên trái (t.ư. phía bên phải, hai phía) có dạng a1a2 · · · (t.ư. · · · a2a1,
· · · a−2a−1a0a1a2 · · · ), ai ∈ A. Đặt NA, AN , AZ lần lượt là các tập ω-từ bên trái, bên phải và hai phía trên A. Với
một ngôn ngữ X của A∗, ta ký hiệu ωX, X ω và ωX ω lần lượt là tích vô hạn phía bên
trái, phía bên phải và hai phía các từ khác rỗng của X. Nghĩa là các phần tử của chúng
nhận được bằng cách nhân ghép các từ của X − ε vô hạn về phía bên trái, phía bên ωX = {· · · u2u1 | ui ∈ X − ε, i = 1, 2, . . .}. phải hoặc cả hai phía. Ví dụ Ta gọi mỗi tập con của AN (t.ư. NA, AZ) là một ω-ngôn ngữ của các ω-từ bên phải (t.ư. bên trái, hai phía). Một phân tích của một từ α ∈ X ω (t.ư. α ∈ ωX) là một dãy vô hạn {u1, u2, . . . } các từ của X sao cho α = u1u2 · · · (t.ư. α = · · · u2u1).
Giả sử w ∈ AZ là ω-từ vô hạn hai phía có dạng w = · · · a−2a−1a0a1a2 · · · với ai ∈ A. Một phân tích theo các phần tử X của một ω-từ hai phía w là một hàm
tăng chặt µ : Z → Z thỏa mãn xi = aµ(i)+1 · · · aµ(i+1) ∈ X với mọi i ∈ Z. Hai phân tích µ và λ được gọi là bằng nhau, ký hiệu là µ = λ nếu có t ∈ Z sao cho λ(i + t) = µ(i) với mọi i ∈ Z. Ngược lại, λ và µ là khác nhau, ký hiệu là µ 6= λ.
Ta có thể kiểm tra điều kiện µ 6= λ khi và chỉ khi µ(Z) 6= λ(Z), hoặc tương đương,
tồn tại một từ u ∈ A+, hai dãy vô hạn các từ của X: . . . , x−2, x−1, x0, x1, x2, . . . và
. . . , y−2, y−1, y0, y1, y2, . . . sao cho · · · x−2x−1u = · · · y−1y0, |u| ≤ |x0|,
x0x1 · · · = uy1y2 · · · , |u| ≤ |y0| với u 6= x0 hoặc u 6= y0. Khái niệm mã của các từ vô hạn được đề xuất bởi Staiger (1986) [29] với tên gọi ban đầu là if l-mã, sau đó thay bởi thuật ngữ ω-mã trong các công trình gần đây
[3; 8; 10; 13; 17]. Trong luận án, ta mở rộng khái niệm ω-mã đã biết cho trường hợp ω-từ bên trái và ω-từ bên phải, từ đó ta có các khái niệm ω-mã bên trái và ω-mã bên
phải được định nghĩa như sau. 1.6 Mã của các từ vô hạn 25 Giả sử A là một bảng chữ. Tập X ⊆ A+ là ω-mã bên trái (t.ư.
Định nghĩa 1.6
bên phải) trên A nếu mọi từ w thuộc ωX (t.ư. X ω) chỉ có duy nhất một X-phân tích. Cho A = {a, b}. Ngôn ngữ Y = {a, b} là ω-mã bên phải và đồng thời là
Ví dụ 1.15
ω-mã bên trái. Tuy nhiên, ngôn ngữ X = {aa, baa, ba} là ω-mã bên trái nhưng không là ω-mã bên phải vì từ vô hạn α = baaa · · · có hai X-phân tích khác nhau. Từ nay về sau, nếu không sợ nhầm lẫn, ta sẽ dùng thuật ngữ ω-từ (t.ư. ω-ngôn
ngữ, ω-mã) thay cho thuật ngữ ω-từ bên phải (t.ư. ω-ngôn ngữ của các ω-từ bên phải, ω-mã bên phải). Trong phần này, ta giới thiệu khái niệm Z-mã được đề xuất trong [34]. Họ các Z-mã có liên quan mật thiết tới một lớp mã đặc biệt, gọi là circular-mã [5]. Các mã này có
đặc điểm chung là chúng định nghĩa phân tích duy nhất của các từ trong một chu kỳ. Đây là lớp mã có nhiều tính chất thú vị tham gia vào nhiều bài toán tổ hợp trên từ. Giả sử A là một bảng chữ. Tập X ⊆ A+ là Z-mã trên A Định nghĩa 1.7 ([34])
nếu tất cả các phân tích theo X của mọi từ vô hạn hai phía bằng nhau. Ví dụ 1.16 Mọi tập chỉ có duy nhất một phần tử {u} là ω-mã bên trái và là ω-mã
bên phải nhưng nó là Z-mã khi và chỉ khi u là không là lũy thừa của một từ bất kỳ nào khác. Ngôn ngữ X = {ab, ba} là ω-mã bên phải và đồng thời là ω-mã bên trái. Tuy
nhiên, X không là Z-mã vì từ ω(ab)ω có hai phân tích khác nhau · · · (ab)(ab)(ab) · · ·
và · · · (ba)(ba)(ba) · · · Ta cần lưu ý rằng, đến nay việc xác định chính xác độ phức tạp của các thuật toán
kiểm định mã dựa trên tiêu chuẩn Sardinas-Patterson vẫn còn là vấn đề mở [6]. Trong
chương này, ta sẽ trình bày một trong những đóng góp quan trọng nhất của luận án, đó là đề xuất các tiêu chuẩn mới cải tiến từ tiêu chuẩn Sardinas-Patterson để kiểm
định mã và mã mở rộng cho phép thiết lập các thuật toán có độ phức tạp về mặt thời gian là đa thức bậc hai tốt hơn các thuật toán đã biết. Cụ thể, trong các mục, từ Mục
2.1 đến Mục 2.3, ta sẽ lần lượt trình bày các tiêu chuẩn và thuật toán mới để kiểm
định mã, ♦-mã, ω-mã và Z-mã. Mở đầu là tiêu chuẩn Sardinas-Patterson cải tiến và thuật toán hiệu quả kiểm định
mã được giới thiệu trong Mục 2.1. Trước hết, trong Mục 2.1.1, ta xem xét thủ tục trên ngôn ngữ để nhận biết phương pháp cơ sở của thuật toán. Tiếp theo, trong Mục 2.1.2,
thuật toán dựa trên các vị nhóm hữu hạn được thiết lập với giả thiết đầu vào là một
ngôn ngữ chính quy X cho bởi một bộ ba (ϕ, M, B), với ϕ : A∗ → M là một đồng cấu
vị nhóm thỏa X, M là một vị nhóm hữu hạn, B ⊆ M, X = ϕ−1(B) và n = Card(M).
Phương pháp của tiêu chuẩn mới kiểm định mã mở rộng cho ♦-mã và thuật toán kiểm
định được trình bày trong Mục 2.1.3. Trong hai mục đầu của Mục 2.2, ta đưa vào
các tiêu chuẩn và thuật toán kiểm định kiểu Sardinas-Patterson cải tiến thiết lập cho
ω-mã. Kết quả chính của phần này là một thuật toán hiệu quả có độ phức tạp về mặt thời gian là một đa thức bậc hai xem như một hệ quả của thuật toán dựa trên các
vị nhóm hữu hạn kết hợp với kỹ thuật mới sử dụng đồ thị có hướng có tô màu cung. Các tiêu chuẩn và thuật toán kiểm định kiểu Sardinas-Patterson cải tiến thiết lập cho
Z-mã được trình bày theo cách tương tự trong Mục 2.3. Một số kết quả chính của chương được công bố trong các bài báo số 3-5, 7-9, 11, 16 (xem Danh mục các công trình đã công bố của luận án). Dựa trên Nhận xét 1.4, trong mục này ta đề xuất một tiêu chuẩn mới cải tiến từ tiêu chuẩn Sardinas-Patterson để kiểm định mã và một thuật toán mới để kiểm tra một
ngôn ngữ chính quy X ⊆ A+ cho trước có là mã không. Bằng phương pháp tổ hợp 2.1 Thuật toán kiểm định mã và ♦-mã 27 mới, ta tính toán các tập phần dư Vi kết hợp với X dưới dạng công thức đệ quy như
sau. i X ∪ X −1Vi ∪ Vi, (2.1) i ≥ 1 V1 = X −1X − {ε}
Vi+1 = V −1 Trong thủ tục cải tiến, ta tính các tập Vi (i ≥ 1) thay cho các tập
Nhận xét 2.1
Ui (i ≥ 1) theo phương pháp của Sardinas và Patterson. Phương pháp của thủ tục
được minh họa trong Hình 2.1. Điểm mới và khác biệt là: các tập Vi (i ≥ 1) thỏa tính
chất bao hàm Vi ⊆ Vi+1, ∀i. Đây là tính chất quan trọng mang ý nghĩa quyết định đến
khả năng giảm độ phức tạp các thuật toán mới của luận án (ở các phần sau). Hình 2.1 Một hướng cải tiến tiêu chuẩn kiểm định mã Sardinas-Patterson Tính đúng đắn của thủ tục dựa trên Định lý 2.1 và các bổ đề sau đây. Cho X ⊆ A+ và Vi (i ≥ 1) được định nghĩa theo công thức (2.1). Khi đó,
Bổ đề 2.1
với z ∈ A∗ tùy ý, k ≥ 1, nếu z ∈ Vk thì tồn tại n, m ≥ 1, x1, x2, . . . , xn, y1, y2, . . . , ym ∈
X sao cho x1x2 · · · xnz = y1y2 · · · ym với x1 6= y1. Chứng minh. Ta chứng minh quy nạp theo k điều khẳng định trên. ta phải chứng minh tồn tại n, m ≥ 1, Với k = 1, giả sử z ∈ V1 x1, x2, . . . , xn, y1, y2, . . . , ym ∈ X sao cho x1x2 · · · xnz = y1y2 · · · ym với x1 6= y1. Từ định nghĩa V1 = X −1X − {ε}, z ∈ V1, suy ra z ∈ X −1X − {ε}, nghĩa là tồn tại x1, y1 ∈ X sao cho x1z = y1. Vì ε /∈ V1 suy ra x1 6= y1. Vậy, điều khẳng định đúng với k = 1. Giả sử điều khẳng định đã đúng với k > 1, ta chứng minh nó cũng đúng với trường hợp k + 1. Giả sử z ∈ Vk+1, ta phải chứng minh tồn tại n, m ≥ 1, x1, x2, . . . , xn, y1, y2, . . . , ym ∈ X sao cho x1x2 · · · xnz = y1y2 · · · ym với x1 6= y1. k X ∪ X −1Vk ∪ Vk. Khi đó, từ z ∈ Vk+1, suy ra z ∈ Vk
k X (trường hợp 2) hoặc z ∈ X −1Vk (trường hợp 3). Ta xét Theo định nghĩa Vk+1 = V −1 (trường hợp 1) hoặc z ∈ V −1
các trường hợp như sau. 28 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG k X. Tồn tại z0 ∈ Vk, x ∈ X sao cho z0z = x. Vì z0 ∈ Vk, theo Trường hợp 1: z ∈ Vk. Theo giả thiết quy nạp, điều khẳng định đúng.
Trường hợp 2: z ∈ V −1 giả thiết quy nạp, tồn tại l, s ≥ 1, x1, x2, . . . , xl, y1, y2, . . . , ys ∈ X sao cho x1x2 · · · xlz0 = y1y2 · · · ys với x1 6= y1. Nhân z vào hai vế của biểu thức trên, ta có x1x2 · · · xlz0z = y1y2 · · · ysz với x1 6= y1. Thay z0z = x vào biểu thức trên ta nhận được x1x2 · · · xlx = y1y2 · · · ysz với x1 6= y1. Trường hợp 3: z ∈ X −1Vk. Tồn tại x ∈ X, z0 ∈ Vk sao cho xz = z0. Vì z0 ∈ Vk, theo giả thiết quy nạp, tồn tại l, s ≥ 1, x1, x2, . . . , xl, y1, y2, . . . , ys ∈ X sao cho x1x2 · · · xlz0 = y1y2 · · · ys với x1 6= y1. Thay z0 = xz vào biểu thức trên, ta có x1x2 · · · xlxz = y1y2 · · · ys với x1 6= y1. (cid:3) Vậy, điều khẳng định đúng với mọi k ≥ 1.
Chứng minh được hoàn thành. Cho X ⊆ A+ và Vi (i ≥ 1) được định nghĩa theo công thức (2.1). Nếu có Bổ đề 2.2
n, m ≥ 1, x1, x2, . . . , xn, y1, y2, . . . , ym ∈ X và z ∈ A∗ tùy ý sao cho x1x2 · · · xnz = y1y2 · · · ym với x1 6= y1 và |z| < |ym|, thì tồn tại k ≥ 1 sao cho z ∈ Vk. Chứng minh. Ta chứng minh quy nạp theo n + m điều khẳng định trên. Với n + m = 2 (n = 1, m = 1), từ dãy x1z = y1 với x1 6= y1 và |z| < |y1| ta có 1 y1 ∈ X −1X − {ε} = V1. ε 6= z = x−1 Vậy điều khẳng định đúng với n + m = 2. Giả sử điều khẳng định đúng với n + m − 1 ≥ 1, ta chứng minh nó cũng đúng với
n + m. Từ đẳng thức x1x2 · · · xnz = y1y2 · · · ym với x1 6= y1 và |z| < |ym|, ta phải chứng
minh tồn tại k ≥ 1 sao cho z ∈ Vk. Ta xét ba khả năng sau có thể xảy ra khi so sánh độ dài của từ xnz và từ ym.
Trường hợp 1: |xnz| < |ym|. Theo giả thiết quy nạp, tồn tại k ≥ 1 sao cho xnz ∈ Vk. n Vk ⊆ X −1Vk ⊆ Vk+1. Khi đó, z ∈ x−1 n ym = z. Nếu z 6= ε thì z ∈ X −1X − {ε} = V1. Trường hợp 2: xnz = ym. Ta có x−1 Ngược lại, nếu z = ε thì ε ∈ Vk với k > 1 nào đó. Thật vậy, theo giả thiết ta có x1x2 · · · xnz = y1y2 · · · ym với x1 6= y1 và |z| < |ym|. 2.1 Thuật toán kiểm định mã và ♦-mã 29 Vì xnz = ym, ta suy ra x1x2 · · · xn−1 = y1y2 · · · ym−1 với x1 6= y1, hoặc tương đương, x1x2 · · · xn−1ε = y1y2 · · · ym−1 với x1 6= y1. Theo giả thiết quy nạp, ε ∈ Vk với k ≥ 1 nào đó. Trường hợp 3: |xnz| > |ym|. Theo giả thiết |z| < |ym|, suy ra tồn tại u ∈ A+ sao cho
ym = uz. Từ |xnz| > |ym| và ym = uz, suy ra tồn tại z0 ∈ A∗, ys ∈ X, 1 ≤ s ≤ m − 1,
|z0| < |ys| sao cho xn = z0ys+1ys+2 . . . ym−1u. Hơn nữa theo giả thiết, ta có x1x2 · · · xnz = y1y2 · · · ym với x1 6= y1 và |z| < |ym|. Thay ym = uz và xn = z0ys+1ys+2 · · · ym−1u vào biểu thức trên và giản ước ta nhận
được x1x2 · · · xn−1z0 = y1y2 · · · ys với x1 6= y1 và |z0| < |ys|. Theo giả thiết quy nạp, ta suy ra z0 ∈ Vk với k ≥ 1 nào đó. Ta có k X ⊆ Vk+1 ys+1ys+2 · · · ym−1u = z0−1xn ∈ V −1 ⇒ ys+2 · · · ym−1u ∈ X −1Vk+1 ⊆ Vk+2 . . . k+m−sX ⊆ Vk+m−s+1. ⇒ ym−1u ∈ Vk+(m−1)−s ⇒ u ∈ X −1Vk+(m−1)−s ⊆ Vk+m−s Vì uz = ym, từ đó suy ra z = u−1ym ∈ V −1
Vậy, điều khẳng định đúng với mọi n + m ≥ 2. (cid:3) Chứng minh được hoàn thành. Trong Định lý 2.1 sau đây, ta thiết lập kết quả chính của mục này nhằm cung cấp một tiêu chuẩn mới kiểm định mã mà từ nay về sau trong luận án, ta sẽ gọi là tiêu
chuẩn Sardinas-Patterson cải tiến hay ngắn gọn là tiêu chuẩn MSP (a Modification of Sardinas-Patterson test). Cho X ⊆ A+ và Vi (i ≥ 1) được định nghĩa theo công thức (2.1). Khi Định lý 2.1
đó, X là mã khi và chỉ khi ε /∈ Vi, với mọi i ≥ 1. Chứng minh.
Chiều thuận. Nếu X là mã thì ε /∈ Vi với mọi i ≥ 1. Phản chứng, giả sử tồn tại i ≥ 1 sao cho ε ∈ Vi. Khi đó, theo Bổ đề 2.1, tồn tại n, m ≥ 1, x1, x2, . . . , xn, y1, y2, . . . , ym ∈ X sao cho x1x2 · · · xnε = y1y2 · · · ym với x1 6= y1, hoặc tương đương, 30 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG x1x2 · · · xn = y1y2 · · · ym với x1 6= y1. Đây là hai X-phân tích khác nhau của một từ w ∈ A∗. Suy ra X không là mã, mâu
thuẫn. Chiều ngược. Nếu ε /∈ Vi với mọi i ≥ 1 thì X là mã.
Phản chứng, giả sử X không là mã. Khi đó, tồn tại w ∈ A∗ có hai phân tích khác nhau, w = x1x2 · · · xn = y1y2 · · · ym với x1 6= y1, xi, yj ∈ X, i = 1, . . . , n, j = 1, . . . , m, hoặc tương đương, w = x1x2 · · · xnε = y1y2 · · · ym với x1 6= y1, và hiển nhiên |ε| < |ym|. Theo Bổ đề 2.2, tồn tại i ≥ 1 sao cho ε ∈ Vi, mâu thuẫn. (cid:3) Chứng minh được hoàn thành. Từ định lý trên, ta nhận được các hệ quả sau đây Cho X ⊆ A+ và Vi (i ≥ 1) được định nghĩa theo công thức (2.1). Nếu Hệ quả 2.1
có Vi = ∅ với i ≥ 1 nào đó thì X là mã. Chứng minh. Thật vậy, theo cách xác định Vi như trên, nếu có Vi = ∅ với i ≥ 1 nào
đó thì ta có Vn = ∅ với mọi n ≥ 1. Từ đó ε /∈ Vn với mọi n ≥ 1. Theo Định lý 2.1, X
(cid:3)
là mã. Cho X ⊆ A+ và Vi (i ≥ 1) được định nghĩa theo công thức (2.1). Nếu i+1X ∪ X −1Vi+1 ∪ Vi+1. Nếu có Vi+1 = Hệ quả 2.2
tồn tại i ≥ 1 sao cho Vi+1 = Vi và ε /∈ Vs với i ≥ s ≥ 1 thì X là mã. i X ∪ X −1Vi ∪ Vi = Vi+1 = Vi. Chứng minh. Thật vậy, theo định nghĩa Vi+2 = V −1
Vi, thì thay Vi+1 bởi Vi ta có: Vi+2 = V −1 Tương tự, ta có Vn = Vi, với mọi n ≥ 1. Vì ε /∈ Vs, suy ra ε /∈ Vn = Vs, với mọi
(cid:3) i ≥ s ≥ 1. Do đó, ta có ε /∈ Vs, với mọi s ≥ 1, theo Định lý 2.1, X là mã. Ta nhắc lại rằng, trong tiêu chuẩn Sardinas-Patterson cải tiến ta tính các tập
Vi (i ≥ 1), còn trong tiêu chuẩn Sardinas-Patterson ta tính các tập Ui (i ≥ 1). Điểm
mới và khác biệt, theo Nhận xét 2.1 là các tập Vi (i ≥ 1) thỏa tính chất bao hàm quan
trọng Vi ⊆ Vi+1, ∀i. Mệnh đề 2.1 sau đây sẽ cho mối quan hệ giữa hai tiêu chuẩn. n Mệnh đề 2.1 Cho X ⊆ A+, Ui (i ≥ 1) được định nghĩa theo công thức (1.2) và i=1
S Ui với mọi n ≥ 1. Vi (i ≥ 1) được định nghĩa theo công thức (2.1). Khi đó Vn = Chứng minh. Ta chứng minh quy nạp theo n. k cũng đúng với n = k + 1. Theo công thức (2.1), ta có Vk+1 = V −1 Với n = 1, ta có V1 = U1 = X −1X − {ε}. Điều khẳng định đúng với n = 1.
Với n ≥ 1, giả sử điều khẳng định đúng với mọi n = k > 1, ta chứng minh nó
k X ∪ X −1Vk ∪ Vk, với i=1
S Vk = Ui. Khi đó k k k 2.1 Thuật toán kiểm định mã và ♦-mã 31 i=1
S i=1
S i=1
S Ui Ui) ∪ Ui)−1X ∪ X −1( Vk+1 = ( = (U1 ∪ U2 ∪ · · · ∪ Uk)−1X ∪ X −1(U1 ∪ U2 ∪ · · · ∪ Uk) ∪ (U1 ∪ U2 ∪ · · · ∪ Uk). 2 X ∪ · · · ∪ U −1 1 X ∪ U −1 k X) ∪ (X −1U1 ∪ X −1U2 ∪ · · · ∪ X −1Uk) ∪ Theo Tính chất 1.2 và Tính chất 1.3, ta có
Vk+1 = (U −1 1 X ∪ X −1U1) ∪ · · · ∪ (U −1 k X ∪ X −1Uk) ∪ (U1 ∪ U2 ∪ · · · ∪ Uk) (U1 ∪ U2 ∪ · · · ∪ Uk) k+1 = (U −1
= (U2 ∪ U3 ∪ · · · ∪ Uk+1) ∪ (U1 ∪ U2 ∪ · · · ∪ Uk)
= U1 ∪ U2 ∪ · · · ∪ Uk+1 i=1
S = Ui. (cid:3) Vậy, điều khẳng định đúng với mọi n ≥ 1. Hệ quả sau đây được suy trực tiếp từ Mệnh đề 1.9 và Mệnh đề 2.1 Hệ quả 2.3 Nếu X là một ngôn ngữ chính quy, thì tập tất cả các Vi (i ≥ 1) được định nghĩa theo công thức (2.1) là hữu hạn. Hệ quả 2.3 khẳng định Định lý 2.1 cung cấp cho ta một thuật toán kiểm định một
ngôn ngữ chính quy cho trước có là mã không. Sau đây ta sẽ mô tả chi tiết thuật toán
kiểm định mã nhận được từ Định lý 2.1 (thuật toán MSP) và đánh giá độ phức tạp của nó. Thuật toán 2.1 (MSP) Kiểm định mã cho trường hợp ngôn ngữ chính quy Đầu vào: X ⊆ A+ là một ngôn ngữ chính quy
Đầu ra:
Bước 1: “YES” nếu X là mã, “NO” nếu X không là mã
Tính V1 = X −1X − {ε} và đặt i = 2
if V1 == ∅ then return “YES” i−1X ∪ X −1Vi−1 ∪ Vi−1 Bước 2: (Lặp)
Tính Vi = V −1
if ε ∈ Vi then return “NO”
if Vi == Vi−1 then
return “YES” else đặt i = i + 1, và quay về Bước 2 Chú ý 2.1 Điều kiện dừng của Thuật toán 2.1 cho bởi Hệ quả 2.3. Bước lặp 2 dừng
sau không quá n bước, với n là chỉ số của X. 32 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG Như một hệ quả của Mệnh đề 1.4 (Mục 1.3), trong trường hợp X là
Nhận xét 2.2
ngôn ngữ chính quy, chọn M là MX - vị nhóm cú pháp của X, ta suy ra rằng tất cả các
tập Vi (i ≥ 1) thuộc vào tập hữu hạn A (X, Y ) sinh bởi X, Y = {ε} và đóng đối với các
phép toán hợp, giao, lấy phần bù, lấy thương trái và lấy thương phải. Card(A (X, Y ))
≤ 22.m, với m là chỉ số của X. Cho một ngôn ngữ chính quy X ⊆ A∗ có chỉ số m, đặt Y = {ε}. Từ
Nhận xét 2.3
vị nhóm P được xác định như Ví dụ 1.4 (Cách 1), cỡ của P là 2.m, khi đó cỡ của
A (X, Y ) là 22.m và từ tính chất Vi ⊆ A (X, Y ), ∀i ≥ 1, ta suy ra rằng số bước tính
toán trong tiêu chuẩn Sardinas-Patterson cải tiến chính là số các tập Vi khác nhau, tối
đa là Card(P) ≤ 2.m (xem Nhận xét 1.4). Như vậy, ta có thể kết luận: nếu ta chỉ quan tâm đến số các tập Vi khác nhau như
trong thuật toán Sardinas-Patterson thì thuật toán MSP có số các bước là O(Card(P )).
Từ đó ta nhận được kết quả sau Cho X ⊆ A+ là ngôn ngữ chính quy có chỉ số n. Khi đó, thuật toán Định lý 2.2
MSP cho phép ta kiểm định X có là mã không với số bước là O(n). Cho A = {a, b}, X = {aa, baa, ba}. Theo thuật toán MSP ta có V1 = {a}, Ví dụ 2.1
V2 = {a}. Vì V2 = V1, ta suy ra X là mã. Cho A = {a, b, c}, X = {ba, bac, cb}. Theo thuật toán MSP ta có V1 = {c}, Ví dụ 2.2
V2 = {c, b}, V3 = {c, b, a, ac}, V4 = {c, b, a, ac}. Vì V4 = V3, ta suy ra X là mã. Cho A = {a, b}, X = {aa, aab, baa, baab}. Theo thuật toán MSP ta có Ví dụ 2.3
V1 = {b}, V2 = {b, aa, aab}, V3 = {ε, b, aa, aab}. Vì ε ∈ V3, ta suy ra X không là mã. Ví dụ 2.4 Cho A = {a, b}, X = {a∗b}. Vì V1 = ∅, ta suy ra X là mã. Ví dụ 2.5 sau đây minh họa một trường hợp đặc biệt, do tính chất bao hàm của
các tập Vi, thuật toán Sardinas-Patterson cải tiến dừng sau khi tính V3, còn thuật toán
Sardinas-Patterson phải tiếp tục tính U4 vì các tập Ui khác nhau, 3 ≥ i ≥ 1. Cho A = {a, b, c, d}, X = {a, ab, bc, cb, abd}. Theo thuật toán Sardinas-
Ví dụ 2.5
Patterson, ta có U1 = {b, bd, d}, U2 = {c}, U3 = {b}, U4 = {c}. Vì U4 = U2, suy ra X
là mã. Theo thuật toán Sardinas-Patterson cải tiến, ta có: V1 = {b, bd, d}, V2 = V3 =
{b, c, bd, d}. Vì V3 = V2, suy ra X là mã. Các Ví dụ 2.6 và 2.7 sau đây so sánh hiệu quả tính toán của hai thuật toán đối với cùng một ngôn ngữ đầu vào. Để trực quan quá trình tính toán, trong Hình 2.2 (a) và
(b) tương ứng với hai ví dụ trên, ta vẽ mũi tên từ x → y nếu có z sao cho y = x−1z
với x, y, z ∈ X. Các thuật toán cùng khởi đầu tại s. Cho X = {ab, ac, ad, ae, af, ag, bc, cd, de, ef, f g, gh, hb, s, sa, sh} (Hình 2.2 Ví dụ 2.6
(a)). Theo thuật toán Sardinas-Patterson, ta có 2.1 Thuật toán kiểm định mã và ♦-mã 33 Hình 2.2 Các ngôn ngữ X của Ví dụ 2.6 và 2.7 U1 = {a, h}, U2 = {b, c, d, e, f, g}, U3 = {c, d, e, f, g, h}, U4 = {d, e, f, g, h, b},
U5 = {b, c, e, f, g, h}, U6 = {b, c, d, f, g, h}, U7 = {c, d, e, g, h, b}, U8 = {b, c, d, e, f, h},
U9 = {b, c, d, e, f, g} = U2. Theo thuật toán Sardinas-Patterson cải tiến, ta có V1 = {a, h}, V2 = V3 = {a, b, c, d, e, f, g, h}. Vì U9 = U2 = {b, c, d, e, f, g} (t.ư. V3 = V2 = {a, b, c, d, e, f, g, h}), quá trình kiểm tra dừng và kết luận X là mã. Trong ví dụ này, ta để ý rằng X có một chu trình đặc biệt b → c → d → e → f → g → h → b. Gọi độ dài của chu trình này là tổng số mũi tên của nó, ta luôn có thể chỉ ra một
ngôn ngữ X mà thuật toán Sardinas-Patterson cải tiến chỉ cần thực hiện đúng 3 bước còn thuật toán Sardinas-Patterson phải thực hiện k + 2 bước để kiểm tra X có là mã
không, với k là độ dài của chu trình nói trên. Cho X = {ab, bc, cd, de, eg, eh, gh, gk, hk, kb, s, sa, sk} (Hình 2.2 (b)). Tính
Ví dụ 2.7
Ui yêu cầu 37 bước so với 7 bước tính Vm. Vì U37 = U36 = {b, c, d, e, g, h, k} (t.ư.
V7 = V6 = {a, b, c, d, e, g, h, k}), quá trình kiểm tra dừng và kết luận X là mã. Định lý 2.1 trong Mục 2.1.1 có thể cung cấp một thuật toán hiệu quả cho trường hợp
ngôn ngữ chính quy hữu hạn [25]. Tuy nhiên, đối với những ngôn ngữ chính quy có vô hạn phần tử, để thiết lập thuật toán, ta sẽ kết hợp với chúng các cấu trúc hữu hạn.
Trong mục này, ta thiết lập một thuật toán mới kiểm định mã dựa trên các vị nhóm
hữu hạn sử dụng phương pháp của tiêu chuẩn Sardinas-Patterson cải tiến nhận được ở mục trước. Với đầu vào được giả thiết là một ngôn ngữ chính quy X cho bởi một
bộ ba (ϕ, M, B), thuật toán cho phép ta kiểm định X có là mã không với độ phức tạp
thời gian là O(n2), n = Card(M). Trước hết, ta cần một bổ đề cơ sở cho tính đúng
đắn của thuật toán. 34 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG Cho h : A∗ → P là một toàn cấu vị nhóm thỏa đồng thời Y = {ε} và X, với P là
một vị nhóm hữu hạn, X = h−1(K), Y = h−1(L), K, L ⊆ P (P như trong Ví dụ 1.4)
và các tập Ki được định nghĩa đệ quy như sau. i K ∪ K −1Ki ∪ Ki, i ≥ 1. (2.2) K1 = K −1K − L,
Ki+1 = K −1 Bằng định nghĩa, ta có thể kiểm tra bổ đề sau đây. Cho X ⊆ A+ và Vi (i ≥ 1) được định nghĩa theo công thức (2.1). Đặt
Bổ đề 2.3
Vi = h−1(Ki), i = 1, 2, . . . với Ki được định nghĩa theo công thức (2.2). Khi đó ε ∈ Vi,
i = 1, 2, . . . khi và chỉ khi 1P ∈ Ki, với 1P là phần tử đơn vị của P . Áp dụng Bổ đề 2.3 với tính chất Vi = h−1(Ki), ∀i ≥ 1 và từ việc kiểm tra ε ∈ Vi
quy về việc kiểm tra 1P ∈ Ki, thuật toán sau đây kiểm tra X có là mã không với độ
phức tạp thời gian O(n) nếu mỗi bước cơ sở được xem là một bước tính Ki+1 từ Ki
(t.ư. O(n2) nếu mỗi bước cơ sở được xem là một bước tìm phần tử thích hợp để bổ
sung vào Ki+1). Thuật toán 2.2 Kiểm định mã trên vị nhóm cho trường hợp ngôn ngữ chính quy Đầu vào: Ngôn ngữ chính quy X ⊆ A+ cho bởi một bộ (ϕ, M, B), với ϕ : A∗ → M, Đầu ra:
Bước 1: {xem Ví dụ 1.4 (Cách 1)} M là một vị nhóm hữu hạn, B ⊆ M, X = ϕ−1(B)
“YES” nếu X là mã, “NO” nếu X không là mã
Từ bộ (ϕ, M, B), xây dựng một toàn cấu vị nhóm h : A∗ → P thỏa đồng
thời X và Y = {ε}, P ⊆ M × Z2 {ta có h−1(K) = X} Bước 2: + Tính K = P ∩ B × Z2 = {(b, m) ∈ P | b ∈ B} {ta có h−1(L) = {ε}} Bước 3: + Tính L = {(1M , 1)}
Tính K1 = K −1K − L và đặt i = 2
if K1 == ∅ then
return “YES” i−1K ∪ K −1Ki−1 ∪ Ki−1 Bước 4: (Lặp)
Tính Ki = K −1
if 1P ∈ Ki then
return “NO”
if Ki == Ki−1 then
return “YES” else đặt i = i + 1, và quay về Bước 4 2.1 Thuật toán kiểm định mã và ♦-mã 35 Biểu diễn chi tiết thuật toán bằng cấu trúc dữ liệu, khởi đầu, ta xây dựng một
tập các node, mỗi node z bao gồm các thuộc tính {z.lef t, z.right, z.f ather, z.brother,
z.f lag1, z.f lag2} sao cho với x, y ∈ M bất kỳ, nếu z = xy, thì ta đặt z.lef t = x,
z.right = y, x.f ather = y.f ather = z, y.brother = x. Quá trình này được thực hiện
trong thời gian O(n2), với n = Card(M). Để thực hiện Bước 1, ta sử dụng hai stack ký hiệu lần lượt là stack1 và stack2. Ở
bước con thứ nhất, với mỗi z ∈ K, ta đặt z.f lag1 = n + 1 và đẩy z vào stack1. Với
mỗi z ∈ M − K, ta đặt z.f lag1 = n + 2 và đẩy z vào stack2. Ở bước con kế tiếp,
với mọi z thuộc stack2 thỏa điều kiện z.lef t.f lag1 = z.right.f lag1 = n + 1, ta đặt
z.f lag1 = n + 1 và đẩy z vào stack1. Quá trình này sẽ dừng sau tối đa n bước con. Vì
vậy, Bước 1 có thể hoàn thiện trong thời gian O(n2). Trong Bước 2, với mỗi phần tử z của stack1, nếu z ∈ K, thì ta đặt z.f lag1 = 0. Công việc này đòi hỏi thời gian tuyến tính theo cỡ của P , tức là O(n). Để thực hiện Bước 3, với mọi z của stack1, nếu z 6= 1P và z.f ather.f lag1 =
z.brother.f lag1 = 0, thì ta đặt z.f lag2 = 0 và đẩy z vào stack3, ngược lại ta đặt
z.f lag2 = null. Công việc này cũng đòi hỏi thời gian tuyến tính theo cỡ của P , tức là
O(n). Trong Bước 4, ta thực hiện một vòng lặp để tính các Kn, n ≥ 2, với P, K thuộc
stack1 và K1 thuộc stack3. Ở bước con thứ nhất, với mọi z ∈ P , nếu z.f lag2 =
null và ((z.f ather.f lag2 ≥ 0 và z.brother.f lag1 = 0) hoặc (z.f ather.f lag1 = 0 và
z.brother.f lag2 ≥ 0)), thì ta đặt z.f lag2 = 1 và đẩy z vào stack3. Ở bước con thứ i > 1,
với mọi z ∈ P , nếu z.f lag2 = null và ((z.f ather.f lag2 ≥ 0 và z.brother.f lag1 = 0)
hoặc (z.f ather.f lag1 = 0 và z.brother.f lag2 ≥ 0)), thì ta đặt z.f lag2 = i và đẩy z vào
stack3. Quá trình này sẽ dừng sau tối đa n bước con. Xác định câu trả lời “YES” hoặc
“NO” quy về việc xác định xem stack3 có phần tử 1P không. Tất cả các công việc này
có thể hoàn thiện trong thời gian O(n2). Vì vậy, nếu mỗi bước cơ sở được xem là một bước tính Kn+1 từ Kn, toàn bộ thuật
toán yêu cầu tổng thời gian thực hiện là O(n). Nếu mỗi bước cơ sở được xem là một
bước tìm phần tử thích hợp để bổ sung vào Kn+1, thì tổng thời gian thực hiện của
thuật toán là O(n2). Lưu ý rằng nếu ta tính P như trong Ví dụ 1.4 (Cách 2) thì cỡ của
P chỉ là n + 1. Cho A = {a, b}. Ta xét vị nhóm P = {e, x, x2}∪{1}, với x3 = e, 1 là đơn vị
Ví dụ 2.8
của P , 1.α = α.1 = 1, ∀α ∈ P và ϕ : A∗ → P được cho bởi ϕ(ε) = 1, ϕ(a) = x, ϕ(b) =
x2. Rõ ràng P thỏa L = ϕ−1(x) và {ε}. Ta có w ∈ ϕ−1(x) ⇔ (r = |w|a mod 3) ∧ (s =
|w|b mod 6) ∧ ((2.s + r) mod 3 = 1), ở đó |w|a, |w|b lần lượt là số lần xuất hiện các chữ
cái a, b trong w. Kiểm tra L = ϕ−1(x) có là mã không nhờ Thuật toán 2.2 như sau.
Ta có K = {x}, K1 = {e}, K2 = {e, x, x2}, K3 = {1, e, x, x2}. Vì 1 ∈ K3 ta suy ra L
không là mã. 36 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG Nếu ta thiết kế một otomat A cỡ n trạng thái từ vị nhóm M đoán
Nhận xét 2.4
nhận X, với phương pháp của Robert được đề xuất trong [22], thuật toán nhận được
có độ phức tạp thời gian là O(l2.n2) với l là cỡ của bảng chữ A. Vì vậy, nếu ngôn ngữ
đầu vào cho trực tiếp bằng đại số thì thuật toán của ta thực sự có hiệu quả. Ngược lại, nếu ngôn ngữ đầu vào cho bởi một otomat hữu hạn thì ta có thể sử dụng thuật toán
của Robert [22]. Trong phần này, ta cũng đề xuất một tiêu chuẩn mới kiểu Sardinas-Patterson cải tiến
để kiểm định ♦-mã. Tiêu chuẩn này cho phép ta thiết lập một thuật toán hiệu quả bậc
hai để kiểm định ♦-mã cho trường hợp ♦-ngôn ngữ chính quy, tốt hơn thuật toán kiểu
Sardinas-Patterson có độ phức tạp cỡ hàm mũ được giới thiệu gần đây trong [37]. Cơ
sở đánh giá độ phức tạp và mối quan hệ của thuật toán mới thiết lập trong luận án và thuật toán đã biết sẽ được đưa ra ở phần sau. Trước hết, ta cần nhắc lại tiêu chuẩn
kiểu Sardinas-Patterson để kiểm định ♦-mã được đề xuất trong [37]. ♦, ta định nghĩa một dãy các tập phần dư Ui kết hợp với X như sau. Cho X ⊆ A+ i X ∪ X −1Ui, (2.3) i ≥ 1. U1 = X −1X − e − {(j, ε, j) | j ∈ B}
Ui+1 = U −1 ♦ là ♦-mã khi và chỉ khi các tập Ui (i ≥ 1) được Khi đó, định lý sau đây cung cấp một tiêu chuẩn kiểm định ♦-mã. Tập X ⊆ A+
Định lý 2.3 ([37])
định nghĩa theo công thức (2.3) không chứa phần tử đơn vị e. Đối với lớp ♦-ngôn ngữ chính quy, Mệnh đề 2.2 khẳng định rằng Định lý 2.3 cung ♦ là một ♦-ngôn ngữ chính quy, thì tập tất cả các cấp một thuật toán kiểm tra một ♦-ngôn ngữ chính quy có là ♦-mã không. Mệnh đề 2.2 ([37]) Nếu X ⊆ A+
Ui (i ≥ 1) được định nghĩa theo công thức (2.3) là hữu hạn. Cho A = {a, b} và B = {0, 1}. Ví dụ 2.9
Với X = {(1, b, 0), (0, abb, 0), (1, bbba, 0), (0, abbba, 1), (1, baabb, 0)}, ta có
U1 = {(0, bba, 0), (0, aabb, 0)}, U2 = ∅. Vậy, X là ♦-mã. Với Y = {(1, b, 0), (0, a, 1), (0, aba, 1)}, ta có U1 = {(1, ba, 1)}, U2 = {(0, a, 1)}, U3 = {e, (1, ba, 1)}. Vậy, Y không là ♦-mã. ♦ thỏa bởi một ♦-toàn cấu vị nhóm ϕ : A∗ ♦ → M, M là một vị nhóm
hữu hạn. Trong [37], các tác giả đã chứng minh rằng thuật toán nhận được từ Định lý
2.3 để kiểm tra X có là ♦-mã không, có độ phức tạp thời gian trong trường hợp xấu
nhất là O(2n), n là kích thước của vị nhóm M. Với cùng tham số đầu vào, dựa trên Cho X ⊆ A∗ 2.1 Thuật toán kiểm định mã và ♦-mã 37 tiêu chuẩn kiểu Sardinas-Patterson cải tiến cung cấp bởi thủ tục dưới đây, chúng tôi
thiết lập một thuật toán kiểm định ♦-mã với độ phức tạp thời gian chỉ là O(n2). ♦, ta định nghĩa một dãy các tập phần dư Vi kết hợp với X như sau. Cho X ⊆ A+ (2.4) i ≥ 1. V1 = X −1X − e − {(j, ε, j) | j ∈ B}
i X ∪ X −1Vi ∪ Vi,
Vi+1 = V −1 Trong thủ tục trên, ta tính các tập Vi (i ≥ 1). Khác với các tập Ui (i ≥
Nhận xét 2.5
1) tính theo tiêu chuẩn kiểu Sardinas-Patterson truyền thống được giới thiệu trong
[37], các tập Vi (i ≥ 1) thỏa tính chất bao hàm Vi ⊆ Vi+1, ∀i. Đây là tính chất quan
trọng mang ý nghĩa quyết định đến khả năng giảm độ phức tạp của thuật toán mới
kiểm định ♦-mã. Tính đúng đắn của thủ tục dựa trên những kết quả sau đây. ♦ là các ♦-ngôn ngữ. Khi đó X −1(Y ∪Z) = X −1Y ∪ Cho X, Y, Z ⊆ A∗ Tính chất 2.1
X −1Z. Chứng minh. Chứng minh X −1(Y ∪Z) ⊆ X −1Y ∪X −1Z. Với w bất kỳ, w ∈ X −1(Y ∪Z),
tồn tại x ∈ X sao cho x.w ∈ Y ∪ Z. Từ x.w ∈ Y hoặc x.w ∈ Z ta có w ∈ X −1Y hoặc
w ∈ X −1Z. Vậy w ∈ X −1Y ∪ X −1Z. Chứng minh X −1Y ∪ X −1Z ⊆ X −1(Y ∪ Z). Với w bất kỳ, w ∈ X −1Y ∪ X −1Z, tồn
tại x ∈ X sao cho x.w ∈ Y hoặc x.w ∈ Z. Từ x.w ∈ Y ∪ Z ta có w ∈ X −1(Y ∪ Z). (cid:3) ♦ là các ♦-ngôn ngữ. Ta có (Y ∪ Z)−1X = Y −1X ∪ Cho X, Y, Z ⊆ A∗ Tính chất 2.2
Z −1X. Chứng minh. Chứng minh (Y ∪Z)−1X ⊆ Y −1X∪Z −1X. Với w bất kỳ, w ∈ (Y ∪Z)−1X,
tồn tại u ∈ Y ∪ Z sao cho u.w ∈ X. Nếu u ∈ Y thì u.w ∈ X và w ∈ Y −1X. Nếu u ∈ Z
thì u.w ∈ X và w ∈ Z −1X. Vậy, w ∈ Z −1X ∪ Z −1X. Chứng minh Y −1X ∪ Z −1X ⊆ (Y ∪ Z)−1X. Với w bất kỳ, w ∈ Y −1X ∪ Z −1X. Nếu
w ∈ Y −1X, thì tồn tại y ∈ Y sao cho y.w ∈ X. Nếu w ∈ Z −1X, thì tồn tại z ∈ Z sao
cho z.w ∈ X. Tức là, tồn tại u ∈ Y ∪ Z sao cho u.w ∈ X. Vậy, w ∈ (Y ∪ Z)−1X. (cid:3) ♦, Ui (i ≥ 1) được định nghĩa theo công thức (2.3) và Vi (i ≥
n Bổ đề 2.4 Cho X ⊆ A+ i=1
S 1) được định nghĩa theo công thức (2.4). Khi đó Vn = Ui với mọi n ≥ 1. Chứng minh. Ta chứng minh quy nạp theo n. Với n = 1, ta có V1 = U1 = X −1X − e − {(j, ε, j) | j ∈ B}. Điều khẳng định đúng với n = 1. k cũng đúng với n = k + 1. Theo công thức (2.4), ta có Vk+1 = V −1 Với n ≥ 1, giả sử điều khẳng định đúng với mọi n = k > 1, ta chứng minh nó
k X ∪ X −1Vk ∪ Vk, với i=1
S Vk = Ui. 38 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG k k k Khi đó i=1
S i=1
S i=1
S Ui)−1X ∪ X −1( Ui) ∪ Ui Vk+1 = ( = (U1 ∪ U2 ∪ · · · ∪ Uk)−1X ∪ X −1(U1 ∪ U2 ∪ · · · ∪ Uk) ∪ (U1 ∪ U2 ∪ · · · ∪ Uk). Theo Tính chất 2.1 và Tính chất 2.2, ta có 2 X ∪ · · · ∪ U −1 1 X ∪ U −1 k X) ∪ (X −1U1 ∪ X −1U2 ∪ · · · ∪ X −1Uk) ∪ Vk+1 = (U −1 (U1 ∪ U2 ∪ · · · ∪ Uk) 1 X ∪ X −1U1) ∪ · · · ∪ (U −1 k X ∪ X −1Uk) ∪ (U1 ∪ U2 ∪ · · · ∪ Uk) = (U −1 = (U2 ∪ U3 ∪ · · · ∪ Uk+1) ∪ (U1 ∪ U2 ∪ · · · ∪ Uk) k+1 = U1 ∪ U2 ∪ · · · ∪ Uk+1 = Ui. i=1
S (cid:3) Vậy, điều khẳng định đúng với mọi n ≥ 1. Như một hệ quả trực tiếp của Định lý 2.3 và Bổ đề 2.4, định lý sau đây là kết quả chính của mục này, nó cung cấp cho ta một tiêu chuẩn mới để kiểm định ♦-mã. ♦ là ♦-mã khi và chỉ khi các tập Vi (i ≥ 1) được định nghĩa Định lý 2.4 Tập X ⊆ A+ theo công thức (2.4) không chứa phần tử đơn vị e. Từ Định lý 2.4, ta có ♦ và Vi (i ≥ 1) được định nghĩa theo công thức (2.4). Nếu Cho X ⊆ A+ Hệ quả 2.4
tồn tại k ≥ 1 sao cho Vk+1 = Vk và e /∈ Vk với mọi k ≥ 1, thì X là ♦-mã. Từ Mệnh đề 2.2 và Bổ đề 2.4, ta suy ra kết quả sau ♦ là một ♦-ngôn ngữ chính quy, thì tập tất cả các Vi (i ≥ 1) Hệ quả 2.5 Nếu X ⊆ A+ được định nghĩa theo công thức (2.4) là hữu hạn. Hệ quả 2.5 khẳng định Định lý 2.4 cung cấp cho ta một thuật toán kiểm định một
♦-ngôn ngữ chính quy cho trước có là ♦-mã không. Sau đây ta sẽ mô tả chi tiết thuật
toán kiểm định ♦-mã nhận được từ Định lý 2.4 và đánh giá độ phức tạp của nó. ♦ là một ♦-ngôn ngữ chính quy Thuật toán 2.3 Kiểm định ♦-mã cho trường hợp ♦-ngôn ngữ chính quy Đầu vào: X ⊆ A+
Đầu ra:
Bước 1: “YES” nếu X là ♦-mã, “NO” nếu X không là ♦-mã
Tính V1 = X −1X − e − {(j, ε, j) | j ∈ B} và đặt i = 2
If V1 == ∅ Then
return “YES” 2.1 Thuật toán kiểm định mã và ♦-mã 39 i−1X ∪ X −1Vi−1 ∪ Vi−1 Bước 2: (Lặp)
Tính Vi = V −1
if e ∈ Vi then return “NO”
if Vi == Vi−1 then
return “YES” else đặt i = i + 1, và quay lại Bước 2 Chú ý 2.2 Điều kiện dừng của Thuật toán 2.3 cho bởi Hệ quả 2.5. Bước lặp 2 dừng sau không quá n bước, với n là chỉ số của X. Để đánh giá độ phức tạp của Thuật toán 2.3, ta cần các tính chất đại số mở rộng cho ♦-ngôn ngữ. Từ Tính chất 1, Mệnh đề 1 và Mệnh đề 2 [37], ta có ♦ → P là một ♦-toàn cấu vị nhóm. Nếu h thỏa đồng thời X và
Bổ đề 2.5
Y , X = h−1(K), Y = h−1(L), K, L ⊆ P , thì X ∪Y = h−1(K ∪L), X ∩Y = h−1(K ∩L),
X − Y = h−1(K − L), X −1Y = h−1(K −1L), và XY −1 = h−1(KL−1). Cho h : A∗ Ta có hệ quả trực tiếp từ bổ đề trên: ♦ là các ♦-ngôn ngữ chính quy, P là một vị nhóm hữu
Hệ quả 2.6
hạn, và h : A∗
♦ → P là một ♦-toàn cấu vị nhóm. Nếu X và Y cùng thỏa bởi h, thì h
thỏa mọi L ∈ R(X, Y ), với R(X, Y ) là lớp ♦-ngôn ngữ sinh bởi X, Y nhờ thực hiện một
số hữu hạn các phép toán hợp, giao, lấy phần bù, lấy thương trái và lấy thương phải. Cho X, Y ⊆ A∗ Từ Mệnh đề 1 [37], ta có ♦ là các ♦-ngôn ngữ chính quy, f : A∗ ♦ → N là các ♦-đồng cấu vị nhóm, f thỏa X và g thỏa Y . Cho h : A∗ ♦ → M và g :
Mệnh đề 2.3
A∗
♦ → P ⊆ M × N
là ♦-toàn cấu vị nhóm được cho bởi: ∀a ∈ A∗
♦, h(a) = (f (a), g(a)) và P là vị nhóm con
của M × N sinh bởi tập tất cả các phần tử h(a), a ∈ A♦. Khi đó h thỏa đồng thời X
và Y . Cho X, Y ⊆ A∗ ♦ → M là một ♦-đồng cấu vị nhóm thỏa X, X ⊆ A∗ ∗ ♦, A 6= ∅,
Ví dụ 2.10
và cho Z2 = {0, 1} là vị nhóm nhân với phần tử đơn vị 1 và phần tử không 0. Rõ ràng,
Y = {e} thỏa bởi ♦-đồng cấu vị nhóm g : A∗
♦ → Z2, được định nghĩa bởi: g(e) = 1 và
với mọi a ∈ A∗
♦, g(a) = 0. Ta có thể kiểm tra X và Y = {e} cùng thỏa bởi ♦-toàn cấu
vị nhóm h : A∗
♦ → P ⊆ M × Z2 được cho bởi: ∀a ∈ A∗
♦, h(a) = (ϕ(a), 0), 1P = h(e) =
(1M , 1). Đặt K = h(A♦) ∪ 1P = {(h(a), 0) | a ∈ A♦} ∪ 1P , ta có K
= P . Nếu M là
hữu hạn thì Card(P ) ≤ 2.Card(M) và xác định P yêu cầu tối đa 2.(Card(M))2 phép
tính cơ bản trên vị nhóm M bởi thuật toán loang dần. Cho ϕ : A∗ 40 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG Từ các kết quả trên, ta có thể phát biểu hệ quả cho độ phức tạp của Thuật toán 2.3 như sau ♦ là một ♦-ngôn ngữ chính quy thỏa bởi ♦-toàn cấu
Hệ quả 2.7
h : A∗
♦ → P nào đó, P là một vị nhóm hữu hạn. Khi đó các tập Vi (i ≥ 1) được định
nghĩa theo công thức (2.4) cùng thỏa bởi h và số các tập Vi khác nhau không vượt quá
lực lượng của P . Giả sử X ⊆ A∗ Nhận xét 2.6 Nếu ta chỉ quan tâm đến số các tập Vi khác nhau thì theo Hệ quả
2.7, Thuật toán 2.3 có độ phức tạp tuyến tính theo kích thước của vị nhóm P , tức là
O(Card(P )). Nếu X là ♦-ngôn ngữ chính quy cho bởi một ♦-đồng cấu đại số thì ta có
thể mở rộng phương pháp vị nhóm ở Mục 2.1.2 để thiết lập một thuật toán hiệu quả
bậc hai dựa trên vị nhóm để kiểm định X có là ♦-mã không. Cho đến nay, qua công trình tổng quan của Augros và Litovsky về các thuật toán kiểm
định ω-mã [3], thuật toán tốt nhất kiểm định một ngôn ngữ chính quy X cho trước
có là ω-mã không được biết có độ phức tạp thời gian O(n3) với n là kích thước của vị
nhóm các phép chuyển dịch của otomat đơn định tối tiểu đoán nhận X. Trong phần
này, với vị nhóm hữu hạn M bất kỳ thỏa X (vị nhóm các phép chuyển dịch nói trên chỉ là một trường hợp riêng), ta đề xuất một thuật toán mới sử dụng M để kiểm định
X có là ω-mã không với độ phức tạp thời gian chỉ là O(n2) với n = Card(M). Trong mục này, ta nhắc lại thủ tục kiểm định ω-mã được đề xuất trong [3]. Định lý 1
trong [3] đã thiết lập thủ tục kiểm tra một ngôn ngữ X chính quy có là ω-mã không
dựa vào vị nhóm M thỏa X với độ phức tạp O(n3), n = Card(M). Tuy nhiên còn một
sự nhầm lẫn trong logic các phép chứng minh. Ở đây ta đưa ra một cách chứng minh
mới cho Định lý 1 [3] nhờ thiết lập một số bổ đề kỹ thuật mà ngoài việc phục vụ cho phép chứng minh này, chúng còn được sử dụng hữu ích về sau. Cho X ⊆ A+. Ta xem xét một dãy các tập Vi kết hợp với X được định nghĩa đệ quy như sau. V1 = (X +)−1X − {ε} (2.5) i ≥ 1. Vi+1 = (ViX ∗)−1X, Trước hết, ta thiết lập các bổ đề kỹ thuật cho tính đúng đắn của thủ tục. Cho X ⊆ A+ và cho Vi (i ≥ 1) được định nghĩa theo công thức (2.5). Với
Bổ đề 2.6
z ∈ A∗ tùy ý, k ≥ 1, nếu z ∈ Vk thì tồn tại các số nguyên p, q ≥ 1 và x1, x2, . . . , xp,
y1, y2, . . . , yq ∈ X sao cho x1x2 · · · xpz = y1y2 · · · yq với x1 6= y1. 2.2 Thuật toán kiểm định ω-mã 41 Chứng minh. Ta chứng minh quy nạp theo k. Với k = 1, ta có z ∈ V1 ⇔ (∃x = x1x2 · · · xm ∈ X +, y1 ∈ X : z = x−1y1 ⇔ xz = y1). Từ z ∈ V1, suy ra z 6= ε. Khi đó x1 6= y1 và ta có x1x2 · · · xmz = y1 với x1 6= y1. Vậy điều khẳng định đúng với k = 1. Giả sử điều khẳng định đúng với k ≥ 1, ta chứng minh nó cũng đúng với trường hợp k + 1. Ta có z ∈ Vk+1 ⇔ (∃y ∈ X ∗, vk ∈ Vk, xλ ∈ X : z = (vky)−1xλ ⇔ vkyz = xλ). Theo giả thiết quy nạp, vk ∈ Vk tồn tại s, t ≥ 1 và x1, x2, . . . , xs, y1, y2, . . . , yt ∈ X sao
cho x1x2 · · · xsvk = y1y2 · · · yt với x1 6= y1. Ta có x1x2 · · · xsxλ = y1y2 · · · ytyz với x1 6= y1 vì vkyz = xλ. Vậy, điều khẳng định đúng với mọi k ≥ 1. (cid:3) Chứng minh được hoàn thành. Cho X ⊆ A+ và cho Vi (i ≥ 1) được định nghĩa theo công thức (2.5). Bổ đề 2.7
Nếu có p, q ≥ 1, x1, x2, . . . , xp, y1, y2, . . . , yq ∈ X và z ∈ A∗ tùy ý sao cho x1x2 · · · xpz = y1y2 · · · yq với x1 6= y1 và |z| ≤ |yq|, thì tồn tại k ≥ 1 sao cho z ∈ Vk. Chứng minh. Ta chứng minh quy nạp theo p + q. Với p + q = 2 (p = q = 1), giả sử rằng x1z = y1 với x1 6= y1 và |z| ≤ |y1|. Vì x1 6= y1, 1 y1 = z ∈ (X +)−1X − {ε} = V1. Điều khẳng định đúng với p + q = 2. ta có x−1 Giả sử điều khẳng định đúng với p + q − 1 ≥ 2, ta chứng minh nó cũng đúng với p + q. Thật vậy, từ giả thiết x1x2 · · · xpz = y1y2 · · · yq với x1 6= y1 và |z| ≤ |yq|, ta phân biệt hai trường hợp khi so sánh độ dài của từ xpz và từ yq. Trường hợp 1: |xpz| ≤ |yq|. Theo giả thiết quy nạp, xpz = vk ∈ Vk = (Vk−1X ∗)−1X với k ≥ 1 nào đó. Ta có vk ∈ Vk = (Vk−1X ∗)−1X ⇔ (∃vk−1 ∈ Vk−1, x ∈ X ∗, y ∈ X : y = vk−1xvk = vk−1xxpz). 42 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG Vậy z = (vk−1xxp)−1y ∈ (Vk−1X ∗)−1X = Vk. Trường hợp 2: |xpz| > |yq|. Tồn tại s ≥ 1 và z0 ∈ A∗ : |z0| ≤ |ys| sao cho xp = z0ys+1ys+2 · · · yq−1u với yq = uz. Khi đó, ta có x1x2 · · · xp−1z0 = y1y2 · · · ys với x1 6= y1 và |z0| ≤ |ys|. Theo giả thiết quy nạp, z0 ∈ Vk với k ≥ 1 nào đó. Ta có u =
(z0ys+1ys+2 · · · yq−1)−1xp ∈ (VkX ∗)−1X = Vk+1. Từ đó z = u−1yq ∈ (Vk+1X ∗)−1X =
Vk+2. (cid:3) Vậy, điều khẳng định đúng với mọi p + q ≥ 2.
Chứng minh được hoàn thành. Trong định lý sau đây, ta thiết lập kết quả chính của mục này nhằm cung cấp một tiêu chuẩn kiểm định ω-mã cho trường hợp ngôn ngữ chính quy. Cho X ⊆ A+ là một ngôn ngữ chính quy và cho Vi (i ≥ 1) được định
Định lý 2.5
nghĩa theo công thức (2.5). Khi đó, X là ω-mã khi và chỉ khi tồn tại i ≥ 1 sao cho
Vi = ∅. Chứng minh.
Chiều thuận. Nếu X là ω-mã thì tồn tại i ≥ 1 sao cho Vi = ∅. 2, . . . bằng cách đặt Phản chứng, giả sử X là ω-mã và giả sử Vi 6= ∅ với mọi i ≥ 1. Chọn N là một
số nguyên không bé hơn chỉ số n của X, và vN ∈ VN . Khi đó, tồn tại vi ∈ Vi, i =
1, 2, . . . , N −1 sao cho v1 ∈ (X +)−1X, vi+1 ∈ (viX ∗)−1X, i = 1, 2, . . . , N −1, hoặc tương
đương, xv1 ∈ X, viX ∗vi+1 ∈ X, i = 1, 2, . . . , N − 1. Trong số v1, v2, . . . , vN ta có thể
chọn ra vq và vp sao cho p < q và vp ∼X vq. Ta định nghĩa một dãy vô hạn các từ
1, v0
v0 1 ≤ i ≤ q − 1 v0
i = vi, và 0 ≤ i ≤ q − 1 v0
q+i = vp+t, i = v0
x0 iX ∗v0 i+1 ∈ X ∗ với t là số nguyên không âm nhỏ nhất sao cho t = i mod (q − p). Ta có thể kiểm tra
hệ thức với i = 1, 2, . . . và 1 = xv1 ∈ X. x0 = xv0 1X ∗v0 2X ∗ · · · được biểu diễn theo hai dạng Ta xem xét tích vô hạn của các từ vv0 1)(X ∗)(v0 2X ∗v0 3) · · · = x(v0 1X ∗v0 2)(v0 3X ∗v0 4) · · · (xv0 hoặc 2.2 Thuật toán kiểm định ω-mã 43 x1x2 · · · = y1y2 · · · với x1 6= y1, xi, yj ∈ X. Vì vậy, tồn tại một ω-từ α có hai X-phân tích khác nhau, α = x1x2 · · · = y1y2 · · · với x1 6= y1. Ta suy ra X không là ω-mã, trái với giả thiết. Chiều ngược. Nếu tồn tại i ≥ 1 sao cho Vi = ∅ thì X là ω-mã. Phản chứng, giả sử X không là ω-mã. Lưu ý rằng nếu Vi = ∅ với i nào đó, thì Vj = ∅ với mọi j > i. Nếu X không là mã, thì khi đó tồn tại một quan hệ x1x2 · · · xpε = y1y2 · · · yq với
x1 6= y1. Theo Bổ đề 2.7, tồn tại i ≥ 1 sao cho ε ∈ Vi. Theo định nghĩa, ε ∈ Vj với mọi
j ≥ i. Từ đó suy ra Vi 6= ∅ với mọi i ≥ 1, trái với giả thiết. Giả sử X là mã nhưng X không là ω-mã. Khi đó tồn tại quan hệ x1x2 · · · = y1y2 · · ·
với |x1| < |y1|. Chứng minh được hoàn thành nếu điều khẳng định sau đây được kiểm
chứng: Với mọi k ≥ 1, tồn tại một từ z ∈ Vk và hai số nguyên i ≥ 1, j ≥ 1 sao cho một
trong hai điều kiện sau đây được thỏa (a) x1 · · · xiz = y1 · · · yj xi+1xi+2 · · · = zyj+1yj+2 · · · với |x1| < |y1| và |z| ≤ |yj|. (b) x1 · · · xi = y1 · · · yjz zxi+1xi+2 · · · = yj+1yj+2 · · · với |x1| < |y1| và |z| ≤ |xi|. Ta chứng minh quy nạp theo k.
Thật vậy, từ giả thiết |x1| < |y1|. Ta có z ∈ A+ sao cho y1 = x1z. Từ đó z = x−1
1 y1 ∈ (X +)−1X − {ε} = V1. Vậy ta có x1z = y1 x2x3 · · · = zy2y3 · · · với |x1| < |y1| và |z| < |y1|. Vậy điều khẳng định đúng với k = 1. Giả sử điều khẳng định đúng với k > 1, ta chứng minh nó cũng đúng với k + 1.
Theo giả thiết, tồn tại z ∈ Vk và hai số nguyên i ≥ 1, j ≥ 1 sao cho điều kiện (a) hoặc
(b) được thỏa. Giả sử (a) được thỏa, tức là ta có x1x2 · · · xiz = y1 · · · yj
xi+1xi+2 · · · = zyj+1yj+2 · · · với |x1| < |y1| và |z| ≤ |yj|. So sánh độ dài của z và xi+1, ta phân biệt hai trường hợp. Trường hợp 1: |z| ≤ |xi+1|. Ta có z0 ∈ A∗ sao cho xi+1 = zz0. Vậy z0 = z−1xi+1 ∈ (VkX ∗)−1X = Vk+1. Ta có 44 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG x1 · · · xi+1 = y1 · · · yjz0 z0xi+2xi+3 · · · = yj+1yj+2 · · · với |x1| < |y1| và |z0| ≤ |xi+1|. Nghĩa là điều kiện (b) đúng. Trường hợp 2: |z| > |xi+1|. Khi đó, tồn tại p ≥ i + 1 và z0 ∈ A∗ sao cho z =
xi+1xi+2 · · · xpz0 và |z0| ≤ |xp+1|. Mặt khác, từ |z| ≤ |yj| ta có u0 ∈ A∗ sao cho yj = u0z,
hoặc tương đương, yj = u0xi+1xi+2 · · · xpz0. Vì z = u0−1yj ∈ Vk = (Vk−1X ∗)−1X, ta có
u0 ∈ Vk−1X ∗. Do đó u0xi+1xi+2 · · · xp ∈ Vk−1X ∗. Ta suy ra z0 = (u0xi+1xi+2 · · · xp)−1yj ∈
(Vk−1X ∗)−1X = Vk. Khi đó tồn tại z00 ∈ A∗ sao cho |z00| ≤ |xp+1| và z00 = z0−1xp+1 ∈
(VkX ∗)−1X = Vk+1. Vậy ta có x1 · · · xp+1 = y1 · · · yjz00 z00xp+2xp+3 · · · = yj+1yj+2 · · · với |x1| < |y1| và |z00| ≤ |xp+1|. Nghĩa là điều kiện (b) đúng. Giả sử (b) được thỏa, tức là ta có x1 · · · xi = y1 · · · yjz zxi+1xi+2 · · · = yj+1yj+2 · · · với |x1| < |y1| và |z| ≤ |xi|. So sánh độ dài của z và yj+1, ta xét hai trường hợp tương tự như chứng minh trên và
kết luận điều kiện (a) đúng trong cả hai trường hợp này. Vậy điều khẳng định đúng với mọi k ≥ 1. Điều này có nghĩa là Vi 6= ∅ với mọi i ≥ 1, trái với giả thiết. (cid:3) Chứng minh được hoàn thành. Từ Định lý 2.5, ta suy ra các kết quả sau Cho X ⊆ A+ và cho Vi (i ≥ 1) được định nghĩa theo công thức (2.5). Hệ quả 2.8
Nếu tồn tại k ≥ 1 sao cho ε ∈ Vk thì X không là ω-mã. Cho X ⊆ A+ là một ngôn ngữ chính quy. Nếu X là tập prefix thì X Hệ quả 2.9
là ω-mã. Ví dụ 2.11 Cho A = {a, b}. Với X = {aa, baa, ba}, ta có V1 = V2 = · · · = {a}. Từ đó suy ra Vi 6= ∅ với mọi i ≥ 1. Vậy X không là ω-mã. Với Y = {a, b}, ta có V1 = ∅. Vậy Y là ω-mã. Trong [3], nhờ phương pháp tiếp cận theo vị nhóm, các tác giả đã thiết lập được một
thuật toán kiểm định ω-mã cho lớp ngôn ngữ chính quy. Thuật toán này có độ phức tạp
thời gian là O(n3) với n là kích thước của vị nhóm các phép chuyển dịch của otomat
tối tiểu đoán nhận ngôn ngữ đầu vào. Ở mục này, nhờ đưa vào một kỹ thuật mới sử 2.2 Thuật toán kiểm định ω-mã 45 dụng đồ thị có tô màu cung cho phép luận án nhận được một thuật toán mới kiểm
định ω-mã có độ phức tạp thời gian chỉ là O(n2). Để thiết lập thuật toán, ta đưa ra các khái niệm và kết quả sau đây. Định nghĩa 2.1 Cho X ⊆ A+ là một ngôn ngữ chính quy và giả sử h : A∗ → P
là một toàn cấu vị nhóm thỏa cả Y = {ε} và X, với P là một vị nhóm hữu hạn,
X = h−1(K), Y = h−1(L), L = {1P }, S = K ∗, T = K +, K, L ⊆ P . Một ρ−chu
trình trong P là dãy e1, e2, . . . , ej sao cho e1, e2, . . . , ej−1 tất cả khác nhau, nhưng có
ej = ei, j > i với (2.6) i ≥ 1. e1 ∈ T −1K − L,
ei+1 ∈ (ei.S)−1K, Cho X ⊆ A+ là một ngôn ngữ chính quy và cho Vi (i ≥ 1) được định
Bổ đề 2.8
nghĩa theo công thức (2.5). Giả sử h : A∗ → P là một toàn cấu vị nhóm thỏa cả
Y = {ε} và X, với P là một vị nhóm hữu hạn, X = h−1(K), Y = h−1(L), L =
{1P }, S = K ∗, T = K +, K, L ⊆ P và giả sử e1, e2, . . . , ej = ei, j > i là một ρ−chu
trình trong P . Khi đó, ta có h−1(ei) ⊆ Vi với mọi i ≥ 1. Chứng minh. Ta chứng minh quy nạp theo i. Với i = 1. Trước hết, với mọi α ∈ h−1(e1) thì h(α) = e1 ∈ T −1K − L. Ta có h(α) ∈ T −1K − L = (K +)−1K − {1P } ⇔ (∃p ∈ K +, k ∈ K : k = p.h(α), h(α) 6= 1P ). Từ p ∈ K + suy ra p = k1.k2. · · · .kn, ki ∈ K, i = 1, . . . , n. Vì h là toàn cấu và
X = h−1(K), ta có x ∈ X và yi ∈ X sao cho k = h(x) và ki = h(yi), i = 1, . . . , n. Vậy,
ta có h(x) = h(y1).h(y2). · · · .h(yn).h(α) = h(y1y2 · · · ynα) ∈ K, h(α) 6= 1P . Từ đó suy ra y1y2 · · · ynα ∈ h−1(K) = X. Vậy α = (y1y2 · · · yn)−1x ∈ (X +)−1X. Vì h(α) 6= 1P , ta có α 6= ε. Vậy α ∈ (X +)−1X − {ε} = V1. Vậy, điều khẳng định đúng với i = 1. Giả sử điều khẳng định đúng với i > 1, ta chứng minh nó cũng đúng với i + 1. Trước hết, giả sử α ∈ h−1(ei+1) và β ∈ h−1(ei). Khi đó h(α) = ei+1 ∈ (ei.S)−1K ⇔ (∃p ∈ K ∗, k ∈ K : k = ei.p.h(α)). Vì h là toàn cấu và X = h−1(K), ta có k = h(x) = h(βy1y2 · · · ynα) với
x, y1, y2, . . . , yn ∈ X, n ≥ 0. Từ đó ta có βy1y2 · · · ynα = x ∈ X. Theo giả thiết
β ∈ h−1(ei) ⊆ Vi. Vậy α = (βy1y2 · · · yn)−1x ∈ (ViX ∗)−1X = Vi+1. (cid:3) Vậy, điều khẳng định đúng với mọi i ≥ 1. Định lý sau đây là kết quả chính của mục này, nó cung cấp cho ta một thuật toán kiểm định ω-mã. 46 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG Cho X ⊆ A+ là một ngôn ngữ chính quy và giả sử h : A∗ → P
Định lý 2.6
là một toàn cấu vị nhóm thỏa cả Y = {ε} và X, với P là một vị nhóm hữu hạn,
X = h−1(K), Y = h−1(L), L = {1P }, S = K ∗, T = K +, K, L ⊆ P . Khi đó, X không
là ω-mã khi và chỉ khi tồn tại một ρ−chu trình trong P . Chứng minh. Chiều thuận. Nếu X không là ω-mã thì tồn tại một ρ−chu trình trong P . Thật vậy, giả sử X không là ω-mã, theo Định lý 2.5, Vi 6= ∅ với mọi i ≥ 1. Đặt n =
Card(P ) + 1, khi đó tồn tại một dãy v1, v2, . . . , vN −1, vN với v1 ∈ V1, vi+1 ∈ (viX ∗)−1X,
N > i ≥ 1. Sau đây ta chứng tỏ có tồn tại một ρ−chu trình e1, e2, . . . , ej = ei, j > i
trong P . Trước hết, đặt e1 = h(v1). Từ v1 6= ε suy ra e1 6= 1P . Ta có v1 ∈ V1 ⇔ (∃x1x2 · · · xn ∈ X +, n ≥ 1, x ∈ X : x1x2 · · · xnv1 = x, v1 6= ε). Từ đó ta có h(x) = h(x1x2 · · · xnv1) = h(x1).h(x2). · · · .h(xn).h(v1) = k1.k2. · · · .kn.e1 = k ∈ K, e1 6= 1P . Vậy e1 ∈ (k1.k2. · · · .kn)−1k ⊆ T −1K − L. Tiếp theo, đặt e2 = h(v2). Tương tự, ta có e2 ∈ (e1.S)−1K, . . . , eN ∈ (eN −1.S)−1K.
Do N > Card(P ), nếu e1, e2, . . . , eN tất cả khác nhau thì số các ei khác nhau vượt
quá lực lượng của P . Vậy phải tồn tại i < j ≤ N sao cho ej = ei. Nghĩa là P có một
ρ−chu trình e1, e2, . . . , ej = ei, j > i. Chiều ngược. Nếu tồn tại một ρ−chu trình trong P thì X không là ω-mã.
Giả sử P có một ρ−chu trình e1, e2, . . . , ej = ei, j > i. Từ ei đến ei+1, ta vẽ một mũi tên ei → ei+1 nếu ei+1 ∈ (ei.S)−1K. Khi đó theo giả thiết ta có một đường đi e1 → e2 → · · · → ei → ei+1 → · · · → ej−1 → ej. Ta có ei+1 ∈ (ei.S)−1K = (ej.S)−1K vì ej = ei. Vậy, ta có một đường đi (2.7) e1 → e2 → · · · → ei → ei+1 → · · · → ej−1 → ej → ei+1. Tức là tồn tại một đường đi vô hạn e1 → e2 → · · · → ei → ei+1 → · · · → ej−1 → ej → ei+1 → ei+2 → · · · Từ đó, tồn tại một dãy vô hạn e1, e2, . . . , ei, ei+1, . . . , ej = ei, ej+1 = ei+1, . . . Vì h là
toàn cấu, theo Bổ đề 2.8, ∅ 6= h−1(ei) ⊆ Vi, ∀i ≥ 1. Ta suy ra Vi 6= ∅ với mọi i ≥ 1.
Theo Định lý 2.5, X không là ω-mã. Chứng minh được hoàn thành. (cid:3). Kết quả chính của mục này là một thuật toán kiểm định ω-mã trên đồ thị hữu hạn.
Trước hết, ta cần thực hiện việc chuyển đổi bài toán từ biểu diễn đại số sang biểu diễn 2.2 Thuật toán kiểm định ω-mã 47 đồ thị. Từ vị nhóm P và các tập con K, T, S của P được định nghĩa trong Mục 2.2.2,
ta xây dựng đồ thị có hướng có tô màu cung G = (V, E). Đặt V = P, E = ∅. Tập cung red
−−→ m vào E. blue
−−→ b E được cập nhật như sau. Nếu m ∈ e.S, thì ta bổ sung một cung đỏ e
Nếu a.b ∈ K, hoặc tương đương b ∈ a−1K, thì ta bổ sung một cung xanh a vào E. red
−−→ m Ta có blue
−−→ e0 ⇔ (m ∈ e.S ∧ m.e0 ∈ K) ⇔ e0 ∈ (e.S)−1K e Khi đó, mỗi đường đi được đề cập trong (2.7) e1 → e2 → · · · → ei → ei+1 → · · · → ej−1 → ej → ei+1 red
−−→ · · · red
−−→ · · · có thể được mở rộng thành một đường đi trong G blue
−−→ ei blue
−−→ ej red
−−→ mj red
−−→ m1 blue
−−→ e2 blue
−−→ ei+1 (2.8) e1 Ta gọi đường đi (2.8) là một ρ−chu trình trong G. Sau đây, như một hệ quả trực tiếp của Định lý 2.6, ta thiết lập kết quả cơ bản
của mục này nhằm cung cấp một thuật toán kiểm định ω-mã trên đồ thị hữu hạn cho trường hợp ngôn ngữ chính quy. Cho X ⊆ A+ là ngôn ngữ chính quy và cho G = (V, E) được định nghĩa
Định lý 2.7
như trên. Khi đó, X không là ω-mã khi và chỉ khi có một ρ−chu trình e1, e2, . . . , ej =
ei, j > i trong G. Phần tiếp theo ta đánh giá độ phức tạp thời gian của thuật toán cung cấp bởi Định lý 2.7. Trước hết, từ việc xem xét các đường đi ei → ei+1 → · · · → ej−1 → ej và sử dụng thuật toán kiểm định chu trình trong G [4; 27], dường như ta có thể dễ dàng
nhận được một thuật toán kiểm định ω-mã. Nhưng việc thêm các mũi tên ei → ei+1
với điều kiện (ei → ei+1 nếu ei+1 ∈ (ei.S)−1K) cần sử dụng một thuật toán có độ phức
tạp thời gian là O(n3). Từ đó thuật toán nhận được không tốt hơn thuật toán được đề
xuất trong [3]. Để cải thiện, ta sử dụng kỹ thuật mở rộng đồ thị G thành một đồ thị
G0 mới, từ đó ta có thể áp dụng thuật toán [4; 27] và nhận được thuật toán bậc hai
kiểm định ω-mã. Giả sử lực lượng của bảng chữ A là một hằng số, đầu vào của thuật toán là một bộ
ba (ϕ, M, B), với ϕ : A∗ → M là một đồng cấu vị nhóm thỏa X, M là một vị nhóm
hữu hạn, B ⊆ M, X = ϕ−1(B) và đầu ra của thuật toán là câu trả lời X có là ω-mã
không. Ta thiết lập được các kết quả sau 48 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG Cho M là một vị nhóm hữu hạn, Card(M) = n. Khi đó, tồn tại một
Bổ đề 2.9
thuật toán có độ phức tạp về mặt thời gian là O(n2) để xác định K ∗, K + với K ⊆ M. Chứng minh. Thật vậy, ta có K + = K ∗.K, K ∗ = K +
K + ∪ 1M nếu 1M ∈ K +
nếu 1M /∈ K +. ( Để biểu diễn K, T = K +, S = K ∗ là các tập con của M, ta sử dụng các mảng một
chiều cỡ n. Với mọi e ∈ M, ta biểu diễn f lagK(e) = 1 ⇔ e ∈ K, f lagS(e) = 1 ⇔ e ∈ S,
f lagT (e) = 1 ⇔ e ∈ T . Bước 0: Khởi tạo, với mọi e ∈ M ta đặt f lagK(e) = f lagS(e) = f lagT (e) = 0. Thực
hiện bước này đòi hỏi độ phức tạp thời gian và bộ nhớ là O(n).
Bước 1 (cập nhật mảng f lagK): Với mọi e ∈ K, ta đặt f lagK(e) = 1. Bước này có độ
phức tạp thời gian là O(n).
Bước 2: Ta cần định nghĩa một mảng T để biểu diễn phép toán hai ngôi trên M: với
mọi e, f ∈ M, e.f = m khi và chỉ khi T (e, f ) = m. Bước này có độ phức tạp thời gian
và bộ nhớ là O(n2).
Bước 3: Xây dựng đồ thị định hướng có tô màu cung G = (V, E). Trước hết, đặt
V = M, E = ∅ và E được cập nhật bởi thủ tục Thủ tục 2.1 Xây dựng đồ thị G for x ∈ M do for f ∈ M do if e 6= f and T (f, x) == e then add f −→ e into E Vậy, Bước 3 có độ phức tạp thời gian và bộ nhớ là O(n2).
Bước 4 (cập nhật mảng f lagT ): Ta lưu ý rằng với mọi m ∈ M, m ∈ K + ⇔ m ∈ 1M .K + ⇔ (∃e1, e2, . . . , el ∈ M : e1 ∈ 1M .K, e2 ∈ e1.K, e3 ∈
e2.K, . . . , m = el ∈ el−1.K), hoặc tương đương, tồn tại một đường đi từ 1M đến m trong đồ thị G. Sử dụng thuật
toán tìm đường đi ngắn nhất (thuật toán Dijkstra [4; 27]), ta có thể xây dựng một
thủ tục visit(1M ) với độ phức tạp thời gian O(n2) để cập nhật mảng f lagT (tức là
f lagT (m) = 1 ⇔ m ∈ T ).
Bước 5 (cập nhật mảng f lagS): Có thể xảy ra hai trường hợp Nếu 1M ∈ K +, hoặc tương đương, f lagT (1M ) = 1 thì đặt f lagS(e) = f lagT (e) với e ∈ M bất kỳ. 49 2.2 Thuật toán kiểm định ω-mã Ngược lại, 1M /∈ K +, thì đặt f lagS(e) = f lagT (e) với 1M 6= e ∈ M bất kỳ và f lagS(1M ) = 1. Bước này có độ phức tạp thời gian là O(n). (cid:3) Vì vậy, độ phức tạp thời gian và bộ nhớ của toàn bộ 5 bước là O(n2).
Chứng minh được hoàn thành. Nhận xét 2.7
Như một hệ quả trực tiếp của Bổ đề 2.9, từ một đồng cấu vị nhóm
h : A∗ → M thỏa ngôn ngữ chính quy X ⊆ A∗, Card(M) = n, ta có thể định nghĩa
P = K ∗ từ K = h(A) với độ phức tạp thời gian là O(n2). Sử dụng P này, ta có thể
định nghĩa một toàn cấu vị nhóm h0 : A∗ → P cũng thỏa X. Cho X ⊆ A+ và giả sử h : A∗ → P là một toàn cấu vị nhóm thỏa X.
Định lý 2.8
Khi đó, tồn tại một thuật toán có độ phức tạp về mặt thời gian là O(n2) để kiểm định
P có ρ-chu trình hay không. Chứng minh. Ta có thể giả thiết X được cho bởi bộ ba (h, K, P ) với h−1(K) = X.
Bước 1 (xây dựng G0). Từ P, K, ta xây dựng S = K ∗, T = K + với độ phức tạp thời
gian O(n2) nhờ Bổ đề 2.9. Sử dụng S, T, K, P , ta định nghĩa một đồ thị G0 = (V, E), với V = P × I. Ở đó I = {1, 2} và E được thiết lập nhờ thủ tục sau đây. Thủ tục 2.2 Xây dựng đồ thị G0 for e ∈ P do for s ∈ P do if s ∈ S (hoặc tương đương f lagS(s) = 1) then red
−−→ (e.s, 2)) to E add ((e, 1) for m ∈ P do for e ∈ P do if m.e ∈ K (hoặc tương đương f lagK(m.e) = 1) then blue
−−→ (e, 1)) to E add ((m, 2) if m.e ∈ K and m ∈ T and e 6= 1P then start(e, 1) = 1 Lưu ý rằng ta biểu diễn start(e, 1) = 1 thay cho điều kiện e ∈ T −1K − L, trong đó start là một mảng cỡ n phần tử trong P . Vì vậy, xây dựng đồ thị G0 đòi hỏi thời gian O(n2). Bước 2 (kiểm định ρ-chu trình trong G0). Ta thực hiện thủ tục sau Thủ tục 2.3 Kiểm định ρ-chu trình trong đồ thị G0 boolean ContainsCycle (Graph g) for each vertex v in g do
v.mark = WHITE 50 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG for each vertex v in g do if v.mark == WHITE and start(v, 1) == 1 then if Visit(g, v) then
return TRUE return FALSE boolean Visit (Graph g, Vertex v)
v.mark = GREY for each edge (v, u) in g do if u.mark == GREY and u.index == 1 then return TRUE else if u.mark == WHITE then if visit(g, u) then return TRUE v.mark = BLACK
return FALSE Lưu ý ta sử dụng ký hiệu u.index = 1 để biểu diễn (u, 1) ∈ V .
Thuật toán chi tiết được thiết lập trong Thủ tục 2.3 được gọi là thuật toán Coloured
DFS (Depth First Search) có độ phức tạp thời gian là O(Card(V ) + Card(E)) [4; 27].
Ta có Card(V ) = 2.Card(P ) ≤ 2.(Card(M) + 1) = 2n + 2, Card(E) ≤ (2n + 2)2. Vì
vậy, Bước 2 có thể được thực hiện trong thời gian O(n2). Vậy, độ phức tạp thời gian của thuật toán kiểm định ρ-chu trình trong P là O(n2).
(cid:3)
Chứng minh được hoàn thành. Thuật toán 2.4 Kiểm định ω-mã cho trường hợp ngôn ngữ chính quy Đầu vào: Một ngôn ngữ chính quy X ⊆ A+ cho bởi bộ ba (ϕ, M, B), Đầu ra:
Bước 1: với ϕ : A∗ → M là một đồng cấu vị nhóm thỏa X,
M là một vị nhóm hữu hạn, B ⊆ M, X = ϕ−1(B)
“YES” nếu X là ω-mã, “NO” nếu X không là ω-mã
Từ bộ (ϕ, M, B), ta xây dựng một toàn cấu vị nhóm
h : A∗ → P ⊆ M 1 thỏa cả X và Y = {ε}
{nhờ phương pháp trong Ví dụ 1.4 (Cách 2)}
Tính K = P ∩ B thỏa h−1(K) = X
Tính T = K +, S = K ∗ Bước 2:
Bước 3: Bước 4: Từ P, K, S, T xây dựng đồ thị G với tập đỉnh P × I {nhờ phương pháp được đề cập trong phần chứng minh của Định lý 2.8 (Bước 1)} Bước 5: Kiểm định ρ-chu trình trong G if tồn tại ρ-chu trình trong G then 2.3 Thuật toán kiểm định Z-mã 51 return “NO” else return “YES” Phân tích độ phức tạp thời gian của thuật toán. Bước 1, nhờ sử dụng Bổ đề 2.9 và phương pháp được đề cập trong Ví dụ 1.4 (Cách 2),
định nghĩa hai mảng f lagP, f lagB có độ phức tạp thời gian là O(n2). Bước 2, tính K đòi hỏi thời gian O(n) bởi các điều kiện: f lagK(x) = 1 khi và chỉ khi
f lagP (x) = 1 và f lagB(x) = 1 với x ∈ M 1 bất kỳ. Bước 3, tính T = K +, S = K ∗ là các tập con của P trong thời gian O(n2) nhờ Bổ đề
2.9. Bước 4 và 5 có độ phức tạp thời gian là O(n2) (Định lý 2.8). Như một hệ quả của các Định lý 2.7 và 2.8, kết quả chính của phần này được phát biểu như sau. Cho một bộ ba (ϕ, M, B), ϕ : A∗ → M là một đồng cấu vị nhóm thỏa
Định lý 2.9
X, M là một vị nhóm hữu hạn, B ⊆ M, X = ϕ−1(B) là dữ liệu đầu vào, Thuật
toán 2.4 cho phép ta kiểm định X có là ω-mã không với độ phức tạp thời gian O(n2),
n = Card(M). Tiêu chuẩn kiểm định Z-mã cho ngôn ngữ chính quy đã được đề xuất trong [10; 11; 34].
Trong mục này, từ phương pháp thiết lập thuật toán hiệu quả kiểm định ω-mã cho
ngôn ngữ từ hữu hạn đã nhận được ở phần trước và thuật toán kiểu Sardinas-Patterson [34], ta mở rộng tiếp cho trường hợp ngôn ngữ từ vô hạn hai phía, từ đó cho phép nhận
được một thuật toán hiệu quả kiểm định Z-mã. Trước hết ta nhắc lại tiêu chuẩn kiểm định Z-mã được đề xuất trong [34]. Giả sử X ⊆ A+ là một ngôn ngữ chính quy trên A. Ta lưu ý rằng một từ w ∈ A+
là một overlap của hai từ x, y ∈ X nếu tồn tại các từ u, v ∈ A∗ sao cho uw = x, wv =
y, uv 6= ε. Tập overlap của các phần tử thuộc X được định nghĩa như sau W (X) = ((A+)−1X ∩ X) ∪ (X(A+)−1 ∩ X) ∪ (((A+)−1X ∩ X(A+)−1) − {ε}) Với mỗi w ∈ W (X) ta định nghĩa hai dãy các tập con Ui(w, X) và Vi(w, X) của A∗ 52 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG như sau (2.9) U1(w, X) = w−1X − {ε},
Ui+1(w, X) = Ui(w, X)−1X ∗,
V1(w, X) = Xw−1 − {ε}, Vi+1(w, X) = X ∗Vi(w, X)−1, i ≥ 1. Khi đó, định lý sau đây cung cấp một tiêu chuẩn kiểm định Z-mã. Giả sử X ⊆ A+ là một ngôn ngữ chính quy. Khi đó X là Định lý 2.10 ([34])
Z-mã khi và chỉ khi với mọi w ∈ W (X), (i) Nếu w ∈ W ∩ X thì Ui(w, X) = ∅ và Vj(w, X) = ∅ với i, j ≥ 1;
(ii) Nếu w ∈ W − X thì Ui(w, X) = ∅ hoặc Vj(w, X) = ∅ với i, j ≥ 1. Để áp dụng phương pháp trong Mục 2.2 thiết lập các thuật toán mới kiểm định Z-mã trong mục này, ta đưa ra các khái niệm và kết quả mở rộng sau đây. Cho X ⊆ A+ và u ∈ A+. Một ω-từ bên phải (t.ư. bên trái) α được
Định nghĩa 2.2
gọi là có dạng u-nhập nhằng vô hạn phải (t.ư. trái) đối với X nếu có xi, yj ∈ X, i, j =
1, 2, . . . sao cho α = x1x2 · · · = uy1y2 · · · với |u| < |x1| (t.ư. α = · · · x2x1u = · · · y2y1
với |u| < |y1|). Khi X đã xác định, để đơn giản, ta chỉ cần gọi α là u-nhập nhằng vô
hạn phải (t.ư. trái). Cho X ⊆ A+ và U = W (X), ta xem xét các tập phần dư Ui, Vi kết hợp với X được định nghĩa đệ quy như sau U1 = (UX ∗)−1X − {ε} Ui+1 = (UiX ∗)−1X, (2.10) V1 = X(UX ∗)−1 − {ε} Vi+1 = X(ViX ∗)−1 với mọi i ≥ 1. Cho X ⊆ A+ là một ngôn ngữ chính quy, U = W (X) và cho Ui, Vi (i ≥ Bổ đề 2.10
1) được định nghĩa theo công thức (2.10). Khi đó, với mọi u ∈ U, (i) không tồn tại ω-từ bên phải có dạng u-nhập nhằng vô hạn phải khi và chỉ khi tồn tại i ≥ 1 sao cho Ui = ∅. (ii) không tồn tại ω-từ bên trái có dạng u-nhập nhằng vô hạn trái khi và chỉ khi tồn tại i ≥ 1 sao cho Vi = ∅. Chứng minh. (i) Chiều thuận. Nếu không tồn tại ω-từ bên phải có dạng u-nhập nhằng vô hạn phải thì tồn tại i ≥ 1 sao cho Ui = ∅. 2.3 Thuật toán kiểm định Z-mã 53 Phản chứng, giả sử không tồn tại ω-từ bên phải có dạng u-nhập nhằng vô hạn phải và giả sử Ui 6= ∅ với mọi i ≥ 1. 2, . . . bằng cách đặt 1, u0 Chọn N là một số nguyên không bé hơn chỉ số n của X, và uN ∈ UN . Khi đó, tồn tại
ui ∈ Ui, i = 1, 2, . . . , N −1 sao cho u1 ∈ (uX ∗)−1X, ui+1 ∈ (uiX ∗)−1X, i = 1, 2, . . . , N −
1 với ε 6= u ∈ U, hoặc tương đương, uu1 ∈ X, uiX ∗ui+1 ∈ X, i = 1, 2, . . . , N − 1. Trong
số u1, u2, . . . , uN ta có thể chọn ra uq và up sao cho p < q và up ∼X uq. Ta định nghĩa
một dãy vô hạn các từ u0 1 ≤ i ≤ q − 1 u0
i = ui, và 0 ≤ i ≤ q − 1 u0
q+i = up+t, với t là số nguyên không âm nhỏ nhất sao cho t = i mod (q − p). Ta có thể kiểm tra i = u0
x0 iX ∗u0 i+1 ∈ X ∗ hệ thức với i = 1, 2, . . . và 1 = uu1 ∈ X. x0 = uu0 1X ∗u0 2X ∗ · · · được biểu diễn theo hai dạng Ta xem xét tích vô hạn của các từ uu0 1)(X ∗)(u0 2X ∗u0 3) · · · = u(u0 1X ∗u0 2)(u0 3X ∗u0 4) · · · (uu0 hoặc x1x2 · · · = uy1y2 · · · với x1 ∈ X, |u| < |x1|, xi, yj ∈ X. Vì vậy, ω-từ bên phải α = x1x2 · · · = uy1y2 · · · với |u| < |x1| có dạng u-nhập nhằng vô hạn phải, trái với giả thiết. Chiều ngược. Nếu tồn tại i ≥ 1 sao cho Ui = ∅ thì không tồn tại ω-từ bên phải có dạng u-nhập nhằng vô hạn phải. Phản chứng, giả sử tồn tại i ≥ 1 sao cho Ui = ∅ và giả sử tồn tại u ∈ U và xi, yj ∈ X, i, j = 1, 2, . . . sao cho x1x2 · · · = uy1y2 · · · với |u| < |x1|. Chứng minh được hoàn thành nếu điều khẳng định sau đây được kiểm chứng: Với
mọi k ≥ 1, tồn tại một từ z ∈ Uk và hai số nguyên i ≥ 1, j ≥ 0 sao cho một trong hai
điều kiện sau đây được thỏa (a) x1 · · · xiz = uy1 · · · yj xi+1xi+2 · · · = zyj+1yj+2 · · · với |u| < |x1| và |z| ≤ |yj|. (b) x1 · · · xi = uy1 · · · yjz 54 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG zxi+1xi+2 · · · = yj+1yj+2 · · · với |u| < |x1| và |z| ≤ |xi|. Ta chứng minh quy nạp theo k.
Khi đó, từ giả thiết |u| < |x1|. Ta có z ∈ A+ sao cho x1 = uz. Từ đó z = u−1x1 ∈ (UX ∗)−1X − {ε} = U1. Vậy ta có x1 = uz zx2x3 · · · = y1y2 · · · với |u| < |x1| và |z| < |x1|. Vậy điều khẳng định đúng với k = 1. Giả sử điều khẳng định đúng với k > 1, ta chứng minh nó cũng đúng với k + 1.
Theo giả thiết, tồn tại z ∈ Uk và hai số nguyên i ≥ 1, j ≥ 0 sao cho điều kiện (a) hoặc
(b) được thỏa. Giả sử (a) được thỏa, tức là ta có x1x2 · · · xiz = uy1 · · · yj
xi+1xi+2 · · · = zyj+1yj+2 · · · với |u| < |x1| và |z| ≤ |yj|. So sánh độ dài của z và xi+1, ta phân biệt hai trường hợp Trường hợp 1: |z| ≤ |xi+1|. Ta có z0 ∈ A∗ sao cho xi+1 = zz0. Vậy z0 = z−1xi+1 ∈ (UkX ∗)−1X = Uk+1. Ta có x1 · · · xi+1 = uy1 · · · yjz0 z0xi+2xi+3 · · · = yj+1yj+2 · · · với |u| < |x1| và |z0| ≤ |xi+1|. Nghĩa là điều kiện (b) đúng. Trường hợp 2: |z| > |xi+1|. Khi đó, tồn tại p ≥ i + 1 và z0 ∈ A∗ sao cho z =
xi+1xi+2 · · · xpz0 và |z0| ≤ |xp+1|. Mặt khác, từ |z| ≤ |yj| ta có u0 ∈ A∗ sao cho yj = u0z,
hoặc tương đương, yj = u0xi+1xi+2 · · · xpz0. Vì z = u0−1yj ∈ Uk = (Uk−1X ∗)−1X, ta có
u0 ∈ Uk−1X ∗. Do đó u0xi+1xi+2 · · · xp ∈ Uk−1X ∗. Ta suy ra z0 = (u0xi+1xi+2 · · · xp)−1yj ∈
(Uk−1X ∗)−1X = Uk. Khi đó tồn tại z00 ∈ A∗ sao cho |z00| ≤ |xp+1| và z00 = z0−1xp+1 ∈
(UkX ∗)−1X = Uk+1. Vậy ta có x1 · · · xp+1 = uy1 · · · yjz00 z00xp+2xp+3 · · · = yj+1yj+2 · · · với |u| < |x1| và |z00| ≤ |xp+1|. Nghĩa là điều kiện (b) đúng. Giả sử (b) được thỏa, tức là ta có x1 · · · xi = uy1 · · · yjz zxi+1xi+2 · · · = yj+1yj+2 · · · với |u| < |x1| và |z| ≤ |xi|. So sánh độ dài của z và yj+1, ta xét hai trường hợp tương tự như chứng minh trên và
kết luận điều kiện (a) đúng trong cả hai trường hợp này. Vậy điều khẳng định đúng với mọi k ≥ 1. Điều này có nghĩa là Ui 6= ∅ với mọi i ≥ 1, trái với giả thiết. (cid:3) Chứng minh (i) được hoàn thành.
(ii) được chứng minh tương tự như đã làm với (i). 2.3 Thuật toán kiểm định Z-mã 55 Hệ quả sau đây được suy trực tiếp từ Định lý 2.5 và Bổ đề 2.10 Hệ quả 2.10 Cho X ⊆ A+ là một ngôn ngữ chính quy. Khi đó, (i) X là ω-mã bên phải khi và chỉ khi với mọi x ∈ X, không tồn tại ω-từ bên phải có dạng x-nhập nhằng vô hạn phải. (ii) X là ω-mã bên trái khi và chỉ khi với mọi x ∈ X, không tồn tại ω-từ bên trái có dạng x-nhập nhằng vô hạn trái. Sau đây là kết quả cơ bản của mục này nhằm thiết lập một tiêu chuẩn cần và đủ kiểm định Z-mã cho các ngôn ngữ chính quy. Cho X ⊆ A+ là một ngôn ngữ chính quy và U = W (X). Khi đó, X Định lý 2.11
là Z-mã khi và chỉ khi với mọi u ∈ U, (i) nếu u ∈ U ∩ X thì không tồn tại ω-từ bên phải có dạng u-nhập nhằng vô hạn phải và không tồn tại ω-từ bên trái có dạng u-nhập nhằng vô hạn trái. (ii) nếu u ∈ U − X thì không tồn tại ω-từ bên phải có dạng u-nhập nhằng vô hạn phải hoặc không tồn tại ω-từ bên trái có dạng u-nhập nhằng vô hạn trái. Chứng minh. Chiều thuận. Nếu X là Z-mã thì (i) và (ii) đúng. Phản chứng, giả sử X là Z-mã và giả sử (i) hoặc (ii) không đúng.
Giả sử (i) không đúng, tức là tồn tại u ∈ U∩X và xi, yj ∈ X, i, j = −2, −1, 0, 1, 2, . . . sao cho x0x1 · · · = uy1y2 · · · với |u| < |x0|, hoặc · · · x−2x−1u = · · · y−2y−1y0 với |u| < |y0|. Nếu x0x1 · · · = uy1y2 · · · với |u| < |x0|, thì tồn tại hai dãy vô hạn hai phía các
từ của X: . . . , x−2, x−1, x0, x1, x2, . . . và . . . , y−2 = x−2, y−1 = x−1, y0 = u, y1, y2, . . . sao
cho · · · x−2x−1u = · · · y−2y−1y0, |u| < |x0|,
x0x1 · · · = uy1y2 · · · , |u| = |y0| với u 6= x0. Vậy X không là Z-mã, trái với giả thiết.
Nếu · · · x−2x−1u = · · · y−2y−1y0 với |u| < |y0|, thì tồn tại hai dãy vô hạn hai phía
các từ của X: . . . , x−2, x−1, x0 = u, x1, x2, . . . và . . . , y−2, y−1, y0, y1 = x1, y2 = x2, . . .
sao cho · · · x−2x−1u = · · · x−2x−1y0, |u| = |x0|,
x0x1 · · · = uy1y2 · · · , |u| < |y0| 56 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG với u 6= y0. Vậy X không là Z-mã, trái với giả thiết.
Ngược lại, giả sử (ii) không đúng, tức là tồn tại u ∈ U ∩ X và xi, yj ∈ X, i, j = −2, −1, 0, 1, 2, . . . sao cho x0x1 · · · = uy1y2 · · · với |u| < |x0|, và · · · x−2x−1u = · · · y−2y−1y0 với |u| < |y0|. Vậy, theo định nghĩa X không là Z-mã, trái với giả thiết.
Chiều ngược. Nếu (i) và (ii) đúng thì X là Z-mã.
Phản chứng, giả sử X không là Z-mã. Khi đó tồn tại các quan hệ · · · x−2x−1u = · · · y−2y−1y0, |u| ≤ |x0|,
x0x1 · · · = uy1y2 · · · , |u| ≤ |y0| với u 6= x0 hoặc u 6= y0. Từ các điều kiện |u| ≤ |x0| và |u| ≤ |y0|, suy ra u ∈ U. Ta xét hai trường hợp
Trường hợp 1: u ∈ U ∩ X. Khi đó,
Nếu u 6= x0 thì ta có quan hệ x0x1 · · · = uy1y2 · · · , |u| < |x0|. Ngược lại, nếu u 6= y0 thì ta có quan hệ · · · x−2x−1u = · · · y−2y−1y0, |u| < |y0|. Điều này có nghĩa là (i) không đúng, trái với giả thiết. Trường hợp 2: u ∈ U − X. Khi đó u 6= x0 và u 6= y0. Từ đó ta có x0x1 · · · = uy1y2 · · · , |u| < |x0|, và · · · x−2x−1u = · · · y−2y−1y0, |u| < |y0|. Điều này có nghĩa là (ii) không đúng, trái với giả thiết. (cid:3) Chứng minh được hoàn thành. Nhận xét 2.8 Các Định lý 2.10 và 2.11 là các tiêu chuẩn toán học cho phép ta xây dựng các thuật toán kiểm định Z-mã. Tuy nhiên, việc thiết kế thuật toán để tính các
tập Ui(w, X), Vi(w, X) trực tiếp trên ngôn ngữ chính quy X đã cho theo công thức
(2.9) hoặc xem xét tất cả các ω-từ bên phải và bên trái gặp trở ngại vì X ∗, AN và NA
có vô hạn phần tử. Thay vào đó, luận án thiết lập các thuật toán kiểm định Z-mã dựa
trên các cấu trúc hữu hạn là vị nhóm và đồ thị hữu hạn. Phương pháp chi tiết xây dựng các thuật toán này là nội dung của phần tiếp theo. 2.3 Thuật toán kiểm định Z-mã 57 Giả sử h : A∗ → P là một toàn cấu vị nhóm thỏa đồng thời Y = {ε} và X ⊆ A+,
với P là một vị nhóm hữu hạn, X = h−1(K), Y = h−1(L), L = {1P }, Q = h(A+), với
K, L, Q ⊆ P . Ta xét tập f(K) của các phần tử của K định nghĩa bởi: f(K) = (Q−1K ∩ K) ∪ (KQ−1 ∩ K) ∪ ((Q−1K ∩ KQ−1) − L). Hơn nữa, nếu không sợ hiểu nhầm, ta dùng ký hiệu f thay cho f(K). Trước hết, ta thiết lập các bổ đề kỹ thuật sau làm cơ sở toán học cho thuật toán. Cho X ⊆ A+ là một ngôn ngữ chính quy và giả sử h : A∗ → P
Bổ đề 2.11
là một toàn cấu vị nhóm thỏa cả Y = {ε} và X, với P là một vị nhóm hữu hạn,
X = h−1(K), Y = h−1(L), L = {1M }, Q = h(A+), K, L, Q ⊆ P . Khi đó, W (X) = h−1(f(K)). Chứng minh. Ta chứng minh W (X) ⊆ h−1(f(K)). Thật vậy, với mọi w ∈ A∗ nếu w ∈ W (X) ta có w ∈ ((A+)−1X ∩ X) hoặc w ∈ (X(A+)−1 ∩ X) hoặc w ∈ ((A+)−1X ∩ X(A+)−1) − {ε}. Nếu w ∈ ((A+)−1X ∩ X), thì tồn tại u ∈ A+, x, x0 ∈ X sao cho w = u−1x và
w = x0, hoặc tương đương x = uw và w = x0. Ta có h(x) = h(uw) = h(u).h(w) và
h(w) = h(x0), hay h(w) = h(u)−1h(x) và h(w) = h(x0). Vì h(A+) = Q và h(X) = K,
ta có h(u) ∈ Q, h(x), h(x0) ∈ K. Ta suy ra h(w) = h(u)−1h(x) ∈ Q−1K và h(w) =
h(x0) ∈ K. Vậy h(w) ∈ Q−1K ∩ K ⊆ f(K) và do đó w ∈ h−1(f(K)). Nếu w ∈ (X(A+)−1 ∩ X) hoặc w ∈ ((A+)−1X ∩ X(A+)−1) − {ε}, sử dụng tính chất đối ngẫu, chứng minh tương tự ta cũng suy ra w ∈ h−1(f(K)). Tiếp theo, ta chứng minh h−1(f(K)) ⊆ W (X). Thật vậy, với mọi w ∈ h−1(f(K)), ta có h(w) ∈ f(K) = (Q−1K ∩ K) ∪ (KQ−1 ∩
K) ∪ ((Q−1K ∩ KQ−1) − L). Khi đó h(w) ∈ (Q−1K ∩ K) hoặc h(w) ∈ (KQ−1 ∩ K)
hoặc h(w) ∈ (Q−1K ∩ KQ−1) − L. Nếu h(w) ∈ (Q−1K ∩K), tồn tại q ∈ Q, k, k0 ∈ K sao cho h(w) = q−1k và h(w) = k0,
hoặc tương đương k = q.h(w) và h(w) = k0. Vì X = h−1(K), tồn tại x, x0 ∈ X sao
cho k = h(x), k0 = hx0và vì h là toàn cấu, tồn tại u ∈ A+ sao cho q = h(u). Ta có
h(uw) = h(u).h(w) = q.h(w) = k = h(x) ∈ K và h(w) = h(x0) ∈ K. Vậy uw ∈ X và
w ∈ X. Khi đó w ∈ (A+)−1X và w ∈ X. Vậy w ∈ ((A+)−1X ∩ X) ⊆ W (X). Nếu h(w) ∈ (KQ−1 ∩ K) hoặc h(w) ∈ (Q−1K ∩ KQ−1) − L, sử dụng tính chất đối ngẫu, chứng minh tương tự ta cũng suy ra w ∈ W (X). (cid:3) Chứng minh được hoàn thành. 58 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG Cho X ⊆ A+ là một ngôn ngữ chính quy và giả sử h : A∗ → P
Định nghĩa 2.3
là một toàn cấu vị nhóm thỏa cả Y = {ε} và X, với P là một vị nhóm hữu hạn,
X = h−1(K), Y = h−1(L), L = {1M }, S = K ∗, K, L ⊆ P . Đặt O = f(K), ta định
nghĩa (i) một ρ−chu trình kiểu 1 trong P là dãy e1, e2, . . . , ej sao cho e1, e2, . . . , ej−1 tất cả khác nhau, nhưng có ej = ei, j > i với e1 ∈ (O.S)−1K − L, (2.11) i ≥ 1. ei+1 ∈ (ei.S)−1K, (ii) một ρ−chu trình kiểu 2 trong P là dãy f1, f2, . . . , fj sao cho f1, f2, . . . , fj−1 tất cả khác nhau, nhưng có fj = fi, j > i với f1 ∈ K(O.S)−1 − L, (2.12) i ≥ 1. fi+1 ∈ K(ei.S)−1, (iii) một ρ−chu trình kiểu 1 trong P được gọi là khởi đầu từ o ∈ O nếu e1 ∈ (o.S)−1K − L. (iv) một ρ−chu trình kiểu 2 trong P được gọi là khởi đầu từ o ∈ O nếu f1 ∈ K(o.S)−1 − L. Cho X ⊆ A+ là một ngôn ngữ chính quy, Ui, Vi (i ≥ 1) được định nghĩa
Bổ đề 2.12
theo công thức (2.10). Giả sử h : A∗ → P là một toàn cấu vị nhóm thỏa cả Y = {ε}
và X, với P là một vị nhóm hữu hạn, X = h−1(K), Y = h−1(L), L = {1M }, S = K ∗,
K, L ⊆ P và giả sử e1, e2, . . . , ej = ei, j > i, f1, f2, . . . , fj = fi, j > i là các ρ-chu trình
kiểu 1 và 2 trong P . Khi đó, ta có và h−1(ei) ⊆ Ui h−1(fi) ⊆ Vi với mọi i ≥ 1. Chứng minh. Ta chứng minh quy nạp theo i. Với i = 1. Trước hết, ta chứng minh h−1(e1) ⊆ U1. Đặt α ∈ h−1(e1), ta có h(α) =
e1 ∈ O−1K − L với O = f(K). Khi đó, tồn tại o ∈ O, s ∈ S, k ∈ K sao cho h(α) ∈
(o.s)−1k, hoặc tương đương, k = o.s.h(α). Vì e1 6= 1P ta có h(α) 6= 1P . Từ s ∈ S = K ∗
suy ra tồn tại λ ≥ 0 và k1, k2, . . . , kλ ∈ K sao cho s = k1.k2. · · · .kλ. Vì h là toàn
cấu và K = h(X), tồn tại xi ∈ X sao cho ki = h(xi), i = 1, . . . , λ, và tồn tại
x ∈ X, u ∈ U = W (X) sao cho k = h(x) và o = h(u). Mặt khác, ta có 1P = h(ε). Khi đó h(x) = h(u).h(x1).h(x2). · · · .h(xλ).h(α) =
h(ux1x2 · · · xλα) ∈ K và h(α) 6= h(ε). Ta suy ra ux1x2 · · · xλα ∈ X và α 6= ε. Vậy, ta
có ε 6= α ∈ (UX ∗)−1X − {ε} = U1. Trường hợp h−1(f1) ⊆ V1 chứng minh tương tự. Vậy, điều khẳng định đúng với i = 1. 2.3 Thuật toán kiểm định Z-mã 59 Giả sử điều khẳng định đúng với i > 1, ta chứng minh nó cũng đúng với i + 1. Trước hết, ta chứng minh h−1(ei+1) ⊆ Ui+1. Đặt α ∈ h−1(ei+1) và đặt β ∈ h−1(ei). Khi đó h(α) = ei+1 ∈ (ei.S)−1K. Ta có h(α) ∈ (ei.S)−1K ⇔ (∃s ∈ S, k ∈ K : h(α) ∈ (ei.s)−1k ⇔ k = ei.s.h(α)). Từ s ∈ S = K ∗ suy ra tồn tại λ ≥ 0 và k1, k2, . . . , kλ ∈ K sao cho s = k1.k2. · · · .kλ.
Vì h là toàn cấu và K = h(X), tồn tại xi ∈ X sao cho ki = h(xi), i = 1, . . . , λ, và
tồn tại x ∈ X sao cho k = h(x). Hơn nữa theo giả thiết ei = h(β). Vậy, ta có h(x) =
h(β).h(x1).h(x2). · · · .h(xλ).h(α) = h(βx1x2 · · · xλα) ∈ K. Ta suy ra βx1x2 · · · xλα =
x ∈ X. Mặt khác, theo giả thiết quy nạp ta có β ∈ h−1(ei) ⊆ Ui. Vậy, ta có α =
(βx1x2 · · · xλ)−1x ∈ (UiX ∗)−1X = Ui+1. Trường hợp h−1(fi+1) ⊆ Vi+1 ta chứng minh tương tự. (cid:3) Vậy, điều khẳng định đúng với mọi i ≥ 1. Cho X ⊆ A+ là một ngôn ngữ chính quy và giả sử h : A∗ → P
Bổ đề 2.13
là một toàn cấu vị nhóm thỏa cả Y = {ε} và X, với P là một vị nhóm hữu hạn,
X = h−1(K), Y = h−1(L), L = {1M }, S = K ∗, K, L ⊆ P . Đặt U = W (X). Khi đó, (i) tồn tại một ω-từ bên phải có dạng u-nhập nhằng vô hạn phải với u ∈ U khi và chỉ khi tồn tại một ρ−chu trình kiểu 1 trong P . (ii) tồn tại một ω-từ bên trái có dạng u-nhập nhằng vô hạn trái với u ∈ U khi và chỉ khi tồn tại một ρ−chu trình kiểu 2 trong P . Chứng minh. (i)
Chiều thuận. Nếu tồn tại một ω-từ bên phải có dạng u-nhập nhằng vô hạn phải với u ∈ U thì tồn tại một ρ−chu trình kiểu 1 trong P . Thật vậy, nếu tồn tại một ω-từ bên phải có dạng u-nhập nhằng vô hạn phải với
u ∈ U thì theo Bổ đề 2.10, Ui 6= ∅ với mọi i ≥ 1. Đặt N = Card(P ) + 1, khi đó ta
có dãy u1, u2, . . . , uN −1, uN với u1 ∈ (uX ∗)−1X − {ε}, ui+1 ∈ (uiX ∗)−1X, N > i ≥ 1.
Thật vậy, ta xây dựng dãy này như sau. Trước tiên, vì UN 6= ∅, ta luôn chọn được
uN ∈ UN = (UN −1X ∗)−1X. Tiếp theo, ta có uN ∈ (UN −1X ∗)−1X ⇔ (∃x ∈ X ∗, xN −1 ∈ X, uN −1 ∈ UN −1 : uN = (uN −1x)−1xN −1 ∈
(uN −1X ∗)−1X. Vậy ta luôn có thể chọn uN −1 ∈ UN −1 sao cho uN ∈ (uN −1X ∗)−1X. Tương tự, ta có uN −1 ∈ (uN −2X ∗)−1X, . . . , u1 ∈ (uX ∗)−1X − {ε}.
Từ dãy u1, u2, . . . , uN −1, uN , ta chỉ ra có tồn tại một ρ−chu trình kiểu 1 trong P .
Trước hết, đặt e1 = h(u1). Khi đó e1 6= 1P vì u1 6= ε. Ta có u1 ∈ (uX ∗)−1X − {ε} ⇔ (∃y ∈ X ∗, x ∈ X : ε 6= u1 = (uy)−1x ⇔ x = uyu1, u1 6= ε). Từ y ∈ X ∗ suy ra tồn tại λ ≥ 0 và x1, x2, . . . , xλ ∈ X sao cho y = x1.x2. · · · .xλ. Khi
đó x = uyu1 = ux1x2 . . . xλu1 và u1 6= ε. Ta có h(x) = h(u).h(x1).h(x2). . . . .h(xλ).h(u1) 60 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG với h(x), h(x1), h(x2), . . . , h(xλ) ∈ K, h(u) ∈ O = f(K) và h(u1) 6= 1P . Vậy h(u1) =
e1 = (h(u).h(x1).h(x2). . . . .h(xλ))−1h(x) ∈ (O.S)−1K − L. Tiếp theo, đặt e2 = h(u2), ta có u2 ∈ (u1X ∗)−1X ⇔ (∃y = x1x2 · · · xλ ∈ X ∗, x ∈ X : u2 = (u1y)−1x ⇔ x =
u1x1x2 · · · xλu2). Khi đó h(x) = h(u1).h(x1).h(x2). . . . .h(xλ).h(u2) với h(x), h(x1), h(x2), . . . , h(xλ) ∈ K. Ta có e2 = h(u2) = (h(u1).h(x1).h(x2). . . . .h(xλ))−1h(x) ∈ (e1.S)−1K. Tương tự, ta có e3 ∈ (e2.S)−1K, . . . , eN ∈ (eN −1.S)−1K.
Nếu e1, e2, . . . , eN tất cả khác nhau thì số các ei khác nhau sẽ vượt quá lực lượng
của P . Vì vậy, phải tồn tại i < j ≤ N sao cho ej = ei. Tức là, tồn tại ρ−chu trình kiểu
1 e1, e2, . . . , ej = ei, j > i trong P . Chiều ngược. Nếu tồn tại một ρ−chu trình kiểu 1 trong P thì tồn tại một ω-từ bên phải có dạng u-nhập nhằng vô hạn phải với u ∈ U. Thật vậy, giả sử tồn tại một ρ−chu trình kiểu 1 e1, e2, . . . , ej = ei, j > i trong P .
Từ ei đến ei+1, ta vẽ một mũi tên ei → ei+1 nếu ei+1 ∈ (ei.S)−1K. Khi đó, theo giả
thiết, ta có một đường đi e1 → e2 → · · · → ei → ei+1 → · · · → ej−1 → ej. Ta có ei+1 ∈ (ei.S)−1K = (ej.S)−1K vì ej = ei. Vậy, ta có một đường đi (2.13) e1 → e2 → · · · → ei → ei+1 → · · · → ej−1 → ej → ei+1. Tức là tồn tại một đường đi vô hạn e1 → e2 → · · · → ei → ei+1 → · · · → ej−1 → ej → ei+1 → ei+2 → · · · Từ đó, tồn tại một dãy vô hạn e1, e2, . . . , ei, ei+1, . . . , ej = ei, ej+1 = ei+1, . . . , theo Bổ
đề 2.12, ∅ 6= h−1(ei) ⊆ Ui, ∀i ≥ 1. Ta suy ra Ui 6= ∅ với mọi i ≥ 1. Theo Bổ đề 2.10,
tồn tại một ω-từ bên phải có dạng u-nhập nhằng vô hạn phải với u ∈ U. Chứng minh (i) được hoàn thành. (cid:3) (ii) được chứng minh tương tự như đã làm với (i). Đến đây, như một hệ quả trực tiếp của Định lý 2.11, các Bổ đề 2.11 và 2.13, ta thiết lập kết quả chính của mục này nhằm cung cấp một thuật toán mới kiểm định
Z-mã trên vị nhóm hữu hạn như sau. Cho X ⊆ A+ là một ngôn ngữ chính quy và giả sử h : A∗ → P
Định lý 2.12
là một toàn cấu vị nhóm thỏa cả Y = {ε} và X, với P là một vị nhóm hữu hạn,
X = h−1(K), Y = h−1(L), L = {1M }, S = K ∗, K, L ⊆ P . Đặt O = f(K). Khi đó, X
không là Z-mã khi và chỉ khi tồn tại o ∈ O sao cho một trong các điều kiện sau đúng (i) nếu o ∈ O ∩ K thì tồn tại một ρ−chu trình kiểu 1 hoặc một ρ−chu trình kiểu 2 trong P cùng khởi đầu từ o. 2.3 Thuật toán kiểm định Z-mã 61 (ii) nếu o ∈ O − K thì tồn tại một ρ−chu trình kiểu 1 và một ρ−chu trình kiểu 2 trong P cùng khởi đầu từ o. Trong mục này, ta thiết lập và đánh giá độ phức tạp một thuật toán kiểm định Z-mã
mới dựa trên một kỹ thuật mới: sao chép đồ thị hữu hạn có tô màu cung. Từ vị nhóm
P và K, S ⊆ P được xác định như trong Mục 2.3.2, ta xây dựng một đồ thị có hướng red
−−→ m. có tô màu cung G = (V, E) như sau. Trước hết, ta khởi tạo E = ∅. Đặt V = P và E
được cập nhật như sau. blue
−−→ b và một cung vàng b Nếu m ∈ e.S, thì ta bổ sung vào E một cung đỏ e
Nếu a.b ∈ K, hoặc tương đương, b ∈ a−1K và a ∈ Kb−1 thì ta bổ sung vào E một
yellow
−−−→ a. red
−−→ m cung xanh a
Ta có blue
−−→ e0 ⇔ e0 ∈ (e.S)−1K e (2.14) red
−−→ m và yellow
−−−→ f 0 ⇔ f 0 ∈ K(f.S)−1 f (2.15) Từ đó, mỗi đường đi được đề cập trong (2.13) e1 → e2 → · · · ei → ei+1 → · · · → ej−1 → ej → ei+1 và tương tự, mỗi đường đi f1 → f2 → · · · fi → fi+1 → · · · → fj−1 → fj → fi+1 red
−−→ · · · red
−−→ · · · có thể được mở rộng thành các đường đi tương ứng trong đồ thị G là blue
−−→ ej red
−−→ mj red
−−→ m1 blue
−−→ e2 blue
−−→ ei+1 blue
−−→ ei+1 (2.16) e1 red
−−→ · · · red
−−→ · · · và yellow
−−−→ fj red
−−→ mj red
−−→ m1 yellow
−−−→ f2 yellow
−−−→ fi+1 yellow
−−−→ fi+1 (2.17) f1 Ta gọi các đường đi (2.16) và đường đi (2.17) lần lượt là các ρ−chu trình kiểu 1 và
kiểu 2 trong G. Ký hiệu S1, S2 các tập con của V , S1 = f(K), S2 = K. Khi đó, một
ρ−chu trình kiểu 1 (t.ư. kiểu 2) trong G như trên được gọi là khởi đầu từ một đỉnh
v ∈ S1 nếu có e1 ∈ (v.S)−1K − L (t.ư. f1 ∈ K(v.S)−1 − L) với K, S, L ⊆ P được xác
định như trong Mục 2.3.2. Sau đây, như một hệ quả trực tiếp của Định lý 2.12, ta thiết lập kết quả cơ bản của mục này nhằm cung cấp thuật toán kiểm định Z-mã trên đồ thị hữu hạn cho trường
hợp ngôn ngữ chính quy. 62 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG Cho X ⊆ A+ là một ngôn ngữ chính quy và G = (V, E) là đồ thị có
Định lý 2.13
hướng với S1, S2 ⊆ V được định nghĩa như trên. Khi đó, X không là Z-mã khi và chỉ
khi tồn tại v ∈ S1 sao cho một trong các điều kiện sau đúng (i) nếu v ∈ S1 ∩ S2 thì tồn tại một ρ−chu trình kiểu 1 hoặc một ρ−chu trình kiểu 2 trong G cùng khởi đầu từ v. (ii) nếu v ∈ S1 − S2 thì tồn tại một ρ−chu trình kiểu 1 và một ρ−chu trình kiểu 2 trong G cùng khởi đầu từ v. Phần tiếp theo, ta trình bày chi tiết thuật toán kiểm định Z-mã cung cấp bởi Định
lý 2.13. Giả sử lực lượng của bảng chữ A là một hằng số, đầu vào của thuật toán là
một bộ ba (ϕ, M, B), với ϕ : A∗ → M là một đồng cấu vị nhóm thỏa X, M là một vị
nhóm hữu hạn, B ⊆ M, X = ϕ−1(B) và đầu ra của thuật toán là câu trả lời X có là
Z-mã không. Thuật toán được thiết lập như sau. Theo Bổ đề 2.9, từ một đồng cấu vị nhóm h : A∗ → M thỏa ngôn ngữ
Nhận xét 2.9
chính quy X ⊆ A∗, Card(M) = n, ta có thể định nghĩa P = K ∗ từ K = h(A) với
độ phức tạp thời gian là O(n2). Sử dụng P này, ta có thể định nghĩa một toàn cấu vị
nhóm h0 : A∗ → P cũng thỏa X. Thủ tục tính Q, K + và K ∗ từ K có độ phức tạp thời
gian là O(n2). Định lý 2.14 Cho X ⊆ A+ là một ngôn ngữ chính quy và giả sử h : A∗ → P là
một toàn cấu vị nhóm thỏa X. Khi đó, tồn tại một thuật toán có độ phức tạp về mặt
thời gian là O(n2) để kiểm định P có ρ-chu trình kiểu 1 và kiểu 2 hay không. Chứng minh. Ta có thể giả thiết X được cho bởi bộ ba (h, K, P ) với h−1(K) = X.
Bước 1 (xây dựng G). Từ P, K, ta xây dựng S = K ∗, T = K + với độ phức tạp thời gian là O(n2) nhờ
Bổ đề 2.9. Sử dụng S, T, K, P , ta định nghĩa một đồ thị G = (V, E), với V = P × I,
S1 = f(K), S2 = K, S1, S2 ⊆ V . Ở đó I = {1, 2, 3, 4} và E được thiết lập nhờ thủ tục
sau đây Thủ tục 2.4 Xây dựng đồ thị G for e ∈ P do for s ∈ P do if s ∈ S (hoặc tương đương f lagS(s) = 1) then red
−−→ (e.s, 3)) and ((e, 2) red
−−→ (e.s, 4)) to E add ((e, 1) for m ∈ P do for e ∈ P do blue
−−→ (e, 1)) and ((m, 4) yellow
−−−→ (e, 2)) to E if m.e ∈ K (hoặc tương đương f lagK(m.e) = 1) then add ((m, 3) 2.3 Thuật toán kiểm định Z-mã 63 Vì vậy, xây dựng đồ thị G đòi hỏi thời gian O(n2).
Bước 2 (kiểm định ρ-chu trình kiểu 1 và 2 trong G). Tiếp tục mở rộng thuật toán DFS [4; 27] cho đồ thị G nhận được ở Bước 1, ta
thiết kế hai chương trình con Rightvisit(g, v) và Lef tvisit(g, v) để kiểm định các ρ−chu trình kiểu 1 và kiểu 2 của G. Trong chương trình chính ContainsCycle(g)
ta gọi thực hiện đồng thời hai chương trình con này. Thuật toán chi tiết được thiết
lập trong Thủ tục 2.5 có độ phức tạp thời gian là O(Card(V ) + Card(E)). Ta có
Card(V ) = 2.Card(P ) ≤ 2.(Card(M) + 1) = 2n + 2, Card(E) ≤ (2n + 2)2. Vì vậy, Bước
2 có thể được thực hiện trong thời gian O(n2). Thủ tục 2.5 Kiểm định ρ-chu trình kiểu 1 và 2 trong G boolean ContainsCycle(Graph g)
for each vertex v in g do
v.mark = WHITE for each vertex v in g do if v.mark == WHITE and v.index == 1 then if Rightvisit(g, v) and f lagS1(v) == 1 and f lagS2(v) == 1 then return TRUE if v.mark == WHITE and v.index == 2 then if Leftvisit(g, v) and f lagS1(v) == 1 and f lagS2(v) == 1 then return TRUE for each vertex v in g do
v.mark = WHITE
for each vertex v in g do if v.mark == WHITE and v.index == 1 then if Rightvisit(g, v) and f lagS1(v) == 1 and f lagS2(v)! = 1 then if v.mark == WHITE and v.index == 2 then if Leftvisit(g, v) and f lagS1(v) == 1 and f lagS2(v)! = 1 then return TRUE return FALSE boolean Rightvisit(Graph g, Vertex v) v.mark = GREY for each edge (v, u) in g do if u.mark == GREY and u.index == 1 then return TRUE else if u.mark == WHITE then
if Rightvisit(g, u) then return TRUE v.mark = BLACK 64 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG return FALSE boolean Leftvisit(Graph g, Vertex v) v.mark = GREY
for each edge (v, u) in g do if u.mark == GREY and u.index == 2 then return TRUE else if u.mark == WHITE then if Leftvisit(g, u) then return TRUE v.mark = BLACK
return FALSE Lưu ý ta sử dụng ký hiệu u.index = i để biểu diễn (u, i) ∈ V . Vậy độ phức tạp thời gian của thuật toán kiểm định ρ-chu trình kiểu 1 và kiểu 2
(cid:3) trong G là O(n2). Thuật toán 2.5 Kiểm định Z-mã cho trường hợp ngôn ngữ chính quy Đầu vào: Một ngôn ngữ chính quy X ⊆ A+ cho bởi bộ ba (ϕ, M, B), Đầu ra:
Bước 1: Bước 2:
Bước 3: Bước 4: với ϕ : A∗ → M là một đồng cấu vị nhóm thỏa X,
M là một vị nhóm hữu hạn, B ⊆ M, X = ϕ−1(B)
“YES” nếu X là Z-mã, “NO” nếu X không là Z-mã
Từ bộ (ϕ, M, B), ta xây dựng một toàn cấu vị nhóm h : A∗ → P ⊆ M 1
thỏa cả X và Y = {ε} {nhờ phương pháp trong Ví dụ 1.4 (Cách 2)}
Tính K = P ∩ B thỏa h−1(K) = X
Tính Q, S = K ∗, T = K +
Từ P, K, S, T xây dựng đồ thị G với tập đỉnh P × I {nhờ phương pháp
được đề cập trong phần chứng minh của Định lý 2.14 (Bước 1)} Bước 5: Kiểm định ρ-chu trình kiểu 1 và 2 trong G if tồn tại một ρ-chu trình kiểu 1 khởi đầu từ v ∈ S1 ∩ S2 then return “NO” if tồn tại một ρ-chu trình kiểu 2 khởi đầu từ v ∈ S1 ∩ S2 then return “NO” if tồn tại ρ-chu trình kiểu 1 và kiểu 2 cùng khởi đầu từ o ∈ S1 − S2 then return “NO” else return “YES” 2.3 Thuật toán kiểm định Z-mã 65 Phân tích độ phức tạp thời gian của thuật toán. Bước 1, nhờ sử dụng Bổ đề 2.9 và phương pháp được đề cập trong Ví dụ 1.4 (Cách 2),
định nghĩa hai mảng f lagP, f lagB có độ phức tạp thời gian là O(n2). Bước 2, tính K đòi hỏi thời gian O(n) bởi các điều kiện: f lagK(x) = 1 khi và chỉ khi
f lagP (x) = 1 và f lagB(x) = 1 với x ∈ M 1 bất kỳ. Bước 3, tính Q, S = K ∗, T = K + là các tập con của P trong thời gian O(n2) nhờ Bổ
đề 2.9. Bước 4 và 5 có độ phức tạp thời gian là O(n2) (Định lý 2.14). Như một hệ quả của các Định lý 2.13 và 2.14, kết quả chính của mục này được thiết lập trong định lý sau. Cho một bộ ba (ϕ, M, B), ϕ : A∗ → M là một đồng cấu vị nhóm
Định lý 2.15
thỏa X, M là một vị nhóm hữu hạn, B ⊆ M, X = ϕ−1(B) là dữ liệu đầu vào, Thuật
toán 2.5 cho phép ta kiểm định X có là Z-mã không với độ phức tạp thời gian O(n2),
n = Card(M). Nghiên cứu các tính chất không nhập nhằng liên quan đến sự phân tích mã là bài toán
cơ bản của lý thuyết mã. Các tính chất đại số của mã dựa trên tích không nhập nhằng
đã được nghiên cứu bởi Sch¨utzenberger (1955), Gilbert-Moore (1959) và các tác giả khác (xem [1; 2; 5; 10; 12; 18]). Tuy nhiên, phân bậc ngôn ngữ theo tính chất không
nhập nhằng của tích ghép từ và mã có một khoảng trống. Các kết quả được thiết lập và trình bày trong các Mục 3.1 và 3.2 sau đây sẽ chỉ rõ thông tin về khoảng trống này,
đồng thời gợi mở những nội dung nghiên cứu mới. Một khái niệm quan trọng của lý thuyết mã là độ trễ giải mã cũng được nghiên
cứu vì nó rất gần với khái niệm độ không nhập nhằng của ngôn ngữ mà ta sẽ đề xuất
trong Mục 3.1.1 của chương này. Trước hết, ta thiết lập các kết quả làm rõ mối liên hệ của hai khái niệm trên và đề xuất một thuật toán mới cho phép tính chính xác độ trễ
giải mã của một mã bất kỳ thuộc lớp ngôn ngữ chính quy. Tiếp theo, ta mở rộng khái
niệm độ trễ giải mã cho ♦-mã và đưa ra một thuật toán mới để xác định độ trễ giải
mã này cho trường hợp của các ♦-ngôn ngữ chính quy. Đây là các nội dung sẽ được
trình bày trong Mục 3.3. Một số kết quả chính của chương được công bố trong các bài báo số 1, 2, 6, 10, 12, 13-15 (xem Danh mục các công trình đã công bố của luận án). Trong Mục 3.1.1 của mục này, ta đề xuất khái niệm ngôn ngữ có độ không nhập nhằng k, với 0 ≤ k ≤ ∞, tạo nên sự phân bậc toàn bộ các ngôn ngữ theo tính chất không
nhập nhằng của tích ghép từ. Trong đó, k = 0 là lớp tất cả các ngôn ngữ, k = ∞ là
lớp ω-mã, k = 2 liên quan đến tích không nhập nhằng. Vì thế, khái niệm này làm mịn khoảng trống trong liên hệ giữa mã và tích không nhập nhằng và ta có thể sử dụng
những ngôn ngữ không phải là mã để mã hóa thông tin với những giá trị k đủ lớn. Lưu ý rằng trong các hệ mật, mã là đối tượng bị tấn công. Nếu ta sử dụng ngôn ngữ không
phải là mã thì sẽ nâng cao được hiệu quả an toàn chống tấn công cho các hệ mật. 3.1 Tính chất không nhập nhằng của ngôn ngữ 67 Cho trước một ngôn ngữ chính quy X bất kỳ, nếu X không phải là mã thì tồn tại
các giá trị k-không nhập nhằng kiểu 1 và kiểu 2 đặc trưng của X mà sau đây ta gọi lần lượt là độ không nhập nhằng kiểu 1 và kiểu 2 của X. Sử dụng phương pháp của
tiêu chuẩn Sardinas-Patterson cải tiến, trong Mục 3.1.2, ta sẽ thiết lập một thuật toán mới cho phép xác định độ không nhập nhằng kiểu 1 của X. Còn đối với độ không nhập
nhằng kiểu 2 của X, phức tạp hơn, ta đưa ra một thuật toán trên otomat hữu hạn
được trình bày chi tiết trong Mục 3.1.3. Trong phần còn lại của mục này, ta đề xuất hai phân bậc ngôn ngữ theo hai kiểu nhập nhằng nói trên. Mã có vai trò thiết yếu trong nhiều lĩnh vực như xử lý thông tin, nén dữ liệu, truyền
thông và mật mã. Khái niệm tích không nhập nhằng của hai ngôn ngữ được đề xuất bởi
Sch¨utzenberger (1955) là cơ sở để xây dựng khái niệm mã. Cho hai ngôn ngữ X, Y ⊆ A∗,
tích XY là không nhập nhằng nếu w = xy = x0y0 với x, x0 ∈ X, y, y0 ∈ Y thì x = x0 và
y = y0. Một ngôn ngữ X ⊆ A+ là mã nếu sự phân tích một từ w ∈ A∗ tùy ý thành tích
các từ thuộc X là không nhập nhằng. Có nghĩa là nếu w = x1x2 · · · xn = y1y2 · · · ym,
với xi, yj ∈ X thì suy ra n = m, xi = yi, i = 1, . . . , n. Đây là mối quan hệ giữa tích
không nhập nhằng và mã. Ta để ý rằng nếu đặc trưng tính không nhập nhằng của ngôn ngữ bởi một số tự nhiên k thì sẽ có một phân bậc ngôn ngữ rất lớn nằm giữa lớp mã và lớp ngôn ngữ
định nghĩa bởi tích không nhập nhằng. Các lớp ngôn ngữ trong phân bậc này có thể
được sử dụng trong mã hóa thông tin với k khá lớn. Đây là một khoảng trống trong nghiên cứu lý thuyết mã hóa thông tin và ứng dụng. Các khái niệm được đề xuất sau
đây cho phép ta làm mịn khoảng trống này và thiết lập các kết quả mới. Định nghĩa 3.1 Cho X ⊆ A+ và một số tự nhiên k ≥ 0. Khi đó (i) Tập X được gọi là k-không nhập nhằng kiểu 1 nếu với mọi số nguyên m ≥ 1 và với mọi x1, x2, . . . , xk, y1, y2, . . . , ym ∈ X, nếu có x1x2 · · · xk = y1y2 · · · ym thì suy ra k = m và với i = 1, . . . , k. xi = yi Ngược lại (nếu tồn tại từ w ∈ A∗ mà w = x1x2 · · · xk = y1y2 · · · ym với x1 6= y1), thì tập X được gọi là k-nhập nhằng kiểu 1. (ii) Nếu tồn tại số k lớn nhất sao cho X là k-không nhập nhằng kiểu 1 thì k
được gọi là độ không nhập nhằng kiểu 1 của X. Trường hợp ngược lại, với k ≥ 0 bất kỳ, X là k-không nhập nhằng kiểu 1, thì X được gọi là có độ không nhập nhằng kiểu 1
vô hạn. 68 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA NGÔN NGỮ Định nghĩa 3.2 Cho X ⊆ A+ và một số tự nhiên k ≥ 0. Khi đó (i) Tập X được gọi là k-không nhập nhằng kiểu 2 nếu với mọi số nguyên k ≥ m ≥ 1 và với mọi x1, x2, . . . , xk, y1, y2, . . . , ym ∈ X, nếu có x1x2 · · · xk = y1y2 · · · ym thì suy ra k = m và với i = 1, . . . , k xi = yi Ngược lại (nếu tồn tại từ w ∈ A∗ mà w = x1x2 · · · xk = y1y2 · · · ym với x1 6= y1 và m ≤ k), thì tập X được gọi là k-nhập nhằng kiểu 2. (ii) Nếu tồn tại số k lớn nhất sao cho X là k-không nhập nhằng kiểu 2 thì k được gọi là độ không nhập nhằng kiểu 2 của X. Trường hợp ngược lại, với k ≥ 0 bất
kỳ, X là k-không nhập nhằng kiểu 2, thì X được gọi là có độ không nhập nhằng kiểu 2 vô hạn. Nếu X có độ không nhập nhằng kiểu 1 (t.ư. kiểu 2) là k, k ≥ 0 thì X là l-không
nhập nhằng kiểu 1 (t.ư. kiểu 2) với mọi 0 ≤ l ≤ k và X là (k + 1)-nhập nhằng kiểu 1 (t.ư. kiểu 2). Rõ ràng, X là k-không nhập nhằng kiểu 1 (t.ư. kiểu 2) với mọi k ≥ 0 khi
và chỉ khi X là mã. Quy ước, tất cả các ngôn ngữ là 0-không nhập nhằng kiểu 1 (t.ư.
kiểu 2). Cho A = {a, b} và X = {a, b, aaab}. Ta có thể kiểm tra bằng định nghĩa Ví dụ 3.1
X là 0-không nhập nhằng kiểu 1 và X là 1-nhập nhằng kiểu 1 vì tồn tại từ w = (aaab) = (a)(a)(a)(b). Vậy, X có độ không nhập nhằng kiểu 1 là k = 0. Hơn nữa, X là k-không nhập nhằng kiểu 2, với 3 ≥ k ≥ 0 và X là 4-nhập nhằng kiểu 2 vì tồn tại từ w = (a)(a)(a)(b) = (aaab). Vậy, X có độ không nhập nhằng kiểu 2 là k = 3. Cho k ≥ 1 là một số tự nhiên tùy ý. Xem xét bảng chữ A =
Ví dụ 3.2
{c, a1, b1, . . . , ak, bk} và X = {c, ca1, a1b1, b1a2, . . . , bk−1ak, akbk, bk}. Rõ ràng, k là độ
không nhập nhằng kiểu 1, đồng thời k là độ không nhập nhằng kiểu 2 của X. Từ định nghĩa và hai ví dụ trên, ta suy ra mệnh đề sau đây về mối quan hệ giữa k-không nhập nhằng kiểu 1 và kiểu 2, k-nhập nhằng kiểu 1 và kiểu 2 Mệnh đề 3.1 Cho X ⊆ A+ và một số tự nhiên k ≥ 0. Khi đó (i) Nếu X là k-không nhập nhằng kiểu 1 thì X là k-không nhập nhằng kiểu 2. Ngược lại không đúng. (ii) Nếu X là k-nhập nhằng kiểu 2 thì X là k-nhập nhằng kiểu 1. Ngược lại không đúng. 3.1 Tính chất không nhập nhằng của ngôn ngữ 69 Cho X ⊆ A+, để xác định độ không nhập nhằng kiểu 1 của X, ta xem xét hai tập 0 X ∪ (X −1X − {ε}), phần dư Ui, Vi+1 kết hợp với X được định nghĩa đệ quy như sau (xem Hình 3.1). (3.1) i X ∪ X −1Vi ∪ Vi, i ≥ 1. U0 = (X +)−1X − {ε},
V1 = U −1
Ui = (ViX ∗)−1X,
Vi+1 = U −1 Hình 3.1 Minh họa một trường hợp tính toán các tập Ui, Vi+1 theo công thức (3.1) Tính đúng đắn của thủ tục dựa trên các kết quả sau đây. Cho X ⊆ A+ và cho Ui, Vi+1 (i ≥ 1) được định nghĩa theo công thức
Bổ đề 3.1
(3.1). Nếu có k ≥ 1 sao cho z ∈ Vk và z /∈ Vi với mọi i < k thì tồn tại m ≥ 1 và
x1, x2, . . . , xk, y1, y2, . . . , ym ∈ X sao cho x1x2 · · · xkz = y1y2 · · · ym với x1 6= y1. Chứng minh. Ta chứng minh quy nạp theo k điều khẳng định trên. 0 X ∪ (X −1X − {ε}). Khi đó z ∈ U −1 0 X (trường hợp Với k = 1, giả sử z ∈ V1 = U −1 1) hoặc z ∈ X −1X − {ε} (trường hợp 2). 0 X. Ta có u0 ∈ U0, x ∈ X sao cho u0z = x. Từ u0 ∈ U0 =
(X +)−1X − {ε}, ta có x1x2 · · · xn ∈ X +, n ≥ 1, y1 ∈ X sao cho x1x2 · · · xnu0 = y1. Vì
u0 6= ε ta suy ra x1 6= y1. Khi đó Trường hợp 1: z ∈ U −1 với x1x2 · · · xnu0 = y1 x1 6= y1. 70 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA NGÔN NGỮ Nhân ghép hai vế của biểu thức trên với z và thay u0z bởi x, ta nhận được với x1x2 · · · xnx = y1z x1 6= y1. Trường hợp 2: z ∈ X −1X − {ε}. Ta có x1, y1 ∈ X sao cho x1z = y1 với x1 6= y1. k X ∪ X −1Vk ∪ Vk và z /∈ Vi với mọi i ≤ k. Khi đó z ∈ U −1 Vậy điều khẳng định đúng với k = 1. Giả sử điều khẳng định đúng với mọi k ≥ 1, ta chứng minh nó cũng đúng với k + 1.
k X k X. Ta có uk ∈ Uk, y ∈ X sao cho ukz = y. Với uk ∈ Uk =
p ∈ X ∗, p ≥ 0, xk+1 ∈ X sao cho vky0
puk = 2 · · · y0 2 · · · y0 1y0 1y0 Giả sử z ∈ Vk+1 = U −1
(trường hợp 1) hoặc z ∈ X −1Vk (trường hợp 2). Trường hợp 1: z ∈ U −1
(VkX ∗)−1X, tồn tại vk ∈ Vk, y0
xk+1. Mặt khác từ điều kiện vk ∈ Vk, theo giả thiết quy nạp ta có pukz và thay vky0 puk bởi xk+1, 1y0 2 · · · y0 1y0 2 · · · y0 x1x2 · · · xkvk = y1y2 · · · ym với x1 6= y1. Nhân ghép hai vế của biểu thức trên với y0
đồng thời thay ukz bởi y, ta nhận được 1y0 2 · · · y0
py x1x2 · · · xkxk+1z = y1y2 · · · ymy0 với x1 6= y1. Trường hợp 2: z ∈ X −1Vk. Ta có xk+1 ∈ X, vk ∈ Vk sao cho xk+1z = vk. Từ vk ∈ Vk, theo giả thiết quy nạp, ta có x1x2 · · · xkvk = y1y2 · · · ym với x1 6= y1. Thay vk bởi xk+1z trong biểu thức trên, ta nhận được x1x2 · · · xk+1z = y1y2 · · · ym với x1 6= y1. Vậy điều khẳng định đúng với mọi k ≥ 1. (cid:3) Chứng minh được hoàn thành. Cho X ⊆ A+ và cho Ui, Vi+1 (i ≥ 1) được định nghĩa theo công thức Bổ đề 3.2
(3.1). Nếu có m, n ≥ 1, x1, x2, . . . , xn, y1, y2, . . . , ym ∈ X và z ∈ A∗ tùy ý sao cho x1x2 · · · xnz = y1y2 · · · ym với x1 6= y1 và |z| < |ym|, thì z ∈ Vn. Chứng minh. Ta chứng minh quy nạp theo n. Với n = 1, giả sử có x1z = y1y2 · · · ym với x1 6= y1 và |z| < |ym|. Từ |z| < |ym| ta có ym = uz với u ∈ A+. Khi đó ta có quan hệ x1 = y1y2 · · · ym−1u với x1 6= y1. 3.1 Tính chất không nhập nhằng của ngôn ngữ 71 0 X ⊆ V1. Từ đó suy ra u = (y1y2 · · · ym−1)−1x1 ∈ (X +)−1X − {ε} = U0. Ta có z = u−1ym ∈
U −1 Vậy điều khẳng định đúng với trường hợp n = 1.
Giả sử điều khẳng định đúng với n > 1, ta chứng minh nó cũng đúng với n + 1. Giả sử có x1x2 · · · xn+1z = y1y2 · · · ym với x1 6= y1 và |z| < |ym|. So sánh độ dài của từ xn+1z và từ ym, ta phân biệt ba trường hợp.
Trường hợp 1: |xn+1z| < |ym|. Theo giả thiết quy nạp, xn+1z ∈ Vn. Khi đó, với n+1(xn+1z) ∈ X −1Vn ∈ Vn+1. xn+1z ∈ Vn ta suy ra z = x−1 Trường hợp 2: xn+1z = ym. Theo giả thiết quy nạp, ε ∈ Vn. Khi đó ε−1xn+1 = n X ⊆ Vn+1. n+1ym ∈ U −1 xn+1 ∈ (VnX ∗)−1X = Un ta suy ra z = x−1 Trường hợp 3: |xn+1z| > |ym|. Khi đó tồn tại s ≥ 1, z0 ∈ A∗, |z0| < |ys|, u ∈ A+
sao cho xn+1 = z0ys+1ys+2 · · · ym−1u và ym = uz. Điều này có nghĩa là z0 ∈ Vn. Ta có
u = (z0ys+1ys+2 · · · ym−1)−1xn+1 ∈ (VnX ∗)−1X = Un. Vậy z = u−1ym ∈ U −1
n X ⊆ Vn+1. Điều khẳng định đúng với mọi n ≥ 1. (cid:3) Chứng minh được hoàn thành Sau đây ta đưa ra kết quả chính của mục này nhằm thiết lập một điều kiện cần và đủ để xác định độ không nhập nhằng kiểu 1 của một ngôn ngữ chính quy bất kỳ. Cho X ⊆ A+ và cho Ui, Vi+1 (i ≥ 1) được định nghĩa theo công thức
Định lý 3.1
(3.1). Khi đó X có độ không nhập nhằng kiểu 1 là k − 1 khi và chỉ khi tồn tại một số
nguyên k ≥ 1 sao cho ε ∈ Vk và ε /∈ Vi với mọi i < k. Chứng minh. Chiều thuận. Nếu X có độ không nhập nhằng kiểu 1 là k − 1 thì tồn tại một số nguyên
k ≥ 1 sao cho ε ∈ Vk và ε /∈ Vi với mọi i < k. Từ giả thiết X có độ không nhập nhằng kiểu 1 là k − 1, theo định nghĩa X là k-nhập nhằng kiểu 1, tức là tồn tại một quan hệ x1x2 · · · xk = y1y2 · · · ym với x1 6= y1, hoặc tương đương, x1x2 · · · xkε = y1y2 · · · ym với x1 6= y1. Theo Bổ đề 3.2, ta có ε ∈ Vk. Giả sử ta có ε ∈ Vi với i < k. Khi đó theo Bổ đề 3.1, ta có quan hệ x1x2 · · · xiε = y1y2 · · · ym với x1 6= y1, hoặc tương đương, x1x2 · · · xi = y1y2 · · · ym với x1 6= y1. 72 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA NGÔN NGỮ Nghĩa là X là i-nhập nhằng kiểu 1 với i ≤ k − 1, trái với giả thiết X là (k − 1)-không
nhập nhằng kiểu 1. Vậy ε /∈ Vi với mọi i < k. Chiều ngược. Nếu tồn tại một số nguyên k ≥ 1 sao cho ε ∈ Vk và ε /∈ Vi với mọi i < k thì X có độ không nhập nhằng kiểu 1 là k − 1. Từ điều kiện ε ∈ Vk, theo Bổ đề 3.1, ta có quan hệ x1x2 · · · xk = y1y2 · · · ym với x1 6= y1. Tức là X là k-nhập nhằng kiểu 1. Giả sử X là i-nhập nhằng kiểu 1 với i < k. Khi đó tồn tại quan hệ x1x2 · · · xiε = y1y2 · · · ym với x1 6= y1. Theo Bổ đề 3.2, ta có ε ∈ Vi với i < k trái với giả thiết. Vậy X có độ không nhập
nhằng là k − 1. (cid:3) Chứng minh được hoàn thành. Nhận xét 3.1 Đối với một ngôn ngữ X thuộc lớp ngôn ngữ chính quy, các tập
Ui, Vi+1 (i ≥ 1) kết hợp với X là hữu hạn (xem Hệ quả 1.1). Do đó Định lý 3.1 cung
cấp cho ta một thuật toán xác định độ không nhập nhằng kiểu 1 của X. Mệnh đề sau đây được suy từ Định lý 3.1 và các bổ đề trên. Cho X ⊆ A+ và cho Ui, Vi+1 (i ≥ 1) được định nghĩa theo công thức Mệnh đề 3.2
(3.1). Khi đó các tính chất sau là tương đương: (i) X không là mã. (ii) tồn tại i ≥ 1 sao cho ε ∈ Vi.
(iii) tồn tại k ≥ 1 sao cho X là k-nhập nhằng kiểu 1. Cho A = {a, b} và cho X = {a, ab, bb}. Ta có U0 = {b}, V1 = {b}, U1 =
Ví dụ 3.3
{b}, V2 = {b}..., khi đó ε /∈ Vi, ∀i ≥ 1, X là k-không nhập nhằng kiểu 1 với mọi k ≥ 0.
Vậy X có độ không nhập nhằng kiểu 1 là ∞. Tuy nhiên, từ vô hạn w = abbb · · · có hai
X-phân tích khác nhau. Vì lý do này, ta nói X là ∞−nhập nhằng. Trong mục này ta thiết lập một thuật toán trên vị nhóm hữu hạn để xác định độ không nhập nhằng kiểu 1 của các ngôn ngữ chính quy. Trước hết ta cần một bổ đề cho
tính đúng đắn của thuật toán. Xét toàn cấu h : A∗ → P thỏa X và Y = {ε}, trong đó P là vị nhóm hữu hạn.
X = h−1(K), Y = h−1(L), L = {1P }, T = K +, S = K ∗, với K, L ⊆ P . Ta xem xét các 3.1 Tính chất không nhập nhằng của ngôn ngữ 73 0 K ∪ (K −1K − L), tập Qi, Ri+1 được định nghĩa đệ quy như sau. (3.2) i K ∪ K −1Ri ∪ Ri, i ≥ 1. Q0 = T −1K − L,
R1 = Q−1
Qi = (Ri.S)−1K,
Ri+1 = Q−1 Chúng ta có thể kiểm tra trực tiếp bằng định nghĩa bổ đề sau đây. Cho X ⊆ A+ là một ngôn ngữ chính quy và cho Ui, Vi+1 (i ≥ 1) được
Bổ đề 3.3
định nghĩa theo công thức (3.1). Đặt Ui = h−1(Qi), Vi = h−1(Ri) với Qi, Ri+1 được
định nghĩa theo công thức (3.2). Khi đó với mọi k ≥ 1, ε ∈ Vk khi và chỉ khi 1P ∈ Rk
với 1P là đơn vị của P . Từ các kết quả trên, ta xây dựng thuật toán như sau. Thuật toán 3.1 Xác định độ không nhập nhằng kiểu 1 cho ngôn ngữ chính quy Đầu vào: Ngôn ngữ chính quy X ⊆ A+ cho bởi một bộ (ϕ, M, B), với ϕ : A∗ → M, Đầu ra: Bước 1: {ta có h−1(K) = X} Bước 2: {ta có h−1(L) = {ε}} Bước 3: 0 K ∪ (K −1K − L) và đặt i = 1 Bước 4: M là một vị nhóm hữu hạn, B ⊆ M, X = ϕ−1(B)
k là độ không nhập nhằng kiểu 1 của X
Từ bộ (ϕ, M, B), xây dựng một toàn cấu vị nhóm h : A∗ → P thỏa đồng
thời X và Y = {ε}, P ⊆ M {như trong Ví dụ 1.4 (Cách 2)}
+ Tính K = P ∩ B = {(b, m) ∈ P | b ∈ B}
+ Tính L = {(1M , 1)}
Tính T = K +, S = K ∗
Tính Q0 = T −1K − L, R1 = Q−1
if R1 == ∅ then return k = ∞ i K ∪ K −1Ri ∪ Ri Bước 5: (Lặp)
Tính Qi = (Ri.S)−1K, Ri+1 = Q−1
if 1P ∈ Ri+1 then return k = i
if Ri+1 == Ri then
return k = ∞ else đặt i = i + 1, và quay về Bước 5 Cho một ngôn ngữ chính quy X bởi bộ ba (ϕ, M, B), ϕ : A∗ → M là
Nhận xét 3.2
một đồng cấu thỏa X, M là một vị nhóm hữu hạn, B ⊆ M, X = ϕ−1(B), theo Bổ đề 74 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA NGÔN NGỮ 3.3, việc kiểm tra ε ∈ Vi tương đương với việc kiểm tra 1P ∈ Ri. Theo Bổ đề 2.9, thuật
toán tính K +, K ∗, P có độ phức tạp thời gian là O(n2); các tập Vi (i ≥ 1) thỏa tính
chất bao hàm như trong Nhận xét 1.4, các tập Ri tăng dần và bị chặn bởi P do vậy
tính Ri không quá n + 1 bước. Tổng quát, tất cả các bước của Thuật toán 3.1 có độ
phức tạp thời gian là O(n2) với n = Card(M). Từ Nhận xét trên ta phát biểu kết quả chính của mục này như sau. Cho một bộ ba (ϕ, M, B), ϕ : A∗ → M là một đồng cấu vị nhóm thỏa
Mệnh đề 3.3
X, M là một vị nhóm hữu hạn, B ⊆ M, X = ϕ−1(B) là dữ liệu đầu vào, Thuật toán
3.1 cho phép ta xác định độ không nhập nhằng kiểu 1 của X với độ phức tạp thời gian
là O(n2), n = Card(M). Cho X ⊆ A+, dựa vào định nghĩa k-không nhập nhằng kiểu 2, trong thủ tục sau
đây ta tính toán các tập phần dư Ui (i ≥ 0), Vj (j ≥ 1) kết hợp với X để tìm hai
X-phân tích khác nhau của một xâu w ∈ A∗ bất kỳ. Các tập phần dư Ui, Vj được định
nghĩa đệ quy như sau. Bước 0) (3.3) U0 = X Bước 1) (3.4) V1 = X −1X − {ε} Bước k) Giả sử đã xác định được cặp dãy Ui 6= ∅ (i ≥ 0), Vj 6= ∅ (j ≥ 1). Tùy theo
tình huống tính toán được lựa chọn ở bước (k − 1) ta tính tiếp một trong 4 trường hợp: (3.5) Vj+1 = X −1Vj i X (3.6) Vj+1 = U −1 (3.7) Ui+1 = X −1Ui j X (3.8) Ui+1 = V −1 Các tình huống tính toán được thực hiện theo sơ đồ sau đây. Ta ký hiệu (α) → (β)
một tình huống tính toán hợp lý với (α) là tình huống được tính ở bước k − 1, (β) là 3.1 Tính chất không nhập nhằng của ngôn ngữ 75 tình huống được chọn để tính tiếp ở bước k. Sơ đồ tính toán hợp lý như sau: (3.3) → (3.4) (3.4) → (3.8) (3.4) → (3.5) hoặc (3.5) → (3.8) (3.5) → (3.5) hoặc (3.9) (3.6) → (3.5) hoặc (3.6) → (3.8) (3.7) → (3.6) (3.7) → (3.7) hoặc (3.8) → (3.7) (3.8) → (3.6) hoặc Cho X ⊆ A+. Một cặp dãy Ui (n ≥ i ≥ 0), Vj (m ≥ j ≥ 1) kết hợp
Định nghĩa 3.3
với X được định nghĩa theo Sơ đồ (3.9), Ui 6= ∅, Vj 6= ∅ trong khoảng hữu hạn thích
hợp n ≥ i ≥ 0, m ≥ j ≥ 1, ε ∈ Un+1 hoặc ε ∈ Vm+1, được gọi là một cặp dãy tính toán
thành công. Tính đúng đắn của thủ tục dựa trên các kết quả sau đây Cho X ⊆ A+. Nếu có z ∈ A∗ tùy ý, n, m ≥ 1 và Bổ đề 3.4
x1, x2, . . . , xn, y1, y2, . . . , ym ∈ X sao cho x1x2 · · · xnz = y1y2 · · · ym với x1 6= y1 và |z| < |ym|, 6= ∅ (n ≥ i ≥ 0), Vj thì khi đó, theo Sơ đồ (3.9), ta luôn tìm được cặp dãy Ui
6=
∅ (m − 1 ≥ j ≥ 1) với z ∈ Un hoặc cặp dãy Ui 6= ∅ (m − 1 ≥ i ≥ 0), Vj 6= ∅ (n ≥ j ≥ 1)
với z ∈ Vn. Chứng minh. Ta chứng minh quy nạp theo n + m. Với n + m = 2 (n = m = 1), giả sử có x1, y1 ∈ X và z ∈ A∗ tùy ý sao cho 1 y1 ∈ X −1X − {ε} = V1. Vậy ta có cặp và |z| < |y1| x1z = y1 với x1 6= y1. Khi đó, từ x1z = y1 với x1 6= y1, ta có z = x−1
dãy U0, V1 với z ∈ V1. Vậy điều khẳng định đúng với n + m = 2. Giả sử điều khẳng định đúng với n + m − 1 > 2, ta chứng minh nó cũng đúng với n + m. Thật vậy, giả sử có x1, x2, . . . , xn, y1, y2, . . . , ym ∈ X và z ∈ A∗ tùy ý sao cho và |z| < |ym| x1x2 · · · xnz = y1y2 · · · ym với x1 6= y1. Khi đó, so sánh độ dài của từ xnz và từ ym, ta phân biệt ba trường hợp
Trường hợp 1: |xnz| < |ym|. Theo giả thiết quy nạp, ta có cặp dãy Ui 6= ∅ (n − 1 ≥
i ≥ 0), Vj 6= ∅ (m − 1 ≥ j ≥ 1) với xnz ∈ Un−1 hoặc cặp dãy Ui 6= ∅ (m − 1 ≥ i ≥
0), Vj 6= ∅ (n − 1 ≥ j ≥ 1) với xnz ∈ Vn−1. 76 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA NGÔN NGỮ Nếu có cặp dãy Ui 6= ∅ (n − 1 ≥ i ≥ 0), Vj 6= ∅ (m − 1 ≥ j ≥ 1) với xnz ∈ Un−1, thì
n xnz ∈ X −1Un−1 = Un. Vậy ta có cặp dãy Ui 6= ∅ (n ≥ i ≥ từ xnz ∈ Un−1 ta có z = x−1
0), Vj 6= ∅ (m − 1 ≥ j ≥ 1) với z ∈ Un. Nếu có cặp dãy Ui 6= ∅ (m − 1 ≥ i ≥ 0), Vj 6= ∅ (n − 1 ≥ j ≥ 1) với xnz ∈ Vn−1, thì
n xnz ∈ X −1Vn−1 = Vn. Vậy ta có cặp dãy Ui 6= ∅ (m − 1 ≥ từ xnz ∈ Vn−1 ta có z = x−1
i ≥ 0), Vj 6= ∅ (n ≥ j ≥ 1) với z ∈ Vn. Trường hợp 2: xnz = ym. Khi đó ta có x1x2 · · · xn−1 = y1y2 · · · ym−1 với x1 6= y1, hoặc tương đương, n ym ∈ V −1 x1x2 · · · xn−1ε = y1y2 · · · ym−1 với x1 6= y1. n−1X = Vm−1. Từ đó z = x−1 Theo giả thiết quy nạp, ta có cặp dãy Ui 6= ∅ (n−1 ≥ i ≥ 0), Vj 6= ∅ (m−2 ≥ j ≥ 1)
với ε ∈ Un−1 hoặc cặp dãy Ui 6= ∅ (m − 2 ≥ i ≥ 0), Vj 6= ∅ (n − 1 ≥ j ≥ 1) với ε ∈ Vn−1.
Nếu có cặp dãy Ui 6= ∅ (n − 1 ≥ i ≥ 0), Vj 6= ∅ (m − 2 ≥ j ≥ 1) với ε ∈ Un−1 thì từ
m−1X = Un. Vậy n ym ∈ U −1 ε ∈ Un−1, ta có ε−1xn = xn ∈ U −1
ta có cặp dãy Ui 6= ∅ (n ≥ i ≥ 0), Vj 6= ∅ (m − 1 ≥ j ≥ 1) với z ∈ Un. n−1X = Um−1. Từ đó z = x−1 Nếu có cặp dãy Ui 6= ∅ (m − 2 ≥ i ≥ 0), Vj 6= ∅ (n − 1 ≥ j ≥ 1) với ε ∈ Vn−1 thì từ
m−1X = Vn. Vậy ε ∈ Vn−1, ta có ε−1xn = xn ∈ V −1
ta có cặp dãy Ui 6= ∅ (m − 1 ≥ i ≥ 0), Vj 6= ∅ (n ≥ j ≥ 1) với z ∈ Vn. Trường hợp 3: |xnz| > |ym|. Từ |z| < |ym|, ta có u ∈ A+ sao cho ym = uz. Khi đó, tồn tại u0 ∈ A∗ và s ≥ 1 sao cho và |u0| < |ys| xn = u0ys+1ys+2 · · · ym−1u với x1 6= y1. Từ đó ta có n−1X = Vs, y−1 và |u0| < |ys| x1x2 · · · xn−1u0 = y1y2 · · · ys với x1 6= y1. Theo giả thiết quy nạp, ta có cặp dãy Ui 6= ∅ (n − 1 ≥ i ≥ 0), Vj 6= ∅ (s − 1 ≥ j ≥ 1)
với u0 ∈ Un−1 hoặc cặp dãy Ui 6= ∅ (s − 1 ≥ i ≥ 0), Vj 6= ∅ (n − 1 ≥ j ≥ 1) với u0 ∈ Vn−1.
Nếu có cặp dãy Ui 6= ∅ (n − 1 ≥ i ≥ 0), Vj 6= ∅ (s − 1 ≥ j ≥ 1) với u0 ∈ Un−1,
s+1vs =
m−1vm−2 = u ∈ X −1Vm−2 = Vm−1. Từ
m−1X = Un. Vậy ta có cặp dãy Ui 6= ∅ (n ≥ i ≥ 0), Vj 6= n−1X = Us, y−1 thì từ u0 ∈ Un−1, ta có u0−1xn = ys+1ys+2 · · · ym−1u = vs ∈ U −1
ys+2 · · · ym−1u = vs+1 ∈ X −1Vs = Vs+1, . . . , y−1
đó suy ra z = u−1ym ∈ V −1
∅ (m − 1 ≥ j ≥ 1) với z ∈ Un. Nếu có cặp dãy Ui 6= ∅ (s − 1 ≥ i ≥ 0), Vj 6= ∅ (n − 1 ≥ j ≥ 1) với u0 ∈ Vn−1,
s+1us =
m−1um−2 = u ∈ X −1Um−2 = Um−1. Từ đó
m−1X = Vn. Vậy ta có cặp dãy Ui 6= ∅ (m − 1 ≥ i ≥ 0), Vj 6= thì từ u0 ∈ Vn−1, ta có u0−1xn = ys+1ys+2 · · · ym−1u = us ∈ V −1
ys+2 · · · ym−1u = us+1 ∈ X −1Us = Us+1, . . . , y−1
suy ra z = u−1ym ∈ U −1
∅ (n ≥ j ≥ 1) với z ∈ Vn. (cid:3) Vậy theo quy nạp, điều khẳng định đúng với mọi n + m ≥ 2.
Chứng minh được hoàn thành. 3.1 Tính chất không nhập nhằng của ngôn ngữ 77 Cho X ⊆ A+ và một cặp dãy Ui 6= ∅ (n ≥ i ≥ 0), Vj 6= ∅ (m ≥ j ≥ 1). Bổ đề 3.5
Khi đó, với z ∈ A∗ tùy ý, (i) nếu z ∈ Un+1 thì tồn tại x1, x2, . . . , xn+1, y1, y2, . . . , ym+1 ∈ X sao cho x1x2 · · · xn+1z = y1y2 · · · ym+1 với x1 6= y1. (ii) nếu z ∈ Vm+1 thì tồn tại x1, x2, . . . , xn+1, y1, y2, . . . , ym+1 ∈ X sao cho x1x2 · · · xn+1 = y1y2 · · · ym+1z với x1 6= y1. Chứng minh. Ta chứng minh quy nạp theo n + m. Với n + m = 1 (n = 0, m = 1), theo giả thiết, ta có cặp dãy U0, V1. Với z ∈ A∗ tùy ý, giả sử z ∈ U1. Ta có 1 y2 ⇔ y2 = v1z). 1 X ⇔ (∃v1 ∈ V1, y2 ∈ X : z = v−1 z ∈ U1 = V −1 Mặt khác 1 x1 ⇔ x1 = y1v1, x1 6= y1). v1 ∈ V1 = X −1X − {ε} ⇔ (∃x1, y1 ∈ X : ε 6= v1 = y−1 Nhân ghép hai vế của biểu thức trên với z và thay v1z bởi y2, ta có x1z = y1y2 với
x1 6= y1. Ngược lại, giả sử z ∈ V2. Ta có 2 v1 ⇔ y2z = v1). z ∈ V2 = X −1V1 ⇔ (∃y2 ∈ X, v1 ∈ V1 : z = y−1 Mặt khác, với v1 ∈ V1, theo chứng minh trên ta có x1 = y1v1 với x1 6= y1. Thay v1 = y2z vào biểu thức trên, ta nhận được x1 = y1y2z với x1 6= y1.
Vậy điều khẳng định đúng với n + m = 1.
Giả sử điều khẳng định đúng với n + m − 1 ≥ 1 ta chứng minh nó cũng đúng với n + m. Thật vậy, giả sử có cặp dãy Ui 6= ∅ (n ≥ i ≥ 0), Vj 6= ∅ (m ≥ j ≥ 1). Với z ∈ A∗ tùy ý, giả sử z ∈ Un+1. Khi đó xảy ra hai trường hợp Trường hợp 1: Un+1 = X −1Un. Ta có n+1un ⇔ un = xn+1z). z ∈ X −1Un ⇔ (∃xn+1 ∈ X, un ∈ Un : z = x−1 Mặt khác, với un ∈ Un, theo giả thiết quy nạp tồn tại x1, x2, . . . , xn, y1, y2, . . . , ym+1 ∈ X
sao cho x1x2 · · · xnun = y1y2 · · · ym+1 với x1 6= y1. Thay un = xn+1z vào biểu thức trên, ta nhận được x1x2 · · · xn+1z = y1y2 · · · ym+1 với x1 6= y1. m X. Ta có Trường hợp 2: Un+1 = V −1 m X ⇔ (∃vm ∈ Vm, ym+1 ∈ X : z = v−1 m ym+1 ⇔ ym+1 = vmz). z ∈ V −1 Mặt khác, với vm ∈ Vm, theo giả thiết quy nạp tồn tại x1, x2, . . . , xn+1, y1, y2, . . . , ym ∈
X sao cho 78 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA NGÔN NGỮ x1x2 · · · xn+1 = y1y2 · · · ymvm với x1 6= y1. Nhân ghép hai vế của biểu thức trên với z và thay vmz bởi ym+1, ta nhận được x1x2 · · · xn+1z = y1y2 · · · ym+1 với x1 6= y1. n X. Ta có Ngược lại, giả sử z ∈ Vm+1. Khi đó xảy ra hai trường hợp
Trường hợp 1: Vm+1 = U −1 n X ⇔ (∃un ∈ Un, xn+1 ∈ X : z = u−1 n xn+1 ⇔ xn+1 = unz). z ∈ U −1 Mặt khác, với un ∈ Un, theo giả thiết quy nạp tồn tại x1, x2, . . . , xn, y1, y2, . . . , ym+1 ∈ X
sao cho x1x2 · · · xnun = y1y2 · · · ym+1 với x1 6= y1. Nhân ghép hai vế của biểu thức trên với z và thay unz bởi xn+1, ta nhận được x1x2 · · · xn+1 = y1y2 · · · ym+1z với x1 6= y1. Trường hợp 2: Vm+1 = X −1Vm. Ta có m+1vm ⇔ vm = ym+1z). z ∈ X −1Vm ⇔ (∃ym+1 ∈ X, vm ∈ Vm : z = y−1 Mặt khác, với vm ∈ Vm, theo giả thiết quy nạp tồn tại x1, x2, . . . , xn+1, y1, y2, . . . , ym ∈
X sao cho x1x2 · · · xn+1 = y1y2 · · · ymvm với x1 6= y1. Thay vm = ym+1z vào biểu thức trên, ta nhận được x1x2 · · · xn+1 = y1y2 · · · ym+1z với x1 6= y1. (cid:3) Vậy, theo quy nạp, điều khẳng định đúng với mọi n + m ≥ 1. Cho X ⊆ A+. Nếu có một cặp dãy tính toán thành công Ui (n ≥ i ≥
Bổ đề 3.6
0), Vj (m ≥ j ≥ 1) kết hợp với X, thì X là k-nhập nhằng kiểu 2 với k = max(n, m) + 1. ∈ ε ∈ ε theo Bổ Nếu đề hoặc 3.5, tồn tại Chứng minh. Thật vậy, từ giả thiết Ui (n ≥ i ≥ 0), Vj (m ≥ j ≥ 1) là một cặp dãy tính
toán thành công, theo định nghĩa, ta có Ui 6= ∅, Vj 6= ∅ trong khoảng hữu hạn thích
hợp n ≥ i ≥ 0, m ≥ j ≥ 1, ε ∈ Un+1 hoặc ε ∈ Vm+1.
Vm+1, Un+1
x1, x2, . . . , xn+1, y1, y2, . . . , ym+1 ∈ X sao cho x1x2 · · · xn+1 = y1y2 · · · ym+1 với x1 6= y1. Vậy, theo định nghĩa, X là k-nhập nhằng kiểu 2 với k = max(n + 1, m + 1) = max(n, m) + 1. (cid:3) Chứng minh được hoàn thành. Tập X ⊆ A+ có độ không nhập nhằng kiểu 2 là k − 1 ≥ 0 khi và
Định lý 3.2
chỉ khi với mọi cặp dãy tính toán thành công Ui (n ≥ i ≥ 0), Vj (m ≥ j ≥ 1) ta có
max(n, m) ≥ k − 1. 3.1 Tính chất không nhập nhằng của ngôn ngữ 79 Chứng minh.
Chiều thuận. Phản chứng, giả sử X có độ không nhập nhằng kiểu 2 là k − 1 ≥ 0 và
giả sử tồn tại một cặp dãy tính toán thành công Ui (n ≥ i ≥ 0), Vj (m ≥ j ≥ 1) mà
max(n, m) < k − 1. Khi đó, theo Bổ đề 3.6, X là s-nhập nhằng kiểu 2 với s = max(n, m) + 1. Từ
s = max(n, m) + 1 và max(n, m) < k − 1, ta suy ra s < k. Nghĩa là k không phải là số
nguyên bé nhất để X là k-không nhập nhằng kiểu 2, hoặc tương đương, k − 1 không là độ không nhập nhằng kiểu 2 của X, trái với giả thiết. Chiều ngược. Phản chứng, giả sử với mọi cặp dãy tính toán thành công Ui (n ≥ i ≥
0), Vj (m ≥ j ≥ 1) ta có max(n, m) ≥ k − 1 và giả sử X là k − 1 nhập nhằng kiểu 2.
Khi đó, theo định nghĩa, tồn tại k − 1 ≤ p ≤ 1, x1, x2, . . . , xk−1, y1, y2, . . . , yp ∈ X sao
cho với x1x2 · · · xk−1 = y1y2 · · · yp x1 6= y1, hoặc tương đương, với x1x2 · · · xk−1ε = y1y2 · · · yp x1 6= y1. Theo Bổ đề 3.4, ta có cặp dãy Ui 6= ∅ (k − 1 ≥ i ≥ 0), Vj 6= ∅ (p − 1 ≥ j ≥ 1) với
ε ∈ Uk−1. Vậy ta có cặp dãy thành công Ui (k − 2 ≥ i ≥ 0), Vj (p − 1 ≥ j ≥ 1). Rõ
ràng s = max(k − 2, p − 1) + 1 < k, hoặc tương đương, max(k − 2, p − 1) < k − 1.
Điều này trái với giả thiết là với mọi với mọi cặp dãy tính toán thành công Ui (n ≥
i ≥ 0), Vj (m ≥ j ≥ 1) ta có max(n, m) ≥ k − 1. (cid:3) Chứng minh được hoàn thành. Trong phần này, ta biểu diễn thuật toán xác định độ không nhập nhằng kiểu 2 của ngôn ngữ chính quy nhận được từ Định lý 3.2 dưới hình thức một otomat đơn định
hữu hạn. Cho X là một ngôn ngữ chính quy. Từ X ta xây dựng otomat như sau.
Giả sử Σ = {a, b} là một bảng chữ với a, b là các ký hiệu đại diện cho các tập Ui, Vj được định nghĩa như trong Mục 3.1.3.1. Xét otomat A = (Q, Σ, δ, q0, T ) gồm: Tập trạng thái Q = {q | q = (i, j, U, V, is_a, is_b)}. Trong đó i, j là chỉ số của các
tập Ui, Vj; U, V ⊆ A+. Biến logic is_a, is_b được sử dụng để quyết định một bước
chuyển trạng thái hợp lý. Ta quy ước giá trị của is_a, is_b và các chỉ số i, j như sau. Nếu Ui+1 được tính thì is_a = true, is_b = f alse và i = i + 1.
Nếu Vj+1 được tính thì is_a = f alse, is_b = true và j = i + 1. Trạng thái ban đầu q0 = (0, 1, U, V, f alse, true), với U = U0 = X,
V = V1 = X −1X − {ε} 80 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA NGÔN NGỮ Hàm chuyển trạng thái được xây dựng như sau.
Tại một thời điểm bất kỳ, otomat ở trạng thái q = (i, j, U, V, is_a, is_b),
tùy thuộc giá trị của is_a, is_b mà otomat chuyển sang trạng thái mới q0 =
(i0, j0, U 0, V 0, is_a0, is_b0) theo hai trường hợp: Nếu is_a = true và U 6= ∅ thì δ(q, a) = q0 = (i0, j0, U 0, V 0, is_a0, is_b0), với i0 = i + 1,
j0 = j,
U 0 = X −1U,
V 0 = V ,
is_a0 = true,
is_b0 = f alse và δ(q, b) = q0 = (i0, j0, U 0, V 0, is_a0, is_b0), với i0 = i,
j0 = j + 1,
U 0 = U,
V 0 = U −1X,
is_a0 = f alse,
is_b0 = true Nếu is_b = true và V 6= ∅ thì δ(q, a) = q0 = (i0, j0, U 0, V 0, is_a0, is_b0), với i0 = i + 1,
j0 = j,
U 0 = V −1X,
V 0 = V ,
is_a0 = true,
is_b0 = f alse và δ(q, b) = q0 = (i0, j0, U 0, V 0, is_a0, is_b0), với i0 = i,
j0 = j + 1,
U 0 = U,
V 0 = X −1V ,
is_a0 = f alse,
is_b0 = true T ⊆ Q là tập trạng thái kết thúc. Trạng thái q = (i, j, U, V, is_a, is_b) ∈ T nếu ε ∈ U hoặc ε ∈ V . Một đường đi trong otomat A là một dãy các trạng thái c = (q0, q1, . . . , qn) với 3.2 Phân bậc ngôn ngữ theo tính không nhập nhằng 81 u ∈ Σ, 0 ≤ i < n. qi+1 = δ(qi, u), Một đường đi c được gọi là đường đi thành công nếu qn ∈ T . Ta ký hiệu tập tất cả các đường đi thành công trong A là C. Cho otomat A = (Q, Σ, δ, q0, T ) được xác định bởi X như trên
Định nghĩa 3.4
và cho c là một đường đi thành công từ trạng thái khởi đầu q0 tới trạng thái q =
(i, j, U, V, is_a, is_b) ∈ T trong A. Khi đó giá của c, kí hiệu bởi V al(c), là V al(c) =
max(i, j) − 1. Định lý sau đây là hệ quả trực tiếp của Định lý 3.2, nó cung cấp cho ta một thuật toán xác định độ không nhập nhằng kiểu 2 của một ngôn ngữ chính quy bất kỳ. Cho otomat A = (Q, Σ, δ, q0, T ) được xác định bởi X như trên. Giả sử
Định lý 3.3
C là tập tất cả các đường đi thành công trong A. Khi đó, X có độ không nhập nhằng
kiểu 2 là k ≥ 0, được xác định bởi k = min{d | d = V al(c), c ∈ C}. Cho A = {a, b} và cho X = {a, b, abab}. Ta chỉ có một đường đi thành Ví dụ 3.4
công là q0 = (0, 1, {a, b, abab}, {bab}, f alse, true),
q1 = (0, 2, {a, b, abab}, {ab}, f alse, true),
q2 = (0, 3, {a, b, abab}, {b}, f alse, true),
q3 = (0, 4, {a, b, abab}, {ε}, f alse, true). Vì ε ∈ V , ta suy ra q3 ∈ T , theo Định lý 3.3, X có độ không nhập nhằng kiểu 2 là k = 3. Ta ký hiệu Lk là lớp ngôn ngữ k-không nhập nhằng kiểu 1. Khi đó L0 là lớp tất cả
các ngôn ngữ, L∞ là lớp ω-mã, và LCode là lớp mã. Vì X ⊆ A+ là k-không nhập nhằng kiểu 1 với mọi k ≥ 0 khi và chỉ khi X là mã. Do đó nếu X ∈ LCode thì X ∈ Li với mọi i ≥ 0. Ta có i≥0
T LCode = Li. Theo Ví dụ 3.2, ta có phân bậc ngôn ngữ L∞ ( LCode ( · · · ( L2 ( L1 ( L0. 82 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA NGÔN NGỮ Chú ý rằng các lớp ngôn ngữ k-không nhập nhằng kiểu 1 hữu hạn mặc Nhận xét 3.3
dù không là mã nhưng vẫn có thể sử dụng được để mã hóa thông tin. Ví dụ 3.5 Cho A = {c, a1, a2, a3, b1, b2} và X = {c, ca1, a1b1, b1a2, a2b2, b2a3, a3}. Theo Ví dụ 3.2, độ không nhập nhằng kiểu 1 của X là 2. Giả sử có thông điệp w = ca1b1a2b2a3. Nếu ta mã hóa thông điệp w thành các đoạn
mã gồm không quá 2 từ của X thì phép giải mã đảm bảo tính duy nhất. Ví dụ w được
mã thành hai đoạn mã w1 và w2, w1 = (c)(a1b1) và w2 = (a2b2)(a3). Khi đó phép giải
mã cho kết quả duy nhất w = w1w2 = (c)(a1b1)(a2b2)(a3). Ngược lại, phép giải mã là nhập nhằng. Ví dụ w được mã thành một đoạn mã có độ dài 3, w1 = (ca1)(b1a2)(b2a3). Khi đó, phép giải mã cho hai khả năng w = (c)(a1b1)(a2b2)(a3) hoặc w = (ca1)(b1a2)(b2a3). Nhận xét 3.4 Trong thực tiễn, có ngôn ngữ X thuộc lớp ngôn ngữ k-không nhập nhằng kiểu 1 nhưng X chỉ có một số ít dãy nhập nhằng. Chẳng hạn, trong Ví dụ 3.2,
X chỉ có một dãy nhập nhằng là ca1b1a2 · · · bk−1akbk. Vì vậy, để nâng cao tính bảo mật
cho các sơ đồ ứng dụng, ta phải xây dựng được X có nhiều dãy nhập nhằng. Bổ đề sau đây cho phép ta tìm được X là k-không nhập nhằng kiểu 1 có ít nhất m dãy nhập
nhằng, với m ≥ 1. k}. Khi đó k, bi kbi 2, . . . , bi 1, ai 1, bi 1ai 1bi k−1ai m Bổ đề 3.7
nhằng kiểu 1, X i = {ci, ciai Cho m ≥ 1, k ≥ 0 và X i (i = 1, . . . , m) là các ngôn ngữ k-không nhập
k, ai m i=1
T (i) X i = ∅. i=1
S (ii) Ngôn ngữ X = X i là k-không nhập nhằng kiểu 1. m Chứng minh. Chứng minh (i). Với x ∈ X i bất kỳ, ta có x /∈ X j với mọi j 6= i. Vậy ta
có i=1
T 1, với ci, ciai X i = ∅. Chứng minh (ii). Giả sử X là k-nhập nhằng kiểu 1. Khi đó tồn tại dãy x1x2 · · · xk =
y1y2 · · · ym, m ≥ 1, x1, x2, . . . , xk, y1, y2, . . . , ym ∈ X, với x1 6= y1. Không mất tính tổng
quát, giả sử |x1| < |y1|, khi đó tồn tại u ∈ A∗ sao cho x1u = y1. Theo cách xác định
1 ∈ X i nào đó.
các X i và (i) thì chỉ có một khả năng x1 = ci và y1 = ciai
Tương tự, ta phải có xj, yl ∈ X i, j = 1, . . . , k, l = 1, . . . , m. Từ đó suy ra X i là k-nhập
nhằng kiểu 1, trái với giả thiết X i là k-không nhập nhằng kiểu 1. Vậy X là k-không
(cid:3)
nhập nhằng kiểu 1. 3.3 Độ trễ giải mã 83 Ta ký hiệu Lk là lớp ngôn ngữ k-không nhập nhằng kiểu 2. Khi đó ta có phân bậc
ngôn ngữ L∞ ( · · · ( L2 ( L1 ( L0. Ta để ý rằng L∞ chính là lớp mã luân phiên chẵn của các ngôn ngữ Z = XY với X, Y là các ngôn ngữ bất kỳ nằm trong A+. Mặt khác, ứng với cặp ngôn ngữ X, Y = X, ta có phân bậc lùi vô hạn của các lớp mã truyền thống theo độ trễ giải mã Ld=0,X,X ( Ld=1,X,X ( · · · ( Ld=k,X,X ( · · · ( LX,X. Tuy nhiên, phân bậc này là một trường hợp đặc biệt của lớp mã luân phiên chẵn ứng với Y = X. Vậy ta có LX,X ( L∞. Từ đó ta nhận được một phân bậc ngôn ngữ tổng quát theo k-không nhập nhằng kiểu 2 như sau Ld=0,X,X ( Ld=1,X,X ( · · · ( Ld=k,X,X ( · · · ( LX,X ( L∞ ( · · · ( L2 ( L1 ( L0. Nhận xét 3.5 Khi phân loại ngôn ngữ theo k-không nhập nhằng kiểu 2, ta nhận được
một phân bậc ngôn ngữ đầy đủ, rất mịn và lý thú. Một mặt, đây là phân bậc hai chiều có hai vùng vô hạn. Trong đó, trường hợp riêng của mã luân phiên chẵn chứa toàn bộ
các lớp mã truyền thống được phân loại theo độ trễ giải mã: LX,X ( LX,Y . Mặt khác, lớp mã luân phiên chẵn là lớp ngôn ngữ nằm giữa trong phân bậc theo ∞ phương pháp này. i≥1
T
Chú ý rằng các lớp ngôn ngữ Li mặc dù không là mã nhưng vẫn có thể sử dụng
được để mã hóa dữ liệu. Ngôn ngữ X khi đó đóng vai trò là tập nguồn, ngôn ngữ Y L∞ = Li. đóng vai trò là tập nhiễu được chèn luân phiên vào tập X. Phép giải mã chỉ được thực
hiện chính xác khi biết k và tập nhiễu Y . Ta thiết lập các kết quả sau đây cho mối quan hệ giữa độ không nhập nhằng và độ trễ
giải mã của ngôn ngữ. Mệnh đề 3.4 Giả sử X ⊆ A+. Khi đó, nếu X có độ trễ giải mã hữu hạn thì X là k-không nhập nhằng kiểu 1 với mọi k ≥ 0. 84 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA NGÔN NGỮ Chứng minh. Giả sử X có độ trễ giải mã hữu hạn, theo Mệnh đề 1.8, X là mã. Theo
(cid:3)
Mệnh đề 3.2, X là k-không nhập nhằng kiểu 1 với mọi k ≥ 0. Giả sử X ⊆ A+. Khi đó, nếu X có độ không nhập nhằng kiểu 1 hữu Mệnh đề 3.5
hạn thì X có độ trễ giải mã vô hạn. Chứng minh. Phản chứng, giả sử X có độ trễ giải mã hữu hạn, theo Mệnh đề 1.8, X là mã. Theo Mệnh đề 3.2, X là k-không nhập nhằng với mọi k ≥ 0, trái với giả thiết.
(cid:3) Chứng minh được hoàn thành. Cho X ⊆ A+, dựa vào định nghĩa độ trễ giải mã (Định nghĩa 1.2), ta xem xét hai 0 X ∪ (X −1X − {ε}), tập phần dư Vi, Ui kết hợp với X được định nghĩa đệ quy như sau. (3.10) U0 = (X +)−1X − {ε},
V1 = U −1
Ui = (ViX ∗)−1X, i X ∪ X −1Vi, i ≥ 1. Vi+1 = U −1 Ta thiết lập các kết quả sau đây cho tính đúng đắn của thủ tục. Cho X ⊆ A+ và cho Vi, Ui (i ≥ 1) được định nghĩa theo công thức
Bổ đề 3.8
(3.10). Với z bất kỳ thuộc A∗, d ≥ 1, nếu có z ∈ Vd thì tồn tại một số nguyên m ≥ 1
và x1, x2, . . . , xd, y1, y2, . . . , ym ∈ X sao cho 0 X hoặc z ∈ X −1X − {ε}. x1x2 · · · xdz = y1y2 · · · ym với x1 6= y1. 0 X, ta có u0 ∈ U0, y ∈ X sao cho z = u−1 0 y, hoặc tương đương, y = u0z.
Mặt khác, từ u0 ∈ U0 = (X +)−1X − {ε}, ta có y1y2 · · · ys ∈ X +, x ∈ X sao cho
u0 = (y1y2 · · · ys)−1x và u0 6= ε, hoặc tương đương, x = y1y2 · · · ysu0 với x 6= x1. Từ
y = u0z và x = y1y2 · · · ysu0 với x 6= y1, ta suy ra Chứng minh. Ta chứng minh quy nạp theo d.
Với d = 1, giả sử có z ∈ V1. Khi đó z ∈ U −1
Nếu z ∈ U −1 xz = y1y2 · · · ysu0z = y1y2 · · · ysy với x 6= y1. d X hoặc z ∈ X −1Vd. Vậy, điều khẳng định đúng với d = 1. d X, ta có ud ∈ Ud, y ∈ X sao cho z = u−1 Giả sử điều khẳng định đúng với d ≥ 1, ta chứng minh nó cũng đúng với d + 1.
Giả sử có z ∈ Vd+1. Khi đó z ∈ U −1
Nếu z ∈ U −1 d y, hoặc tương đương,
λ ∈ X ∗, xd+1 ∈ X sao cho 1y0 2 · · · y0 y = udz. Từ ud ∈ Ud = (VdX ∗)−1X, ta có vd ∈ Vd, y0 λud. Mặt khác, với 2 · · · y0 1y0 2 · · · y0 1y0 3.3 Độ trễ giải mã 85 ud = (vdy0
λ)−1xd+1, hoặc tương đương, xd+1 = vdy0
vd ∈ Vd ta có số nguyên m ≥ 1 và x1, x2, . . . , xd, y1, y2, . . . , ym ∈ X sao cho x1x2 · · · xdvd = y1y2 · · · ym với x1 6= y1. Từ đó ta có λudz = y1y2 · · · ymy0 λudz với x1 6= y1. 1y0 2 · · · y0 1y0 2 · · · y0 x1x2 · · · xdvdy0 λud, ta suy ra 1y0 2 · · · y0 Từ y = udz và xd+1 = vdy0 λy với x1 6= y1. 1y0 2 · · · y0 x1x2 · · · xdxd+1z = y1y2 · · · ymy0 d+1vd, hoặc tương đương, vd =
xd+1z. Mặt khác, với vd ∈ Vd ta có số nguyên m ≥ 1 và x1, x2, . . . , xd, y1, y2, . . . , ym ∈ X
sao cho Nếu z ∈ X −1Vd, ta có xd+1 ∈ X, vd ∈ Vd sao cho z = x−1 x1x2 · · · xdvd = y1y2 · · · ym với x1 6= y1. Từ vd = xd+1z ta có x1x2 · · · xdxd+1z = y1y2 · · · ym với x1 6= y1. (cid:3) Vậy điều khẳng định đúng với mọi d ≥ 1. Chiều ngược của Bổ đề 3.8 không đúng cho trường hợp z bất kỳ. Trong bổ đề đối ngẫu sau đây, với |z| < |ym|, ta chứng minh z thuộc vào tập Vd. Cho X ⊆ A+ và cho Vi, Ui (i ≥ 1) được định nghĩa theo công thức (3.10). Bổ đề 3.9
Với z bất kỳ thuộc A∗, x1, x2, . . . , xd, y1, y2, . . . , ym ∈ X, d, n ≥ 1, nếu có |z| < |ym| và x1x2 · · · xdz = y1y2 · · · ym với x1 6= y1 thì khi đó z ∈ Vd. Chứng minh. Ta chứng minh quy nạp theo d. Với d = 1, giả sử ta có |z| < |ym| và x1z = y1y2 · · · ym với x1 6= y1. Từ điều kiện x1 6= y1, ta xét hai khả năng có thể xảy ra: |x1| < |y1| hoặc |x1| > |y1|. Nếu |x1| < |y1| thì từ điều kiện |z| < |ym| ta suy ra y1 = x1z, z 6= ε, hoặc tương 1 y1 ∈ X −1X − {ε} ⊆ V1. đương, z = x−1 0 X ⊆ V1. Nếu |x1| > |y1| thì từ điều kiện |z| < |ym| ta suy ra ym = uz với u ∈ A+. Mặt khác,
từ điều kiện x1z = y1y2 · · · ym với x1 6= y1 và ym = uz, ta suy ra x1 = y1y2 · · · ym−1u
với x1 6= y1, hoặc tương đương, u = (y1y2 · · · ym−1)−1x1 ∈ (X +)−1X − {ε} = U0. Từ đó
z = u−1ym ∈ U −1 Vậy điều khẳng định đúng với d = 1. Giả sử điều khẳng định đúng với d ≤ 1, ta chứng minh nó cũng đúng với d + 1. 86 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA NGÔN NGỮ Giả sử ta có |z| < |ym| và x1x2 · · · xd+1z = y1y2 · · · ym với x1 6= y1. Ta xét ba khả năng có thể xảy ra khi so sánh độ dài của xd+1z và ym: Trường hợp 1: |xd+1z| < |ym|. Theo giả thiết quy nạp, xd+1z = vd ∈ Vd, hoặc tương d+1vd ∈ X −1Vd ⊆ Vd+1. đương, z = x−1 Trường hợp 2: xd+1z = ym. Từ x1x2 · · · xd+1z = y1y2 · · · ym với x1 6= y1, ta có x1x2 · · · xd = y1y2 · · · ym−1 với x1 6= y1, hoặc tương đương, x1x2 · · · xdε = y1y2 · · · ym−1 với x1 6= y1. Theo giả thiết quy nạp, ta có ε ∈ Vd. Từ đó suy ra ε−1xd+1 = xd+1 ∈ (VdX ∗)−1X = d X ⊆ Vd+1. Vậy z ∈ Vd+1. d+1ym ∈ U −1 Ud. Với xd+1z = ym, ta có z = x−1 Trường hợp 3: |xd+1z| > |ym|. Từ điều kiện |z| < |ym| ta suy ra ym = uz với
u ∈ A+. Từ điều kiện |xd+1z| > |ym| ta có s ≥ 1, z0 ∈ A∗ : |z0| < |ys| sao cho
xd+1z = z0ys+1ys+2 · · · ym−1uz. Nghĩa là ta có x1x2 · · · xdz0 = y1y2 · · · ys xd+1 = z0ys+1ys+2 · · · ym−1u với |z0| < |ys| và x1 6= y1. Theo giả thiết quy nạp, z0 ∈ Vd. Từ đó (z0ys+1ys+2 · · · ym−1)−1xd+1 = u ∈ d X ⊆ Vd+1. (VdX ∗)−1X = Ud. Từ ym = uz và u ∈ Ud, ta có z = u−1ym ∈ U −1 (cid:3) Vậy, điều khẳng định đúng với mọi d ≥ 1. Cho X ⊆ A+ và cho Vi, Ui (i ≥ 1) được định nghĩa theo công thức Bổ đề 3.10
(3.10). Với mọi d ≥ 0, nếu Vd+1 6= ∅ thì X không có độ trễ giải mã d. Chứng minh. Thật vậy, với Vd+1 6= ∅, theo Bổ đề 3.8, tồn tại z ∈ Vd+1, m ≥ 1 và
x1, x2, . . . , xd, y1, y2, . . . , ym ∈ X sao cho x1x2 · · · xd+1z = y1y2 · · · ym với x1 6= y1. (cid:3) Khi đó, theo định nghĩa, X không có độ trễ giải mã d. Cho X ⊆ A+ và cho Vi, Ui (i ≥ 1) được định nghĩa theo công thức Bổ đề 3.11
(3.10). Với mọi d ≥ 1, nếu Vd 6= ∅ thì Vs 6= ∅ với mọi s ≤ d. Chứng minh. Phản chứng, giả sử có s < d sao cho Vs = ∅. Khi đó, theo định nghĩa s X) = ∅. Us = (VsX ∗)−1X = (X ∗)−1(V −1 Tiếp theo, ta có s X ∪ X −1Vs = ∅. Vs+1 = U −1 3.3 Độ trễ giải mã 87 Lập luận tương tự, ta có Vn 6= ∅ với mọi n ≥ s. Vậy, ta phải có Vd = ∅. Điều này trái
(cid:3)
với giả thiết Vd 6= ∅. Cho X ⊆ A+ và cho Vi, Ui (i ≥ 1) được định nghĩa theo công thức Bổ đề 3.12
(3.10). Nếu tồn tại s ≥ 1 sao cho ε ∈ Vs thì Vd 6= ∅ với mọi d ≥ 1. Chứng minh. Giả sử có s ≥ 1 sao cho ε ∈ Vs. Khi đó Vs 6= ∅, theo Bổ đề 3.11, Vd 6= ∅
với mọi d < s. Tiếp theo, ta chứng minh Vd 6= ∅ với mọi d ≥ s. Thật vậy, theo định
nghĩa ta có Us = (VsX ∗)−1X. Vì ε ∈ Vs, ta suy ra X = ε−1X ⊆ Us. Khi đó s X ⊆ Vs+1. ε ∈ X −1X ⊆ U −1 (cid:3) Tiếp tục lập luận như trên ta có ε ∈ Vd với mọi d ≥ s.
Vậy Vd 6= ∅ với mọi d ≥ 1. Định lý sau đây là kết quả chính của mục này, nó cung cấp cho ta một tiêu chuẩn xác định độ trễ giải mã của một ngôn ngữ chính quy bất kỳ. Cho X ⊆ A+ và cho Vi, Ui (i ≥ 1) được định nghĩa theo công thức
Định lý 3.4
(3.10). Khi đó, X có độ trễ giải mã hữu hạn d ≥ 0 khi và chỉ khi Vd+1 = ∅ và Vd 6= ∅. Chứng minh. Ta chứng minh hai chiều. Chiều thuận. Nếu X có độ trễ giải mã hữu hạn d ≥ 0 thì Vd+1 = ∅ và Vd 6= ∅. Phản chứng, giả sử X có độ trễ giải mã hữu hạn d và giả sử Vd+1 6= ∅ hoặc Vd = ∅.
Nếu Vd+1 6= ∅ thì theo Bổ đề 3.10, X không có độ trễ giải mã d, trái với giả thiết.
Nếu Vd = ∅, thì tồn tại một số nguyên nhỏ nhất s ≤ d sao cho Vs = ∅. Với mọi x ∈ X, y ∈ X s−1, u = ε ∈ A∗ ta luôn có đẳng thức xyε ∈ xX ∗. Theo định nghĩa, X có độ trễ giải mã s − 1 < d, trái với giả thiết X có độ trễ giải mã
d. Chiều ngược. Nếu Vd+1 = ∅ và Vd 6= ∅ thì X có độ trễ giải mã hữu hạn d ≥ 0.
Phản chứng, giả sử X không có độ trễ giải mã d. Khi đó xảy ra ba trường hợp sau: (a) X có độ trễ giải mã s < d. (b) X có độ trễ giải mã vô hạn.
(c) X có độ trễ giải mã d0 > d. Chứng minh (a). Giả sử X có độ trễ giải mã s < d. Từ Vd 6= ∅, theo Bổ đề 3.10, X
không có độ trễ giải mã s < d, trái với giả thiết. Vậy X không có độ trễ giải mã s < d. Chứng minh (b). Giả sử X có độ trễ giải mã vô hạn, hoặc tương đương, 88 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA NGÔN NGỮ ∃s0 ≥ 0 để X có độ trễ giải mã s0 ⇔ ∃s ≥ 0 để X có độ trễ giải mã yếu s ⇔ ∀s ≥ 0, x1, x2, . . . , xs, y1, y2, . . . , ym ∈ X, u ∈ A∗, ∃x1x2 · · · xsu = y1y2 · · · ym với x1 6= y1. Xét s = d + 1, từ đẳng thức x1x2 · · · xd+1u = y1y2 · · · ym với x1 6= y1. So sánh độ dài của từ u và từ ym, ba khả năng sau đây có thể xảy ra Trường hợp 1: |u| < |ym|. Theo Bổ đề 3.9, u ∈ Vd+1, hoặc tương đương, Vd+1 6= ∅, trái với giả thiết. Trường hợp 2: u = ym. Ta có x1x2 · · · xd+1 = y1y2 · · · ym−1 với x1 6= y1, hoặc tương đương, x1x2 · · · xd+1ε = y1y2 · · · ym−1 với x1 6= y1. Theo Bổ đề 3.9, ta suy ra ε ∈ Vd+1, hoặc tương đương Vd+1 6= ∅, trái với giả thiết.
Trường hợp 3: |u| > |ym|. Tồn tại j < m, u0 ∈ A∗ sao cho u = u0yj+1yj+2 · · · ym và |u0| < |yj|. Khi đó ta có x1x2 · · · xd+1u0 = y1y2 · · · yj
u = u0yj+1yj+2 · · · ym với x1 6= y1 và |u0| < |yj|. Theo Bổ đề 3.9, u0 ∈ Vd+1, hoặc tương đương, Vd+1 6= ∅, trái với giả thiết. Vậy X không có độ trễ giải mã vô hạn.
Chứng minh (c). Giả sử X có độ trễ giải mã d0 > d.
Theo định nghĩa, tồn tại x1, x2, . . . , xd0+1, y1, y2, . . . , ym ∈ X, u ∈ A∗ sao cho x1x2 · · · xd0+1u = y1y2 · · · ym với x1 = y1. Ta suy ra x2 · · · xd0+1u = y2 · · · ym. Từ hệ thức trên, nếu x2 = y2 thì X có độ trễ giải mã d0 − 1, trái với giả thiết. Do đó ta có x2 · · · xd0+1u = y2 · · · ym với x2 6= y2. 3.3 Độ trễ giải mã 89 So sánh độ dài của từ u và từ ym, ba khả năng sau đây có thể xảy ra Trường hợp 1: |u| < |ym|. Theo Bổ đề 3.9, u ∈ Vd0, hoặc tương đương, Vd0 6= ∅. Theo 6= ∅, trái với giả thiết. Bổ đề 3.11, Vs 6= ∅ với mọi s ≤ d0. Từ đó ta suy ra Vd+1≤d0 Trường hợp 2: u = ym. Ta có x2 · · · xd0+1 = y2 · · · ym−1 với x2 6= y2, hoặc tương đương d. Theo Bổ đề 3.12, Vs 6= ∅ với mọi s ≥ 1. Từ đó x2 · · · xd0+1ε = y2 · · · ym−1 với x2 6= y2. Theo Bổ đề 3.9, ta suy ra ε ∈ V 0
Vd+1 6= ∅, trái với giả thiết. Trường hợp 3: |u| > |ym|. Tồn tại j < m, u0 ∈ A∗ sao cho u = u0yj+1yj+2 · · · ym và |u0| < |yj|. Khi đó ta có x2x3 · · · xd0+1u0 = y2y3 · · · yj
u = u0yj+1yj+2 · · · ym với x2 6= y2 và |u0| < |yj|. Theo Bổ đề 3.9, u0 ∈ Vd0, hoặc tương đương, Vd0 6= ∅. Theo Bổ đề 3.11, Vs 6= ∅ với mọi
s ≤ d0. Từ đó ta suy ra Vd+1≤d0 6= ∅, trái với giả thiết. Do đó X không có độ trễ giải mã d0 > d.
Quá trình chứng minh kết thúc và ta rút ra kết luận X có độ trễ giải mã d. (cid:3) Từ Định lý 3.4, ta suy ra các kết quả sau Cho X ⊆ A+ và cho Vi, Ui (i ≥ 1) được định nghĩa theo công thức Hệ quả 3.1
(3.10). Nếu ε ∈ Vi với i ≥ 1 nào đó, thì X không có độ trễ giải mã hữu hạn. Chứng minh. Thật vậy, nếu ε ∈ Vi với i ≥ 1, theo Bổ đề 3.12, Vd 6= ∅ với mọi d ≥ 1.
(cid:3)
Theo Định lý 3.4, X không có độ trễ giải mã hữu hạn. Cho X ⊆ A+ và cho Vi, Ui (i ≥ 1) được định nghĩa theo công thức
Hệ quả 3.2
(3.10). Nếu có Vj = Vi và Vi 6= ∅ với j > i nào đó, thì X không có độ trễ giải mã hữu
hạn. Chứng minh. Giả sử Vj = Vi với j > i. Đặt j = i + r, r ≥ 1. Khi đó, theo định nghĩa
ta có Ui+r = (Vi+rX ∗)−1X = (ViX ∗)−1X = Ui. Từ Vi+r = Vi và Ui+r = Ui ta có i X ∪ X −1Vi = Vi+1. i+rX ∪ X −1Vi+r = U −1 Vi+r+1 = U −1 90 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA NGÔN NGỮ Vì Vi 6= ∅, ta suy ra Vi+r 6= ∅. Từ Vi+r 6= ∅, theo Bổ để 3.11, Vs 6= ∅ với mọi s ≤ i+r. Ta suy ra Vi+r+1 = Vi+1 6= ∅. Lập luận tương tự ta có Vi+r+2 = Vi+2 6= ∅, Vi+r+3 = Vi+3 6= ∅, · · ·
Nghĩa là ta có Vn 6= ∅ với mọi n ≥ 1. Theo Định lý 3.4, X không có độ trễ giải mã hữu hạn. (cid:3) Ví dụ 3.6 Cho A = {a, b} và cho X = {ab, abb, baab}. Ta có U0 = {b}
V1 = {b, aab}
U1 = {aab}
V2 = ∅ Vì V2 = ∅ và V1 6= ∅, theo Định lý 3.4, X có độ trễ giải mã d = 1. Ví dụ 3.7 Cho A = {a, b} và cho X = {aa, b, baac}. Ta có U0 = {c, aac}
V1 = {aac}
U1 = ∅
V2 = {c}
U2 = ∅
V3 = ∅ Vì V3 = ∅ và V2 6= ∅, theo Định lý 3.4, X có độ trễ giải mã d = 2. Ví dụ 3.8 Cho A = {a, b} và cho X = {a, ab, bb}. Ta có U0 = {b}
V1 = {b}
U1 = {b}
V2 = {b} Vì V2 = V1 = ∅ và V1 6= ∅, theo Hệ quả 3.2, X không có độ trễ giải mã hữu hạn. Trong trường hợp X là ngôn ngữ chính quy, Định lý 3.4 cung cấp một
Nhận xét 3.6
thuật toán xác định độ trễ giải mã của X vì các tập Vi, Ui (i ≥ 1) kết hợp với X là hữu
hạn (xem Hệ quả 1.1). Trong phần này, ta biểu diễn thuật toán xác định độ trễ giải mã của ngôn ngữ
chính quy nhận được từ Định lý 3.4 dưới hình thức của một otomat đơn định hữu hạn. Cho X là một ngôn ngữ chính quy. Từ X ta xây dựng otomat như sau:
Giả sử Σ = {a, b} là một bảng chữ với a, b là các ký hiệu đại diện cho các tập Vi, Ui được định nghĩa theo công thức (3.10). Xét otomat A = (Q, Σ, δ, q0, T ) gồm: 3.3 Độ trễ giải mã 91 Tập trạng thái Q = {q | q = (i, V, U, is_a)}. Trong đó i là chỉ số của tập Vi;
V, U ⊆ A+. Biến logic is_a được sử dụng để quyết định một bước chuyển trạng thái
hợp lý. Ta quy ước giá trị của is_a và chỉ số i như sau: Nếu Vi được tính thì is_a = true và i = i + 1.
Nếu Ui được tính thì is_a = f alse và i giữ nguyên. Trạng thái ban đầu q0 = (1, V, U, true), với U = U0 = (X +)−1X − {ε}, 0 X ∪ (X −1X − {ε}) V = V1 = U −1 Hàm chuyển trạng thái được xây dựng như sau: Tại một thời điểm bất kỳ, otomat ở trạng thái q = (i, V, U, is_a), tùy thuộc giá trị
của is_a mà otomat chuyển sang trạng thái mới q0 = (i0, V 0, U 0, is_a0) theo hai trường
hợp: Nếu is_a = true thì δ(q, b) = q0 = (i0, V 0, U 0, is_a0), với i0 = i,
V 0 = V ,
U 0 = (V X ∗)−1X,
is_a0 = f alse Nếu is_a = f alse thì δ(q, a) = q0 = (i0, V 0, U 0, is_a0), với i0 = i + 1,
V 0 = U −1X ∪ X −1V ,
U 0 = U,
is_a0 = true T ⊆ Q là tập trạng thái kết thúc. Trạng thái q = (i, V, U, is_a) ∈ T nếu V = ∅.
Một đường đi trong otomat A là một dãy các trạng thái c = (q0, q1, . . . , qn) với u ∈ Σ, 0 ≤ i < n. qi+1 = δ(qi, u), Một đường đi c được gọi là đường đi thành công nếu qn ∈ T . Ta ký hiệu tập tất cả các đường đi thành công trong A là C. Cho otomat A = (Q, Σ, δ, q0, T ) được xác định bởi X như trên
Định nghĩa 3.5
và cho c là một đường đi thành công từ trạng thái khởi đầu q0 tới trạng thái q =
(i, V, U, is_a) ∈ T trong A. Khi đó giá của c, kí hiệu bởi V al(c), là V al(c) = i − 1. Định lý sau đây cung cấp cho ta một thuật toán tìm độ trễ giải mã của một ngôn ngữ chính quy bất kỳ. 92 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA NGÔN NGỮ Cho otomat A = (Q, Σ, δ, q0, T ) được xác định bởi X như trên. Giả sử
Định lý 3.5
C là tập tất cả các đường đi thành công trong A. Khi đó, X có độ trễ giải mã d ≥ 0,
được xác định bởi d = min{k | k = V al(c), c ∈ C}. Chứng minh. Xét c ∈ C, d = V al(c). Khi đó, theo giả thiết Vd+1 = ∅. Nếu c là đường
đi ngắn nhất thì d là giá trị bé nhất thỏa điều kiện Vd+1 = ∅ và Vd 6= ∅. Theo Định lý
(cid:3)
3.4, d là độ trễ giải mã của X. Ví dụ 3.9 Cho A = {a, b} và cho X = {ab, abb, baab}. Ta có q0 = (1, {b, aab}, {b}, true)
q1 = δ(q0, b) = (1, {b, aab}, {aab}, f alse)
q2 = δ(q1, a) = (2, ∅, {aab}, true) Vì V = ∅, ta suy ra q2 ∈ T , theo Định lý 3.5, X có độ trễ giải mã d = 1. Cho A = {c, a1, a2, a3, b1, b2, b3} và cho Ví dụ 3.10
X = {c, ca1, a1b1, b1a2, a2b2, b2a3, a3b3}. Ta có
q0 = (1, {a1, b1}, {a1}, true)
q1 = δ(q0, b) = (1, {a1, b1}, {b1, a2}, f alse)
q2 = δ(q1, a) = (2, {a2, b2}, {b1, a2}, true)
q3 = δ(q2, b) = (2, {a2, b2}, {b2, a3}, f alse)
q4 = δ(q3, a) = (3, {a3, b3}, {b2, a3}, true)
q5 = δ(q4, b) = (3, {a3, b3}, {b3}, f alse)
q6 = δ(q5, a) = (4, ∅, {b3}, true) Vì V = ∅, ta suy ra q6 ∈ T , theo Định lý 3.5, X có độ trễ giải mã d = 3. Trong mục này ta thiết lập thuật toán xác định độ trễ giải mã của ♦-mã. Chi tiết thuật
toán đã được trình bày trong công trình [35], vì vậy ta chỉ trình bày các kết quả chính. ♦−ε. Khi đó X được gọi là có độ Định nghĩa 3.6 Giả sử X là một tập con của A+ trễ giải mã hữu hạn nếu có một số nguyên d ≥ 0 sao cho ♦, xyu ∈ x0X ∗ ⇒ x = x0. ∀x, x0 ∈ X, ∀y ∈ X d, ∀u ∈ A∗ (3.11) Dễ thấy rằng nếu hệ thức (3.11) thoả mãn với d nào đó thì nó cũng đúng với mọi
d0 ≥ d. Nếu X có độ trễ giải mã hữu hạn thì số nguyên nhỏ nhất thoả hệ thức (3.11)
được gọi là độ trễ giải mã của X, số nguyên bất kỳ thỏa hệ thức (3.11) được gọi là độ trễ giải mã yếu của X. Cho A = {a, b} và B = {0, 1}. Khi đó tập X = {(0, a, 0), (0, aab, 0)} có Ví dụ 3.11
độ trễ giải mã d = 2. 3.3 Độ trễ giải mã 93 ♦−ε và B = {0, 1}, dựa vào định nghĩa độ trễ giải mã của ♦-ngôn ngữ, Cho X ⊆ A+ ta xem xét tập phần dư Vi kết hợp với X được định nghĩa đệ quy như sau (3.12) U = {e} ∪ {(j, ε, j) | j ∈ B}, V0 = X +,
V1 = X −1V0 − X + − U,
Vi+1 = X −1Vi − X +, i ≥ 1. Tương tự phương pháp thiết lập thuật toán tìm độ trễ giải mã cho ngôn ngữ chính quy được trình bày ở mục trước, ta đưa ra các kết quả sau đây. ♦−ε và Vi (i ≥ 0) được định nghĩa theo công thức (3.12).
♦, d ≥ 0, ta có z ∈ Vd+1 khi và chỉ khi tồn tại một số nguyên Cho X ⊆ A+ Bổ đề 3.13
Với z bất kỳ thuộc A∗
m ≥ 0 và x0, x1, . . . , xd, y0, y1, . . . , ym ∈ X sao cho (3.13) x0x1 · · · xdz = y0y1 · · · ym với x0 6= y0. Các định lý sau đây là kết quả chính của mục này, nó cung cấp cho ta một thuật toán xác định độ trễ giải mã của ♦-ngôn ngữ chính quy. ♦−ε và Vi (i ≥ 0) được định nghĩa theo công thức (3.12). Cho X ⊆ A+ Định lý 3.6
Khi đó, X có độ trễ giải mã hữu hạn d ≥ 0 khi và chỉ khi Vd+1 = ∅ và Vd 6= ∅. Cho A, B, X như trong Ví dụ 3.11. Khi đó ta có V1 = {(0, ab(a +
Ví dụ 3.12
aab)∗, 0)}, V2 = {(0, b(a + aab)∗, 0)}, V3 = ∅. Vậy theo Định lý 3.6, X có độ trễ
giải mã d = 2. Tồn tại thuật toán xác định độ trễ giải mã cho ♦-ngôn ngữ chính quy Định lý 3.7
có độ phức tạp thời gian là O(2Card(P )), với P là vị nhóm hữu hạn thỏa X. Chứng minh. Trong trường hợp X là ♦-ngôn ngữ chính quy, thuật toán xác định độ
trễ giải mã cho ♦-mã cung cấp bởi Định lý 3.6 luôn dừng sau không quá 2Card(P ) bước,
với P là vị nhóm hữu hạn thỏa X và X +. Thật vậy, theo giả thiết X là ♦-ngôn ngữ chính quy. Ta có thể xây dựng một
♦ → P , với P là vị nhóm hữu hạn, sao cho ϕ thỏa đồng thời cả ♦-toàn cấu ϕ : A∗
X, X +, e, (0, ε, 0), (1, ε, 1). Vì ϕ là ♦-toàn cấu, ta có ϕ−1 bảo toàn với các phép toán Boole, phép lấy thương
trái, thương phải trên các tập con của P . Do đó ta có thể kết luận tất cả các tập
Vi (i ≥ 0) được định nghĩa ở trên thỏa bởi ϕ. Nghĩa là Vi = ϕ−1(Ki) với Ki ⊆ P tùy
ý, i = 0, . . . , n. Mà số các tập con của P là 2Card(P ), suy ra số các tập Vi không lớn
hơn 2Card(P ) tập. Vì P là hữu hạn và tập tất cả các tập con của P có cỡ là 2Card(P ).
Do đó, thuật toán xác định độ trễ giải mã cho ♦-mã sẽ dừng sau không quá 2Card(P )
bước thực hiện. Vậy, độ phức tạp thời gian của thuật toán xác định độ trễ giải mã cho
♦-mã trong trường hợp xấu nhất là O(2Card(P )).
(cid:3) Trong chương này, ở mục thứ nhất ta đề xuất một hệ mật sử dụng các ngôn ngữ thuộc
lớp ngôn ngữ k-không nhập nhằng kiểu 1. Trong mục còn lại, ta xem xét bài toán tương ứng Post trên lớp ngôn ngữ từ định biên. Nhờ các tính chất của tích biên và một số
kết quả nghiên cứu về bài toán tương ứng Post, ta thiết lập một sơ đồ ứng dụng mới có thể được triển khai cho một số bài toán bảo mật. Một hướng nghiên cứu mới dựa
trên bài toán thành viên của lớp ngôn ngữ từ định biên chính quy cũng được đề xuất.
Một số kết quả chính của chương được công bố trong các bài báo số 6, 10, 12, 14 (xem Danh mục các công trình đã công bố của luận án). Một mục tiêu cơ bản của mật mã học là tạo ra các hệ mật cho phép hai đối tác truyền tin bí mật trong môi trường không an toàn. Tuy nhiên, trong lĩnh vực này, nguyên lý
chung là không có hệ mật nào tồn tại lâu dài trước sự tấn công, do đó luôn có nhu cầu thiết lập các hệ mật mới. Ta biết rằng các hệ mật truyền thống được thiết lập trên
cơ sở một bộ mã nhất định. Khi đó, mã là mục tiêu bị đối phương tấn công. Nếu ta
sử dụng ngôn ngữ không phải là mã thì sẽ nâng cao được hiệu quả an toàn chống tấn công cho các hệ mật. Phần này, chúng tôi đề xuất và trình bày một hệ mật có tính đa
trị và nhập nhằng, sử dụng các ngôn ngữ có độ nhập nhằng kiểu 1 là k, với 0 ≤ k ≤ ∞. Đặc tính đa trị được thiết lập cho hệ mật và quá trình giải mã yêu cầu xác định đúng
giá trị k sẽ gây khó khăn cho đối phương khi thực hiện thám mã. Trước hết, ta nhắc lại một số khái niệm và thiết lập các kết qủa cho tính đúng đắn của hệ mật được đề xuất. Sau đây là định nghĩa hình thức của khái niệm hệ mật. Giả sử A và B là các bảng hữu hạn các chữ cái. Một hệ Định nghĩa 4.1 ([30])
mật là một bộ 5 (P, C, K, E, D), thỏa mãn các điều kiện sau đây: 1. P là tập hữu hạn các từ bản rõ trên bảng chữ A 2. C là một tập hữu hạn các từ bản mã trên bảng chữ B 3. K là không gian khóa, là tập hữu hạn các khóa 4. Với mỗi K ∈ K, tồn tại một thuật toán mã hóa eK ∈ E và một thuật toán giải
mã dK ∈ D. Trong đó, eK : P → C và dK : C → P là các ánh xạ sao cho
dK(eK(x)) = x với mọi x ∈ P . 4.1 Hệ mật đa trị và nhập nhằng 95 Như được diễn tả trong Mệnh đề 1.5, Chương 1 về nghĩa gốc của thuật ngữ “mã”,
một đồng cấu mã β : A∗ → B∗ với X = β(A) mã hóa các chữ cái của bảng chữ A
thành các từ của X. Thủ tục mã hóa kết hợp một từ bản rõ a1a2 · · · an (ai ∈ A) với
một từ mã β(a1) · · · β(an) bởi sử dụng đồng cấu mã β. Sự kiện β là đơn cấu đảm bảo
từ mã được giải mã theo một cách duy nhất thành từ bản rõ ban đầu. Bộ mã ASCII
là một ví dụ thể hiện ứng dụng quan trọng của mã theo nghĩa trên. Bằng việc mã hóa
các chữ cái dùng cho máy tính bởi các từ nhị phân, nó cho phép thông tin được biểu diễn và xử lý trên máy tính điện tử. Về lâu dài, bộ mã được sử dụng cho một hệ mật có thể bị lộ nếu phép mã hóa có tính chất đơn trị. Vì vậy, ngoài việc sử dụng các ngôn ngữ có độ nhập nhằng cao, tính
đa trị là một yêu cầu đối với hệ mật. Để thiết lập đặc tính đa trị, ta cần các khái niệm
và kết quả cơ sở sau đây về mã hóa đa trị. (i) Một đồng cấu đa trị là một ánh xạ f : A∗ → B∗, tương ứng
Định nghĩa 4.2
mỗi chữ cái a ∈ A với một tập con Xa của B∗ và f (a1a2 . . . an) = f (a1)f (a2) . . . f (an)
với mọi a1, a2, . . . , an ∈ A. (ii) Đồng cấu đa trị f được gọi là một phép mã hóa đa trị nếu với mọi w, w0 ∈ A∗, w 6= w0 thì f (w) ∩ f (w0) = ∅. (iii) Đồng cấu đa trị f được gọi là một phép mã hóa đa trị hạn chế nếu có số nguyên k > 0 và với mọi w, w0 ∈ A≤k, w 6= w0 thì f (w) ∩ f (w0) = ∅. Lưu ý các mục (i) và (ii) của Định nghĩa 4.2 đã được đề xuất trong [23]. Với phép mã hóa đa trị, mỗi từ bản rõ có thể được tương ứng với nhiều từ mã khác
nhau, song giải mã vẫn đảm bảo tính duy nhất. Do đó, sử dụng phép mã hóa này cho
phép ta nâng cao độ bảo mật của hệ mật, chẳng hạn giúp nó chống tấn công thám mã theo phương pháp thống kê từ điển. Kết quả cơ bản sau đây cung cấp một điều kiện cần và đủ cho một đồng cấu là phép mã hóa đa trị, phép mã hóa đa trị hạn chế. Giả sử A, B là các bảng hữu hạn các chữ cái. Cho đồng cấu đa trị
Mệnh đề 4.1
f : A∗ → B∗, tương ứng mỗi chữ cái a ∈ A với một tập con Xa của B∗ và số nguyên
k > 0. Khi đó, q 6= ∅ thì p = q và Xi = X 0 1X 0 X 0 q 6= ∅ với p, q ≤ k thì p = q và Xi = X 0 j, với i, j = 1, . . . , p. 1X 0 X 0 (i) điều kiện cần và đủ để f là phép mã hóa đa trị là: Nếu X1X2 . . . Xp ∩
2 . . . X 0
j, với i, j = 1, . . . , p.
(ii) điều kiện cần và đủ để f là phép mã hóa đa trị hạn chế là: Nếu X1X2 . . . Xp ∩
2 . . . X 0 Lưu ý điều kiện (i) của Mệnh đề 4.1 được thiết lập và chứng minh bởi Vũ Thành Nam (2007) [23] sử dụng Định nghĩa 4.2 và định nghĩa của mã. Điều kiện (ii) được
chứng minh tương tự sử dụng Định nghĩa 4.2 và Định nghĩa 3.1. Để có thể sử dụng các ngôn ngữ không là mã trong hệ mật, ta thiết lập một kết quả cơ sở như sau. 96 4 MỘT SỐ ỨNG DỤNG Cho bảng chữ A = {a1, a2, . . . , an} và một số nguyên k > 0. Xét
Mệnh đề 4.2
ngôn ngữ X có độ không nhập nhằng kiểu 1 là k, sao cho có thể phân hoạch X thành n
tập con đôi một rời nhau X1, X2, . . . , Xn, Xi ∩ Xj = ∅, ∀i 6= j, X1 ∪ X2 ∪ · · · ∪ Xn = X.
Giả sử đồng cấu g : A∗ → X ∗, tương ứng mỗi chữ cái ai ∈ A với một tập con Xi và
g(ww0) = g(w)g(w0) với mọi w, w0 ∈ A≤k. Khi đó g là phép mã hóa đa trị hạn chế. Chứng minh. Phản chứng, giả sử g không là phép mã hóa đa trị hạn chế. Khi đó, tồn
tại hai từ w, w0 ∈ A≤k, w 6= w0 sao cho g(w) ∩ g(w0) 6= ∅. Nghĩa là, tồn tại quan hệ
x1x2 · · · xi = y1y2 · · · yj với x1 6= y1, 1 ≤ i, j ≤ k. Theo Định nghĩa 3.1, Mục 3.1.1,
Chương 3, X không có độ không nhập nhằng kiểu 1 là k, trái với giả thiết. Vậy g phải
(cid:3)
là phép mã hóa đa trị hạn chế. Giả sử A = {a1, a2, . . . , an} là bảng chữ cái, X là ngôn ngữ có độ không nhập nhằng
kiểu 1 là k, k > 0 sao cho có thể phân hoạch X thành m tập con đôi một rời nhau
X1, X2, . . . , Xm, Xi ∩ Xj = ∅, ∀i 6= j, X1 ∪ X2 ∪ · · · ∪ Xm = X, m ≥ Card(A). Ký hiệu
XP là tập tất cả các phân hoạch của X. Ta có thể tổng kết các kết quả trên trong sơ
đồ hệ mật sau đây. Sơ đồ 4.1 Hệ mật đa trị và nhập nhằng Đặt P = A≤k, C = X ∗. K gồm tất cả các đơn ánh g : A → XP = {X1, X2, . . . , Xm}. Với mỗi g ∈ K, định nghĩa: eg(x) = w ∈ g(x), và định nghĩa dg(w) = {y | w ∈ g(y)}. Lưu ý: Với w ∈ X ∗ tùy ý, nếu w ∈ g(x) thì ta xem w là bản mã của x. Khi đó, số
lượng các bản mã nhận được sẽ rất lớn. Vì đặc điểm này, tấn công vào hệ mật đa trị sẽ khó hơn tấn công vào hệ mật đơn trị. Cho bảng chữ A = {u1, u2, u3, u4, u5} và xét ngôn ngữ X = Ví dụ 4.1
{c, ca1, a1b1, b1a2, a2b2, b2a3, a3} có độ không nhập nhằng kiểu 1 là k = 2. Một phương án phân hoạch tập X và ánh xạ g như sau: X1 = {c},
X2 = {ca1, a1b1},
X3 = {b1a2},
X4 = {a2b2},
X5 = {b2a3, a3}, và ta có g(ui) ∈ Xi, i = 1, . . . , 5. 4.2 Bài toán tương ứng Post và ứng dụng 97 Giả sử, từ bản rõ cần mã là w = u2u3u5. Vì từ này có độ dài 3 nên ta tách w thành 2 từ w1 = u2u3 và w2 = u5 để đảm bảo độ dài của chúng nhỏ hơn hoặc bằng k.
Với phép mã hóa g được định nghĩa như trên, các từ mã nhận được là: ca1b1a2 và a3, hoặc ca1b1a2 và b2a3, hoặc a1b1b1a2 và a3, hoặc a1b1b1a2 và b2a3. Giải mã từ ca1b1a2 ta sẽ nhận được hai từ của X, tương ứng là ca1 ∈ X2 và
b1a2 ∈ X3. Ta có ca1 ∈ g(u2) và b1a2 ∈ g(u3). Vậy từ bản rõ nhận được là u2u3. Kết
quả giải mã từ a3 là từ bản rõ u5. Ghép hai từ bản rõ nhận được, ta có từ bản rõ ban
đầu. Các trường hợp khác giải mã tương tự và cho kết quả duy nhất là từ bản rõ w. Sự nhập nhằng có thể xảy ra khi ta mã hóa các từ bản rõ có độ dài lớn hơn k. Ví
dụ trường hợp mã toàn bộ từ w = u2u3u5, với g được định nghĩa như trên thì một từ
mã mà ta nhận được có thể là ca1b1a2b2a3. Khi đó giải mã sẽ cho các khả năng: (c)(a1b1)(a2b2)(a3) với c ∈ X1, a1b1 ∈ X2, a2b2 ∈ X4, a3 ∈ X5, hoặc (ca1)(b1a2)(b2a3) với ca1 ∈ X2, b1a2 ∈ X3, b2a3 ∈ X5. Tương ứng với hai từ bản rõ u1u2u4u5 và u2u3u5. Nhận xét 4.1 Hệ mật trên có thể được sử dụng kết hợp với các hệ mật mã khối đã biết. Nhờ tính nhập nhằng của ngôn ngữ và tính đa trị của ánh xạ lập mã được sử
dụng, độ bảo mật của hệ mật kết hợp sẽ được tăng cường. Ta lưu ý rằng trong các hệ
mật, mã là mục tiêu bị tấn công. Vì vậy, sử dụng các ngôn ngữ không phải là mã thì hệ mật nhận được sẽ nằm ngoài vùng bị tấn công, hoặc việc chọn vùng tấn công sẽ
phải rộng hơn rất nhiều. Trong phần này ta xem xét một trong các bài toán quyết định nổi tiếng là bài toán
tương ứng Post (Post Correspondence Problem - PCP) được phát biểu như sau. Cho bảng chữ hữu hạn A và các từ α1, α2, . . . , αm, β1, β2, . . . , βn ∈ A∗, n ≥ 1. Tìm các dãy chỉ số i1, i2, . . . , il, 1 ≤ ij ≤ n, j = 1, . . . , l sao cho 98 4 MỘT SỐ ỨNG DỤNG αi1αi2 · · · αil = βi1βi2 · · · βil Ví dụ 4.2 ([26]) Cho A = {a, b} và cho hai dãy (aa, bb, abb) và (aab, ba, b). Đây là một tình huống của bài toán tương ứng Post. Nếu ta ghép các từ thứ nhất, thứ hai,
thứ nhất và thứ ba trong hai danh sách đã cho, thì trong cả hai trường hợp ta nhận
được từ aabbaaabb. Khi đó dãy chỉ số 1, 2, 1, 3 là một lời giải đối với tình huống này của bài toán tương ứng Post. Cho A = {a, b} và cho hai dãy (aab, a) và (aaa, baa). Tình huống Ví dụ 4.3 ([26])
này của bài toán tương ứng Post không có lời giải. Về tính quyết định của bài toán trên, ta có kết quả Bài toán tương ứng Post là không quyết định được. Định lý 4.1 ([26]) Tiếp theo, ứng dụng bài toán trên để xây dựng các sơ đồ bảo mật, ta xem xét một
dạng mở rộng của otomat đa định hữu hạn A từ ♦-otomat đa định hữu hạn A♦ với
tập biên B được mở rộng thành B ⊆ N ∪ {0B}, 0B là phần tử không của nửa nhóm B
và phép toán trên B được xác định “bí mật” theo sơ đồ bảo mật. Cho B là một nửa nhóm, ta xây dựng cấu trúc điều khiển B (bảng nhân B × B) như sau. Với i, j, l, k ∈ B, Hình 4.1 Cấu trúc điều khiển B Đặc biệt: ∀i ∈ B, i.0B = 0B.i = 0B.
Bảng nhân B × B phần lớn chứa các phần tử 0B. Để đảm bảo tính bảo mật thì B phải có số phần tử đủ lớn để đối tượng tấn công không tìm được cấu trúc của B. Cho từ tuyệt mật w = α7.α3.α2.α9 = β7.β3.β2.β9. Khi đó ta có các điểm Ví dụ 4.4
cắt (Hình 4.2) và lưu trữ chúng trong bảng nhân B × B (Bảng 4.1). Hình 4.2 Từ tuyệt mật w 4.2 Bài toán tương ứng Post và ứng dụng 99 B×B 1
0B
0B
0B
0B
0B
0B
0B
0B
0B 2
0B
0B
6= 0B
0B
0B
0B
0B
0B
0B 3
4
0B
0B
0B
0B
0B
0B
0B
0B
0B
0B
0B
0B
6= 0B 0B
0B
0B
0B
0B 5
0B
0B
0B
0B
0B
0B
0B
0B
0B 6
0B
0B
0B
0B
0B
0B
0B
0B
0B 7
0B
0B
0B
0B
0B
0B
0B
0B
0B 8
0B
0B
0B
0B
0B
0B
0B
0B
0B · · ·
9
0B
0B
6= 0B 0B
0B
0B
0B
0B
0B
0B
0B
0B
0B
0B
0B
0B
0B
0B 1
2
3
4
5
6
7
8
9
... 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B Bảng 4.1 Bảng nhân bí mật B × B Chọn M là một vị nhóm đủ lớn. M có phần tử đơn vị 1M và phần tử không 0M .
Từ bảng nhân của B, ta xây dựng vị nhóm M♦ được điều khiển bởi nửa nhóm B như
sau: với (i1, m1, j1), (i2, m2, j2) ∈ M♦, (i1, m1m2, j2) nếu j1.i2 6= 0B θ (i1, m1, j1).(i2, m2, j2) =
nếu j1.j2 = 0B Ta có Card(M♦) = Card(B2) × Card(M). Từ đồng cấu vị nhóm ϕ : A∗ → M,
♦ → M♦ như sau: ∀a ∈ A, (i, a, j) 7−→
ta có thể xác định đồng cấu ϕ♦ : A∗
(i, ϕ(a), j); (i, ε, j) 7−→ (i, 1M , j); e 7−→ e; θ 7−→ θ. ♦ thì Với M♦ được xây dựng như trên và một khóa bí mật K = (i, m∗, j∗), ta xây dựng
♦-otomat A♦(K) = (A♦, Q♦, δ♦, I♦, T♦) với tập các trạng thái Q♦ = M♦, tập các trạng
thái khởi đầu I♦ ⊆ Q♦, tập các trạng thái kết thúc T♦ = K và hàm chuyển δ♦ được
xác định bởi: với mỗi trạng thái (i, m, j) ∈ M♦ và ♦-từ (k, w, l) ∈ A∗ (i, m.ϕ(w), l) nếu i.k 6= 0B δ((i, m, j), (k, w, l)) =
0B nếu i.k = 0B
(k,w,l)
−−−→ (i, m.ϕ(w), l) nếu i.k 6= 0B. Ta ký hiệu (i, m, j)
Lấy K = (i, m∗, j∗) ∈ M♦ và phần tử khởi đầu (i, 1M , i), i ∈ B. Khi đó, ta gọi
w ∈ A∗ là một từ hợp lý và đường đi có nhãn w là đường đi thành công nếu tồn tại
dãy (i1, a1, j1), (i2, a2, j2), . . . , (il, al, jl) (i1,a1,j1),(i2,a2,j2),...,(il,al,jl)
−−−−−−−−−−−−−−−−−→ K và đường đi (i, 1M , i) 100 4 MỘT SỐ ỨNG DỤNG với i1 = i, il = j∗, a1a2 · · · al = w và ϕ(w) = m∗. Với bảng nhân bí mật của B có cỡ Card(B2) như trên. Nếu thực hiện tấn
công kiểu vét cạn để tìm cấu trúc của B thì thuật toán có độ phức tạp thời gian
O(Card(B2)Card(B)). Lưu ý rằng trong sơ đồ bảo mật thì hàm ϕ có thể thay đổi theo
thời gian nhằm đảm bảo tính bí mật. Vị nhóm M có thể công khai. Có thể có nhiều cách phân chia các điểm cắt trên mỗi từ w. Nói chung người/cơ quan chứng thực (CA)
phải biết cách chia này. Sau đây ta xem xét một dẫn xuất của bài toán tương ứng Post trên lớp ngôn ngữ từ định biên. Cho bảng chữ hữu hạn A, các từ a1, a2, . . . , an ∈ A∗, khóa K = (i, m∗, j∗) và bảng nhân bí mật B. Tìm các dãy chỉ số i1, i2, . . . , il, n ≤ ij ≤ l, j = 1, . . . , l sao cho w = ai1.ai2. · · · .ail và (i1, ϕ(w), il) = K, với ϕ : A∗ → M là một đồng cấu vị nhóm. Nghĩa là tìm dãy i1, i2, . . . , il sao cho i1 = i, il = j∗, ϕ(a1a2 · · · al) = m∗. Tiếp theo, ta biểu diễn bài toán trên máy tính và đánh giá độ phức tạp của thuật toán tìm lời giải cho bài toán này. = Từ dãy thành rộng dãy mở ta ai1.ai2. · · · .ail, trong dưới nhớ trữ bộ và w
(i1, ai1, i1), (i2, ai2, i2), . . . , (il, ail, il)
dạng
lưu
{(i1, ai1), (i2, ai2), . . . , (il, ail)}. Đối với khóa K = (i, m∗, j∗), ta lưu trữ dãy chỉ
số khóa (i1.i2, i2.i3, . . . , il−1.il) với i1 = i, il = j∗, ϕ(w) = m∗. Trong sơ đồ bảo mật, ta
giữ bí mật từ w và dãy chỉ số i1, i2, . . . , il. Hàm ϕ có thể công khai hoặc giữ bí mật. Sau đây, ta đánh giá độ phức tạp của thuật toán vét cạn tấn công vào sơ đồ bảo mật để tìm ra một lời giải hợp lý. Đặt p = |w|. Khi đó số phần tử của nửa nhóm B bằng số các khúc con của w ∪ 0B ∪ (6= 0B). Ta có + 2 Card(B) = p + (p − 1) + (p − 2) + · · · + 1 + 1 + 1 = (p + 1)p
2 Số các phần tử khác không của B là Card(B)6=0B = (p − 1) + (p − 2) + · · · + 1 = (p − 1)p
2 2 Vậy cỡ của bảng nhân của B là + 2 Card(B × B) = (p + 1)p
2 (cid:19) (cid:18) Tỷ số phần tử khác không và tổng số phần tử của bảng nhân của B là 4.2 Bài toán tương ứng Post và ứng dụng 101 2 ≈ p(p − 1)p ≈ 2
p2 + 2 + 2 (p + 1)2p2
2 (p − 1)p
2
(p + 1)p
2 (cid:19) (cid:18)
Dãy hợp lý cần tìm là i = i1, i2, . . . , il−1, il = j∗ và i1.i2 6= 0B, i2.i3 6= 0B, . . . , il−1.il 6= 0B l−2 Khi đó thuật toán vét cạn để tìm dãy hợp lý trên có độ phức tạp thời gian cỡ + 2 Card(Bl−2) = (p + 1)p
2 (cid:19) (cid:18) Ta còn xem xét độ phức tạp của thuật toán tấn công vào sơ đồ bảo mật theo phương pháp tấn công xác suất như sau: Đặt q = |wq|. Khi đó l − 1 ≤ q ≤ p − 2. Ta có xwqy = w với x, y 6= ε (Hình 4.3).
Vậy có C l−2
q−1 cách chia các dãy khúc con để lấy ra dãy i2, i3, . . . , il−1. Với |x| = |y| = 1
và q cố định thì số cách lấy wq là p − 1 − q = p − 1 − (q − 2) = 1. Với q tùy ý thì số
cách để lấy wq là: C l−2
q−1. Hình 4.3 Chi tiết cấu trúc từ tuyệt mật w Vậy xác suất thắng lợi P để tìm được dãy i = i1, i2, i3, . . . , il−1, il = j∗ là l−2 = ≈ P ≤ . 2l−2C l−2
q−1
p2(l−2) 2l−2C l−2
q−1
(p + 1)l−2pl−2 C l−2
q−1
(p + 1)p
2 (cid:19) (cid:18) Với các giá trị l, p, q cụ thể, ta có P tương ứng cho trong Bảng 4.2. Từ bảng đánh giá kết quả ở trên, ta thấy rằng khả năng tấn công
Nhận xét 4.2
thành công sơ đồ bảo mật bằng phương pháp vét cạn là rất nhỏ. Sơ đồ bảo mật trên có thể được ứng dụng để giải quyết một số bài toán thực tiễn như xác thực người dùng. Ví dụ 4.5 Cho các dữ kiện: Mỗi người dùng được CA cung cấp một dãy từ mã {α1, α2, . . . , αn}, αi ∈ A∗. Hệ thống CA lưu các thông tin KCA = (i, w, j∗) ∈ M♦; B × B; K; ϕ 102 4 MỘT SỐ ỨNG DỤNG l
8
10
10
12
12
12
16
16
16 p
80
128
128
320
320
512
512
1024
2048 q
16
32
16
52
32
100
32
32
32 P
1/2127
1/2185
1/2195
1/2279
1/2287
1/2296
1/2314
1/2504
1/2560 Bảng 4.2 Bảng kê xác suất tìm được nghiệm của bài toán với KCA là từ khóa bí mật của CA; B ×B là bảng nhân bí mật; K = {KC, KD, KE, . . .}
là tập khóa của các người dùng và ϕ : A∗ × K → A∗ là một đồng cấu mã. Bài toán xác thực người dùng được phát biểu như sau: Cho biết người dùng C bất kỳ có phải là người dùng hợp pháp không? Để trả lời câu hỏi trên, ứng dụng sơ đồ bảo mật đã xây dựng, ta đề xuất sơ đồ xác thực như sau. Sơ đồ 4.2 Xác thực người dùng − Bước 1. Hệ thống yêu cầu người dùng C cung cấp dãy từ mã {α1, α2, . . . , αn}. n}, với α0 i = ϕ(αi, KC). 1, α0 2, . . . , α0 − Bước 2. Tìm dãy từ mã {α0 i1.α0 i2. · · · .α0 in ∈ L(A♦(KCA)) thì kết − Bước 3. Kiểm tra, nếu i = i1, j∗ = il và α0 luận người dùng C là hợp pháp, ngược lại kết luận C là không hợp pháp. Trong Sơ đồ 4.2, đồng cấu bí mật ϕ : A∗ × K → A∗ có thể là phép XOR hoặc phép toán đồng dư modulo P , i = αi ⊕ KC α0 i = αi.KC + C mod P, với (KA, P ) là số nguyên tố cùng nhau (cid:20) α0 Với Sơ đồ 4.2 xác thực người dùng, nếu muốn tấn công giả dạng một
Nhận xét 4.3
người dùng hợp pháp, ta phải giải bài toán tương ứng Post. Tức là với hai dãy từ
{β1, β2, . . . , βn} và {γ1, γ2, . . . , γn} tương ứng của D và C. D phải tìm dãy chỉ số
{i1, i2, . . . , ik} sao cho ϕ(βi1, KD).ϕ(βi2, KD) · · · ϕ(βil, KD) = ϕ(γi1, KC).ϕ(γi2, KC) · · · ϕ(γil, KC) 4.2 Bài toán tương ứng Post và ứng dụng 103 Sự phát triển của xã hội dẫn đến việc ngày nay mật mã không những chỉ được dùng
trong bí mật quân sự và ngoại giao, mà còn chủ yếu dùng trong bí mật kinh tế, thương mại. Trong các ứng dụng của mật mã học, một nhiệm vụ rất quan trọng của mật mã
là đảm bảo sao cho chỉ có những chủ nhân hay những người có thẩm quyền mới có thể truy nhập được thông tin lưu trữ trong một hệ thông tin nào đó. Phương pháp thực
hiện là mã hóa dữ liệu và lưu trữ chúng trong hệ dưới dạng đã được mã hóa. Khi đó
những người truy nhập trái phép dù có được thông tin ở dạng mã hóa, thì các thông tin này cũng vẫn là vô dụng nếu họ không biết cách giải mã. Do đó nếu giả định rằng
các kỹ thuật mã hóa khó phá được dùng thì hệ sẽ là an toàn chống lại được những người sử dụng trái phép. Một hệ mật có thể được coi là an toàn, nếu vấn đề thám mã
là một bài toán bất trị [26]. Vì vậy, khi xem xét một hệ mật, cùng với nó ta phải đưa
vào nghiên cứu vấn đề tấn công. Nguyên lý chung trong mật mã học là không có một hệ mật nào tồn tại lâu dài trước sự tấn công, do đó luôn có nhu cầu thiết lập các hệ
mật mới. Phương pháp xây dựng các hệ mật nói chung dựa trên nguyên lý bẫy cửa sập: thông tin đã công bố không đủ để hiểu biết về một cửa sập bí mật. Nhắc lại rằng khi đề cập đến một số bài toán là dễ, khó hay bất trị, ta hiểu theo
nghĩa độ phức tạp tính toán của chúng. Theo quan điểm mật mã học, bất kỳ bài toán
NP-đầy đủ nào cũng sẽ được xem như là bất trị, còn một bài toán là dễ đòi hỏi một
giới hạn đa thức bậc thấp. Các hệ mật mã khóa công khai nổi tiếng như RSA và El Gamma được thiết kế dựa trên các bài toán khó đã được nghiên cứu khá kỹ lưỡng. Ở các phần trên, ta đã thiết lập hai hệ mật mới. Cụ thể, trong Mục 4.1, dựa trên
các dạng mới của ngôn ngữ hay trên các ngôn ngữ không nhất thiết là mã, ta đưa ra một sơ đồ mã hóa thông tin mới có khả năng nâng cao tính chống tấn công do tính
nhập nhằng đa trị của chúng. Trong Mục 4.2, ta thiết lập một hệ mật dựa trên bài
toán không giải được - là bẫy cửa sập ở mức cao nhất trong phân bậc độ khó của các ♦. Từ đó bài toán không giải được trên A∗ ♦ mà ta đã xét trong luận án,
bài toán thành viên không có lời giải. Tuy nhiên, nhờ phép chiếu định nghĩa trên A∗
♦,
ta nhận được ngôn ngữ chính quy trên A∗ tương ứng với ♦-ngôn ngữ chính quy cho
trên A∗
♦ quy về bài toán giải được trên lớp
ngôn ngữ chính quy thuộc A∗. Đây là tình huống có thể khai thác để xây dựng các hệ
mật mới. Tuy nhiên, do khuôn khổ của luận án, ta chỉ đặt vấn đề này như một hướng
nghiên cứu mở rộng cho các công trình tiếp theo. bài toán. Sau đây ta đề cập đến một bài toán không giải được khác. Từ đó mở ra khả
năng ứng dụng bài toán này trong phát triển các hệ mật mới.
Đối với lớp ngôn ngữ từ định biên chính quy trên A∗ Đề tài nghiên cứu của luận án thuộc lĩnh vực của lý thuyết mã và ứng dụng, liên quan
đến các bài toán có vai trò sâu sắc và rất cơ bản là bài toán kiểm định mã và bài toán nghiên cứu các đặc tính của mã hay các ngôn ngữ hình thức trong mối quan hệ với
mã. Các kết quả nghiên cứu nhận được sẽ đem đến những đóng góp mới cho lý thuyết mã, ngôn ngữ hình thức, lý thuyết biểu diễn thông tin... và từ đó có khả năng đưa vào
những ứng dụng mới. Có thể tổng hợp các kết quả chính của luận án theo ba nhóm
sau đây. − Nhóm thứ nhất là các thuật toán và kỹ thuật hiệu quả cho việc kiểm định mã truyền thống và mã mở rộng. Mở đầu là một tiêu chuẩn mới cải tiến từ tiêu chuẩn
Sardinas-Patterson để kiểm định mã được đề xuất và chứng minh cho phép thiết lập các thuật toán có độ phức tạp về mặt thời gian là một đa thức bậc hai tốt
hơn các thuật toán đã biết. Tiếp theo, các thuật toán kiểu Sardinas-Patterson
cải tiến lần lượt được đưa ra để kiểm định mã, ♦-mã cho trường hợp ngôn ngữ
chính quy, ♦-ngôn ngữ chính quy. Các tiêu chuẩn kiểm định và sau đó là các
thuật toán hiệu quả để kiểm định ω-mã và Z-mã cho trường hợp ngôn ngữ chính quy được thiết lập nhờ sử dụng các phương pháp đại số và đồ thị hữu hạn có tô
màu cung. Đầu vào của các thuật toán trên được giả thiết là một ngôn ngữ chính
quy X cho bởi một bộ ba (ϕ, M, B), trong đó ϕ : A∗ → M là một đồng cấu vị
nhóm thỏa X, M là vị nhóm hữu hạn, B ⊆ M sao cho X = ϕ−1(B). Khi đó bốn
thuật toán kiểm định mã, ♦-mã, ω-mã và Z-mã cùng có độ phức tạp thời gian
là O(n2), với n là kích thước của vị nhóm M. − Nhóm thứ hai là các khái niệm và kết quả mới làm rõ một khoảng trống trong nghiên cứu lý thuyết mã hóa thông tin và ứng dụng. Trước hết, định nghĩa về
các khái niệm k-nhập nhằng, k-không nhập nhằng, độ không nhập nhằng kiểu 1
và 2 của ngôn ngữ và mối quan hệ giữa các khái niệm này được đưa ra. Các kết quả lần lượt được thiết lập cho lớp ngôn ngữ của các từ hữu hạn bao gồm: hai
phân bậc của toàn bộ các ngôn ngữ theo độ không nhập nhằng kiểu 1 và 2, trong
đó mã được nhóm lại trong một lớp đặc biệt của các phân bậc; các tiêu chuẩn cần và đủ để một ngôn ngữ có độ không nhập nhằng kiểu 1 và 2, hoặc có độ trễ
giải mã hữu hạn; một thuật toán hiệu quả kiểu Sardinas-Patterson cải tiến với độ phức tạp thời gian là một đa thức bậc hai để tính độ không nhập nhằng kiểu
1 của ngôn ngữ; các thuật toán dựa trên otomat hữu hạn để tính độ trễ giải mã KẾT LUẬN 105 và tính độ không nhập nhằng kiểu 2 của ngôn ngữ; mối quan hệ tường minh giữa
khái niệm độ trễ giải mã và khái niệm độ không nhập nhằng. Một tiêu chuẩn cần
và đủ để một ♦-mã có độ trễ giải mã hữu hạn cũng được đưa ra cho lớp ngôn
ngữ từ định biên. − Nhóm thứ ba là một số sơ đồ ứng dụng. Có hai sơ đồ được đề xuất: một hệ mật
có tính đa trị sử dụng các ngôn ngữ có độ nhập nhằng cao cho trường hợp của
các ngôn ngữ k-không nhập nhằng kiểu 1 và một sơ đồ bảo mật dựa trên bẫy cửa sập là một dẫn xuất của bài toán không quyết định được PCP cho lớp ngôn
ngữ từ định biên. − Tiếp tục phát triển hướng nghiên cứu lý thuyết của luận án. Mở rộng các kết
quả thuộc nhóm thứ nhất cho các lớp mã khác như mã zigzag, T -V -mã...; đối với các kết quả thuộc nhóm thứ hai: đánh giá chi tiết độ phức tạp của các thuật
toán tính độ không nhập nhằng kiểu 2 của ngôn ngữ, tính độ trễ giải mã của mã
và ♦-mã. Sử dụng cách tiếp cận theo otomat đối với các kết quả đã nhận được
theo tiếp cận đại số và đưa vào nghiên cứu các bài toán nhúng, vấn đề tối ưu
mã... trên lớp các ngôn ngữ k-không nhập nhằng. − Khai thác các sơ đồ ứng dụng đã được đề xuất trong luận án để phát triển các ứng dụng an toàn, bảo mật thông tin. [1] M. Anselmo (1999) A non-ambiguous language factorization problem. In Proceed- ings of Developments in Language Theory, pp. 141–152 [2] M. Anselmo (2003) A non-ambiguous decomposition of regular languages and factorizing codes. Discrete Applied Mathematics, 126(2-3), pp. 129–165 [3] X. Augros, I. Litovsky (1999) Algorithm to test rational ω-codes. In Proceedings of the Conference of The Mathematical Foundation of Informatics, World Scientific,
10.1999, pp. 23–37 [4] K.A. Berman, J.L. Paul (2005) Algorithms - Sequential, parallel, and distributed. Thomson Learning, Inc [5] J. Berstel, D. Perrin (1985) Theory of Codes. Academic Press Inc, New York [6] J. Berstel, D. Perrin, C. Reutenauer (2010) Codes and Automata. Cambridge University Press [7] Ngô Đắc Tân (2004) Lý thuyết tổ hợp và đồ thị. NXB Đại học Quốc gia Hà Nội [8] O. Carton, D. Perrin, J.É. Pin (2008) Automata and semigroups recognizing infi- nite words. Logic and Automata, 42, pp. 133–168 [9] Nguyễn Tự Cường (2007) Giáo trình Đại số hiện đại. NXB Đại học Quốc gia Hà Nội [10] J. Devolder, M. Latteux, I. Litovsky, L. Staiger (1994) Codes and infinite words. Acta Cybernetica, 11(4), pp. 241–256 [11] J. Devolder, E. Timmerman (1992) Finitary codes for biinfinite words. Informa- tique Théorique et Applications, 26(4), pp. 363–386 [12] E.N. Gilbert, E.F. Moore (1959) Variable length binary encodings. Bell System Tech, J., 74, pp. 933–967 [13] Phan Trung Huy (1992) Đa tạp của các vị nhóm hữu hạn và đa tạp của các ngôn
ngữ từ vô hạn. Luận án phó tiến sỹ khoa học toán lý, Viện Toán học, Viện Khoa
học Việt Nam [14] Phan Trung Huy, Vũ Thành Nam (2003) Về một hình thức mã mới. Kỷ yếu Hội thảo quốc gia “Một số vấn đề chọn lọc của Công nghệ thông tin và Truyền thông”
lần thứ 6 tại Thái Nguyên, NXB Khoa học và Kỹ thuật, 8.2003, tr. 164–170 TÀI LIỆU THAM KHẢO 107 [15] Phan Trung Huy, Vũ Thành Nam (2004) Mã luân phiên và mã tiền ngữ cảnh. Kỷ
yếu Hội thảo quốc gia “Một số vấn đề chọn lọc của Công nghệ thông tin và Truyền thông” lần thứ 7 tại Đà Nẵng, NXB Khoa học và Kỹ thuật, 8.2004, tr. 188–197 [16] Phạm Huy Điển, Hà Huy Khoái (2004) Mã hóa thông tin: Cơ sở toán học và ứng dụng. NXB Đại học Quốc gia Hà Nội [17] S. Julia, T.V. Duc (2007) Reduced languages as omega-generators. Developments in Languages Theory, pp. 266–277 [18] G. Lallement (1979) Semigroups and Combinational Applications. John Wiley and Sons, Inc [19] N.H. Lam, D.L. Van (1990) On a class of infinitary codes. Informatique Théorique et Applications, 24(5), pp. 441–458 [20] N.H. Lam, D.L. Van (1991) On strict codes. Acta Cybernetica, 10(1-2), pp. 25–34 [21] H.R. Lewis, C.H. Papadimitriou (1998) Elements of the Theory of Computation. Prentice Hall, New Jersey 07458 [22] M. Robert (1996) An O(n2) time algorithm for deciding whether a regular language is a code. Journal of Computing and Information, 2(1), pp. 79–89 [23] Vũ Thành Nam (2007) Mã dựa trên một số loại tích mới. Luận án tiến sỹ toán học, Trường Đại học Bách Khoa Hà Nội [24] D. Perrin, J.É. Pin (2004) Infinite Words, automata, semigroups, logic and games. Elsevier Inc, The Netherlands [25] M. Rodeh (1982) A fast test for unique decipherability based on suffix trees. IEEE Transactions on Information Theory, 28(4), pp. 648–651 [26] A. Salomaa (1992) Nhập môn tin học lý thuyết tính toán và các ôtômat (Bản dịch). NXB Khoa học và Kỹ thuật [27] R. Sedgewick (2002) Algorithms in C++, Part 5 : Graph algorithms. Addition- Wesley, Pearson Education, Inc [28] Hoàng Xuân Sính (2001) Đại số Đại cương. NXB Giáo dục [29] L. Staiger (1986) On infinitary finite length codes. Informatique Théorique et Applications, 20(4), pp. 483–494 [30] D.R. Stinson (1995) Cryptography: Theory and Practice. CRC Press, Inc, Florida 108 TÀI LIỆU THAM KHẢO [31] D. L. Van, B. Lesa¨ec, and I. Litovsky (1992) On coding morphisms for zigzag codes. Informatique Théorique et Applications, 26(6), pp. 565–580 [32] D. L. Van, B. Lesa¨ec, and I. Litovsky (1993) Stability for the zigzag submonoids. Theoretical Computer Science, 108(2), pp. 237–249 [33] D. L. Van, B. Lesa¨ec, I. Litovsky (1995) Characterizations of rational ω-languages by means of right congruences. Theoretical Computer Science, 143(1), pp. 1–21 [34] D.L. Van, N.H. Lam, P.T. Huy (1993) On codes concerning bi-infinite words. Acta Cybernetica, 11(1-2), pp. 97–109 [35] Hồ Ngọc Vinh (2011) Nghiên cứu về lý thuyết nửa nhóm mở rộng và ứng dụng trong tin học. Luận án tiến sỹ toán học, Trường Đại học Bách Khoa Hà Nội [36] Hồ Ngọc Vinh, Phan Trung Huy, Đỗ Long Vân (2009) ♦-ngôn ngữ chính quy và
mã. Kỷ yếu Hội thảo quốc gia lần thứ 4 về Nghiên cứu cơ bản và Ứng dụng công nghệ thông tin (FAIRS), NXB Khoa học và Kỹ thuật, 12.2009, tr. 13–23 [37] H.N. Vinh, P.T. Huy (2010) Codes of bounded words. Proceedings of the 3rd International Conference on Computer and Electrical Engineering: ICCEE 2010,
IEEE, Vol 2, 11.2010, pp. 89–95 [38] H.N. Vinh, V.T. Nam, P.T. Huy (2010) Codes base on unambiguous products. In J.-S. Pan, S.-M. Chen, N.T. Nguyen (Eds.): ICCCI 2010, Part III, LNCS/LNAI
6423, Springer, Heidelberg, 11.2010, pp. 252–262 1. Phan Trung Huy, Nguyễn Đình Hân, Phạm Minh Chuẩn (2009) Mã luân phiên
chẵn-Phân bậc độ nhập nhằng và tiêu chuẩn kiểm tra. Kỷ yếu Hội thảo quốc gia “Một số vấn đề chọn lọc của Công nghệ thông tin và Truyền thông” lần thứ 12
tại Đồng Nai, NXB Khoa học và Kỹ thuật, 8.2009, tr. 171-185 2. Nguyễn Đình Hân, Hồ Ngọc Vinh, Đặng Quyết Thắng (2010) Xác định độ trễ giải mã của ngôn ngữ bằng otomat. Kỷ yếu Hội thảo quốc gia “Một số vấn đề
chọn lọc của Công nghệ thông tin và Truyền thông” lần thứ 13 tại Hưng Yên,
NXB Khoa học và Kỹ thuật, 8.2010, tr. 321-332 3. Hồ Ngọc Vinh, Nguyễn Đình Hân, Phan Trung Huy (2010) Mã với tích biên và độ
trễ giải mã. Tạp chí Thông tin, Khoa học Công nghệ của Bộ Thông tin và Truyền
thông: các công trình nghiên cứu, phát triển và ứng dụng Công nghệ thông tin và Truyền thông, Tập V-1, Số 4 (24), 11.2010, tr. 46-56 4. Nguyễn Đình Hân, Hồ Ngọc Vinh, Phan Trung Huy, Đỗ Long Vân (2011) Thuật
toán xác định tính chất mã của ngôn ngữ chính quy. Tạp chí Tin học và Điều khiển học, Tập 27, Số 1, 3.2011, tr. 1-8 5. Nguyễn Đình Hân, Hồ Ngọc Vinh, Đặng Quyết Thắng, Phan Trung Huy (2011)
Thuật toán kiểm định mã và ♦-mã. Kỷ yếu Hội thảo “Toán – Tin ứng dụng” nhân
dịp 55 năm thành lập Trường Đại học Bách khoa Hà Nội, 10.2011, tr. 55-66 6. Hồ Ngọc Vinh, Nguyễn Đình Hân, Đặng Quyết Thắng, Phan Trung Huy (2011)
Độ không nhập nhằng của ♦-ngôn ngữ và ứng dụng. Kỷ yếu Hội thảo quốc gia
“Một số vấn đề chọn lọc của Công nghệ thông tin và Truyền thông” lần thứ 14 tại Cần Thơ, NXB Khoa học và Kỹ thuật, 10.2011, tr. 95-108 7. Nguyễn Đình Hân, Phan Trung Huy, Đặng Quyết Thắng (2011) Thuật toán bậc
hai kiểm định ω-mã. Tạp chí Nghiên cứu Khoa học và Công nghệ Quân sự, Số 16, 12.2011, tr. 154-162 8. Nguyen Dinh Han, Ho Ngoc Vinh, Dang Quyet Thang, Phan Trung Huy (2012)
Algorithms for testing of codes of words and bounded words. In: L.C. Mai, P. Vincenzo, E.G. Laurent (Eds): RIVF 2012, IEEE Computer Society, 2.2012, pp.
45-50 110 DANH MỤC CÁC CÔNG TRÌNH 9. Nguyen Dinh Han, Phan Trung Huy, Dang Quyet Thang (2012) A quadratic
algorithm for testing of omega-codes. In: J.-S. Pan, S.-M. Chen, N.T. Nguyen (Eds.): ACIIDS 2012, LNCS/LNAI 7196, Part I, Springer, Heidelberg, 3.2012,
pp. 338-347 10. Nguyễn Đình Hân, Đặng Quyết Thắng, Hồ Ngọc Vinh, Phan Trung Huy (2012)
Độ không nhập nhằng của ngôn ngữ và ứng dụng. Tạp chí Thông tin, Khoa học Công nghệ của Bộ Thông tin và Truyền thông: các công trình nghiên cứu, phát
triển và ứng dụng Công nghệ thông tin và Truyền thông, Số 27, 5.2012 11. Dang Quyet Thang, Nguyen Dinh Han, Phan Trung Huy (2012) Algorithms based
on automata for testing of omega-codes. In: James J. (Jong Hyuk) Park, Victor Leung, Taeshik Shon, Cho-Li Wang (Eds): FutureTech 2012, Lecture Notes in
Electrical Engineering 164, Springer, Heidelberg, 6.2012, pp. 271-279 12. Nguyen Dinh Han, Phan Trung Huy (2012) On unambiguity of languages related
to codes. In: James J. (Jong Hyuk) Park, Victor Leung, Taeshik Shon, Cho- Li Wang (Eds): FutureTech 2012, Lecture Notes in Electrical Engineering 179,
Springer, Heidelberg, 6.2012, pp. 31-38 13. Đặng Quyết Thắng, Nguyễn Đình Hân, Phan Trung Huy (2012) Xác định độ
không nhập nhằng của ngôn ngữ chính quy theo otomat. Tạp chí Tin học và Điều
khiển học, Tập 28, Số 1, 6.2012, tr. 53-64 14. Nguyen Dinh Han, Ho Ngoc Vinh, Phan Trung Huy (2012) An extension of codes by unambiguity of languages. In: Jeng-Shyang Pan, Kebin Jia (Eds): The
Eighth International Conference on Intelligent Information Hiding and Multi-
media Signal Processing (IIHMSP 2012), Piraeus-Athens, Greece, Proceedings, IEEE Computer Society, 7.2012, pp. 490-493 15. Đặng Quyết Thắng, Nguyễn Đình Hân, Phan Trung Huy (2012) Thuật toán mới xác định độ trễ giải mã của ngôn ngữ chính quy. Tạp chí Tin học và Điều khiển
học, Tập 28, Số 2, 9.2012 16. Dang Quyet Thang, Nguyen Dinh Han, Phan Trung Huy (2012) Algorithms based
on automata for testing of Z-codes. In: Cheonshik Kim, Beongku An, Zhang Xin- peng (Eds): UMAS2012, Lecture Notes in Computer Science, Springer, Heidel-
berg, 9.2012 (to appear)1.3 Otomat và ngôn ngữ chính quy
1.3.1 Otomat
1.3.2 Ngôn ngữ chính quy
1.4 Mã của các từ hữu hạn
1.4.1 Mã và các tính chất đại số của mã
1.4.2 Độ trễ giải mã
1.4.3 Tiêu chuẩn kiểm định mã
1.5 Mã luân phiên và mã của các từ định biên
1.5.1 Mã luân phiên
1.5.2 Mã của các từ định biên
1.6 Mã của các từ vô hạn
1.6.1 Từ và ngôn ngữ từ vô hạn
1.6.2 ω-mã
1.6.3 Z-mã
Chương 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG
2.1 Thuật toán kiểm định mã và ♦-mã
2.1.1 Tiêu chuẩn Sardinas-Patterson cải tiến
2.1.2 Thuật toán kiểm định mã trên vị nhóm
2.1.3 Thuật toán kiểm định ♦-mã
2.2 Thuật toán kiểm định ω-mã
2.2.1 Thủ tục kiểm định ω-mã trên ngôn ngữ
2.2.2 Thuật toán kiểm định ω-mã trên vị nhóm
2.2.3 Thuật toán kiểm định ω-mã trên đồ thị
2.3 Thuật toán kiểm định Z-mã
2.3.1 Thủ tục kiểm định Z-mã trên ngôn ngữ
2.3.2 Thuật toán kiểm định Z-mã trên vị nhóm
2.3.3 Thuật toán kiểm định Z-mã trên đồ thị
Chương 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA
NGÔN NGỮ
3.1 Tính chất không nhập nhằng của ngôn ngữ
3.1.1 Tích không nhập nhằng và mã
3.1.2 Xác định độ không nhập nhằng kiểu 1
3.1.2.1 Thủ tục xác định độ không nhập nhằng kiểu 1
3.1.2.2 Thuật toán xác định độ không nhập nhằng kiểu 1
3.1.3 Xác định độ không nhập nhằng kiểu 2
3.1.3.1 Thủ tục xác định độ không nhập nhằng kiểu 2
3.1.3.2 Thuật toán xác định độ không nhập nhằng kiểu 2
3.2 Phân bậc ngôn ngữ theo tính không nhập nhằng
3.2.1 Phân bậc kiểu 1
3.2.2 Phân bậc kiểu 2
3.3 Độ trễ giải mã
3.3.1 Độ trễ giải mã và độ không nhập nhằng
3.3.2 Xác định độ trễ giải mã
3.3.2.1 Thủ tục xác định độ trễ giải mã cho ngôn ngữ
3.3.2.2 Thuật toán tìm độ trễ giải mã cho ngôn ngữ chính quy
3.3.3 Thuật toán xác định độ trễ giải mã của ♦-mã
Chương 4 MỘT SỐ ỨNG DỤNG
4.1 Hệ mật đa trị và nhập nhằng
4.2 Bài toán tương ứng Post và ứng dụng
4.2.1 Bài toán tương ứng Post trên lớp ngôn ngữ từ định biên
4.2.2 Kỹ thuật bẫy cửa sập
KẾT LUẬN
I. Kết luận
II. Kiến nghị về những nghiên cứu tiếp theo
TÀI LIỆU THAM KHẢO
DANH MỤC CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ
CỦA LUẬN ÁN