Bài giảng Otomat và ngôn ngữ hình thức

84 7 0
Bài giảng Otomat và ngôn ngữ hình thức

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng môn học Otomat và ngôn ngữ hình thức nhằm trang bị cho sinh viên các năm cuối của ngành tin học các khái niệm về ngôn ngữ hình thức, các otomat, máy turing... Trên cơ sơ đó, các bạn sinh viên có thể hiểu sâu hơn cấu trúc các ngôn ngữ lập trình, các chương trình dịch cũng như bản chất của thuật toán và độ phức tạp tính toán của chúng.

Bài Giảng Mơn học: OTOMAT VÀ NGƠN NGỮ HÌNH THỨC TS Nguyễn Văn Định, Khoa CNTT Lời nói đầu Ngơn ngữ phương tiện để giao tiếp, giao tiếp hiểu giao tiếp người với nhau, giao tiếp người với máy, hay giao tiếp máy với máy Ngơn ngữ để người giao tiếp với gọi ngôn ngữ tự nhiên, chẳng hạn tiếng Anh, tiếng Nga, tiếng Việt… ngôn ngữ tự nhiên Các quy tắc cú pháp ngơn ngữ tự nhiên nói chung phức tạp yêu cầu nghiêm ngặt ngữ nghĩa lại thiếu chặt chẽ, chẳng hạn từ hay câu ta hiểu chúng theo nghĩa khác tùy theo ngữ cảnh cụ thể Con người muốn giao tiếp với máy tính tất nhiên thơng qua ngơn ngữ Để có giao tiếp người với máy hay máy với nhau, cần phải có ngơn ngữ với quy tắc cú pháp chặt chẽ so với ngôn ngữ tự nhiên, nói cách khác, với từ hay câu ngữ nghĩa chúng phải mà không phụ thuộc vào ngữ cảnh Những ngôn ngữ gọi ngơn ngữ hình thức Con người muốn máy tính thực cơng việc, phải viết yêu cầu đưa cho máy ngôn ngữ máy hiểu Việc viết yêu cầu gọi lập trình Ngơn ngữ dùng để lập trình gọi ngơn ngữ lập trình Các ngơn ngữ lập trình ngơn ngữ hình thức Cả ngơn ngữ hình thức lẫn ngơn ngữ tự nhiên xem tập từ, tức xâu hữu hạn phần tử chữ sở Về mặt truyền thống, lý thuyết ngơn ngữ hình thức liên quan đến đặc tả cú pháp ngôn ngữ nhiều đến vấn đề ngữ nghĩa Một đặc tả cú pháp ngơn ngữ có hữu hạn từ, nguyên tắc, cho cách liệt kê từ Điều khơng thể áp dụng ngơn ngữ có vơ hạn từ Nhiệm vụ lý thuyết ngơn ngữ hình thức nghiên cứu cách đặc tả hữu hạn ngơn ngữ vơ hạn Lý thuyết tính tốn nhiều ngành khác nó, chẳng hạn mật mã học, có liên quan mật thiết với lý thuyết ngôn ngữ Các tập vào thiết bị tính tốn xem ngơn ngữ nói cách sâu sắc mơ hình tính tốn đồng với lớp đặc tả ngôn ngữ theo nghĩa mà giảng nêu xác Chẳng hạn, máy Turing đồng với văn phạm cấu trúc câu, otomat hữu hạn đồng với văn phạm quy Mơn học otomat ngơn ngữ hình thức nhằm trang bị cho sinh viên năm cuối ngành Tin học khái niệm ngôn ngữ hình thức, otomat, máy Turing…Trên sơ đó, sinh viên hiểu sâu cấu trúc ngơn ngữ lập trình, chương trình dịch chất thuật tốn độ phức tạp tính tốn chúng Trong chưa có điều kiện biên soạn giáo trình cho mơn học này, chúng tơi tạm thời cung cấp cho sinh viên ngành Tin học tập giảng này, để làm tài liệu tham khảo học tập Do thời gian biên soạn có hạn nên tập giảng cịn nhiều thiếu sót, mong nhận ý kiến đóng góp em sinh viên đồng nghiệp Chương VĂN PHẠM VÀ NGƠN NGỮ HÌNH THỨC Trong chương này, đề cập đến số khái niệm kết liên quan đến văn phạm ngơn ngữ hình thức § Các khái niệm ngơn ngữ hình thức 1.1 Bảng chữ 1.2 Từ 1.3 Ngơn ngữ § Các phép tốn từ 2.1 Phép nhân ghép 2.2 Phép lấy từ ngược 2.3 Phép chia từ § Các phép tốn ngơn ngữ 3.1 Phép hợp 3.2 Phép giao 3.3 Phép lấy phần bù 3.4 Phép nhân ghép 3.5 Phép lặp 3.6 Phép lấy ngôn ngữ ngược 3.7 Phép chia ngơn ngữ § Văn phạm ngơn ngữ sinh văn phạm 4.1 Định nghĩa văn phạm 4.2 Ngôn ngữ sinh văn pham 4.3 Phân loại văn phạm theo Chomsky § Các tính chất văn phạm ngơn ngữ 5.1 Tính chất văn phạm dẫn xuất 5.2 Tính đóng lớp ngơn ngữ sinh văn phạm §1 Các khái niệm ngơn ngữ hình thức 1.1 Bảng chữ Định nghĩa 1.1 Tập Σ khác rỗng gồm hũu hạn hay vô hạn ký hiệu gọi bảng chữ Mỗi phần tử a∈ Σ gọi chữ hay ký hiệu Thí dụ 1.1 Dưới bảng chữ cái: ∑ = {a, b, c, … , x, y, z} Δ = {α, β, γ, δ, ε, η, ϕ, κ, μ, χ, ν, π, θ, ρ, σ, τ, ω,ξ, ψ}, Г = {0, 1}, W = {if, then, else, a, b, c, d, e, f, +, −, ∗, /, =, ≠} 1.2 Từ Định nghĩa 1.2 Giả sử có bảng chữ Σ = {a1, a2, …, am }, dãy chữ α = ai1 ai2 …ait, với aij ∈ Σ (1 ≤ j ≤ t) gọi từ hay xâu bảng chữ Σ Tổng số vị trí ký hiệu xuất xâu α gọi độ dài từ α ký hiệu | α | Như vậy, từ bảng chữ Σ xâu hữu hạn gồm số lớn hay khơng chữ Σ, chữ xuất nhiều lần Xâu khơng có chữ gọi từ rỗng ký hiệu ε Rõ ràng từ rỗng từ thuộc bảng chữ Hai từ α = a1a2…an β = b1b2…bm gọi nhau, ký hiệu α = β, n = m = bi với i = 1, 2, …, n Nếu α từ bảng chữ Σ, Σ ⊆ Δ α từ bảng chữ Δ Tập từ bảng chữ Σ ký hiệu Σ* , tập từ khác rỗng bảng chữ Σ ký hiệu Σ+ Như Σ+ = Σ* \ {ε} Σ* = Σ+ ∪ {ε} Dễ thấy tập Σ* Σ+ vơ hạn Về cấu trúc đại số Σ* vị nhóm tự sinh Σ với đơn vị từ rỗng ε, Σ+ nửa nhóm tự sinh Σ Có thể chứng minh tập Σ* Σ+ vô hạn đếm Thí dụ 1.2 Ta có ε , 0, 01, 101, 1010, 110011 từ bảng chữ Г = {0,1} Các xâu ε, beautiful, happy, holiday từ bảng chữ Σ = {a, b, c, …, z} 1.3 Ngôn ngữ Định nghĩa 1.3 Cho bảng chữ Σ, mỗt tập L ⊆ Σ* gọi ngôn ngữ hình thức (hay ngơn ngữ) bảng chữ Σ Tập rỗng, ký hiệu ∅, ngôn ngữ không gồm từ gọi ngôn ngữ rỗng Vậy ngôn ngữ rỗng ngôn ngữ bảng chữ Chú ý ngôn ngữ rỗng: L = ∅ khác với ngôn ngữ gồm từ rỗng: L = {ε} Thí dụ 1.3 Σ* ngôn ngữ gồm tất từ Σ cịn Σ+ ngơn ngữ gồm tất từ khác từ trống Σ L = { ε, 0, 1, 01, 10, 00, 11, 011,100} ngôn ngữ bảng chữ Г = {0, 1} L = {a, b, c, aa, ab, ac, abc } ngôn ngữ bảng chữ Σ = {a, b, c} L1 = {ε, a, b, abb, aab, aaa, bbb, abab}, L2 = {anbn | n∈ N} hai ngôn ngữ bảng chữ Σ = {a, b}, L1 ngôn ngữ hữu hạn L2 ngôn ngữ vô hạn Mỗi từ thuộc ngôn ngữ L2 có số chữ a số chữ b với a b không xen kẽ, a nằm phía trái b phía phải từ §2 Các phép toán từ Các phép toán thực từ bảng chữ Σ, tạo nên từ thuộc bảng chữ 2.1 Phép nhân ghép Định nghĩa 2.1 Tích ghép (hay nhân ghép) hai từ α = a1a2…am từ β = b1b2…bn bảng chữ Σ, từ γ = a1a2…amb1b2…bn bảng chữ Σ Kí hiệu phép nhân ghép γ = α.β (hay γ = αβ) Nhận xét: Từ định nghĩa 2.1, ta thấy: • Từ rỗng phần tử đơn vị phép nhân ghép, tức là: ωε = εω = ω với từ ω • Phép nhân ghép có tính kết hợp, nghĩa với từ α, β, γ, ta có (αβ)γ = α(βγ) • Ký hiệu ωn, với n số tự nhiên, dùng theo nghĩa quen thuộc: ω n ⎧ ε n = , ⎪ = ⎨ ω n = 1, ⎪ n −1 ⎩ ω ω n > • Đối với phép nhân ghép hàm độ dài có số tính chất hình thức lơgarit: với từ α, β số tự nhiên n, thì: |αβ| = |α| + |β|, |αn| = n|α| Và rõ ràng với phần tử đơn vị, tức từ rỗng ε, | ε | = Chứng minh kết dễ dàng, xin dành cho sinh viên tập Một vài khái niệm liên quan • Đối với từ ω, t1, φ, t2 bảng chữ Σ mà ω = t1φt2 *φ * ( * ký hiệu Σ) gọi vị trí φ Σ • Xâu φ gọi từ ω tồn vị trí φ ω • Nếu t1 = ε, tức ω = φ t2 φ gọi tiền tố (phần đầu) từ ω, t2 = ε, tức ω = t1φ φ gọi hậu tố (phần cuối) từ ω Dễ thấy từ rỗng ε phần đầu, phần cuối từ từ ω bảng chữ Σ • Trường hợp | φ | = 1, tức φ gồm ký hiệu, chẳng hạn φ = b ∈ Σ, *b* gọi vị trí b từ ω, gọi điểm ω • Số vị trí kí hiệu a từ ω ký hiệu Ia(ω), hay |ω|a đơn giản ω|a Thí dụ 2.1 Trên bảng chữ W = {if, then, else, a, b, c, d, e, f, +, −, ∗, /, =, ≠}, ta có từ α = if a+b=c then c∗d=e β = else c/d=f , αβ từ: if a+b=c then c∗d=e else c/d=f Cho Σ = {a, b, c}, đó: Từ ω = abcbcb chứa vị trí bcb, a*bcb*cb abc*bcb*, φ = bcb từ ω Từ ω chứa vị trí ký hiệu a, *a*bcbcb Từ ω = 010111001 bảng chữ {0, 1} có độ dài 9, 0101 tiền tố 11001 hậu tố ω 2.2 Phép lấy từ ngược Định nghĩa 2.2 Giả sử có từ khác rỗng ω = a1a2 …am bảng chữ Σ, từ am am-1 … a2 a1 gọi từ ngược (hay từ soi gương) từ ω, ký hiệu ωR , hay ω^ Khi ω = ε ta quy ước εR = ε Nhận xét: Dễ thấy phép lấy từ ngược có tính chất sau: • (ωR)R = ω • (αβ)R = βR αR • | αR | = | α | Chứng minh kết dễ dàng, xin dành cho sinh viên tập Thí dụ 2.2 Cho từ α = 100110 β = aabb bảng chữ {0,1,a,b}, theo định nghĩa ta có: αR = 011001 (αR)R = (011001)R = 100110 = α βR = bbaa (βR)R = (bbaa)R = aabb = β Cho từ happy oto bảng chữ ∑ = {a, b, c, …x, y, z}, ta có: (happy)R = yppah (oto)R = oto Ngồi ta có: | (happy)R | = | yppah| = | happy | = 2.3 Phép chia từ Là phép toán ngắt bỏ phần đầu hay phần cuối từ Ta có định nghĩa sau: Định nghĩa 2.3 Phép chia trái từ α cho từ β (hay thương bên trái α β) cho kết α phần lại từ α sau ngắt bỏ phần đầu β từ α, ký hiệu β\ Định nghĩa 2.4 Phép chia phải từ α cho từ γ (hay thương bên phải α γ) cho kết α phần lại từ α sau ngắt bỏ phần cuối γ từ α, ký hiệu /γ Nhận xét: Dễ thấy phép chia từ có tính chất sau: • Trong phép chia trái từ α cho từ β β phải tiền tố từ α, tương tự, phép chia phải từ α cho từ γ γ phải hậu tố từ α \α = α /ε = α • ε • α • Nếu α = β.γ • (β\ )R = αR / βR • ( \α = α /α = ε β\ α α = γ, /γ = β α α /γ )R = γR \ αR Chứng minh kết dễ dàng, xin dành cho sinh viên tập Thí dụ 2.3 Cho từ α = abcaabbcc, β = abc, γ = bcc bảng chữ ∑ = {a, b, c}, ta có α α β\ = aabbcc /γ = abcaab α (β\ )R = (aabbcc)R = ccbbaa = ccbbaacba / cba = αR / βR §3 Các phép tốn ngơn ngữ Các họ ngơn ngữ cụ thể thường đặc trưng cách tiện lợi qua phép tốn xác định ngơn ngữ, họ gồm ngôn ngữ nhận việc tổ hợp từ số ngôn ngữ cho trước số phép tốn Vì ngơn ngữ tập hợp nên ta có phép tốn đại số tập hợp phép giao, phép hợp, phép hiệu, phép lấy bù ngôn ngữ Chẳng hạn, với L1 L2 hai ngôn ngữ bảng chữ Σ ta có ngơn ngữ sau bảng chữ Σ: L1 ∪ L2, L1 ∩ L2, L1.L2, Σ* \ L1 Dưới trình bày phép tốn ngơn ngữ 3.1 Phép hợp Định nghĩa 3.1 Hợp hai ngôn ngữ L1 L2 bảng chữ ∑, ký hiệu L1∪ L2, ngôn ngữ bảng chũ ∑, tập từ: L = {ω ∈ Σ* | ω ∈ L1 ω ∈ L2 } Định nghĩa phép hợp mở rộng cho số hữu hạn ngôn ngữ, tức hợp ngôn ngữ L1, L2, …, Ln bảng chữ Σ, tập từ: n UL i = {ω ∈ Σ* | ω ∈ Li , với i đó, ≤ i ≤ n } i =1 Nhận xét: Dễ dàng thấy phép hợp ngơn ngữ có tính chất sau: • Phép hợp hai ngơn ngữ có tính giao hốn: L1∪ L2 = L2∪ L1 • Phép hợp ngơn ngữ có tính kết hợp: (L1∪ L2) ∪ L3 = L1∪ ( L2 ∪ L3) • Với ngơn ngữ L Σ thì: L ∪ ∅ = ∅ ∪ L = L L ∪ Σ* = Σ* Chứng minh kết dễ dàng, xin dành cho sinh viên tập 3.2 Phép giao Định nghĩa 3.2 Giao hai ngôn ngữ L1 L2 bảng chữ ∑, ký hiệu L1∩ L2 , ngôn ngữ bảng chữ ∑, tập từ: L = {ω ∈ Σ* | ω ∈ L1 ω ∈ L2 } Định nghĩa phép giao mở rộng cho số hữu hạn ngôn ngữ, tức giao ngôn ngữ L1, L2, …, Ln bảng chữ Σ, tập từ: n IL i = {ω ∈ Σ* | ω ∈ Li , với i, ≤ i ≤ n } i =1 Nhận xét: Dễ dàng thấy ràng, phép giao ngơn ngữ có tính chất sau: • Phép giao hai ngơn ngữ có tính giao hốn: L1 ∩ L2 = L2 ∩ L1 • Phép giao ngơn ngữ có tính kết hợp: (L1 ∩ L2) ∩ L3 = L1 ∩ ( L2 ∩ L3) • Phép giao ngơn ngữ có tính phân phối phép hợp: (L1 ∩ L2) ∪ L3 = (L1 ∪ L3 ) ∩ ( L2 ∪ L3) (L1 ∪ L2) ∩ L3 = (L1 ∩ L3 ) ∪ ( L2 ∩ L3) • Với ngơn ngữ L Σ thì: L ∩ ∅ = ∅ ∩ L = ∅ L ∩ Σ* = L Chứng minh kết dễ dàng, xin dành cho sinh viên tập 3.3 Phép lấy phần bù Định nghĩa 3.3 Ngôn ngữ phần bù ngôn ngữ L bảng chữ Σ, ký hiệu CΣL (hay đơn giản CL, không gây nhầm lẫn), ngôn ngữ bảng chữ ∑, tập từ: CΣL = {ω ∈ Σ* | ω ∉ L } Nhận xét: Dễ dàng thấy phép lấy phần bù ngơn ngữ có tính chất sau: • CΣ {ε } = Σ+ , CΣ Σ + = {ε} • CΣ ∅ = Σ* , CΣ Σ* = ∅ • C(CL1 ∪ CL2) = L1 ∩ L2 Chứng minh kết dễ dàng, xin dành cho sinh viên tập Thí dụ 3.1 Cho ngôn ngữ L1 = {ε, 0, 01}, L2 = {ε, 01, 10} bảng chữ Σ = {0, 1}, ta có: L1∪ L2 = {ε, 0, 01, 10}, L1 ∩ L2 = {ε, 01} Cho ngôn ngữ L = {ω ∈ ∑*, với | ω | số chẵn }, ta có: CΣL = {ω ∈ ∑+ , với | ω | số lẻ} 3.4 Phép nhân ghép Định nghĩa 3.4 Cho hai ngôn ngữ L1 bảng chữ Σ1 L2 bảng chữ Σ2 Nhân ghép hay tích hai ngơn ngữ L1 L2 ngôn ngữ bảng chữ Σ1 ∪ Σ2, ký hiệu L1L2, đuợc xác định bởi: L1L2 = {αβ | α∈L1 β∈L2} Nhận xét: Dễ dàng nhận thấy phép nhân ghép (tích) ngơn ngữ có tính chất sau: • Phép nhân ghép có tính kết hợp: với ngơn ngữ L1, L2 L3, ta có: (L1L2)L3 = L1(L2L3) ∅L = L∅ = ∅, {ε}L = L{ε} = L, • Phép nhân ghép có tính phân phối phép hợp, nghĩa L1(L2 ∪ L3) = L1L2 ∪ L1L3, (L2 ∪ L3)L1 = L2L1 ∪ L3L1 • Đặc biệt: Phép nhân ghép khơng có tính phân phối phép giao Phép hợp, phép giao tính phân phối phép nhân ghép (xem thí dụ 3.2) Tức với ngơn ngữ L1, L2 L3, thì: L1(L2 ∩ L3) ≠ (L1L2) ∩ (L1L3) L1 ∪ (L2L3) ≠ (L1 ∪ L2)(L1 ∪ L3), L1 ∩ (L2L3) ≠ (L1 ∩ L2)(L1 ∩ L3) Thí dụ 3.2 Đây phản ví dụ để phép nhân ghép khơng có tính phân phối phép giao Phép hợp, phép giao tính phân phối phép nhân ghép Xét ngôn ngữ L1 = {0, 01}, L2 = {01, 10}, L3 = {0} bảng chữ Σ = {0, 1} Có thể kiểm tra phép nhân ghép khơng có tính phân phối phép giao: Ta có: L2 ∩ L3 = ∅, đó: L1(L2 ∩ L3) = ∅, Mặt khác, ta có L1L2 = {001, 010, 0101, 0110} L1L3 = {00, 010}, đó: (L1L2) ∩ (L1L3) = {010} Vậy L1(L2 ∩ L3) ≠ (L1L2) ∩ (L1L3), tức phép nhân ghép khơng có tính phân phối phép giao Kiểm tra tính phân phối phép hợp, phép giao phép nhân ghép: Ta có: L2L3 = {010, 100}, đó: L1 ∪ (L2L3) = {0, 01, 010, 100}, Mặt khác ta có L1 ∪ L2 = {0, 01, 10} L1 ∪ L3 = {0, 01}, đó: (L1 ∪ L2)(L1 ∪ L3) = {00, 001, 010, 0101, 100, 1001} Vậy L1 ∪ (L2L3) ≠ (L1 ∪ L2)(L1 ∪ L3), tức phép hợp khơng có tính phân phối phép nhân ghép Tương tự, phép giao, ta có: L2L3 = {010, 100}, đó: L1 ∩ (L2L3) = ∅ Mặt khác L1 ∩ L2 = {01}, L1 ∩ L3 = {0}, đó: (L1 ∩ L2)(L1 ∩ L3) = {010} Vậy L1 ∩ (L2L3) ≠ (L1 ∩ L2)(L1 ∩ L3) Tức phép giao khơng có tính phân phối phép nhân ghép Vì phép ghép ngơn ngữ có tính kết hợp nên ký hiệu Ln dùng với ngôn ngữ L số tự nhiên n theo nghĩa quen thuộc sau: ⎧{ε } n = 0, ⎪ L = ⎨ L n = 1, ⎪ n -1 ⎩ L L n > n 3.5 Phép lặp Định nghĩa 3.5 Cho ngôn ngữ L bảng chữ Σ, đó: • Tập từ {ε} ∪ L ∪ L2 ∪ … ∪ Ln ∪ … = ∞ U Ln gọi ngôn ngữ lặp ngơn ngữ L n =0 (hay bao đóng ghép ngôn ngữ L), ký hiệu L* Vậy ngôn ngữ lặp L hợp luỹ thừa L: * L = ∞ U Ln n =0 • Tập từ L ∪ L2 ∪ … ∪ Ln ∪ … = ∞ U Ln gọi ngôn ngữ lặp cắt ngôn ngữ L, ký n =1 hiệu L+, + Vậy ngôn ngữ lặp cắt L hợp luỹ thừa dương L: L = ∞ U Ln n =1 Thí dụ 3.3 Xét ngôn ngữ L = {0, 1} bảng chữ Σ = {0, 1} Ta có: L2 = {00, 01, 10, 11}, tập hợp xâu nhị phân độ dài 2; L3 = {000, 001, 010, 011, 100, 101, 110, 111}, tập hợp xâu nhị phân độ dài Tương tự, Ln tập hợp xâu nhị phân độ dài n Vì vậy, L* tập hợp tất xâu nhị phân Xét hai ngôn ngữ bảng chữ Σ = {a}: L1 = {a2n | n ≥ 1}, L2 = {a5n+3 | n ≥ 0} Khi đó, ta có L1 = {a2}+, L2 = {a5}*{a3} 3.6 Phép lấy ngôn ngữ ngược Định nghĩa 3.6 Cho ngôn ngữ L bảng chữ Σ, ngơn ngữ ngược L ngơn ngữ bảng chữ ∑, ký hiệu LR hay L^, tập từ: LR = {ω ∈ Σ* / ωR ∈ L} 10 Chương MÁY TURING Mở đầu Khi thiết kế cài đặt phần mềm tin học cho vấn đề đó, ta cần phải đưa phương pháp giải mà thực chất thuật tốn giải vấn đề Rõ ràng rằng, khơng tìm phương pháp giải khơng thể lập trình Chính thế, thuật toán khái niệm tảng hầu hết lĩnh vực tin học Ta hiểu khái niệm thuật toán sau Nếu cho trước tốn cách giải tốn phân định thành số hữu hạn bước, có kết thúc cuối đạt kết mong muốn gọi thuật toán Về mặt lịch sử, năm 30 kỷ trước, khoa học công nghệ phát triển, nhân loại nêu nhiều tốn mà khơng tìm thấy lời giải Có nghĩa khơng tìm thuật tốn để giải chúng Người ta phải tìm cách định nghĩa xác khái niệm thuật toán Năm 1936, A Turing đưa cơng cụ tốt để mơ tả thuật tốn mà ngày người ta gọi máy Turing Để ghi nhớ công lao này, Hội Tin học Mỹ (ACM) đặt giải thưởng Turing tin học Cho đến nay, giải thưởng Turing giải thưởng tin học lớn giới Tiếp theo Turing, số nhà khoa học khác đưa cơng cụ xác hố khái niệm thuật tốn Đó khái niệm hàm đệ quy, thuật toán Marcop, văn phạm sinh N Chomsky Những khái niệm sở phát triển việc nghiên cứu ứng dụng thuật tốn Mặt khác nhờ khái niệm này, người ta xác định tốn khơng thể giải thuật toán A Turing đề xuất khái niệm máy Turing nhằm xác hố khái niệm thuật toán Thực tế chứng tỏ máy Turing công cụ tốt để mô tả thuật toán Trải qua nhiều thập niên, lý thuyết máy Turing phát triển khơng ngừng đóng góp cơng sức nhiều nhà khoa học, có cơng trình tảng Hartmanis, Lewis, Stearns, Minsky, Blum, Hopcroft, Ullman Thực chất, máy Turing mô hình máy Nó phân rã tồn q trình hoạt động thành bước thao tác đơn giản Bản thân máy Turing mơ hình khái qt đơn giản mơ hình hố q trình tính tốn Máy Turing xem máy với nhớ ngồi có dung lượng xem vơ hạn Trong nhớ ngồi, giá trị bố trí cho truy cập, đọc sửa đổi Ta xem máy Turing máy đốn nhận ngơn ngữ gọi ngôn ngữ đếm đệ quy Đồng thời sử dụng để mô tả lớp hàm quan trọng, gọi hàm tính Chương mô tả máy Turing phổ dụng mà bắt chước hoạt động tất máy Turing khác Từ ta đến khái niệm tốn khơng giải thuật tốn 70 §1 Máy Turing lớp hàm tính 1.1 Máy Turing Định nghĩa 1.1 : Máy Turing đơn định bảy M = , đó, + Q tập hữu hạn khác rỗng, gọi tập trạng thái; + Σ bảng chữ cái, gọi bảng chữ vào hay bảng chữ trong; + Δ bảng chữ cái, Δ ⊃ Σ, gọi bảng chữ ngồi hay tập ký hiệu ghi c lờn bng; + : D ặ Q ì Δ × {R, L}, với D ⊂ Q x Δ R, L ∉Q × Δ, gọi ánh xạ chuyển; + s0 ∈Q, gọi trạng thái khởi đầu; + B∈Δ \ Σ, gọi ký hiệu trắng; + F ⊂ Q, gọi tập trạng thái kết thúc Trong trường hợp miền giá trị δ P(Q × Δ × {R, L}) máy Turing gọi không đơn định lớp ngôn ngữ đốn nhận máy Turing đơn định khơng đơn định trùng Ngồi ra, có nhiều dạng máy Turing; chẳng hạn, máy Turing với băng vô hạn đầu băng vô hạn hai đầu Ở đây, ta xét lớp máy Turing đơn định với băng vô hạn hai đầu Định nghĩa 1.2 Cho máy Turing M = Bộ ba , * ϕ, ψ ∈ Δ , s ∈Q, a∈Δ, ϕ không bắt đầu ψ không kết thúc B, gọi hình trạng M ϕaψ gọi từ ứng với hình trạng cho Bộ ba , a∈Δ, ψ∈Δ*, gọi hình trạng đầu (có từ ứng với aψ) Định nghĩa 1.3 Cho máy Turing M = Ta nói hình trạng α = chuyển đến hình trạng β M, ký hiệu α ├M β hay đơn giản α├ β, thoả mãn điều sau: 1/ δ(s, a) = < q, b, R>: a/ ψ = cψ1 ≠ ε, c∈Δ, ψ1∈Δ*: • B ϕ α├ , ϕb ∉{B}*, a c ψ1 B ⇒ s B ϕ b c q 71 ψ1 B α ├ , ϕb ∈{B}*, • B a ψ1 c B ⇒ B B ψ1 c B q s b/ ψ = ε: α = ├ < ϕb, q, B >, ϕb∉{B}*, • a ϕ B B ⇒ b ϕ B s a B q α = ├ < ε, q, B >, ϕb∈{B}*, • B B B B B B B ⇒ B B s B B B B B q 2/ δ(s, a) = < q, b, L >: a/ ϕ = ϕ1d ≠ ε, d ∈Δ, ϕ1 ∈Δ*: • B ϕ1 α ├ < ϕ1, q, dbψ >, dbψ ∉{B}*, d ψ a B ⇒ B ϕ1 d B ϕ1 B q s • ψ b α ├ < ϕ1, q, B >, dbψ ∈{B}*, B a B B B ⇒ B ϕ1 B q s 72 B B B B b/ ϕ = ε: • B α = ├ < ε, q, Bbψ >, Bbψ ∉{B}*, ψ a B ⇒ • B ψ b B q s B B a α = < ε, s, aψ >├ < ε, q, B>, Bbψ ∈{B}*, B B B B ⇒ B B B B B B B q s Dãy hình trạng αi (1≤ i ≤ n) máy Turing M cho αi├ αi+1 (1 ≤ i ≤ n-1) gọi q trình tính tốn M, ký hiệu α1╞ M αn hay đơn giản α1 ╞ αn Các hình trạng khơng thể chuyển đến hình trạng gọi hình trạng cuối Q trình tính tốn bắt đầu hình trạng đầu kết thúc hình trạng cuối gọi q trình tính tốn hồn chỉnh 1.2 Ngơn ngữ đốn nhận máy Turing Định nghĩa 1.4 Cho máy Turing M = ω∈Σ* Ta nói M đốn nhận ω tồn q trình tính tốn hồn chỉnh < ε, s0, ω > ╞ < ϕ, q, aψ > với q ∈ F Tập hợp từ đoán nhận máy Turing M gọi ngơn ngữ đốn nhận M, ký hiệu T(M) Ngơn ngữ đốn nhận máy Turing cịn gọi ngơn ngữ đệ quy đếm (Recursively Enumerable) Ngơn ngữ đốn nhận máy Turing mà dừng sau số hữu hạn bước từ vào gọi ngôn ngữ đệ quy Từ định nghĩa suy ngôn ngữ đệ quy ngôn ngữ đếm đệ quy Chú ý: Sự hoạt động máy Turing thể ánh xạ chuyển Ánh xạ mơ tả bảng đồ thị chuyển Bảng gồm cột đánh dấu ký hiệu Δ dòng đánh dấu trạng thái Nếu δ(s, a) = , với a, b∈Δ, s, q∈Q, C∈{R, L} ba ghi vào ô ứng với dòng s cột a 73 Đồ thị chuyển đa đồ thị có hướng, có khuyên G với tập đỉnh G Q Với a, b∈Δ, s, q∈Q, C∈{R, L}, δ(s, a) = có cung từ s đến q với nhãn Thí dụ 1.1 Cho máy Turing: M = , δ(s0, 0) = , δ(s0, 1) = , δ(s1, 0) = , δ(s1, 1) = , δ(s1, B) = , δ(s2, 0) = , δ(s2, 1) = , δ(s2, B) = , δ(s3, 0) = , δ(s4, 1) = , δ(s5, 0) = , δ(s5, 1) = , δ(s5, X) = , δ(s6, 0) = , δ(s6, 1) = , δ(s6, X) = Ánh xạ chuyển cho bảng sau: Đồ thị chuyển M là: Ta xem máy Turing M hoạt động từ 001 1001 74 Đối với từ 001, ta có dãy hình trạng: ├ ├ ├ ├ Rõ ràng hình trạng cuối, s3 khơng phải trạng thái kết thúc, M khơng đốn nhận từ 001 Đối với từ 1001, ta có dãy hình trạng: ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ Do hình trạng cuối s0 trạng thái kết thúc nên từ 1001 đoán nhận máy Turing M Từ đồ thị chuyển dễ dàng thấy M hoạt động với xâu vào ω sau: M đọc xâu ω từ trái sang phải Bắt đầu từ trạng thái s0, thay ký hiệu đọc ký hiệu X, đồng thời ký hiệu vừa đọc chuyển sang trạng thái s1 ngược lại chuyển sang trạng thái s2 Tại trạng thái s1 s2, máy M chuyển đầu đọc qua phải mà không thay đổi ký hiệu đọc gặp ký hiệu B Từ s1 máy chuyển sang s3 từ s2 máy chuyển sang s4 Từ s3 gặp xố sang s5, từ s4 gặp xố sang s6 Ở đây, ta cần lưu ý xoá trường hợp xuất phát từ s0, máy thay X xoá trường hợp xuất phát từ s0, máy thay X Tại trạng thái s5 s6, máy dịch chuyển qua trái mà không làm thay đổi ký hiệu băng gặp ký hiệu X, máy quay trở lại s0 tiếp tục trình máy dừng trường hợp sau: • Máy trạng thái s3 gặp trạng thái s4 gặp Trong trường hợp rõ ràng ω ban đầu khơng có dạng ααR máy khơng đốn nhận từ • Máy trạng thái s0 gặp ký hiệu B Điều có nghĩa ký hiệu 0, băng thay X B Điều xảy xâu vào ω có dạng ααR Vậy T(M)={ααR | α∈{0, 1}*} Định nghĩa 1.5 Cho máy Turing M = Hàm xác định máy Turing M hàm: trình tính tốn hồn chỉnh ⎧ψ < ε , s0 , aω ' > < ψ ' , q, bψ ' ' > ⎪ f M (ω ) = ⎨ aω ' = ω , ψ ' bψ ' ' = ψ ; ⎪ Không xác định khơng tồn q trình ⎩ Thí dụ 1.2 Cho hàm f(ω) = ωBω (ω∈{0, 1}*) Ta xây dựng máy Turing M xác định hàm f sau: M = , ánh xạ chuyển δ đồ thị chuyển đây: 75 M hoạt động sau: ký hiệu ω thay X Y tuỳ thuộc vào ký hiệu hay 1, sau đầu đọc/ghi chuyển sang phải để tìm ký hiệu B, thay ký hiệu B tuỳ thuộc trước ghi x hay Y Sau chạy ngược lại để tìm ký hiệu X hay Y thay tương ứng lại chuyển sang phải Nếu ký hiệu B tính tốn kết thúc, ngược lại lặp lại q trình Dễ dàng thấy rằng, sau vịng thực ký hiệu ω ghi sang bên phải q trình tính tốn kết thúc băng ωBω hay fM = ωBω Định nghĩa 1.6 Cho hàm f: DỈ N, với N tập số tự nhiên, D ⊂ Nm m số nguyên dương Ở đây, với số tự nhiên n, ký hiệu n =1n+1 Ta nói hàm f tính máy Turing tồn máy Turing M xác định hàm sau: ⎧ϕB f ( x1 , x , , xm ) f(x1, x2, …, xm) tồn ⎪ n2 77 Thí dụ 1.6 Chúng ta đưa ngơn ngữ chương trình thích hợp cho việc mơ tả hoạt động máy Turing Ngôn ngữ dựa thị sở sau: k: print A, k: move right, k: move left, k: if A then go to h, k: stop, đây, k h số tự nhiên ký hiệu dòng thị, A ký hiệu băng Chương trình dãy thị Việc thực chương trình thơng thường theo thứ tự tự nhiên cách viết trừ gặp lệnh if A then go to h (nếu ký hiệu hành băng A nhảy đến thực lệnh có nhãn h) Sau chương trình mơ tả hoạt động máy Turing thực phép toán nhân hai: 1: print B, 2: move left, 3: if then go to 2, 4: print 1, 5: move left, 6: if then go to 5, 7: print 1, 8: move right, 9: if then go to 1, 10: stop, Các máy Turing hàm tính máy Turing đóng vai trị quan trọng lý thuyết thuật toán Cơ sở cho việc xây dựng số lý thuyết thuật toán từ máy Turing định đề Church sau Định đề Church: Lớp hàm tính thuật tốn trùng với lớp hàm tính máy Turring §2 Máy Turing phổ dụng Mở đầu Máy Turing phổ dụng máy Turing bắt chước hoạt động máy Turring Máy Turing phổ dụng U hiểu sau: với cách mã hố thích hợp ánh xạ chuyển trạng thái máy Turing từ ω bảng chữ vào Với từ mã hoá này, máy Turing phổ dụng U dừng máy Turing M dừng với từ ω Ta 78 xem máy Turing phổ dụng mơ hình tốn học máy tính điện tử ngày Các máy thực công việc cách mã hố chương trình theo ngơn ngữ bên gọi ngôn ngữ máy Tập ký hiệu ghi lên băng hữu hạn nên ta ký hiệu chúng sau: S0=B, S1, S2, …, Sm mã hố chữ số Chẳng hạn, B−1, S1−11, S2−111, …, Sm−1m+1 Tương tự, tập trạng thái hữu hạn ta mã hoá chúng: q0−1, q1−11, q2−111, …, qn−1n+1 Cuối hai ký hiệu L R mã hoá: L−1, R−11 Bây để mã hoá ánh xạ chuyển trạng thái máy Turing, ta sử dụng bảng biểu diễn ánh xạ Trong bảng, cột ký hiệu ký hiệu ghi lên băng, dòng ký hiệu trạng thái Tiếp theo liệt kê phần tử bảng theo dòng với số dòng cột tương ứng chúng, thứ tự phần tử dòng 1, dòng 2, …từ trái sang phải Chẳng hạn, dòng xuất có nghĩa δ(qi, Sj) = Giữa dãy mã năm có chèn hai chữ số mã ký hiệu năm chèn chữ số Máy Turing M mã hoá ký hiệu [M] Ta chấp nhận mà không chứng minh với máy Turing M tồn máy Turing tương đương có trạng thái kết thúc, ta xem q0 trạng thái đầu q1 trạng thái kết thúc máy Turing M Thí dụ 2.1 Cho máy Turing M với ánh xạ chuyển cho bảng sau: q0 B S1 q1 q2 Các phần tử bảng xếp thành dãy đây: , , , Dãy mã hoá dạng xâu nhị phân: [M] = 10101101101100101101101101001101101101011100111011011010111 Nếu băng vào có ω=S1S1BS1 mã tương ứng là: [ω] = 1101101011 2.1 Hoạt động máy Turing phổ dụng Bây giả sử máy Turing M có n trạng thái bảng chữ ghi lên băng có m ký hiệu, 79 thêm vào ký hiệu, trạng thái ánh xạ chuyển M mã hố nói Mơ hình hố hoạt động máy Turing M máy Turing phổ dụng U mô tả khái quát sau: Trước hết [M] [ω] cần phải ghi lên băng máy Turing phổ dụng U theo quy cách sau Ký hiệu X ghi lên băng chia băng thành hai nửa vô hạn Nửa băng bên phải dành ba đoạn kề kể từ vị trí ký hiệu sau X: Đoạn gọi Buffer gồm n+m+2 vị trí ký hiệu tất nhận ký hiệu 0; đoạn gọi vùng mã hoá M, bắt đầu ký hiệu Y, tiếp sau Y [M] kết thúc ba chữ số 0; đoạn sau gọi đoạn mã ω, bắt đầu ký hiệu Z [ω] Hình ảnh băng lúc đầu sau: Y X Buffer Z Mã hoá M Mã hoá ω Buffer phục vụ cho việc ghi nhận hình trạng M bước Ta chép vào vùng trạng thái bên mã hoá ký hiệu đọc Ký hiệu Y thường đứng trước năm xác định trạng thái hành M, ký hiệu hành băng, hướng chuyển động đầu đọc băng Z đánh dấu ký hiệu đọc băng M Quá trình tính tốn U mơ hoạt động máy Turing M với xâu vào ω chia pha thích hợp với việc dịch chuyển hình trạng M Một giai đoạn (pha) hoạt động máy Turing phổ dụng U tóm tắt sau Đầu tiên chép vào Buffer khối ký hiệu nằm sau Y (gọi khối Y), sau ghi vào cuối khối vừa chép ký hiệu X, xoá ký hiệu Y, chạy sang phải tìm ký hiệu Z chép khối ký hiệu sau Z (gọi khối Z) vào Buffer sau ký hiệu X ghi lại ký hiệu Y trước [M] Như sau giai đoạn Bufffer chứa mã trạng thái ký hiệu hành máy Turing M Bước tiếp theo, máy Turing phổ dụng U so sánh hai khối ký hiệu liên tiếp sau Y với nội dung Buffer Nếu trùng tìm năm cần tìm Nếu ngược lại tìm đến mã hố năm sau Y lại tiếp tục so sánh Trong trường hợp năm mơ tả M khơng tìm thấy thích hợp U dừng Ngược lại, tìm năm cần tìm xố nội dung buffer chuyển Y đến trước phần tử thứ ba năm Đổi nội dung khối sau Z nội dung khối sau Y chuyển Y đến trước phần tử thứ tư năm Sau đọc xong phần tử thứ tư mà xác định hướng chuyển động đầu đọc/ghi M U chuyển ký hiệu Y đến sau phần tử trước phần tử thứ năm Tuỳ thuộc vào nội dung khối thứ tư (một ký hiệu hay hai ký hiệu 1) U chuyển Z qua phải hay qua trái khối Nếu Z lúc đầu nằm tận trái băng ghi M cần dịch chuyển sang phải U đẩy mã từ sang phải ghi mã hoá ký hiệu trắng vào sau Z Nếu Z nằm tận phải băng cần chuyển sang phải, U ghi mã ký hiệu trắng vào cuối từ Khi hồn thành cơng việc khối ký hiệu đứng sau Y, ký hiệu trạng thái hành M, khối sau Z xác định ký hiệu M cần đọc Như vậy, giai đoạn việc mô bước M bắt đầu Các giai đoạn hoạt động máy Turing phổ dụng U mơ hình hoá hoạt động bước máy Turing M dã Ngồi ra, U cịn thực công việc sau Đầu tiên U thay tất ký hiệu ba đoạn băng vào khoảng trắng, cuối công 80 việc, M dừng máy U kiểm tra liệu trạng thái cuối M có phải trạng thái kết thúc hay không Các pha máy Turing phổ dụng U chia thành chín phần, với đồ thị chuyển trạng thái phù hợp cho việc mô tả máy, cho hình đây: − Phần 1: Thay ký hiệu ký hiệu B đầu đọc/ghi chuyển đến trước Y − Phần 2: Sao chép mã trạng thái hành vào buffer − Phần 3: Sao chép mã ký hiệu cần đọc băng M vào buffer − Phần 4: Đặt X Y vào trước buffer trước ký hiệu [M] − Phần 5: Tìm năm có mã trạng thái ký hiệu băng trùng với buffer 81 − Phần 6: Xoá buffer − Phần 7: Thay mã ký hiệu đọc mã ký hiệu M − Phần 8: Đẩy Z sang phải hay sang trái khối mà mã ký hiệu khối đọc pha Nếu cần ghi mã khoảng trắng vào phải trái từ băng M − Phần 9: Máy Turing phổ dụng U dừng trạng thái kết thúc M dừng trạng thái kết thúc Đồng thời vùng mã hoá từ băng chứa mã từ đáng lại băng M, cịn mã trạng thái cuối M thấy buffer §3 Vấn đề khơng giải thuật toán 3.1 Mở đầu: Trong toán học thường gặp vấn đề cần xác định liệu phần tử lớp vơ hạn có số tính chất cho hay khơng Chẳng hạn, ta hỏi liệu hai số tự nhiên cho trước có nguyên tố hay không, máy Turing có dừng sau số hữu hạn bước hay không, … Các vấn đề gọi vấn đề thuật tốn quy vấn đề liệu từ bảng chữ có thuộc vào ngơn ngữ hình thức cho hay khơng Một tốn gọi khơng giải thuật tốn khơng tồn máy Turing sau số hữu hạn bước xác định liệu mã hố cụ thể tốn có thuộc ngơn ngữ hình thức cho hay khơng Trong trường hợp ngược lại tốn gọi giải thuật toán Như vậy, vấn đề giải thuật toán ngơn ngữ hình thức mơ tả đệ quy Sau ta nghiên cứu vài tính chất ngơn ngữ đệ quy đệ quy đếm Việc chứng minh tính chất phức tạp nên ta không sâu vào chi tiết 3.2 Định lý 3.1 Phần bù ngôn ngữ đệ quy ngôn ngữ đệ quy Chứng minh: Giả sử L ngôn ngữ đệ quy bảng chữ Σ Điều có nghĩa tồn máy Turing M mà với từ ω∈Σ* tuỳ ý dừng sau số hữu hạn bước T(M) = L Thay tập trạng thái kết thúc M phần bù nó, ta máy Turing M’ Dưới tác động từ, M’ dừng với trạng thái kết thúc tác động từ M dừng với trạng thái khơng kết thúc Điều dẫn đến T(M’) = L Do M’ dừng sau số hữu hạn bước với từ vào nên T(M’) = L ngôn ngữ đệ quy 3.3 Định lý 3.2 Nếu L ngôn ngữ đệ quy đếm bảng chữ Σ phần bù L đệ quy đếm L đệ quy 82 Chứng minh: Giả sử M1, M2 máy Turing cho T(M1) = L T(M2) = L Ta cần xây dựng máy Turing M’ mà mơ hình hố đồng thời hoạt động M1, M2 Điều ta cần có tác động từ ω, máy Turing M’ ngừng hoạt động M1 M2 đoán nhận từ ω Ta muốn M1 dừng với trạng thái kết thúc, M2 dừng với trạng thái khơng kết thúc Việc xây dựng thực với từ ω máy Turing M’ sau số hữu hạn bước dừng Nếu ω∈Σ* ω∈L ω∈ L Nếu ω∈ L M2 đốn nhận ω sau số hữu hạn bước Từ M1 khơng dừng sau số hữu hạn bước M’ phải hồn thành cơng việc thời gian hữu hạn Như T(M1) = L đệ quy 3.4 Định lý 3.3 Tồn ngôn ngữ đệ quy đếm không đệ quy Chứng minh: Xét ngôn ngữ T(U) đốn nhận máy Turing U Khi T(U) đệ quy đếm Giả sử T(U) đệ quy Điều có nghĩa tồn máy Turing M (khơng địi hỏi trùng với U) cho T(M) = T(U) dừng sau số hữu hạn bước tác động từ bảng chữ vào Ta xây dựng máy Turing M’ sau: Giả sử ω từ bảng chữ vào M’ Trước hết M’ cho mã [ω] ω, đồng thời sở xếp từ bảng chữ vào tìm số i ω (số thứ tự ω dãy i) Tiếp theo ứng với số i, máy Turing M’ thiết lập mô tả mã máy Turing thứ i dãy máy Turing M1, M2, …Cuối M thiết lập mô tả chuẩn từ ωi Mi, M’ bắt chước hoạt động máy Turing M với từ mà theo giả thiết tồn tại, đốn nhận ngơn ngữ T(U) dừng sau số hữu hạn bước từ bảng chữ vào Nếu M kết thúc hoạt động với trạng thái khơng kết thúc M’ chuyển sang trạng thái kết thúc riêng dừng Nếu M dừng trạng thái kết thúc M’ bắt đầu bắt chước hoạt động máy Turing mà khơng dừng với từ bảng chữ vào Rõ ràng máy Turing M’ đoán nhận từ ω = ωi khơng đốn nhận Ta biết T(M) = T(U) ={ | ϕ∈T(Mi)} Đồng thời máy Turing có mặt dãy M1, M2, … M’ nằm dãy này, có nghĩa tồn số tự nhiên h cho M’= Mh Bây ta xem máy Turing M1 hoạt động với từ ω1 Ta nhận ω1∈T(M’) ω1∈T(M1) Điều mâu thuẫn với giả thiết Vậy T(U) không đệ quy Hệ 3.1 Tồn ngôn ngữ hình thức khơng đệ quy đếm Chứng minh: Như chứng minh Định lý 4.3.4, T(U) đệ quy đếm không đệ quy Do theo Định lý 4.3.3, phần bù T(U) không đệ quy đếm 83 3.5 Định lý 3.4 Một ngơn ngữ hình thức loại đệ quy đếm Điều có nghĩa lớp ngơn ngữ hình thức loại lớp ngơn ngữ đệ quy đếm Chú ý: Nhờ vào Định lý 4.3.4, ta thấy có ngôn ngữ đệ quy đếm không đệ quy Với việc mã hố thích hợp, ta nhiều vấn đề không giải thuật toán Ta khảo sát số vấn đề liên quan đến lớp ngôn ngữ đệ quy đếm Chẳng hạn ngôn ngữ đệ quy đếm có rỗng hay khơng, có hữu hạn hay khơng, có quy hay khơng, có phi ngữ cảnh hay khơng có cảm ngữ cảnh hay khơng, … Tất ngơn ngữ có tính chất hình thành lên lớp lớp ngôn ngữ đệ quy đếm Khi ta khảo sát ngôn ngữ có hay khơng tính chất cho thực tế ta cần giải vấn đề ngôn ngữ có thuộc hay khơng lớp cho lớp ngơn ngữ đệ quy đếm Ta nói tính chất ngơn ngữ đệ quy đếm tầm thường ngôn ngữ đệ quy đếm có tính chất ngược lại ngôn ngữ đệ quy đếm tính chất Điều có nghĩa lớp ngơn ngữ xác định tính chất rỗng lớp ngơn ngữ đệ quy đếm Như tính chất: ngơn ngữ cho có rỗng hay khơng, có hữu hạn hay khơng, có quy hay khơng, … khơng tầm thường Có ngơn ngữ đệ quy đếm có tính chất có ngơn ngữ đệ quy đếm khơng có tính chất Từ Định lý 4.3.3, ta biết muốn xác định thuật tốn việc thực tính chất vấn đề giải thuật tốn việc phủ định tính chất giải thuật toán 3.6 Định lý 3.5 Cho trước tính chất khơng tầm thường lớp ngôn ngữ đệ quy đếm Khi vấn đề xác định ngơn ngữ có tính chất hay khơng khơng giải thuật toán Hệ 3.2 Việc xác định ngơn ngữ đệ quy đếm có là: a) Rỗng, b) Hữu hạn, c) Chính quy, d) Phi ngữ cảnh, e) Cảm ngữ cảnh, f) Đệ quy hay khơng vấn đề khơng giải thuật tốn 84 ... 1.3 Ngôn ngữ Định nghĩa 1.3 Cho bảng chữ Σ, mỗt tập L ⊆ Σ* gọi ngơn ngữ hình thức (hay ngơn ngữ) bảng chữ Σ Tập rỗng, ký hiệu ∅, ngôn ngữ không gồm từ gọi ngôn ngữ rỗng Vậy ngôn ngữ rỗng ngôn ngữ. .. ngơn ngữ quy L3 nhỏ nhất, bị chứa thực sụ lớp ngơn ngữ phi ngữ cảnh L2, lớp ngôn ngữ phi ngữ cảnh lại bị chứa thực lớp ngôn ngữ cảm ngữ cảnh L1 cuối lớp ngôn ngữ tổng quát L0 (ngôn ngữ ngữ cấu)... ngôn ngữ bảng chữ Σ = {a, b, c}, LR = {ε, ba, cba, aabc} ngơn ngữ ngược L 3.7 Phép chia ngôn ngữ Định nghĩa 3.7 Cho ngôn ngữ X Y bảng chữ Σ, thương bên trái ngơn X ngữ X cho ngôn ngữ Y ngôn ngữ

Ngày đăng: 11/05/2021, 00:13

Từ khóa liên quan

Mục lục

  • Chương 1

  • VĂN PHẠM VÀ NGÔN NGỮ HÌNH THỨC

  • Chương 2

  • OTOMAT HỮU HẠN VÀ NGÔN NGỮ CHÍNH QUY

  • Chương 3

  • OTOMAT ĐẨY XUỐNG VÀ NGÔN NGỮ PHI NGỮ CẢNH

    • vì xâu ( = b+a(b+a có hai suy dẫn trái khác nhau trong G được cho trong hình 4.5:

      • G’ = <{a, b, +, (}, {S, A}, S, {S(A, S(A+S, A(A(A, A(a, A(b}>

        • G = <{a, +, (}, {S, A, B}, S, {S(S+A, S(A, A(A(B, A(B, B(a}>

        • G’ = <{a, +, (}, {S, A, B}, S, {S(S+A, A(A(B, B(a, S(A(B, A(a, S(a}>.

        • Chương 4

        • MÁY TURING

          • Rõ ràng <X0, s3, 1> hình trạng cuối, nhưng s3 không phải là trạng thái kết thúc, do đó M không đoán nhận từ 001.

Tài liệu cùng người dùng

Tài liệu liên quan