Những ngôn ngữ được công nhận bởi các máy một quầy?


15

Các máy đếm có hai hoặc nhiều bộ đếm thường được hiển thị tương đương với máy Turing trong các khóa học về lý thuyết tính toán. Tuy nhiên, tôi chưa thấy một phân tích chính thức về ngôn ngữ nào có thể được nhận ra bởi một máy đếm. Những ngôn ngữ này có tương đương với các ngôn ngữ không ngữ cảnh (có thể do một số cấu trúc thông minh liên quan đến các thiết bị PDA), hoặc chúng là một loại ngôn ngữ hoàn toàn khác?


2
Cuốn sách này: books.google.co.uk/books/about/... bởi Jean Berstel đi vào khá nhiều về chiều sâu về ngôn ngữ một toa và các tập con khác của ngôn ngữ bối cảnh tự do, nhưng, nó có xu hướng rất khó khăn để thực sự theo dõi một bản sao của nó.
Sam Jones

1
@SamJones Thật vậy, cuốn sách nổi tiếng Chuyển tải và Ngôn ngữ không ngữ cảnh của Jean Berstel đã không còn xuất bản. Tác giả đã cung cấp một phiên bản điện tử của các chương quan trọng nhất của cuốn sách. www-igm.univ-mlv.fr/~berstel/LivreTransductions/ mẹo
Hendrik

Câu trả lời:


11

Một automata truy cập là một automata đẩy xuống chỉ với một biểu tượng được phép trên ngăn xếp (cộng với một biểu tượng dưới cùng cố định). Các ngôn ngữ được công nhận bởi một bộ đếm tự động tạo thành một tập hợp con chính xác của các ngôn ngữ tự do ngữ cảnh.

Ví dụ: automata 1 bộ đếm có thể nhận ra ngôn ngữ không thông thường, nhưng không thể nhận ra ngôn ngữ { a n b m a m b n } không có ngữ cảnh và có thể được nhận biết bởi bộ đếm 2 automata cũng vậy.{mộtnbn}{mộtnbmmộtmbn}

Nếu k-DCA là một automata k-counter tự động xác định và k-NCA là một automata k-counter không xác định , thì chúng ta có các thể vùi thích hợp sau:

DFA (ngôn ngữ thường xuyên) 1-DCA 2-DCA

1-DCA 1-NCA

Nếu chúng tôi không cho phép chuyển tiếp (chuyển sang thời gian thực ) sau đó k-DCA k'-DCA cho k <k'.ε

Chỉ để hoàn thành: có những ngôn ngữ không có ngữ cảnh nhưng không thể được nhận ra bởi bộ đếm tự động (k-DCA với k 2) (ví dụ { w w R } ) và các ngôn ngữ được nhận dạng bởi bộ tự động truy cập không có ngữ cảnh (đối với ví dụ { a n b n c n } ). Một bộ đếm tự động (đặc biệt là hai bộ đếm tự động) chỉ có thể được Turing hoàn thành nếu đầu vào và đầu ra của nó được mã hóa chính xác (xem mục nhập Wikipedia để biết chi tiết).{wwR}{mộtnbncn}


câu hỏi: (1) ngôn ngữ được công nhận bởi máy tự động truy cập không có ngữ cảnh, ý bạn là không thường xuyên? (2) có sự phân cấp cho DCA? Tại sao? Không phải là tất cả họ đều Turing tương đương (khi ). k2
Hendrik

(1) không, ý tôi là "không phải ngữ cảnh" (chỉ cần chọn một ngôn ngữ nhạy cảm ngữ cảnh được mã hóa đúng có thể được nhận ra bởi ak> 1 máy đếm) (2) bạn đúng, hệ thống phân cấp đề cập đến DCA thời gian thực (tôi đã sửa câu trả lời)
Vor

Tôi dường như nhớ rằng có sự khác biệt giữa các bộ đếm không bị ràng buộc theo cả hai hướng, và như vậy "dưới cùng" ở mức 0?
Raphael

7

Counter automata đã được nghiên cứu nhiều trong ngôn ngữ chính thức cổ xưa, trong bối cảnh lý thuyết AFA và AFL (họ trừu tượng của automata & ngôn ngữ) của các đội Mỹ và Pháp (Ginsberg, Greibach, ..., Nivat, Berstel, ...)

Counter automata thường được định nghĩa là automata trạng thái hữu hạn được trang bị bộ nhớ ngoài, bao gồm một số tự nhiên (hoặc một số nếu bạn có nhiều hơn một bộ đếm). Con số này có thể được tăng lên, giảm dần và (thường) được kiểm tra bằng không. Một tính toán bắt đầu bằng 0 và chỉ được chấp nhận khi bộ đếm bằng 0 ở cuối, có thể so sánh với chấp nhận ngăn xếp trống đẩy xuống.

Nếu một máy như vậy có ít nhất hai bộ đếm như vậy thì nó tương đương với một máy Turing, ngay cả trong trường hợp xác định. Bằng chứng về sự thật này là của Minsky và có thể được tìm thấy trong bài viết trên wikipedia mà bạn đã liên kết. Mô hình tất nhiên có liên quan đến máy đăng ký được đề cập trong cùng trang wikipedia. Các vấn đề mã hóa được đề cập trong bài viết trên wikipedia không quan trọng trong cài đặt này ở đây vì chúng tôi xem xét automata với một băng đầu vào (sau tất cả chúng tôi phải đọc một chuỗi đầu vào) trong khi wikipedia trên trang này chỉ giả sử các bộ đếm.

Automaton truy cập này có thể được coi là một loại đặc biệt của pda, chỉ có một biểu tượng ngăn xếp, đáy-of-stack (có nghĩa là không bao giờ di chuyển). Điều này cho phép máy tự động kiểm tra xem bộ đếm / ngăn xếp có bằng không hay không và hành động tương ứng.

Trong thực tế có ba loại automata truy cập. Vì vậy, kết hợp kết quả một cách khôn ngoan hoặc bạn kết thúc với mâu thuẫn (như tôi đã xảy ra trong quá khứ). Tất cả ba loại (hoàn toàn) được bao gồm trong các ngôn ngữ không ngữ cảnh cho một bộ đếm.

Loại trên lưu trữ một số nguyên (hoặc số tự nhiên, không quan trọng) và có thể kiểm tra nội dung của nó bằng không. Bộ đếm tự động lưu trữ một số nguyên nhưng không thể kiểm tra số không. Họ có thể rõ ràng đếm dưới 0 mặc dù. Máy đếm tự động mù một phần không thể kiểm tra số 0, nhưng lưu số tự nhiên. Nếu máy cố gắng xuống dưới 0 thì nó dừng lại mà không chấp nhận. Đây là một loại lưu trữ tự nhiên để mô hình lưới Petri. Nó cũng được sắp xếp theo kiểu PDA, bây giờ với một biểu tượng ngăn xếp đơn mà không có điểm đánh dấu dưới cùng đặc biệt (và do đó, vấn đề kiểm tra bằng 0: chúng ta chỉ bị kẹt khi bật phần tử ngăn xếp cuối cùng). Đôi khi, tên của các họ được xác định bởi các mô hình bộ đếm tương tác là OCL, ROCL và 1-BLIND.

(Dc)D={w{a,b}#a(w)=#b(w)}abc

Là một ví dụ về nghiên cứu có liên quan, Latteux etal có một bài viết không cần thiết "Gia đình của các ngôn ngữ một bộ đếm được đóng dưới Quotient" (thực ra là về ROCL).

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.