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

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)

1.3 Otomat và ngôn ngữ chính quy

1.3.1 Otomat

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 }.

1.3.2 Ngôn ngữ chính quy

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.

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ã

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 .

1.4.2 Độ trễ giải mã

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ã.

1.4.3 Tiêu chuẩn kiểm định 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.

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

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Ã

1.5.2 Mã của các từ định biên

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Ã

1.6 Mã của các từ vô hạn

1.6.1 Từ và ngôn ngữ từ vô hạn

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.

1.6.2 ω-mã

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).

1.6.3 Z-mã

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) · · ·

Chương 2 KIỂM ĐỊNH MÃ VÀ MÃ MỞ RỘNG

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).

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

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ã.

2.1.2 Thuật toán kiểm định mã trên vị nhó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].

2.1.3 Thuật toán kiểm định ♦-mã

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.

2.2 Thuật toán kiểm định ω-mã

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).

2.2.1 Thủ tục kiểm định ω-mã trên ngôn ngữ

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,

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ã.

2.2.2 Thuật toán kiểm định ω-mã trên vị nhó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).

2.2.3 Thuật toán kiểm định ω-mã trên đồ thị

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).

2.3 Thuật toán kiểm định Z-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ã.

2.3.1 Thủ tục kiểm định Z-mã trên ngôn ngữ

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,

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|,

· · · 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|,

· · · 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

2.3.2 Thuật toán kiểm định Z-mã trên vị nhóm

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.

2.3.3 Thuật toán kiểm định Z-mã trên đồ thị

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

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 −−→ · · ·

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).

Chương 3 ĐỘ KHÔNG NHẬP NHẰNG CỦA

NGÔN NGỮ

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).

3.1 Tính chất không nhập nhằng của ngôn ngữ

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.

3.1.1 Tích không nhập nhằng và mã

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

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

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.

3.1.2.2 Thuật toán xác định độ không nhập nhằng kiểu 1

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).

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

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.

3.1.3.2 Thuật toán xác định độ không nhập nhằng kiểu 2

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.

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

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

3.2.2 Phân bậc kiểu 2

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 .

3.3 Độ trễ giải mã

3.3.1 Độ trễ giải mã và độ không nhập nhằng

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.

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ữ

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).

3.3.2.2 Thuật toán tìm độ trễ giải mã cho ngôn ngữ chính quy

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.

3.3.3 Thuật toán xác định độ trễ giải mã của ♦-mã

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)

Chương 4 MỘT SỐ ỨNG DỤNG

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).

4.1 Hệ mật đa trị và nhập nhằng

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.

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

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

4.2.2 Kỹ thuật bẫy cửa sập

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∗

KẾT LUẬN

I. Kết luận

Đề 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.

II. Kiến nghị về những nghiên cứu tiếp theo

− 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.

TÀI LIỆU THAM KHẢO

[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

DANH MỤC CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ

CỦA LUẬN ÁN

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)