Khi nào sự kết hợp của hai ngôn ngữ thông thường không rõ ràng?


16

Ngôn ngữ đã cho và , chúng ta hãy nói rằng họ nối là rõ ràng nếu cho tất cả các từ , có chính xác là một phân hủy với và , và mơ hồ khác. (Tôi không biết có thuật ngữ nào được thiết lập cho tài sản này hay không, điều khó tìm kiếm!) Như một ví dụ tầm thường, việc ghép với chính nó là mơ hồ ( ), nhưng việc ghép nối với chính nó là không rõ ràng.B A B w A B w = a b a A b B { ε , a } w = a = ε a = a ε { a }ABABwABw=abaAbB{ε,a}w=a=εa=aε{a}

Có một thuật toán để quyết định xem việc ghép hai ngôn ngữ thông thường có rõ ràng không?


1
Gah, đây hoàn toàn là một vấn đề CS năm nhất, phải không? Thành thật mà nói, tôi đã không cố gắng nhiều; Tôi đã hy vọng rằng có một thuật toán được thiết lập cho điều này ở đâu đó trong tài liệu và tôi sẽ không phải phát minh lại bánh xe. Tôi đang viết phần mềm ở đây; Tôi mới chỉ tham gia một vài khóa học CS (vài năm trước) nên về cơ bản tôi bắt đầu từ Wikipedia. Tôi biết không ai thích ai đó không muốn làm việc cho câu trả lời của họ, vì vậy nếu có sách giáo khoa hoặc giấy hoặc thứ gì đó mà bạn có thể chỉ cho tôi thay vì chỉ đưa cho tôi một thuật toán, điều đó sẽ hữu ích! Cảm ơn!
rstern

Tôi đã thêm điều này như một bình luận bởi vì, chủ đề tương đối lạc hậu của nó, nhưng có lẽ có thể dẫn bạn đến một số trợ giúp. Unicode Consortium có một vài quy trình để xác định điểm chung giữa các ngôn ngữ. Tôi đã đọc một liên kết rất nhiều thông tin trên trang web của họ nhưng trong cuộc sống của tôi không thể tìm thấy nó ngày hôm nay để làm cho câu trả lời này thay thế. Nếu bạn có thời gian để nghiên cứu thì đây là trang FAQ của họ unicode.org/faq
htm11h

Câu trả lời:


10

Gợi ý: Cho các DFA cho và , xây dựng một NFA chấp nhận các từ trong có ít nhất hai phép phân tách khác nhau. NFA theo dõi hai bản sao của NFA tiêu chuẩn cho (được hình thành bằng cách tham gia các DFA cho và với các chuyển đổi ), đảm bảo rằng việc chuyển đổi từ sang diễn ra ở hai điểm khác nhau.B A B A B A BABABABABMột BϵAB


Cảm ơn các gợi ý! Vì vậy, nếu tôi hiểu, tôi có thể xây dựng một NFA cho các từ mơ hồ trong và sau đó kiểm tra tính tự động đó cho sự trống rỗng. Phần khó khăn dường như là "đảm bảo rằng việc chuyển đổi từ sang xảy ra ở hai điểm khác nhau". Tôi không chắc chắn làm thế nào để làm điều đó ngoài việc lấy sản phẩm chéo (?) Của hai DFA và xóa tất cả các sản phẩm ( -terminal, -terminal) nói rằng tôi đang cầm tay, tôi lo lắng rằng quá trình chuyển đổi từ NFA sang DFA sẽ diễn ra với ý tưởng về -terminal. Âm thanh, um, không hiệu quả mặc dù; Có một thuật toán được biết đến phù hợp cho phần mềm? A B A B A A A B A B AABABABAAABABA
rstern

Vâng, nó không có vẻ quá hiệu quả, mặc dù luôn có tùy chọn thực hiện nó một cách thông minh. Tôi không biết bất kỳ thuật toán cụ thể nào cho vấn đề này, nhưng một thuật toán có thể tồn tại.
Yuval Filmus

7

Đã cập nhật (nhờ Yuval Filmus).

Cho hai ngôn ngữ và của , hãy Tôi cho rằng không rõ ràng khi và chỉ khi ngôn ngữ trống.Y A X - 1 YXYA XYX-1XYY-1A+

X1Y={uAthere exists xX such that xuY}YX1={uAthere exists xX such that uxY}
XYX1XYY1A+

Bằng chứng . Giả sử rằng là mơ hồ. Sau đó, có tồn tại một từ trong đó có hai phân tách trên , nói , nơi và . Không mất tính tổng quát, chúng tôi có thể giả sử rằng là tiền tố của , nghĩa là, đối với một số . Theo sau đó , từ đó . Do đó .XYuXYu=x1y2=x2y1x1,x2Xy1,y2Yx1x2x2=x1zzA+u=x1y2=x1zy1y2=zy1zX1XYY1

Giả sử bây giờ có chứa một số từ . Sau đó, tồn tại và sao cho và . Theo sau đó và do đó sản phẩm không rõ ràng.X1XYY1zx1,x2Xy1,y2Yx2=x1zy2=zy1x2y1=x1zy1=x1y2XY

Nếu và đều, thì cả và đều đều và do đó cũng đều đặn (xem câu trả lời của Yuval cho một máy tự động chấp nhận ngôn ngữ này).Y X - 1 X Y Y - 1 X - 1 X Y Y - 1XYX1XYY1X1XYY1


Nếu là từ trống thì sao? z
Yuval Filmus

Ôi Tôi cập nhật.
J.-E.
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.