Có phải tất cả các ngôn ngữ không ngữ cảnh và thông thường có hiệu quả quyết định?


12

Tôi đã xem qua con số này cho thấy các ngôn ngữ thông thường và không có ngữ cảnh là tập hợp con (phù hợp) của các vấn đề hiệu quả (được cho là ). Tôi hoàn toàn hiểu rằng các vấn đề hiệu quả là một tập hợp con của tất cả các vấn đề có thể quyết định bởi vì chúng ta có thể giải quyết chúng nhưng có thể mất một thời gian rất dài.P

Tại sao tất cả các ngôn ngữ không ngữ cảnh và thông thường có hiệu quả có thể quyết định? Điều đó có nghĩa là việc giải quyết chúng sẽ không mất nhiều thời gian (ý tôi là chúng ta biết điều đó mà không cần thêm ngữ cảnh)?

nhập mô tả hình ảnh ở đây


3
Vì tò mò, bạn đã tìm thấy con số này ở đâu? Nó có thể giúp có bối cảnh để giải thích, bởi vì hiệu quả của Edward không phải là một khái niệm chính thức và những người khác nhau có thể sử dụng nó để chỉ những điều khác nhau.
Gilles 'SO- ngừng trở thành ác quỷ'

2
PP

@Raphael: Trong bối cảnh này, hiệu quả là một lớp các ngôn ngữ có thể quyết định trong thời gian đa thức. Tôi đã sử dụng "nó có thể mất một thời gian rất dài" cho các vấn đề có thể quyết định trái ngược với những vấn đề không thể giải quyết được mà chúng ta không thể tìm ra giải pháp trong bất kỳ khoảng thời gian hữu hạn nào.
Gigili

cách kỹ thuật chính xác để nói điều này là xác định xem wL trong đó w là một từ và L là ngôn ngữ trong P. tức là / còn gọi là "nhận dạng ngôn ngữ"
vzn

Câu trả lời:


15

Ôi(n)

Ôi(n3)

PEXPTTôiMEP


2
Bạn có thể muốn đề cập đến thuật toán nhân ma trận cho các ngữ pháp không ngữ cảnh có thời gian chạy tốt hơn và thuật toán này hoạt động rất hiệu quả (tuyến tính) trên bất kỳ ngữ pháp không ngữ cảnh thực tế nào: scazedirect.com/science/article/pii / 030439759190180A
Alex ten Brink

@AlextenBrink Tôi không nghĩ câu hỏi này yêu cầu độ chi tiết mịn hơn "đa thức hay không".
Raphael

1
Ôi(n)

1
Trong thực tế, đối với các ngôn ngữ thông thường, bạn thậm chí không cần tự động xác định. Bạn mô phỏng tất cả các tính toán song song bằng cách theo dõi tất cả các trạng thái theo cách đó bắt chước việc xây dựng quyền hạn.
Hendrik ngày 1 tháng

1
@Dave: tuyến tính theo độ dài của chuỗi đầu vào, đối với ngôn ngữ thông thường cố định, giống như các phức tạp khác được đưa ra ở đây.
Hendrik

1

Sàng lọc / "in đẹp" theo câu trả lời của DC: tất cả các CFL ở dạng Chomsky Bình thường có thể được phân tích cú pháp hiệu quả bằng thuật toán CYK và tất cả các CFL có thể được chuyển đổi thành CNF. Tuy nhiên, việc chuyển đổi CFL tùy ý sang CNF có thể mất không gian theo cấp số nhân trong trường hợp xấu nhất tùy thuộc vào một số thuật toán. (Tôi không biết thuật toán đảm bảo chuyển đổi thời gian P ở đây, có ai khác không? Người ta phải xem xét tất cả các trường hợp cạnh / tồi tệ nhất như CFL không đặc biệt hoặc các trường hợp mơ hồ .) Wikipedia nêu trên phần CNF Thứ tự chuyển đổi

|G|222|G|

Do đó, dường như có thể tồn tại các CFL không thể phân tích cú pháp một cách hiệu quả. Hầu hết các ngôn ngữ lập trình đều có thể chuyển đổi hiệu quả thành CNF (hoặc có lẽ hầu hết được định nghĩa trong CNF hoặc gần CNF), do đó phân tích cú pháp CFL cho các ngôn ngữ "điển hình" là "thực tế" trong P. Có lẽ có một số nghiên cứu hiện đại về sự phức tạp tồi tệ nhất này (nhưng không tìm các bài báo gần đây về nó trên tìm kiếm chữ thảo). Ví dụ, bài nghiên cứu cũ hơn (1973) của Greibach dường như cũng chỉ ra rằng hiệu suất trong trường hợp xấu nhất có thể không bị ràng buộc bởi P. xem ví dụ.

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.