Mô hình của bạn đã hoàn tất Turing (không giống như những gì tôi nghĩ trước đây), hãy xem câu trả lời của người dùng23013 một bản phác thảo bằng chứng (điều cốt lõi là bạn có thể mô phỏng hàng đợi và hàng tự động hoàn thành Turing).
Có một số cách làm suy yếu mô hình của bạn để giảm xuống tương đương với automata ràng buộc tuyến tính hoặc thấp hơn.
Ginsburg, Greibach & Harrison [1] đưa ra một cỗ máy gọi là "Stack Automaton" là một thiết bị PDA có hai khả năng bổ sung: 1. Đầu vào có thể di chuyển sang trái sang phải (để nó có thể quét các phần được nhìn thấy trước đó của đầu vào). 2. Đầu đọc / ghi trên ngăn xếp có thể quét qua ngăn xếp ở chế độ chỉ đọc, nhưng việc đẩy và bật vẫn chỉ xảy ra ở trên cùng. Lưu ý sự khác biệt chính ở đây với mô hình của bạn, điều này làm tôi bối rối trước đó: ngăn xếp chỉ có một đầu / con trỏ mà nó có thể di chuyển lên và xuống ngăn xếp, trong khi mô hình của bạn có hai, đủ để làm cho mô hình Turing của bạn hoàn tất. Họ cũng đưa ra một mô hình khác [2], trong đó đầu vào chỉ có thể được đọc từ trái sang phải, nhưng quét ngăn xếp chỉ đọc bổ sung vẫn có sẵn.
Trong Hình 2 của [1], họ đưa ra ngăn chặn (được chứng minh trong Phần 5 giống nhau, có lẽ với một số phần trong [2]) và các ngôn ngữ automata ngăn xếp không hai chiều được chứa trong R. Tuy nhiên, chúng tương đương với automata ràng buộc tuyến tính không điều kiện, vì vậy chúng nhận ra các ngôn ngữ nhạy cảm ngữ cảnh.
Automata stack stack hai chiều và không điều kiện và automata stack quyết định hai chiều dường như là tương đương nhau, tuy nhiên việc thay đổi đầu vào thành một chiều tạo ra sự khác biệt đáng kể. Tập hợp các ngôn ngữ automata ngăn xếp không điều kiện một chiều là một tập hợp con nghiêm ngặt của các ngôn ngữ nhạy cảm ngữ cảnh (tôi không thể đặt ngón tay của mình vào chính xác ở đâu) và tập hợp các automata ngăn xếp xác định một chiều (tương đương với mô hình của bạn ) ngôn ngữ là một tập hợp con nghiêm ngặt của tập hợp các ngôn ngữ automata ngăn xếp không điều kiện một chiều.
Một loại yếu hơn một lần nữa, nằm dưới đây là các automata ngăn xếp không xóa, chỉ có thể ghi vào ngăn xếp.
Hopcroft & Ullman chỉ ra rằng các ngôn ngữ được công nhận bởi automata ngăn xếp xác định không xóa tương ứng với D S P A C E (nlogn ) và automata ngăn không xóa không xóa tương ứng với D S P A C E (n2).
Phụ lục
Sau khi đào sâu hơn, các slide bài giảng này cho thấy rằng automata ngăn xếp không xác định một chiều yếu hơn hẳn so với phiên bản hai chiều, vì vậy nhận ra một cái gì đó ít hơnDS P A C E (nlogn ).
Tôi cũng tìm thấy thêm các bài báo Hopcroft & Ullman [4,5], có thể cung cấp thêm một vài manh mối, nhưng dường như nó sẽ tiếp tuyến vào thời điểm này. [5] ít nhất chứng minh một số tương đương của một số Stack Automata với LBA.
Người giới thiệu
- Seymour Ginsburg, Sheila A. Greibach và Michael A. Harrison, "Stack Automata và biên dịch". Tạp chí ACM, 14 (1): 172 Từ201, 1967.
- Seymour Ginsburg, Sheila A. Greibach và Michael A. Harrison, "Tự động ngăn xếp một chiều". Tạp chí ACM, 14 (2): 389 Hay418, 1967.
- John E. Hopcroft, Jeffrey D. Ullman, "Noneraing Stack Automata" . JCSS, 1 (2): 166 Từ186, 1967.
- John E. Hopcroft, Jeffrey D. Ullman, "Xác định ngăn xếp tự động và người vận hành đơn vị" , JCSS, 2: 1-12, 1968.
- John E. Hopcroft, Jeffrey D. Ullman, "Hai kết quả trên máy tự động ngăn xếp một chiều" , Hội nghị chuyên đề về chuyển đổi và lý thuyết tự động (SWAT - nhưng không phải là SWAT), 1967.
pTop == 0
vàpRead == 0
. Một phương phápReadCancel()
mà bộpRead = 0
cũng có thể là một ý tưởng tốt, vì nếu không thì hủy bỏ củaPop()
chopRead == pTop
có thể gây phiền nhiễu.