Các ngôn ngữ thông thường không thể diễn đạt chỉ với 2 thao tác regex


12

Tôi nghĩ rằng tất cả các ngôn ngữ thông thường có thể được biểu thị bằng các biểu thức chính quy (nếu một ngôn ngữ là chính quy, nó có thể được biểu thị bằng regex), nhưng tôi đã được thông báo rằng bạn cần cả ba hoạt động thông thường (nối, liên kết và sao) cho điều đó để giữ

Ví dụ, tôi đã được thông báo rằng nếu tôi chỉ có thể sử dụng các hoạt động regex liên kết và liên kết (2 trên 3), sẽ có một ngôn ngữ thông thường mà tôi không thể mô tả chỉ với hai ngôn ngữ đó.

Tương tự với chỉ ngôi sao Kleene và công đoàn. Một số ví dụ về điều này là gì?

Câu trả lời:


19

Chỉ với sự kết hợp và kết nối, bạn không thể mô tả bất kỳ ngôn ngữ vô hạn nào. Sự kết hợp và nối chỉ có thể tạo ra nhiều chuỗi hữu hạn. Chỉ với công đoàn và các ngôi sao Kleene, bạn không thể mô tả một ngôn ngữ như , bởi vì không có cách nào để ghép một phát biểu chỉ một với một phát biểu chỉ b . Chỉ với phép nối và ngôi sao Kleene, bạn không thể mô tả một ngôn ngữ như L = { a , b } .L= ={mộtb}mộtbL= ={một,b}


3
.... và là không thể nếu không có liên minh. {một,b}
Raphael

Vậy tại sao tôi không thể mô tả L = {a, b} mà không kết hợp? Có phải vì chúng không thể được biểu diễn dưới dạng các phần tử riêng biệt với ngôi sao và phép nối? Nó chỉ có thể làm ab, bb, aba, vv?
dùng3295674

@ user3295674 Chính xác.
DylanSp

và một cái gì đó như L = {a *} sẽ không thể thực hiện được nếu chỉ kết hợp và ghép nối, phải không? Cảm ơn bạn rất nhiều!
dùng3295674

Tôi thậm chí không hiểu làm thế nào ngôi sao sẽ được xác định mà không có sự kết hợp có sẵn.
G. Bach

11

Một câu hỏi có lẽ thú vị hơn là chiều cao của ngôi sao . Câu trả lời khác đề cập rằng nếu bạn không thể sử dụng dấu sao thì bạn chỉ có thể tạo ngôn ngữ hữu hạn. Điều gì nếu bạn không được phép tổ sao (vì vậy cái gì đó như không được phép)? Điều gì nếu bạn chỉ được phép lồng sao sâu hai cấp? d cấp độ sâu? Nó chỉ ra rằng với mỗi d có các biểu thức chính quy có thể biểu thị trong lồng nhau d nhưng không có trong lồng d - 1 . Liên kết chứa một số ví dụ.(một*b*c)*dddd-1


4

Một*(mộtb)*(một(mộtb)*b)*(mộtmột)*

Nếu bây giờ người ta cho phép sử dụng ngôi sao, nhưng không phải ngôi sao lồng nhau , thì đó là một vấn đề mở (trong ít nhất 45 năm) để biết liệu người ta có thể có được tất cả các ngôn ngữ thông thường hay không. Câu hỏi này được gọi là vấn đề chiều cao sao tổng quát . Nó tương tự như vấn đề chiều cao của ngôi sao được đề cập bởi Yuval Filmus, với sự khác biệt là sự bổ sung hiện được cho phép.

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.