Lý thuyết ngôn ngữ hình thức ôtômat

107 6 0
Lý thuyết ngôn ngữ hình thức ôtômat

Đ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

Tham khảo sách ''lý thuyết ngôn ngữ hình thức ôtômat'', khoa học xã hội, ngôn ngữ học phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Bộ giáo dục đào tạo đại học huế trờng đại học khoa học nguyễn gia định Lý THUYếT NGÔN NGữ HìNH THứC Và ÔTÔMAT q1 q0 0 0 q2 q3 huÕ − 2004 LỜI NÓI ĐẦU Mấy chục năm gần đây, chứng kiến phát triển mãnh liệt lĩnh vực nghiên cứu toán học liên quan đến máy tính tin học Sự phát triển phi thường máy tính thay đổi sâu sắc phương pháp luận khoa học mở chân trời cho tốn học với tốc độ khơng thể sánh suốt lịch sử lâu dài toán học Những phát triển đa dạng toán học trực tiếp tạo “thuở ban đầu” máy tính tin học tiến tin học dẫn đến phát triển mạnh mẽ số ngành tốn học Vì vậy, tốn học đóng vai trò trung tâm sở tin học Có thể kể số lĩnh vực nghiên cứu đáng ý mối quan hệ Thật thú vị nhận thấy lĩnh vực phản ánh phát triển lịch sử tin học Lý thuyết kinh điển tính tốn bắt đầu cơng trình Gưdel, Tarski, Church, Post, Turing Kleene chiếm vị trí trung tâm Trong lý thuyết ơtơmat ngơn ngữ hình thức kinh điển, khái niệm ôtômat, văn phạm ngơn ngữ, với cơng trình sáng giá Axel Thue, Chomsky, Post Ngoài hai lĩnh vực trên, nhiều lĩnh vực quan trọng khác thuộc sở toán học tin học; chẳng hạn, lý thuyết độ phức tạp, ngữ nghĩa lý thuyết tính đắn ngơn ngữ lập trình, lý thuyết mật mã, lý thuyết cấu trúc liệu lý thuyết sở liệu Lý thuyết ngơn ngữ hình thức ơtơmat đóng vai trị quan trọng sở tốn học tin học Ngơn ngữ hình thức sử dụng việc xây dựng ngơn ngữ lập trình, lý thuyết chương trình dịch Các ngơn ngữ hình thức tạo thành cơng cụ mơ tả mơ hình tính tốn cho dạng thơng tin vào-ra lẫn kiểu thao tác Lý thuyết ngơn ngữ hình thức, thực chất lĩnh vực khoa học liên ngành; nhu cầu mơ tả hình thức văn phạm phát sinh nhiều ngành khoa học khác từ ngơn ngữ học đến sinh vật học Do khía cạnh thích hợp lý thuyết ngơn ngữ hình thức có tầm quan trọng định giáo trình Lý thuyết ngơn ngữ hình thức ôtômat Ngoài ra, vấn đề lý thuyết tính tốn tốn có thuật tốn để giải Sự phát triển có tính chất tảng lơgic tốn năm 30 kỷ 20 việc tồn tốn khơng giải được, tốn mà khơng thể có thuật tốn giải chúng Cần phải có mơ hình tính tốn để thiết lập tính khơng giải Mơ hình tính tốn máy Turing, đưa từ trước máy tính điện tử đời lâu Các máy Turing lập thành mô hình tính tốn tổng qt dùng rộng rãi Giáo trình nhằm trình bày văn phạm hình thức ôtômat máy Turing, công cụ sinh ngôn ngữ, đồng thời đề cập đến tính chất ngơn ngữ quy, ngơn ngữ phi ngữ cảnh, ngôn ngữ đệ quy ngôn ngữ đệ quy đếm Ngồi ra, giáo trình giới thiệu sơ lược trình biên dịch, phần quan trọng học phần Chương trình dịch, học phần gắn bó chặt chẽ với Lý thuyết ngơn ngữ hình thức ôtômat Một phần quan trọng lý thuyết thuật tốn lớp ngơn ngữ (hay tốn) P NP lớp ngôn ngữ NP-đầy đủ giới thiệu phần phụ lục Nội dung tài liệu bố trí chương, khơng kể lời nói đầu, mục lục, tài liệu tham khảo phần phụ lục: Chương I: Trình bày khái niệm ngôn ngữ, cấu trúc văn phạm sinh ngôn ngữ phân cấp Chomsky ngơn ngữ Chương II: Trình bày ngơn ngữ quy, có cơng cụ sinh ngơn ngữ quy văn phạm quy, ôtômat hữu hạn (đơn định không đơn định) biểu thức quy Chương III: Đi sâu ngôn ngữ phi ngữ cảnh ôtômat đẩy xuống cơng cụ đốn nhận ngơn ngữ phi ngữ cảnh Chương IV: Giới thiệu máy Turing vấn đề không giải thuật tốn Chương V: Trình bày sơ lược trình biên dịch ngơn ngữ, đặc biệt ngơn ngữ lập trình Đây tài liệu tham khảo, học tập cho sinh viên, học viên cao học nghiên cứu sinh chun ngành Tốn-Tin, Cơng nghệ thơng tin, Tin học quan tâm văn phạm, ngôn ngữ hình thức ơtơmat Chúng tơi xin chân thành cám ơn đồng nghiệp động viên góp ý cho cơng việc viết giáo trình Lý thuyết ngơn ngữ hình thức ơtơmat lời cám ơn đặc biệt xin dành cho Thầy Lê Mạnh Thạnh đồng nghiệp Nguyễn Hoàng Sơn cung cấp số tài liệu quan trọng động viên kịp thời tạo niềm hưng phấn để tác giả giảng dạy viết giáo trình cho học phần Lý thuyết ngơn ngữ hình thức ôtômat Tác giả mong nhận giáo đồng nghiệp độc giả thiếu sót khó tránh khỏi sách Trọng Đơng năm Giáp Thân (2004) Nguyễn Gia Định MỤC LỤC Lời nói đầu Mục lục Chương I: Nhập môn văn phạm ngơn ngữ hình thức… 1.1 Khái niệm ngôn ngữ 1.2 Văn phạm ngôn ngữ sinh văn phạm 1.3 Một số tính chất ngôn ngữ 15 Bài tập Chương I 19 Chương II: Ơtơmat hữu hạn ngơn ngữ quy 20 2.1 Ơtơmat hữu hạn 20 2.2 Quan hệ ôtômat hữu hạn ngơn ngữ quy 28 2.3 Biểu thức quy 32 2.4 Cực tiểu hố ơtơmat hữu hạn 34 Bài tập Chương II 41 Chương III: Ơtơmat đẩy xuống ngơn ngữ phi ngữ cảnh 43 3.1 Văn phạm phi ngữ cảnh suy dẫn 43 3.2 Ơtơmat đẩy xuống 51 Bài tập Chương III 59 Chương IV: Máy Turing 60 4.1 Máy Turing lớp hàm tính 61 4.2 Máy Turing phổ dụng 68 4.3 Vấn đề khơng giải thuật tốn 72 Bài tập Chương IV 75 Chương V: Giới thiệu trình biên dịch 76 5.1 Ngơn ngữ lập trình 76 5.2 Trình biên dịch 80 5.3 Các mối liên quan với trình biên dịch 87 5.4 Nhóm giai đoạn trình biên dịch 91 Phụ lục: Các lớp P NP lớp toán NP-đầy đủ 93 Tài liệu tham khảo 105 CHƯƠNG I: NHẬP MÔN VỀ VĂN PHẠM VÀ NGƠN NGỮ HÌNH THỨC 1.1 KHÁI NIỆM NGÔN NGỮ 1.1.1 Mở đầu: Từ ngàn xưa người muốn giao tiếp với phải dùng ngôn ngữ 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 Con người muốn giao tiếp với máy tính tất nhiên thơng qua ngơn ngữ 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 ta 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ả ngơn ngữ lập trình 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ở Khái niệm ngơn ngữ đưa vào mục tổng quát Chắc chắn bao hàm ngôn ngữ lập trình lẫn tự nhiên, ngơn ngữ vơ nghĩa mà ta nghĩ đến 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ừ, ngun 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 sở 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 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à sau nêu xác Chẳng hạn, máy Turing đồng với văn phạm cấu trúc câu ơtơmat hữu hạn đồng với văn phạm quy 1.1.2 Định nghĩa: Một bảng chữ tập hữu hạn khác rỗng Các phần tử bảng chữ Σ gọi chữ hay ký hiệu Thí dụ 1: Dưới bảng chữ cái: Σ = {a, b, c, …, z}, U = {α, β, γ, δ, ε, η, ϕ, κ, µ, χ, ν, π, θ, ρ, σ, τ, ω,ξ, ψ}, V = {0, 1}, W = {if, then, else, a, b, c, d, e, f, +, −, ∗, /, =, ≠} 1.1.3 Định nghĩa: Một từ bảng chữ Σ xâu hữu hạn gồm số lớn hay không chữ Σ, chữ xuất vài lần Xâu khơng có chữ gọi từ rỗng ký hiệu ε Như vậy, theo định nghĩa, hai từ α=a1a2…an β=b1b2…bm nhau, α=β, n=m ai=bi với i=1, 2, …, n Tập từ (t.ư từ khác rỗng) bảng chữ Σ ký hiệu Σ* (t.ư Σ+) Các tập Σ* Σ+ vô hạn với Σ (thật ra, Σ* Σ+ vô hạn đếm Mệnh đề 1.1.5 đây) Về mặt đại số, Σ* vị nhóm tự với đơn vị từ rỗng ε sinh Σ Σ+ nửa nhóm tự sinh Σ Đối với từ α∈Σ* α’∈Σ’*, việc đặt α α’cạnh để có từ αα’∈(Σ∪Σ’)* gọi phép ghép α với α’ Từ rỗng phần tử đơn vị phép ghép: ωε = εω = ω với từ ω Vì phép ghép có tính kết hợp, nghĩa với từ α, β, γ, ta có (αβ)γ = α(βγ), nên ký hiệu ωn, với n số tự nhiên, dùng theo nghĩa quen thuộc: ⎧ε n = 0, ⎪ ω n = ⎨ω n = 1, ⎪ n−1 ⎩ω ω n > Thí dụ 2: ε, 0, 01, 101, 1010, 110011 từ bảng chữ V = {0,1} beautiful từ bảng chữ Σ = {a, b, c, …, z} Trên bảng chữ W = {if, then, else, a, b, c, d, e, f, +, −, ∗, /, =, ≠}, α từ if a+b=c then c∗d=e β từ else c/d=f αβ từ: if a + b = c then c ∗ d = e else c / d = f 1.1.4 Định nghĩa: Độ dài từ ω, ký hiệu |ω| hay d(ω), số chữ có mặt ω Theo định nghĩa, |ε|=0 Hàm độ dài có số tính chất hình thức lơgarit: với từ α, β số tự nhiên n, |αβ| = |α| + |β|, |αn| = n|α| Đảo từ có cách viết chữ theo thứ tự ngược lại; ω=a1a2…an từ bảng chữ Σ đảo ωR từ bảng chữ Σ: ωR = an… a2a1 Từ α gọi từ hay nhân tử từ β có từ u v cho β=uαv Ngoài ra, u=ε (t.ư v=ε) α gọi từ đầu hay tiền tố (t.ư từ cuối hay hậu tố) β Thí dụ 3: Từ ω=010111001 bảng chữ {0, 1} có độ dài 9, 0101 tiền tố 11001 hậu tố ω Từ if a + b = c then c ∗ d = e else c / d = f bảng chữ W có độ dài 18, then c ∗ d = e từ 1.1.5 Mệnh đề: Nếu Σ bảng chữ Σ* tập (vơ hạn) đếm Chứng minh: Do số tự nhiên n tồn từ Σ có độ dài n nên Σ* tập vô hạn Giả sử Σ={a1, a2, …, an} Xét ánh xạ f từ Σ* vào tập hợp N số tự nhiên xác định bởi: f(ε) = 0, f(ai) = i, f(αai) = (n+1)f(α)+i, ∀α∈Σ* Với α = ai0 ai1 aik , β = b j0 b j1 b jh f(α) = f(β) Khi đó, (n+1)ki0+(n+1)k-1i1+ … +(n+1)ik-1+ik = (n+1)hj0+(n+1)h-1j1+ … +(n+1)jh-1+jh, vế hai khai triển số nguyên theo số n+1 Do đó, k=h iu=ju với ≤ u ≤ k hay α=β Vì vậy, f đơn ánh Từ suy Σ* đếm 1.1.6 Định nghĩa: Mỗi tập Σ* gọi ngơn ngữ hình thức hay ngắn gọn ngôn ngữ Σ Đặc biệt, tập ∅ ngôn ngữ Σ, gọi ngôn ngữ rỗng; tập {ε} ngôn ngữ Σ, ngôn ngữ chứa từ rỗng Σ* ngôn ngữ gồm tất từ Σ Thí dụ 4: 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 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 toán Boole phép giao, phép hợp, phép hiệu, phép lấy bù 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 Ngồi ra, ta cịn có phép toán khác “phép ghép” “phép cấu xạ” 1.1.7 Định nghĩa: Cho hai ngôn ngữ L1 bảng chữ Σ1 L2 bảng chữ Σ2 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} Dễ dàng thấy phép ghép có tính kết hợp, nghĩa với ngơn ngữ L1, L2 L3, ta ln có: (L1L2)L3 = L1(L2L3) Ngồi ra, với ngơn ngữ L, ta có: ∅L = L∅ = ∅, {ε}L = L{ε} = L, phép 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 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, ⎪ Ln = ⎨ L n = 1, ⎪ n -1 ⎩ L L n > Lặp hay bao đóng ghép ngơn ngữ L, ký hiệu L*, định nghĩa hợp luỹ thừa L: L* = ∞ U Ln n =0 Lặp khơng-ε hay bao đóng ghép khơng-ε L, ký hiệu L+, định nghĩa hợp luỹ thừa dương L: + L = ∞ U Ln n =1 Thí dụ 5: 1) Xét ngôn ngữ bảng chữ Σ = {0, 1}: L1 = {0, 01}, L2 = {01, 10}, L3 = {0} L2L3 = {010, 100}, L1 ∪ (L2L3) = {0, 01, 010, 100}, L1 ∪ L2 = {0, 01, 10}, L1 ∪ L3 = {0, 01}, (L1 ∪ L2)(L1 ∪ L3) = {00, 001, 010, 0101, 100, 1010} Do L1 ∪ (L2L3) ≠ (L1 ∪ L2)(L1 ∪ L3) tức phép hợp khơng có tính phân phối phép ghép L2 ∩ L3 = ∅, L1(L2 ∩ L3) = ∅, L1L2 = {001, 010, 0101, 0110}, L1L3 = {00, 010}, (L1L2) ∩ (L1L3) = {010} Do L1(L2 ∩ L3) ≠ (L1L2) ∩ (L1L3) tức phép ghép khơng có tính phân phối phép giao L1 ∩ (L2L3) = ∅, L1 ∩ L2 = {01}, L1 ∩ L3 = {0}, (L1 ∩ L2)(L1 ∩ L3) = {010} Do L1 ∩ (L2L3) ≠ (L1 ∩ L2)(L1 ∩ L3) tức phép giao khơng có tính phân phối phép ghép 2) 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 3; 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 3) 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} Một phép tốn có tầm quan trọng cốt yếu lý thuyết ngôn ngữ phép cấu xạ, định nghĩa 1.1.8 Định nghĩa: Cho hai bảng chữ Σ Σ’ Ánh xạ f: Σ* ⎯ ⎯→ Σ’* thoả mãn điều kiện f(αβ) = f(α)f(β) với từ α, β ∈ Σ* (1) gọi cấu xạ Đối với ngôn ngữ L Σ, f(L) = {f(α) | α ∈ L} ngôn ngữ Σ’ Theo điều kiện (1), để xác định cấu xạ f, cần liệt kê từ f(a) Σ’ với a chạy chữ Σ Cấu xạ f gọi khơng xố (t.ư chữ - thành - chữ) f(a) ≠ε (t.ư f(a) ∈ Σ’) với a ∈ Σ Thí dụ 6: Xét bảng chữ tiếng Anh Σ = {A, B, C, …, Z} Mỗi cấu xạ chữ thành - chữ fi: Σ* ⎯ ⎯→ Σ*, ≤ i ≤ 25 ánh xạ chữ thành chữ đứng sau i vị trí bảng chữ cái, phần cuối bảng chữ nối tiếp vòng tròn lên phần đầu Chẳng hạn, f3(A) = D, f7(Y) = F, f25(Z) = Y Trong mật mã học, cấu xạ fi thường đề cập đến cách mã hoá Caesar Chẳng hạn, f25(IBM) = HAL, f3(HELP) = KHOS Dễ dàng thấy cấu xạ fi có tính giao hốn: fi o fj = fj o fi với i, j Ngoài ra, f26-i o fi = f0 với i ≥ Như vậy, rõ mã hố cách dùng fi, rõ tìm lại cách dùng f26-i để giải mã 1.2 VĂN PHẠM VÀ NGÔN NGỮ SINH BỞI VĂN PHẠM 1.2.1 Mở đầu: Ta hình dung văn phạm “thiết bị tự động” mà có khả sinh tập hợp từ bảng chữ cho trước Mỗi từ sinh sau số hữu hạn bước thực quy tắc văn phạm Việc xác định ngơn ngữ bảng chữ cho trước thực cách thức sau: Cách 1: Đối với từ thuộc ngôn ngữ cho, ta chọn quy cách hoạt động “thiết bị tự động” để sau số hữu hạn bước làm việc dừng sinh từ Cách 2: “Thiết bị tự động” có khả sinh tất từ ngôn ngữ cho Cách 3: Với từ ω cho trước, “thiết bị tự động” cho biết từ có thuộc ngơn ngữ cho hay không Trong lý thuyết văn phạm, người ta chứng minh ba cách thức tương đương hay văn phạm làm việc theo cách tương đương Vì vậy, ta quan tâm đến cách thứ nhất, tức ta xét văn phạm “thiết bị tự động” sinh từ Vì lẽ mà người ta cịn gọi “thiết bị tự động” văn phạm sinh Việc sinh từ thực nhiều cách khác Các từ sinh văn phạm, Ơtơmat, máy hình thức máy Turing, …Ở ta đề cập đến cách CHOMSKY đưa vào năm 1956-1957 1.2.2 Định nghĩa: Văn phạm G thứ tự gồm thành phần: G = < Σ, ∆, S, P >, đó: a) Σ bảng chữ, gọi bảng chữ kết thúc hay từ điển bản, phần tử gọi ký hiệu kết thúc hay ký hiệu bản; b) ∆ bảng chữ, ∆ ∩ Σ=∅, gọi bảng chữ không kết thúc hay từ điển hỗ trợ, phần tử gọi ký hiệu không kết thúc hay ký hiệu hỗ trợ c) S ∈ ∆ gọi ký hiệu đầu; d) P tập hợp cặp thứ tự , α, β ∈ (Σ ∪ ∆)* α chứa ký hiệu không kết thúc; P gọi tập quy tắc thay thế, gọi quy tắc hay sản suất thường viết cho thuận tiện α→β, α gọi vế trái β gọi vế phải quy tắc Thí dụ 7: Các bốn sau văn phạm: G1 = , G2 = , G3 = G4 = , Σ={tơi, anh, chị, ăn, uống, cơm, phở, sữa, café}, ∆={, , , , , ,}, S=, P={→, →tôi,→anh,→chị, →, →, →ăn, →uống, →cơm, →phở, →sữa, →café} Mã khả định vị phải lưu giữ thông tin bảng danh biểu cho danh biểu tên thủ tục Vì ta khơng thể biết tồn chương trình dạng mã khả định vị chứa đâu nhớ cịn nhớ ngồi, tồn bảng danh biểu phải lưu giũ đầy đủ phần chương trình mã khả định vị Ở bảng 5.3.3, ta thấy: có tập tin thực thi, tham chiếu đến b vị trí nhớ b + địa bắt đầu vùng liệu tập tin (6), cất nhớ 5.4 NHĨM CÁC GIAI ĐOẠN CỦA TRÌNH BIÊN DỊCH Như phần trước ta thấy tổ chức luận lý trình biên dịch gồm nhiều giai đoạn Song thực tế số giai đoạn thường gộp lại thành giai đoạn lớn 5.4.1 Giai đoạn trước giai đoạn sau (front end and back end): Thơng thường giai đoạn nhóm lại hai giai đoạn bao trùm giai đoạn trước (front end) giai đoạn sau (back end) Giai đoạn trước bao gồm giai đoạn, phần giai đoạn mà chúng phụ thuộc vào ngôn ngữ nguồn mà không phụ thuộc vào máy đích Giai đoạn đầu bao gồm phân tích từ vựng, phân tích cú pháp, tạo bảng danh biểu, phân tích ngữ nghĩa, thơng báo lỗi sinh mã trung gian Phần lớn tối ưu mã trung gian nằm giai đoạn đầu Giai đoạn sau bao gồm phần phụ thuộc vào máy đích, mà khơng (về tổng quát) phụ thuộc vào ngôn ngữ nguồn Giai đoạn bao gồm giai đoạn sinh mã đối tượng, tối ưu mã đối tượng tất nhiên cần tác vụ thông báo lỗi bảng danh biểu Với ý niệm xuất thủ tục đặc biệt, lấy giai đoạn đầu trình biên dịch kết nối với phần sau để tạo trình biên dịch cho ngơn ngữ nguồn máy khác Hoặc ngược lại, trình biên dịch cho nhiều ngơn ngữ nguồn khác nhau, có chung ngơn ngữ trung gian dùng chung giai đoạn cuối, cho ta nhiều trình biên dịch máy 5.4.2 Các chuyến: Thơng thường số giai đoạn thực chuyến Chẳng hạn, phân tích từ vựng, phân tích cú pháp, phân tích ngữ nghĩa sinh mã trung gian gom lại, thực chuyến Nếu chuỗi token nhận dạng dịch thẳng sang mã trung gian Nói chi tiết hơn, ta thấy vai trị phân tích cú pháp bao trùm, trơng coi tồn hoạt động chuyến Nó có nhiệm vụ phải phát cấu trúc văn phạm token đưa đến cho Nó lại phải biết lúc cần lấy tiếp token gọi phân tích từ vựng nhận dạng token Khi phát xong cấu trúc văn phạm, 91 phân tích cú pháp gọi sinh mã trung gian, để thực phân tích ngữ nghĩa tạo mã trung gian 5.4.3 Thu giảm số lượng chuyến: Nếu q trình dịch chia thành nhiều chuyến, làm tăng thời gian để đọc ghi lên nhớ mã trung gian Ngược lại, ta gom số giai đoạn thành chuyến buộc phải giữ tồn chương trình nhớ Bởi giai đoạn đoạn cần thông tin theo thứ tự khác với thứ tự mà giai đoạn trước tạo ra, vấn đề nhớ đơn giản Việc thực gom số giai đoạn chuyến phải giải số vấn đề sau Việc giao tiếp phân tích từ vựng phân tích cú pháp giới hạn token phân tích cú pháp cần tới token gọi phân tích từ vựng cung cấp Nhưng thật khó để thực việc sinh mã đối tượng toàn mã trung gian chương trình nguồn chưa tạo xong Chẳng hạn, PL/I, Algol 68 cho phép dùng biến trước khai báo, ta tạo mã đối tượng cho cấu trúc mã mà ta chưa biết loại biến, xuất Rõ ràng trường hợp phải có phân tích ngữ nghĩa, kiểm tra kiểu liệu cấu trúc cụ thể để định xem biến thuộc kiểu nào, kết luận sinh mã trung gian sinh mã Cũng tương tự trường hợp phát biểu goto tham khảo trước, phát biểu goto L có thứ tự đứng trước phát biểu có nhãn L Khi dịch mã đối tượng, sinh mã sinh mã cho tác vụ goto cịn địa có tên L chưa thay thời điểm đó, chưa nhìn thấy thị có nhãn L, nên khơng biết thị nằm địa Bộ sinh mã tạo danh sách liên kết, ghi nhớ địa thị goto L Khi gặp thị có nhãn L, sinh mã xác định địa có tên L, lần theo danh sách liên kết để điền vào thị goto địa L 92 PHỤ LỤC: CÁC LỚP P VÀ NP VÀ LỚP CÁC BÀI TỐN NP-ĐẦY ĐỦ Có tốn thực tế mà chưa xây dựng thuật tốn hiệu để giải (đó thuật tốn có độ phức tạp tính tốn đa thức) chứng minh mức độ khó thực chất Trong số tốn vậy, kể toán tiếng sau: Bài toán người du lịch, Bài tốn chu trình Hamilton, Bài tốn tơ màu đồ thị, Bài tốn tìm đường đơn dài đồ thị Ta quy lỗi cho việc thiết kế phân tích thuật tốn hay lý thuyết độ phức tạp hay khơng? Liệu thực tế có thuật toán hiệu để giải toán khơng? Trong phần này, ta có kết tiếng: thuật toán hiệu để giải số toán vừa kể cho ta thuật toán hiệu để giải tất tốn cịn lại Ta chưa biết tốn dễ hay khó giải, ta biết tất chúng có độ phức tạp Ý nghĩa thực tế quan trọng toán đảm bảo toán đối tượng cố gắng tìm thuật toán hiệu để giải LỚP P VÀ LỚP NP 1.1 Định nghĩa: Cho M máy Turing Hàm T(n) gọi độ phức tạp tính tốn M với xâu vào ω có độ dài n tồn dãy hình trạng có nhiều T(n) bước đốn nhận ω (ở T(n) số nguyên dương) Nếu có xâu có độ dài n mà máy Turing khơng dừng n đó, T(n) khơng xác định 1.2 Định nghĩa: Lớp P lớp ngôn ngữ đoán nhận máy Turing đơn định độ phức tạp tính tốn đa thức Có thể phát biểu cách khác là: toán coi thuộc lớp P tồn thuật tốn đa thức để giải Người ta nói toán thuộc lớp P dễ 1.3 Chú ý: Theo quan điểm toán học, lớp P tự nhiên Điều thấy từ việc bất biến cao mơ hình tính tốn dùng Chẳng hạn, máy Turing M1 với nhiều băng nhanh máy Turing thông thường, tức độ phức tạp tính tốn chúng nhận giá trị nhỏ Tuy nhiên, độ phức tạp tính toán máy Turing M1 bị chặn đa thức T1(n), ta xây dựng máy Turing thông thường M với giới hạn thời gian đa thức T(n) 93 đốn nhận ngơn ngữ M1 (Nói chung, T(n) nhận giá trị lớn T1(n) đa thức) Tương tự, ngôn ngữ giới hạn đa thức mơ hình máy Turing chuẩn mực hay mơ hình tính tốn hợp lý thuộc vào lớp P định nghĩa máy Turing thông thường Lớp P có tầm quan trọng định ngơn ngữ nằm ngồi P xem khơng thể tính Trên thực tế ta nói ngơn ngữ đệ quy bất trị khơng thuộc P Rõ ràng ngơn ngữ nằm ngồi P bất trị theo quan điểm thực hành Ta nói ngơn ngữ P có cận đa thức khổng lồ Tuy nhiên, việc vạch ranh giới tính bất trị tính khơng bất trị bên P không tự nhiên Một định nghĩa thay đổi theo thời gian: phát triển kỳ diệu lĩnh vực máy tính làm thay đổi ranh giới Mặt khác, lớp P cho ta cách đặc trưng tự nhiên cho tính khơng bất trị Thí dụ 1: Bài tốn tìm đường ngắn hai thành phố A B tốn dễ độ phức tạp thuật tốn để giải O(n2) (tức thuật toán đa thức) Ta xét toán thuộc lớp gọi lớp NP Theo định nghĩa trên, ta nêu thí dụ tốn “khó” Giả sử người ta địi hỏi xác định tất đường nối đỉnh S với đỉnh T mạng có độ dài nhỏ (1+ε) lần so với độ dài đường ngắn Người ta khơng có khả lập nên danh mục thời gian đa thức (cách nói có ý nghĩa tương tự với số phép tốn) ngun nhân đơn giản danh mục chứa số phần tử không đa thức (nghĩa khơng bị chặn đa thức theo số liệu) 1.4 Định nghĩa: Một tốn gọi “nhận biết” tốn mà kết lập hai giá trị ĐÚNG hay SAI Thí dụ 2: 1) Bài tốn việc tìm phân bố phù hợp Cho tập hợp X={x1, x2, …, xn} gồm biến Boole biểu thức Boole số hạng biến này: E=C1∧C2∧…∧Cm, Ci (i=1,…, m) biểu thức Ci=uj1∨uj2∨…∨ujk(i), ujq biến X Bài tốn đặt thử tìm xem có phân bố biến xk (k=1,…,n) hay cho E=1 Đối với E= ( x1 ∨ x ∨ x3 ) ∧ ( x1 ∨ x ) ∧ x3 có câu trả lời ĐÚNG lấy x1=0 hay 1, x2=1, x3=1 Tuy nhiên, câu trả lời SAI trường hợp E= ( x1 ∨ x ∨ x3 ) ∧ ( x1 ∨ x ) ∧ x3 ∧ ( x ∨ x3 ) 2) Bài tốn chu trình Hamilton Vấn đề đặt xác định xem đồ thị G cho có chu trình sơ cấp qua tất đỉnh hay không? 94 Nghiệm toán nhận biết ĐÚNG SAI Người ta khơng địi hỏi Điều phân biệt cách toán nhận biết với toán tồn tốn tìm phân bố phù hợp, câu trả lời ĐÚNG, người ta không đòi hỏi cho phân bố biến X cho E giá trị Đối với toán chu trình Hamilton, người ta khơng địi hỏi diễn tả chu trình 1.5 Định nghĩa: Cho tốn tối ưu hố tổ hợp (f(s)) (tương ứng max (f(s))) s∈S s∈S số a Người ta định nghĩa “bài toán nhận biết liên hợp” tốn: liệu có tồn s∈S cho f(s)≤a (tương ứng f(s)≥a) Thí dụ 3: 1) Cho tập n thành phố, khoảng cách thành phố số a Bài tốn với nội dung xác định xem có tồn vịng với chi phí nhỏ a toán nhận biết liên hợp toán người du lịch 2) Cho ma trận A vectơ b với hệ số nguyên Bài tốn có nội dung xác định xem có tồn vectơ x có thành phần nguyên cho A x≤ b toán nhận biết ⎛C ⎞ ⎛a⎞ Nếu đặt A = ⎜⎜ ⎟⎟ , b = ⎜⎜ ⎟⎟ , ta coi tốn nhận biết liên hợp với ⎝ A⎠ ⎝b ⎠ tốn quy hoạch tuyến tính ngun: Cx=z(min) ⎧⎪ Ax ≤ b ⎨ ⎪⎩ x j ∈ N , j = 1, n 1.6 Định lý: Nếu toán nhận biết liên hợp toán tối ưu hoá tổ hợp cho “khó” tốn tối ưu hố tổ hợp “khó” Định lý 1.6 toán tối ưu hoá tổ hợp “khó” tốn nhận biết liên hợp Trong thực tế người ta ln ln chứng minh toán nhận biết (chẳng hạn tốn người du lịch) khơng phải “dễ hơn” tốn tối ưu hố tổ hợp mà liên hợp 1.7 Nhận xét: Ký hiệu NP đặc trưng cho lớp toán mà ta nghiên cứu trở nên “lường gạt” Vấn đề khơng phải thuộc tốn “khơng phải đa thức” người ta tưởng Giả sử ta biết câu trả lời toán nhận biết ĐÚNG Nếu ta chia sẻ tin ta cho người “siêu quan sát” thời gian đa thức tốn thuộc lớp NP, ta khơng biết tìm thời gian đa thức nghiệm s mà câu trả lời ĐÚNG Người ta đòi hỏi nghiệm s đề xuất người ta thử lại thời gian đa thức câu trả lời tương ứng ĐÚNG 95 Các toán tìm phân bố phù hợp, chu trình Hamilton, nhận biết liên hợp với toán người du lịch toán nhận biết liên hợp quy hoạch tuyến tính ngun tốn thuộc lớp NP Bây ta xét máy Turing không đơn định: đọc ký hiệu trạng thái bất kỳ, máy phép có số khả hành động Còn yếu tố khác, máy Turing không đơn định định nghĩa máy đơn định Một từ ω đoán nhận sinh tính tốn đốn nhận được, độc lập với việc sinh tính tốn khác dẫn đến thất bại Như vậy, quan hệ với máy không đơn định, ta không quan tâm đến đường dẫn đến thất bại có đường có dẫn đến thành công Thời gian cần thiết để máy Turring khơng đơn định M đốn nhận từ ω∈T(M) định nghĩa số bước tính tốn ngắn M dùng để đoán nhận ω 1.8 Định nghĩa: Lớp NP lớp ngơn ngữ đốn nhận máy Turing không đơn định giới hạn đa thức 1.9 Chú ý: Các toán lớp P trị liệu được, đó, tốn lớp NP có tính chất việc kiểm chứng xem đốn tốt khơng việc giải tốn có đắn khơng trị liệu Một máy Turing khơng đơn định hình dung thiết bị kiểm chứng xem đốn có hay khơng: tiến hành (hay số) đoán bước suốt q trình tính tốn chung việc đoán nhận trường hợp (các) đoán đắn Như vậy, thực tế giới hạn thời gian máy Turing không đơn định giới hạn thời gian để kiểm chứng xem đốn lời giải có đắn không Dễ thấy lớp P lớp lớp NP Tuy nhiên, ta liệu bao hàm có thực hay khơng Vấn đề “P có NP hay khơng” xem vấn đề tồn tiếng lý thuyết tính tốn Vấn đề có ý nghĩa nhiều toán quan trọng thực tế biết thuộc NP, ta khơng biết có thuộc P hay khơng Thực ra, mặt thời gian, thuật toán đơn định biết toán mũ Như vậy, chứng minh cho P=NP làm cho toán trị liệu Các máy Turing không đơn định việc đốn chừng vốn khơng dự định để mơ hình hố việc tính tốn Tính khơng đơn định khái niệm bổ trợ ta thấy, tiện lợi Thực vậy, ta muốn giải vấn đề có hay khơng đẳng thức P=NP, định nghĩa kết sau chứng tỏ cần xét ngôn ngữ đặc biệt (có thể ngơn ngữ ta ưa thích!) xác định 96 xem có thuộc P hay khơng Có số lớn đa dạng ngơn ngữ mà ta gọi ngôn ngữ NP-đầy đủ nhận thực tế từ lĩnh vực tốn học 1.10 Định nghĩa: Ngơn ngữ L1⊂Σ1* gọi dẫn thời gian đa thức ngôn ngữ L2⊂Σ2*, ký hiệu L1 ≤P L2, có hàm xác định máy Turing ⎯→ Σ2* thoả mãn: đơn định thời gian đa thức f: Σ1* ⎯ ∀ω∈Σ1*, ω∈L1 ⇔ f(ω)∈L2 Ta nhận thấy máy Turing M đưa vào định nghĩa phải dừng với liệu vào, hệ việc M đơn định thời gian đa thức Kết hệ trực tiếp định nghĩa 1.11 Mệnh đề: Nếu L1 ≤P L2 L2∈P L1∈P LỚP NP-ĐẦY ĐỦ Đối với phần lớn toán thuộc lớp NP, người ta khơng nói chúng giải hay khơng thuật tốn đa thức Chỉ biết người ta chưa tìm thuật tốn đa thức để giải chúng Để chứng minh P=NP, ta phải chứng tỏ lớp NP tất tốn giải với thời gian đa thức thuật toán đơn định Để chứng minh P≠NP, ta phải toán NP mà giải cách tiền định với thời gian đa thức Cách giải xây dựng lớp toán tương đương 2.1 Định nghĩa: Một ngơn ngữ L gọi NP-khó với ngơn ngữ L’ NP, ta có L’ ≤P L Ngôn ngữ L gọi NP-đầy đủ NP-khó L∈NP 2.2 Chú ý: Các ngơn ngữ NP-đầy đủ hình dung đại diện cho tốn khó NP Hơn nữa, để giải vấn đề có P=NP khơng, cần định xem ngôn ngữ NP-đầy đủ L có thuộc P hay khơng Thật vậy, xét ngôn ngữ L Nếu L không thuộc P rõ ràng P≠NP Nếu L thuộc P định nghĩa tính NP-đầy đủ Mệnh đề 1.11 chứng tỏ ngôn ngữ thuộc NP thuộc P Nhưng điều có nghĩa P=NP Ta xây dựng cho toán lớp NP thuật toán làm việc thời gian đa thức miễn ta biết thuật toán (đơn định) giới hạn thời gian đa thức toán NP-đầy đủ (Hiện thời ta nói tốn thay cho ngơn ngữ để nhắc nhở thay đổi qua lại khái niệm này) Như vậy, có thuật toán giới hạn thời gian đa thức cho số nhiều toán NP-đầy đủ, ta có thuật tốn giới hạn thời gian đa thức cho toán lớp NP! Do nỗ lực lớn dành cho dự định cải tiến thuật toán biết cho số 97 toán (do tầm quan trọng thực tế lớn lao chúng) chưa nỗ lực dẫn đến thành cơng, nói chung người ta tin P≠NP Mệnh đề sau hệ trực tiếp tính bắc cầu quan hệ ≤P 2.3 Mệnh đề: Nếu L1 NP-đầy đủ L2 ngôn ngữ lớp NP thoả mãn L1 ≤P L2 ngơn ngữ L2 NP-đầy đủ Thí dụ 4: Xét bảng chữ: Σ = {1, 2, ∨, ∧, , (, )} Một từ ω bảng chữ Σ gọi công thức thiết lập phép tính mệnh đề, viết tắt wffpc, (1) (2) (1) ω từ khác rỗng bảng chữ {1, 2} (2) Có wffpc u v cho: ω=(u ∨ v) hay ω=(u ∧ v) hay ω=u phép tuyển, phép hội phép phủ định Về mặt trực giác, ∨, ∧ Trong wffpc, ta có nhiều không hạn chế biến xi mà i số nguyên theo cách viết 2-adic Chẳng han, thay x9 ta viết 121 Điều kiện (1) nói biến đơn lẻ wffpc Một cách hình thức, từ α∈{1, 2}+ wffpc ω thoả mãn điều kiện: ω=ω1αω2, ω1∉Σ*{1, 2}, ω2∉{1, 2}Σ* gọi biến Giả sử α1, …, αn tất biến có mặt wffpc ω Một ánh xạ T từ tập {α1, …, αn} đến tập {0, 1} gọi phép gán giá trị chân lý cho ω Giá trị chân lý biến αi T(αi) Giá trị chân lý (u ∨ v) (tương ứng (u ∧ v)) max(u1, v1) (tương ứng min(u1, v1)), u1 v1 tương ứng giá trị chân lý u v Giá trị chân lý u 1−u1 Một wffpc ω gọi thoả nhận giá trị chân lý cách gán giá trị chân lý T Ta ký hiệu ngơn ngữ Σ gồm wffpc thoả SAT Về mặt trực giác, ký hiệu tương ứng giá trị chân lý sai Một wffpc thoả khơng đồng sai theo kỹ thuật bảng chân lý quen thuộc Tất nhiên, cách gán giá trị chân lý, xuất biến cá biệt αi nhận giá trị chân lý Sau đây, quy tắc nghiêm ngặt định nghĩa wffpc giảm nhẹ đôi chút Ta dùng chữ thường cuối bảng chữ để ký hiệu biến Như vậy, biến cá biệt ký hiệu x9 thay cho ký hiệu 121 định nghĩa Các dấu ngoặc không cần thiết bỏ Quy ước áp 98 dụng dấu ngoặc không cần thiết tính kết hợp ∧ ∨ (Ta quan tâm đến giá trị chân lý rõ ràng hàm max kết hợp) Xét hai wffpc sau đây: ( x1 ∨ x ) ∧ ( x1 ∨ x ) ∧ ( x1 ∨ x ) ∧ x3 (1) ( x1 ∨ x ∨ x3 ) ∧ ( x2 ∨ x3 ) ∧ ( x1 ∨ x3 ) ∧ x3 (2) Cả hai (1) (2) hội wffpc mà số chúng tuyển ký hiệu chữ, biến phủ định chúng gọi ký hiệu chữ Ta nói wffpc thuộc loại dạng chuẩn hội Hơn nữa, tuyển chứa nhiều ba (tương ứng hai) ký hiệu chữ, ta nói wffpc dạng chuẩn 3-hội (tương ứng 2-hội) Như vậy, (2) dạng chuẩn 3-hội (1) dạng chuẩn 2-hội (đồng thời dạng chuẩn 3-hội) Ta ký hiệu ngôn ngữ Σ gồm wffpc thoả dạng chuẩn hội CONSAT Các ký hiệu 3-CONSAT 2-CONSAT định nghĩa tương tự wffpc (1) thuộc 2-CONSAT wffpc (2) khơng thuộc 3-CONSAT khơng thoả Ta thấy điều nhờ lý luận sau Câu cuối (2) buộc ta phải gán trị cho x3 Do đó, câu thứ hai thứ ba buộc ta phải gán trị tương ứng cho x2 x1 Nhưng với cách gán trị này, câu thứ nhận giá trị Rõ ràng tính thoả tính chất định Ta cần kiểm tra qua tất 2n cách gán trị chân lý có n biến (Thực điều chẳng khác so với kỹ thuật bảng chân lý quen thuộc) Một cách kiểm tra vét cạn dùng lượng thời gian mũ (theo số biến hay độ dài wffpc cho trước) Bây ta mô tả cách ngắn gọn thuật toán để kiểm tra tính thoả dựa việc rút gọn số biến Ta giả thiết liệu vào cho dạng chuẩn hội Thuật toán bộc lộ khác đáng kể dạng chuẩn 2-hội 3-hội Giả sử α wffpc dạng chuẩn hội Như α = α1 ∧ α2 ∧…∧ αk, αi tuyển ký hiệu chữ Ta gọi tuyển αi mệnh đề Bước 1: Bảo đảm cho biến xuất (hoặc bị phủ định không) nhiều lần mệnh đề Điều thực cách biến đổi α sau Mỗi mệnh đề chứa x x với biến x bị bỏ khỏi α Nếu x (tương ứng x ) xuất số lần mệnh đề đó, xuất thay xuất x (tương ứng x ) Nếu tất bị bỏ đi, α thoả (Thực tế đồng dạng đúng) Trái lại, giả sử α’ wffpc thu 99 Bước 2: Thay α’ wffpc α’’ không chứa mệnh đề có ký hiệu chữ (và thoả mãn điều kiện đòi hỏi α’ sau Bước 1) Thực vậy, x (tương ứng x ) xuất đơn độc mệnh đề đó, ta bỏ mệnh đề chứa x (tương ứng x ) tiếp loại bỏ x (tương ứng x) khỏi mệnh đề mà xuất với biến khác đó; x (tương ứng x) xuất mệnh đề khác đó, ta kết luận α không thoả Lặp lại thủ tục thu α’’ mô tả Bước 3: Nếu khơng có biến xuất α’’ vừa bị phủ định vừa không bị phủ định, ta kết luận α’’ thoả Nếu trái lại, ta chọn biến x mà x x xuất α’’ Ta tìm mệnh đề ( x ∨ β1 ), , ( x ∨ β m ), ( x ∨ γ ), , ( x ∨ γ n ), x hay x xuất Giả sử δ hội mệnh đề khác (nếu cịn) Khi α’’ thoả wffpc (( β1 ∧ ∧ β m ) ∨ (γ ∧ ∧ γ n )) ∧ δ thoả Ta nhận thấy số β γ chứa ký hiệu chữ chứa ký hiệu chữ α nguyên dạng chuẩn 2-hội Nếu số β hay γ chứa ký hiệu chữ ta thay α’’ hai wffpc α = β1 ∧ ∧ β m ∧ δ α = γ ∧ ∧ γ n ∧ δ , bảo đảm α lẫn α không chứa mệnh đề hai lần (bằng cách bỏ xuất không cần thiết) quay Bước wffpc ban đầu α thoả α hay α thoả Nếu β γ chứa ký hiệu chữ, ta thay α’’ wffpc α ' ' ' = ( β1 ∨ γ ) ∧ ∧ ( β1 ∨ γ n ) ∧ ∧ ( β m ∨ γ n ) ∧ δ , loại bỏ xuất bị lặp lại mệnh đề quay Bước α ban đầu thoả α’’’ thoả Đến ta kết thúc việc mơ tả thuật tốn Chúng ta dễ dàng kiểm nghiệm phương pháp có hiệu lực Một số giải thích cho Điều cốt yếu số lượng biến thực giảm trước lần quay Bước Xét từ có dạng: ω0 # ω1 # … # ωk chữ {1, 2, #} cho k≥1, ω từ không rỗng chữ {1, 2} nữa, ω0 tổng số ω khác từ xem số nguyên 2-adic Ta ký hiệu KNAPSACK ngôn ngữ gồm từ 2.4 Định lý: Ngôn ngữ 2-CONSAT thuộc lớp P 100 2.5 Định lý: Ngôn ngữ SAT NP-đầy đủ 2.6 Định lý: Ngôn ngữ CONSAT NP-đầy đủ 2.7 Định lý: Ngôn ngữ 3-CONSAT NP-đầy đủ 2.8 Định lý: Ngôn ngữ KNAPSACK NP-đầy đủ 2.9 Định lý (J Demetrovics − V.Đ Thi, 1999): Cho s = (U, F) sơ đồ quan hệ U Giả sử U={a1, …, an} F={A1→B1, …, At→Bt} Ký hiệu Vs={A | A ⊂ U, A+ ≠ U} (nghĩa Vs tập tập U mà khoá) m số nguyên dương, m ≤ |U| Khi tốn xác định xem có tồn phần tử A∈Vs mà m ≤ |U| hay không NP-đầy đủ Chứng minh: Chọn tuỳ ý tập A cho m ≤ |A| Kiểm tra xem A+≠ U hay không Việc kiểm tra thực thời gian đa thức, thuật tốn xây dựng bao đóng tập thuộc tính s có thời gian tính đa thức Như thuật tốn bất định có độ phức tạp tính tốn đa thức Vậy tốn ta thuộc lớp NP Bài toán tập độc lập sau Garey Johnson (1979) toán NP-đầy đủ: Cho trước số nguyên dương m đồ thị G=(V, E), với V tập đỉnh E tập cung, E={(ai, aj) | ai, aj∈V} Ta gọi A tập độc lập đồ thị G A tập V với a, b∈A (a, b)∉E Kiểm tra xem có tồn tập độc lập A G mà m ≤ |A| hay khơng Ta chứng minh tốn độc lập chuyển đa thức toán Cho G=(V, E) đồ thị mà m ≤ |V| Xây dựng sơ đồ quan hệ s = (U, F) với U=V F={{ai, aj}→{a} | (ai, aj)∈E a∈V \ {ai, aj}} Rõ ràng s xây dựng thời gian đa thức theo kích thước G Theo định nghĩa tập cạnh, rõ ràng E siêu đồ thị đơn V (định nghĩa siêu đồ thị khái niệm, tính chất liên quan tìm đọc báo Vũ Đức Thi “Some results about hypergraph” Tạp chí Tin học Điều khiển học, tập 13, số 2, năm 1997) Từ điều này, ta thấy s dạng chuẩn BCNF Do định nghĩa khoá tối thiểu định nghĩa tập E nên thấy (ai, aj)∈E {ai, aj} khố tối thiểu s Ngược lại, B∈Ks có {ai, aj} cho {ai, aj}⊂B Vì B khố tối thiểu nên ta có {ai,aj}=B Do Ks=E Như A khơng phải khố s {ai, aj}⊄A với (ai,aj)∈E Do A khơng phải khoá s A tập độc lập đồ thị G 2.10 Định nghĩa: Cho s = (U, F) sơ đồ quan hệ Phụ thuộc hàm A→{a} ∈F+ gọi phụ thuộc hàm cực đại s a∉A với A’⊂A, A’→{a} ∈F+ kéo theo A’=A 101 Đặt Ta={A | A→{a} phụ thuộc hàm cực đại s} Ta thấy {a} U∉Ta Ta hệ Sperner U (hệ Sperner siêu đồ thị đơn) 2.11 Định lý (J Demetrovics − V.Đ Thi, 1994): Bài toán sau NP-đầy đủ: Cho sơ đồ quan hệ s = (U, F) hai thuộc tính a, b, định xem có hay không phụ thuộc hàm cực đại A→{a} cho b∈A Chứng minh: Với b, ta chọn bất định tuỳ ý tập A U cho b∈A Vì thuật tốn tính bao đóng A có độ phức tạp tính tốn đa thức theo định nghĩa phụ thuộc hàm cực đại, ta xác định A∈Ta hay khơng Rõ ràng thuật tốn bất định có độ phức tạp tính tốn đa thức Vậy toán thuộc lớp NP Bây ta cần tốn NP-khó, có nghĩa có tốn NP-đầy đủ chuyển tốn ta nhờ thuật tốn có độ phức tạp tính tốn đa thức Có thể thấy tốn việc xác định thuộc tính sơ đồ quan hệ NP-đầy đủ Cho sơ đồ quan hệ s = (U, F) thuộc tính a Xác định có tồn hay khơng khoá tối thiểu s chứa a (a gọi thuộc tính s) Bài tốn đưa toán ta nhờ thuật tốn có độ phức tạp tính tốn đa thức chứng minh Giả sử s’ = (P, F’) sơ đồ quan hệ P Không tính chất tổng quát, ta giả thiết P khơng khố tối thiểu s’, có nghĩa A∈Ks A⊂P Vì việc tìm khố tối thiểu sơ đồ quan hệ cho trước giải thuật toán đa thức, ta tìm khố tối thiểu C s’ Bây ta xây dựng sơ đồ quan hệ s = (U, F) sau: U = P∪{a}, a∉P F = F’∪C→{a} Hiển nhiên s xây dựng thời gian đa thức theo kích thước P F’ Rõ ràng C∈Ks Trên sở kiến trúc s định nghĩa khoá tối thiểu, ta thấy A∈Ks’ A∈Ks Ngược lại, B khố tối thiểu s C→{a}∈F, ta có a∉B Mặt khác, định nghĩa khố tối thiểu, ta có B∈Ks’ Như ta có Ks’=Ks Vì C∈Ks a∉U, nên B→{a} phụ thuộc hàm cực đại s B∈Ks Có thể thấy A∈Ks’ A→{a}∈F+ Phù hợp với định nghĩa phụ thuộc hàm cực đại, ta có A→{a} phụ thuộc hàm cực đại s Do b thuộc tính s’ tồn phụ thuộc hàm cực đại A→{a} s để b∈A 2.12 Định nghĩa: Bài toán A gọi co-NP-đầy đủ toán phủ định A NP-đầy đủ Những khái niệm khoá file liệu khoá sơ đồ quan hệ đóng vai trị quan trọng việc xử lý liệu Chúng dùng để tìm kiếm ghi 102 nhờ có chúng người ta tìm cách tiến hành xử lý liệu Dưới toán co-NP-đầy đủ liên quan đến việc so sánh hai tập khoá sơ đồ quan hệ file liệu Gottlob Libkin toán phần bù giới hạn tập (SDCSubset delimiter complementarity) sau co-NP-đầy đủ 2.13 Định lý (G Gottlob − L Libkin, 1990): Bài toán sau co-NP-đầy đủ: Cho tập hữu hạn T, hai họ P={P1, …, Pn} Q={Q1, …, Qm} tập T Kiểm tra xem với A⊂T có tồn Pi để Pi⊂A có Qj để A⊂Qj, với 1≤i≤n, 1≤j≤m Gottlob Libkin chứng minh Q1, …, Qm hệ Sperner T tốn co-NP-đầy đủ Bài toán SDC chứng tỏ chuyển đa thức toán Ký hiệu Lr Ls tương ứng tập tất khoá quan hệ r sơ đồ quan hệ s Bài toán kiểm tra Lr⊂Ls hay không co-NP-đầy đủ 2.14 Định lý (J Demetrovics − V.Đ Thi, 1993): Bài toán sau co-NP-đầy đủ: Cho quan hệ r sơ đồ quan hệ s = (U, F), kiểm tra xem Lr có tập Ls hay khơng Chứng minh: Đối với A⊂U, ta kiểm tra A khơng khố r thuật tốn đa thức Từ thuật tốn tìm bao đóng A+ định nghĩa khoá sơ đồ quan hệ, ta kiểm tra thời gian đa thức A khơng khố s Do ta chọn tuỳ ý tập A⊂U cho A khố r khơng khố s Như vậy, vấn đề ta thuộc co-NP Xét toán SDC với tập hữu hạn T hai họ P={P1, …, Pn}, Q={Q1, …, Qm}, Q hệ Sperner T Ký hiệu P’ = {Pi∈P | không tồn Pj để Pj⊂Pi, 1≤i, j≤n} Rõ ràng P’ tập phần tử nhỏ P P’ hệ Sperner T Từ P ta tính P’ thời gian đa thức theo |P| |T| Dễ thấy {T, P’, Q} thể tương đương {T, P, Q} Từ ta giả thiết P hệ Sperner T Ta chứng minh toán SDC dẫn toán ta thuật toán thời gian đa thức Đặt U = T, s = (U, F), F = {P1→U, …, Pn→U} Đặt M = {Qi \ {a} | i=1, 2, …, m a∈U} = {M1, …, Mt} Xây dựng quan hệ r = {h0, h1, …, ht} sau: Với a∈U, h0(a)=0; hi(a)=0 a∈Mi hi(a)=i trường hợp ngược lại, với i=1, 2, …, t Rõ ràng r s xây dựng thời gian đa thức theo kích thước |T|, |P| |Q| Có thể thấy Fr s = (U, F) dạng chuẩn BCNF 103 Do s BCNF nên với A⊂U, ta có A+=A A+=U Từ định nghĩa khoá, khoá A s có Pi cho Pi⊂A, 1≤i≤n Có thể thấy Q tập phản khoá r Do Fr BCNF nên với A⊂U, HFr(A)=U HFr(A)=A, HFr(A)={a∈U | (A, {a})∈Fr} Từ định nghĩa phản khoá r, ta thấy A khoá r với i=1, 2, …, m, A⊄Qi Vậy Lr⊂Ls với A⊂T, với i=1, 2, …, m, A⊄Qi có Pj để Pj⊂A Từ ta thấy toán SDC dẫn toán ta thuật toán thời gian đa thức 104 TÀI LIỆU THAM KHẢO [1] Phan Đình Diệu, Lý thuyết ơtơmat thuật tốn, NXB Đại học Trung học chuyên nghiệp, Hà Nội, 1977 [2] Đỗ Đức Giáo, Đặng Huy Ruận, Văn phạm ngơn ngữ hình thức, NXB Khoa học Kỹ thuật, Hà Nội, 1991 [3] Đỗ Đức Giáo, Toán rời rạc, NXB Đại học Quốc Gia Hà Nội, Hà Nội, 2000 [4] Lê Mạnh Thạnh, Nhập mơn ngơn ngữ hình thức ơtơmat, NXB Giáo dục, Đà Nẵng, 1998 [5] Vũ Đức Thi, Thuật toán tin học, NXB Khoa học Kỹ thuật, Hà Nội, 1999 [6] Bùi Minh Trí, Tối ưu hố tổ hợp, NXB Khoa học Kỹ thuật, Hà Nội, 2003 [7] Phan Thị Tươi, Trình Biên Dịch, NXB Đại học Quốc Gia TP Hồ Chí Minh, TP Hồ Chí Minh, 2001 [8] A.V Aho, J.D Ullman, The theory of parsing, Translation and compiling, Vol 1, 2, Prentice-Hall, Englewood Cliffs, 1972 [9] J.E Hopcroft, J.D Ullman, Formal languages and their ralation to automata, Addison Wesley, Reading Mass London, 1969 [10] J.E Hopcroft, J.D Ullman, Introduction to formal language theory, Addison Wesley, Reading Mass London, 1979 [11] K.H Rosen, Discrete mathematics and its applications, Mc Graw-Hill, New York, 1994 [12] A Salomaa, Formal languages, Academic Press, New York, 1973 105 ... tính đắn ngơn ngữ lập trình, lý thuyết mật mã, lý thuyết cấu trúc liệu lý thuyết sở liệu Lý thuyết ngơn ngữ hình thức ơtơmat đóng vai trị quan trọng sở tốn học tin học Ngơn ngữ hình thức sử dụng... Định nghĩa: Mỗi tập Σ* gọi ngơn ngữ hình thức hay ngắn gọn ngôn ngữ Σ Đặc biệt, tập ∅ ngôn ngữ Σ, gọi ngôn ngữ rỗng; tập {ε} ngôn ngữ Σ, ngôn ngữ chứa từ rỗng Σ* ngôn ngữ gồm tất từ Σ Thí dụ 4: L1... trình nhằm trình bày văn phạm hình thức ôtômat máy Turing, công cụ sinh ngôn ngữ, đồng thời đề cập đến tính chất ngơn ngữ quy, ngơn ngữ phi ngữ cảnh, ngôn ngữ đệ quy ngôn ngữ đệ quy đếm Ngồi ra, giáo

Ngày đăng: 14/05/2021, 16:41

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

Tài liệu liên quan