Làm thế nào để tôi chỉ ra rằng liệu một PDA có chấp nhận một số chuỗi


8

Làm thế nào để tôi chỉ ra rằng vấn đề quyết định xem một thiết bị PDA có chấp nhận một số chuỗi có dạng không thể giải quyết được không?{w!ww{0,1}}

Tôi đã cố gắng giảm vấn đề này sang một vấn đề không thể giải quyết khác, chẳng hạn như liệu hai ngữ pháp không ngữ cảnh có chấp nhận cùng một ngôn ngữ hay không. Tuy nhiên, tôi không chắc làm thế nào để sử dụng nó như một chương trình con.

Câu trả lời:


12

Đây là cách tiếp cận của tôi: Tôi sẽ chỉ ra rằng nếu bạn có thể quyết định vấn đề của mình, thì bạn có thể quyết định vấn đề tương ứng của Post (PCP), được biết là không thể quyết định được.

Hãy nhớ rằng, PCP là một vấn đề quyết định hỏi rằng trong một tập hợp -tuples bạn có thể tạo một chuỗi (bao gồm lặp lại) sao cho nối s và s nối của chuỗi này tạo thành cùng một từ. Lưu ý rằng bảng chữ cái phải có ít nhất 2 ký tự.P = { ( x 1 , y 1 ) , Mạnh , ( x n , y n ) } x i y i2P={(x1,y1),,(xn,yn)}xiyi

Vì vậy, hãy để là một ví dụ của PCP. Xem xét bối cảnh miễn ngữ pháp sau đây, nơi chúng tôi đã giới thiệu một biểu tượng terminal mới cho yếu tố -thứ trong . Ngữ pháp có các quy tắc sau: (Biến chỉ có ở đó để loại trừ ).t i i P SPtiiP X'S!

SX!YXx1Xt1x2Xt2xnXtnXx1Xt1x2Xt2xnXtnεYy1Yt1y2Yt2ynYtnε
XS!

Tất nhiên, với bất kỳ ngữ pháp nào, chúng ta có thể tìm thấy một chiếc PDA tương ứng chấp nhận cùng ngôn ngữ với ngữ pháp. Vì vậy, hãy xây dựng các PDA tương ứng, và sau đó sử dụng thuật toán giả định cho vấn đề của bạn để xác định xem liệu PDA này có chấp nhận bất kỳ từ nào có dạng (nghĩa là liệu người ta có thể rút ra bất kỳ từ nào có dạng từ ngữ pháp này không). Tôi sẽ giới thiệu cách sử dụng thông tin này để giải quyết các trường hợp PCP .u ! v Pu!vu!vP

Giả sử bây giờ là một từ trong ngữ pháp này. Từ có hai phần, hậu tố, bao gồm các đầu cuối và phần còn lại được gọi là tiền tố. Điều tương tự cũng đúng với . Chúng ta có khi và chỉ khi tiền tố và hậu tố của chúng trùng nhau. Các hậu tố chỉ trùng khớp nếu chúng ta đã sử dụng cùng một chuỗi các bộ dữ liệu từ để xây dựng các từ và . Các tiền tố của và trùng khớp nếu nối của s và s (dựa trên chuỗi tuple đảo ngược được đưa ra bởi s) là như nhau. Vì thếu t i v u = v P u v u v x i y i t i u = v Pu!vutivu=vPuvuvxiyitiu=v nếu và chỉ nếu có một giải pháp cho trường hợp PCP .P

Tương tự, nếu có một giải pháp cho trường hợp PCP , thì từ giải pháp đó có thể dễ dàng xây dựng một từ có dạng có thể lấy được từ ngữ pháp này.u ! vPu!v

Nó sau đó các trường hợp PCP có một giải pháp nếu và chỉ nếu ngữ pháp này có chứa một từ có dạng . Nếu có một thuật toán để quyết định vấn đề của bạn, chúng tôi có thể sử dụng nó để giải quyết vấn đề PCP. Nhưng tất nhiên, PCP được biết là không thể giải quyết được, vì vậy vấn đề của bạn cũng không thể giải quyết được.u ! vPu!v


1
Đẹp! Chà, chắc chắn là đơn giản hơn giải pháp của riêng tôi. +1
Hendrik

1
u!uti

@Raphael, tôi đã chỉnh sửa câu trả lời để giải quyết bình luận của bạn. Điểm tốt - cảm ơn bạn!
DW

5

Cách tiếp cận có thể như sau. Cố gắng tạo một ngôn ngữ không ngữ cảnh (= PDA) mã hóa các bước tính toán của một TM, sao cho việc tính toán hoàn thành thành công nếu có một từ có dạng bạn mô tả.

CCC#m(C)m(C)

C0#C1#m(C2)#C3#m(C4)#C2n1#m(C2n)#Cf! C1#m(C1)#C2#m(C2)#Cn+1#m(Cn+1)kC2k1(C2k)C0Cf

Bây giờ phần đầu tiên đảm bảo chúng ta có các bước liên tiếp, phần thứ hai có cấu hình liên tiếp bằng nhau. Nếu cả hai phần phù hợp, chúng tôi có một tính toán. Mà chúng ta không thể quyết định.

Đó là ý tưởng. Tôi có thể có một số chỉ mục sai, toàn bộ chuỗi phải được mã hóa thành nhị phân, nhưng điều đó có thể được giải quyết.


Được rồi tôi hiểu rồi. Tuy nhiên, phần "Bây giờ hãy xem xét ngôn ngữ của các bước riêng biệt, được kết hợp với ngôn ngữ của các cấu hình trùng lặp ..." có thể thu lợi từ các giải thích thêm. Ví dụ, bạn có thể sử dụng các chỉ số chính xác. Dù sao, đó là một ý tưởng tốt đẹp.
A.Schulz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.