1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Ngôn ngữ hình thức - ĐH Lâm Nghiệp

82 8 0

Đ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

Sau khi học xong môn học này sinh viên có thể hiểu sâu hơn cấu trúc của 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. Nội dung chính của các chương như sau: Văn phạm và ngôn ngữ phi hình thức; Otomat hữu hạn và ngôn ngữ chính quy; Otomat đẩy xuống và ngôn ngữ phi ngữ cảnh; Máy Turing.

ThS NG TH KIM ANH NGÔN NGữ HìNH THứC TRNG ĐẠI HỌC LÂM NGHIỆP - 2019 ThS ĐẶNG THỊ KIM ANH BÀI GIẢNG NGƠN NGỮ HÌNH THỨC TRƢỜNG ĐẠI HỌC LÂM NGHIỆP - 2019 MỤC LỤC DANH MỤC CÁC HÌNH, SƠ ĐỒ iii LỜI NÓI ĐẦU Chƣơng VĂN PHẠM VÀ NGƠN NGỮ HÌNH THỨC 1.1 Các khái niệm ngơn ngữ hình thức 1.1.1 Bảng chữ 1.1.2 Từ 1.1.3 Ngôn ngữ .4 1.2 Các phép toán từ .4 1.2.1 Phép nhân ghép 1.2.2 Phép lấy từ ngược 1.2.3 Phép chia từ 1.3 Các phép tốn ngơn ngữ .6 1.3.1 Phép hợp .6 1.3.2 Phép giao 1.3.3 Phép lấy phần bù 1.3.4 Phép nhân ghép 1.3.5 Phép lặp 1.3.6 Phép lấy ngôn ngữ ngược 10 1.3.7 Phép chia ngôn ngữ 10 1.4 Văn phạm ngôn ngữ sinh văn phạm 10 1.4.1 Định nghĩa văn phạm 11 1.4.2 Ngôn ngữ sinh văn phạm 12 1.4.3 Phân loại văn phạm theo Chomsky 14 1.5 Các tính chất văn phạm ngôn ngữ sinh văn phạm 17 1.5.1 Một số tính chất văn phạm dẫn xuất .17 1.5.2 Tính đóng lớp ngơn ngữ sinh văn phạm 19 Chƣơng OTOMAT HỮU HẠN VÀ NGƠN NGỮ CHÍNH QUY .24 2.1 Otomat hữu hạn đơn định 24 2.1.1 Otomat hữu hạn đơn định 24 2.1.2 Biểu diễn otomat hữu hạn đơn định 25 2.1.3 Ngơn ngữ đốn nhận otomat đơn định 28 2.2 Otomat hữu hạn không đơn định 30 2.2.1 Định nghĩa Otomat hữu hạn không đơn định .30 2.2.2 Ngôn ngữ đốn nhận otomat hữu hạn khơng đơn định .31 i 2.2.3 Đơn định hóa otomat 32 2.2.4 Sự tương đương otomat đơn định otomat không đơn định 35 2.3 Ngôn ngữ quy biểu thức quy 36 2.3.1 Ngơn ngữ quy biểu thức quy 36 2.3.2 Sự liên hệ otomat hữu hạn ngơn ngữ quy 38 2.4 Điều kiện cần ngơn ngữ quy 40 2.4.1 Otomat tối tiểu 41 2.4.2 Điều kiện cần ngơn ngữ quy 41 Chƣơng OTOMAT ĐẨY XUỐNG VÀ NGÔN NGỮ PHI NGỮ CẢNH 45 3.1 Văn phạm phi ngữ cảnh suy dẫn 45 3.1.1 Cây suy dẫn đầy đủ văn phạm phi ngữ cảnh 45 3.1.2 Rút gọn văn phạm phi ngữ cảnh 49 3.2 Dạng chuẩn Chomsky 52 3.2.1 Văn phạm chuẩn Chomsky 52 3.2.2 Đưa văn phạm phi ngữ cảnh dạng chuẩn Chomsky 52 3.3 Otomat đẩy xuống 54 3.3.1 Mô tả otomat đẩy xuống 54 3.3.2 Định nghĩa otomat đẩy xuống 56 3.3.3 Ngơn ngữ đốn nhận otomat đẩy xuống 57 Chƣơng MÁY TURING 63 4.1 Máy Turing lớp hàm tính 64 4.1.1 Máy Turing 64 4.1.2 Ngơn ngữ đốn nhận máy Turing 66 4.2 Máy Turing phổ dụng 71 4.3 Vấn đề không giải thuật toán 75 4.3.1 Định lý 3.1 75 4.3.2 Định lý 3.2 75 4.3.3 Định lý 3.3 76 4.3.4 Định lý 3.4 76 4.3.5 Định lý 3.5 77 TÀI LIỆU THAM KHẢO 78 ii DANH MỤC CÁC HÌNH, SƠ ĐỒ Hình 1.1 Cây dẫn xuất cho ví dụ 4.2 13 Hình 1.2 So sánh lớp ngơn ngữ 16 Hình 2.1 Mơ tả q trình đốn nhận xâu ω otomat A 25 Hình 2.2 Bảng chuyển trạng thái otomat A 25 Hình 2.3 Bảng chuyển trạng thái A1 26 Hình 2.4 Đồ thị chuyển trạng thái A1 26 Hình 2.5 Q trình đốn nhận xâu α = ababbab A1 .26 Hình 2.6 Bảng chuyển trạng thái A2 27 Hình 2.7 Đồ thị chuyển trạng thái A1 27 Hình 2.8 Q trình đốn nhận xâu vào β = 1010100 27 Hình 2.9 Đồ thị chuyển otomat A3 .29 Hình 2.10 Đồ thị chuyển otomat A4 .29 Hình 2.11 Bảng chuyển otomat không đơn định A .31 Hình 2.12 Đồ thị chuyển otomat khơng đơn định A 31 Hình 2.13 Bảng chuyển otomat A ví dụ 2.2 32 Hình 3.14 Đồ thị chuyển otomat A ví dụ 2.2 .32 Hình 2.15 Bảng chuyển otomat A thí dụ 2.3 33 Hình 2.16 Bảng chuyển otomat đơn định M ví dụ 2.3 34 Hình 2.17 Đồ thị chuyển otomat A ví dụ 2.4 .34 Hình 2.18 Bảng chuyển otomat đơn định M thí dụ 2.4 34 Hình 2.19 Đồ thị chuyển otomat M ví dụ 2.4 .35 Hình 2.20 Đồ thị chuyển otomat M’ ví dụ 2.4 .35 Hình 2.21 Đồ thị chuyển otomat A thí dụ 3.2 39 Hình 2.22 Đồ thị chuyển otomat A thí dụ 3.3 40 Hình 2.23 Đồ thị chuyển otomat A ví dụ 3.4 .40 Hình 2.24 Đồ thị chuyển otomat M thí dụ 4.1 .41 Hình 2.25 Đồ thị chuyển otomat tối tiểu M’ thí dụ 4.1 41 Hình 3.1 Cây suy dẫn từ ω = b+(a+c)∗b G1 46 Hình 3.2 Cây suy dẫn từ ω = anbnam G2 46 Hình 3.3 Cây suy dẫn từ ωωR = a1a2…anan…a2a1 G3 47 Hình 3.4 Cây suy dẫn có kết ω 48 Hình 3.5 Hai suy dẫn khác cho từ ω = b+a∗b+a 49 Hình 3.6 Mơ hình làm việc otomat đẩy xuống 54 Hình 3.7 Cây biểu diễn khả biến đổi hình trạng ví dụ 3.3 58 Hình 3.8 Đồ thị chuyển otomat đẩy xuống ví dụ 3.2 59 iii 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 Mơn học ngơn ngữ hình thức giảng dạy sau sinh viên học mơn ngơn ngữ lập trình Sau học xong mơn học 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 Nội dung chương sau: - Chương Văn phạm ngơn ngữ phi hình thức: Chương nêu khái niệm liên quan đến văn phạm ngơn ngữ phi hình thức; - Chương Otomat hữu hạn ngơn ngữ quy: Trong chương này, nghiên cứu mơ hình “máy trừu tượng” để đốn nhận ngơn ngữ, otomat hữu hạn; - Chương Otomat đẩy xuống ngôn ngữ phi ngữ cảnh: Trong chương này, nghiên cứu sâu ngôn ngữ phi ngữ cảnh với chế để sinh lớp ngơn ngữ này, văn phạm phi ngữ cảnh otomat có nhớ đẩy xuống (pushdown otomata); - Chương Máy Turing: 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 Mặc dù tơi cố gắng khơng thể tránh khỏi sai sót cách diễn đạt, xếp bố cục nội dung lỗi cú pháp văn phong Rất mong đồng nghiệp bạn sinh viên góp ý cho Chân thành cảm ơn! Tác giả Đặng Thị Kim Anh 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 1.1 Các khái niệm ngơn ngữ hình thức 1.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 Ví 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.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 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ư vậy, Σ+ = Σ*\{ε} Σ* = Σ+ ∪ {ε} 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 ε, cịn Σ+ nửa nhóm tự sinh Σ Có thể chứng minh tập Σ* Σ+ vơ hạn đếm Ví 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.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 = {ε} Ví dụ 1.3 Σ* ngơn ngữ gồm tất từ Σ cịn Σ+ ngơn ngữ gồm tất từ khác từ rỗ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ừ 1.2 Các phép tốn từ Các phép toán thực từ bảng chữ Σ, tạo nên từ thuộc bảng chữ 1.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ừ γ = a1a 2…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: { - Đố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 ε, | ε | = Một vài khái niệm liên quan: - Đối với từ ω, t1, θ, t2 bảng chữ Σ mà ω = t1 θ t2 *θ * (* khơng phải 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 Ví 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ố ω 1.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 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| = |α| Ví 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 | = 1.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 α = β.γ β\α = γ, cịn α/γ = β; - (β\α)R = αR / βR; - (α/γ)R = γR \ αR Chứng minh kết dễ dàng, xin dành cho sinh viên tập Ví 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 1.3 Các phép toá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 toá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ữ 1.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ừ: 4.1 Máy Turing lớp hàm tính đƣợc 4.1.1 Máy Turing Định nghĩa 1.1 Máy Turing đơn định bảy: M = Trong đó: + 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ữ hay tập ký hiệu ghi lên băng; + δ: 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, aψ>, Φ, ψ ∈ Δ *, 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 α = < Φ, s, aψ> chuyển đến hình trạng β M, ký hiệu α ├M β hay đơn giản α├ β, thoả mãn điều sau: δ(s, a) = < q, b, R>: a ψ = cψ1 ≠ ε, c∈ , ψ1∈ Δ*: • α├ < b, q, cψ1>, b ∉{B}*: 64 • α ├ , ϕb ∈{B}*: b ψ = ε: • α = < , s, a>├ < b, q, B >, b∉{B}*: • α = < , s, a>├ < ε, q, B >, b∈{B}*: δ(s, a) = < q, b, L >: a = 1d ≠ ε, d ∈ , ∈ *: •α├< 1, q, dbψ >, dbψ ∉{B}*: •α├< 1, q, B >, dbψ ∈{B}*: b = ε: • α = ├ < ε, q, Bbψ >, Bbψ ∉{B}*: 65 • α = < ε, s, aψ >├ < ε, q, B>, Bbψ ∈{B}*: 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 trình tính tốn hồn chỉnh 4.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 Đồ thị chuyển đa b ∈ Δ , s, q ∈ Q, C ∈ {R, L}, đồ thị có hướng, có khuyên G với tập đỉnh G Q Với a, δ(s, a) = có cung từ s đến q với nhãn Ví dụ 1.1 Cho máy Turing: M = Trong đó: δ(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) = 66 Á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 Đố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 67 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 xoá 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ừ này; • 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: Ví 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: 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 68 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 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 toá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: Ví dụ 1.3 Cho hàm f(n1, n2) = n1 + n2 Ta xây dựng máy Turing M với đồ thị chuyển sau: Đối với máy Turing M, với hình trạng đầu có q trình tính tốn hồn chỉnh với hình trạng kết thúc Do đó, f hàm tính máy Turing Ví dụ 1.4 Cho hàm: ( ) { Máy Turing M có đồ thị chuyển với hình trạng đầu trường hợp xác định, hình trạng cuối < Φ, s7, B ̅̅̅̅̅̅̅̅̅̅̅ > xác định hàm f 69 Ví dụ 1.5 Cho hàm: ( ) { Khi hàm f tính máy Turing M có đồ thị chuyển Hình trạng đầu , hình trạng cuối trường hợp n2 ≥ n1 trường hợp n1 > n2 Ví 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, Ở 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: 70 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 4.2 Máy Turing phổ dụng 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 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ã hoá 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ã hố: 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 bở i 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 Ví 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 - 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, thêm vào ký hiệu, trạng thái ánh xạ chuyển M mã hoá 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 + 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: 72 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 Q trình tính tốn U mô phỏ ng 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 hố hoạt động bước máy Turing M 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 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: 73 - 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 - 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, mã trạng thái cuối M thấy buffer 74 4.3 Vấn đề không giải đƣợc thuật toán 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ã hoá 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 tố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 4.3.1 Đị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’) = ̅ Do M’ dừng sau số hữu hạn bước với từ vào nên T(M’) = ̅ ngôn ngữ đệ quy 4.3.2 Định lý 3.2 Nếu L ngôn ngữ đệ quy đếm bảng chữ Σ phần bù ̅ đệ quy đếm L đệ quy Chứng minh: Giả sử M1, M2 máy Turing cho T(M1) = L T(M2) = ̅ 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, cịn 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 ω ∈ ̅ Nếu ω ∈ ̅ 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 75 4.3.3 Đị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 đoá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 4.3.4 Đị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 76 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: Mộ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 4.3.5 Đị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 77 TÀI LIỆU THAM KHẢO Nguyễn Văn Ba (2006) Lý thuyết ngơn ngữ tính tốn Nxb Đại học Quốc gia, Hà Nội Đỗ Đức Giáo, Đặng Huy Ruận (1991) Văn phạm ngơn ngữ hình thức Nxb Khoa học Kỹ thuật, Hà Nội Lê Mạnh Thạnh (1998) Nhập mơn ngơn ngữ hình thức Otomat Nxb Giáo dục, Đà Nẵng 78 ... 1.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ữ. .. gọi ngôn ngữ lặp ngôn ngữ L (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: ∗ ⋃ - Tập từ: ∪ ∪ ∪ ∪ ⋃ Được gọi ngôn ngữ lặp cắt ngôn ngữ L, ký hiệu L+ Vậy ngôn ngữ. .. ngôn ngữ bảng chữ Σ = {a, b, c}, LR = {ε, ba, cba, aabc} ngôn ngữ ngược L 1.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 ngữ X cho ngôn ngữ Y ngôn ngữ

Ngày đăng: 08/06/2021, 19:54

Xem thêm:

w