Câu trả lời mặc định ngắn: đưa ra một LBA chấp nhận ngôn ngữ và sử dụng mô phỏng được sử dụng để chứng minh rằng các ngữ pháp và ngữ pháp nhạy cảm theo ngữ cảnh xác định cùng một bộ ngôn ngữ. Nhưng đó là tất nhiên không phải là những gì bạn đang theo đuổi.
Trong trường hợp cụ thể này, hãy cố gắng suy nghĩ của việc sử dụng một ngữ pháp đúng tuyến cho hai lần, một cho phía bên trái và một cho nửa bên phải. Tất cả bạn phải đảm bảo rằng cả hai ngữ pháp đều xuất phát "đồng bộ".Σ*
Điều này có thể được thực hiện bằng cách hoán đổi xung quanh mã thông báo kiểm soát. Điều đó có nghĩa là, các ngữ pháp bên trái chọn một quy tắc, tạo mã thông báo điều khiển phù hợp và chuyển nó sang ngữ pháp bên phải. Ngữ pháp bên phải nhìn thấy mã thông báo kiểm soát và thực hiện quy tắc phù hợp. Lưu ý rằng bạn cũng có thể thực hiện giao tiếp hai chiều theo cách này, nhưng không cần thiết ở đây.
Có một vấn đề với văn phạm tiếng context-sensitive: họ không bao giờ có thể xóa không bến (trừ nếu từ đó có sản phẩm nào là bằng ngôn ngữ). Do đó, chúng tôi phải tạo ra nhiều thiết bị đầu cuối mà chúng tôi sẽ cần; không cái nào có thể thừaS→ ε
Một cách để đạt được điều này là sử dụng thủ thuật tương tự như đối với một số bằng chứng nhất định về LBA: tạo ra tất cả các thiết bị đầu cuối mà bạn sẽ cần trước tiên , tức là chuẩn bị "băng". Sau đó, "di chuyển xung quanh" trên băng đó. Chỉ "ở cuối", thay thế tất cả các thiết bị đầu cuối bằng thiết bị đầu cuối.
Vì vậy, hãy với Σ = { một , b } (xây dựng sẵn sàng kéo dài đến bảng chữ cái lớn hơn) và N , delta do các quy tắc sau.G = ( N, Σ , δ, S)Σ = { a , b }Nδ
là các quy tắc để tạo ra các "băng". Lưu ý rằng chiếc mũ biểu thị "vị trí đầu" và chỉ sốl,rbiểu thị một nửa của từ không thuộc thiết bị đầu cuối. Các từ ngắn được tạo ra để đảm bảo an toàn cho một số quy tắc dưới đây. Bây giờ chúng ta cần các quy tắc để rút ra một biểu tượng ở phần bên trái:SS'→ X^tôiS'Xr∣aaaa∣abab∣baba∣bbbb∣aa∣bb∣ε→XlS′Xr∣XlX^r
l , r
cho tất cả(α,γ)∈Σ2. Lưu ý cách chúng tôi sử dụng chỉ mục trên để mang biểu tượng được tạo ở bên phải. XavàXblà các thiết bị đầu cuối "cuối cùng" sẽ chỉ được sử dụng để di chuyển mã thông báo điều khiển xung quanh và để lấy các thiết bị đầu cuối sau này. Ngoài ra, lưu ý rằng quy tắc thứ hai là (chỉ) được sử dụng cho biểu tượng cuối cùng của nửa bên phải.
Để di chuyển vật mang sang nửa bên phải, chúng ta phải di chuyển qua cảXlcòn lạivà đã tạoXα:X^tôiXtôiX^tôiXα→ XγX^γtôi→ XγXγα
( Α , γ) ∈ Σ2XmộtXb
XtôiXα
cho tất cả(α,β,γ)∈Σ3. Bây giờ, một khi mang đến mã thông báo kiểm soát bên phải, chúng ta phải bắt chước quy tắc được sử dụng ở bên trái:X^γlXlX^γlXαXγlXlXγlXαXγαXβ→X^lXγl→X^lXγα→XlXγl→XlXγα→XαXγβ
( Α , β, γ) ∈ Σ3
cho tất cả(α,γ)∈Σ2. Lưu ý rằng quy tắc đầu tiên được sử dụng cho biểu tượng đầu tiên của nửa bên phải và quy tắc cuối cùng chỉ có thể được sử dụng cho biểu tượng cuối cùng, nếu không, đạo hàm không bao giờ chấm dứt. Bây giờ chúng ta chỉ cần các quy tắc chấm dứtXγtôiX^rXγαX^rX^γrXrX^γr→ XtôiX^γr→ XαX^γr→ XγX^r→ Xγ
( Α , γ) ∈ Σ2
cho tất cả alpha ∈ Σ và chúng tôi đang thực hiện. Các quy tắc này cũng vậy, chỉ có thể được áp dụng sau khi mọi thứ (bên trái) được thực hiện, nếu không việc tạo đạo hàm sẽ không chấm dứt.
Lưu ý rằng ngữ pháp này là mơ hồ. Không chỉ có thểáp dụng X α → α (một cách an toàn) ở bất kỳ đâu bên trái "đầu" bên trái bất cứ lúc nào, mà còn có thể thực hiện nhiều thao tác thực hiện cùng một lúc. Vì họ không bao giờ có thể vượt qua nhau nên thứ tự chính xác được duy trì.
Một nhận xét phải được thực hiện: ngữ pháp trênkhôngnhạy cảm với ngữ cảnh vì nhiều quy tắc thay đổicả haiXα→ alpha
alpha ∈ Σ
Xα→ alpha
của các biểu tượng ở phía bên trái. Điều này không được phép đối với các ngữ pháp nhạy cảm theo ngữ cảnh. May mắn thay, chúng ta có thể mô phỏng bất kỳ quy tắc của biểu mẫuR
bởiA B → CD
vì vậy chúng tôi tốt và có thể làm việc với ngữ pháp nhỏ hơn. Cho thấy rằng sự can thiệp giữa nhiều mô phỏng như vậy không gây hại là một bài tập.A BMột chữ YRXRYRXRD→ A YR→ XRYR→ XRD→ CD
Lk= { wk∣ w ∈ Σ*}L = ⋃i ≥ 1LkLkL