Là ngôn ngữ của các từ có chứa số lượng tương đương 001 và 100 thường xuyên?


14

Tôi đã tự hỏi khi các ngôn ngữ có cùng số lượng phiên bản của hai chuỗi con sẽ là thường xuyên. Tôi biết rằng ngôn ngữ chứa số 1 và 0 bằng nhau không phải là thông thường, nhưng là ngôn ngữ như , trong đó = số phiên bản của chuỗi con "001" bằng với số phiên bản của chuỗi con " 100 " thường xuyên? Lưu ý rằng chuỗi "00100" sẽ được chấp nhận.L { w }LL{w|}

Trực giác của tôi nói với tôi rằng nó không phải, nhưng tôi không thể chứng minh điều đó; Tôi không thể chuyển đổi nó thành một hình thức có thể được bơm thông qua bổ đề bơm, vậy làm thế nào tôi có thể chứng minh điều đó? Mặt khác, tôi đã thử xây dựng DFA hoặc NFA hoặc biểu thức chính quy và cũng thất bại trên các mặt trận đó, vậy tôi nên tiến hành như thế nào? Tôi muốn hiểu điều này nói chung, không chỉ cho ngôn ngữ được đề xuất.



2
Tại sao bạn không thể trả lời giải pháp của riêng bạn?
Yuval Filmus

1
@YuvalFilmus Có một sự chậm trễ cho người dùng có uy tín thấp để trả lời câu hỏi của riêng họ (8 giờ nếu đại diện <100).
Gilles 'SO- đừng trở nên xấu xa'

1
Có lẽ nên có một vòng lặp bổ sung tại ? q 50q5
Hendrik

1
Một ví dụ tương tự về hiện tượng này, nhưng đối với các chuỗi con "01" và "10" đã được thảo luận tại trang web chị em của chúng tôi Chứng minh một ngôn ngữ là thường xuyên hoặc không thường xuyên . Câu trả lời có một nhận xét tương tự như wece đưa ra trong nhận xét của mình: "Nghĩa là, một quá trình chuyển đổi 01 không thể được theo sau bởi một chuyển tiếp khác mà không có sự chuyển tiếp can thiệp ." 100110
Hendrik

Câu trả lời:


3

Một câu trả lời trích từ câu hỏi.

Như Hendrik Jan đã chỉ ra, cần có thêm một vòng lặp 0 tại q5.

tự động


đây là một công trình, không phải là bằng chứng
vzn

trong các lớp CS cho các vấn đề đơn giản đôi khi chỉ đưa ra các DFA, nhưng nó không chứng minh rằng nó chấp nhận chính xác ngôn ngữ. bạn phải [bằng cách nào đó] hiển thị cho mọi chuỗi đầu vào mà nó hoạt động chính xác. "làm thế nào nó hoạt động?"
vzn

2
q5q2

3

Đó là một câu hỏi mẹo. Hãy thử xây dựng một chuỗi chứa hai 001 và không chứa 100 và xem tại sao bạn không thể làm điều đó. Nếu X = "số 001" và Y = "số 100", thì X = Y hoặc X = Y ± 1.

Một khi bạn nhận ra mánh khóe, rất khó có khả năng ngôn ngữ là bất thường, và sau đó việc xây dựng một DFA khá đơn giản. Chỉ có 8 trạng thái chuyển tiếp nếu biểu tượng tiếp theo là 0/1:

State S0: Input is empty. -> S1/C0

State S1: Input is 0. -> C2/C0

State A: Y = X + 1, input ends in 00. -> A/C0

State B0: X = Y + 1, input ends in 1. -> B1/B0

State B1: X = Y + 1, input ends in 10. -> C2/B0

State C0: X = Y, input ends in 1. -> C1/C0

State C1: X = Y, input ends in 10. -> A/C0

State C2: X = Y, input ends in 00. -> C2/B0

Trạng thái ban đầu là S0 và S0, S1, C0, C1, C2 là các trạng thái chấp nhận.

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.