Chứng minh việc đóng cửa dưới sự đảo ngược của các ngôn ngữ được chấp nhận bởi min-heap automata


16

Đây là một câu hỏi tiếp theo của câu hỏi này .

Trong một câu hỏi trước đây về các máy trạng thái kỳ lạ , Alex ten Brink và Raphael đã đề cập đến khả năng tính toán của một loại máy trạng thái đặc biệt: min-heap automata. Họ đã có thể chỉ ra rằng tập hợp các ngôn ngữ được chấp nhận bởi các máy đó ( HAL ) không phải là tập hợp con cũng không phải là siêu ngôn ngữ của tập hợp các ngôn ngữ không ngữ cảnh. Với việc giải quyết thành công và quan tâm rõ ràng đến câu hỏi đó, tôi tiến hành hỏi một số câu hỏi tiếp theo.

Được biết, các ngôn ngữ thông thường được đóng trong nhiều hoạt động khác nhau (chúng tôi có thể giới hạn mình trong các hoạt động cơ bản như liên kết, giao nhau, bổ sung, khác biệt, ghép nối, sao Kleene và đảo ngược), trong khi các ngôn ngữ không ngữ cảnh có cách đóng khác nhau các thuộc tính (chúng được đóng lại dưới sự kết hợp, nối, sao Kleene và đảo ngược).

Là HAL đóng cửa dưới sự đảo ngược?


Việc sử dụng các máy như vậy là gì? Hay đây là một bài tập học thuật?
Dave Clarke

@DaveClark Vâng, chúng chủ yếu là một bài tập học thuật (theo như tôi biết, tôi chỉ làm chúng trong câu hỏi được liên kết). Tuy nhiên, họ có thể tính toán theo cách tương tự như các máy khác (DFA, TM, v.v.) có thể, vì vậy có thể có thể sử dụng chúng.
Patrick87

Câu hỏi này minh họa tại sao bạn muốn có ngữ pháp đi kèm với automata của bạn. Arr, bộ não của tôi!
Raphael

4
Tôi đã cố gắng chứng minh điều đó bằng cách sử dụng một ngôn ngữ có định dạng , nhưng mất quá nhiều thời gian và tôi đã bỏ cuộc. Có lẽ ý tưởng này sẽ giúp bất cứ ai. {xyy is a lexicographically sorted copy of x}
Ran G.

@RanG.: Tôi nghĩ rằng nên làm việc. Tôi rất vui khi trao tiền thưởng cho một câu trả lời chứng minh rằng ngôn ngữ nằm trong và đưa ra một lý do hợp lý rằng sự đảo ngược là không. HAL
Raphael

Câu trả lời:


4

Xét ngôn ngữ (trong đó # 0 ( x ) biểu thị số lượng không trong x ).

L×2={xyzx,y,z{0,1},#0(x)=#0(y) and |x|+|y|=z}
#0(x)x

Thật dễ dàng để quyết định bằng máy HAL - quan sát rằng máy cần theo dõi hai thuộc tính: số lượng không trong x so với y và độ dài của x , y (so với z ). Nó có thể đẩy a vào heap cho mọi số 0 mà nó nhìn thấy trong x (và sau đó bật cho bất kỳ số 0 nào nhìn thấy trong y ); ngoài ra, nó đẩy cho bất kỳ bit nào trong x , y (và sau đó bật lên cho bất kỳ bit nào của z ). Vì tất cả các s đều bị đẩy xuống đống, chúng không can thiệp vào số đếm. các L×2xyx,yz0x0y1x,y1z10 phục vụ như một dấu phân cách, và thực tế có thể bị bỏ qua.

Bây giờ, đặt , là ngôn ngữ đảo ngược. Nghĩa là, L = { z y x x , y , z { 0 , 1 } , # 0 ( x ) = # 0 (L=L×2R Chúng tôi sẽ chứng minh rằng không có máy HAL có thể quyết định L .

L={zyxx,y,z{0,1},#0(x)=#0(y) and |x|+|y|=z}
L

trực giác thì nên nghe theo. Như trên, máy phải theo dõi cả chiều dài của và số không trong x , y . Tuy nhiên, trong trường hợp này cần theo dõi chúng đồng thời . Điều này không thể được thực hiện thông qua một đống. Chi tiết hơn, sau khi đọczx,y , heap chứa thông tin về độ dài của | x | + | y | . trong khi đọc y , máy cũng phải giữ trong đống số không trong y . Tuy nhiên, thông tin này không thể can thiệp vào thông tin mà heap đã có trên độ dài chúng ta mong đợi xz|x|+|y|yyxđược. Rất trực quan, thông tin về số lượng số 0 sẽ "bên dưới" thông tin về độ dài của , và sau đó chúng ta không thể truy cập nó trong khi đọc x , hoặc thông tin "ở trên", hiển thị thông tin sau không thể truy cập được hoặc hai thông tin sẽ bị "trộn lẫn" và trở nên vô nghĩa.xx

Chính thức hơn, chúng ta sẽ sử dụng một số loại đối số "bơm". Nghĩa là, chúng ta sẽ mất một đầu vào rất dài và cho thấy "trạng thái" của máy phải lặp lại trong quá trình xử lý đầu vào đó, điều này sẽ cho phép chúng ta "thay thế" đầu vào sau khi máy lặp lại "trạng thái".

Đối với các bằng chứng chính thức, chúng tôi yêu cầu đơn giản hóa cấu trúc của máy HAL, cụ thể là nó không chứa một "vòng" của -transitions 1 . Với giả định này, chúng ta có thể thấy rằng với mỗi ký hiệu đầu vào mà máy xử lý, nội dung của heap có thể tăng / giảm tối đa c (đối với một số hằng số đủ lớn c ).ε1cc

Bằng chứng.
Giả sử quyết định L , và xem xét một thời gian đủ dài đầu vào (ví dụ, chiều dài 4 n , do đó | x | = | y | = n , | z | = 2 n , bỏ qua s sau đây). Để cụ thể, hãy sửa z , y và giả sử rằng # 0 ( y ) = n / 2 . Quan sát rằng có ( nHL4n|x|=|y|=n|z|=2nz,y#0(y)=n/2khác nhaux's sao chozyxL.(nn/2)xzyxL

Hãy xem xét nội dung của heap ngay sau khi xử lý . Nó chứa tối đa 3 n c c (trong đó mỗi ký hiệu là từ một bảng chữ cái cố định Γ ), theo giả định của chúng tôi. Tuy nhiên, có ( nzy3ncΓkhác nhaux'smà nên được chấp nhận (đó là lớn hơn đáng kể so với số lượng nội dung khác nhau có thể cho đống, như tăng này theo cấp số nhân, trong khi số khác nhau của đống tăng đa thức, xem dưới đây). Lấy hai đầu vàox1,x2nên được chấp nhận, sao cho các lần giữ sau:(nn/2)xsx1,x2

  1. Tiền tố có độ dài của x 1 có số 0 khác nhau so với tiền tố của x 2 có cùng độ dài.n/2x1x2
  2. Vào thời điểm máy đọc tiền tố có độ dài của phần x , heap trông giống nhau cho cả x 1x 2 , và đồng thời, máy ở trạng thái tương tự (điều này phải xảy ra với một số x 1 , x 2 , cho n đủ lớn , vì có nhiều hơn 2 0,8 n tùy chọn khác nhau 2 cho x 1 ,n/2xx1x2x1,x2n20.8n2 , và nhiều nhất ( 3,5 c n ) | gamma | | Qx1,x2các tùy chọn khác nhau cho nội dung heap và trạng thái 3 ).(3.5cn)|Γ||Q|3

Rõ ràng là máy phải chấp nhận từ , trong đó x p 1 là tiền tố của x có độ dài n / 2x s 2 là hậu tố của x 2 có cùng độ dài. Lưu ý rằng số lượng số không trong x p 1 x s 2 khác với số lượng số không trong x 1x 2 (nghĩa là từ số 0 ( yzyx1px2sx1pxn/2x2sx2x1px2sx1x2 ), do cách chúng tôi chọn x 1 x 2 , do đó chúng tôi đã đạt được một mâu thuẫn.#0(y)x1x2

Giả định này có làm hỏng tính tổng quát không? Tôi không nghĩ vậy, nhưng điều này thực sự cần một bằng chứng. Nếu ai đó thấy làm thế nào để vượt qua giả định thêm này, tôi rất muốn biết. 2 Hãy sửa x 1 để tiền tố của nó (có độ dài n / 2 có chính xác n / 4 số không). Hãy nhớ lại rằng sử dụngxấp xỉ của Stirling,chúng ta biết rằng nhật ký đó ( n1
2 x1n/2n/4nơiH()entropy funciton Binary. Kể từ khiH(1/4)0,81chúng ta có ( nlog(nk)nH(k/n)H()H(1/4)0.81chonđủ lớn. (nn/4)>20.8nn3Giả sử bảng chữ cáiΓ, có| Γ| nchuỗi khác nhau có độ dàin, vì vậy nếu đây là một ngăn xếp, chúng tôi đã bị vặn. Tuy nhiên, đẩy "01" thành một đống tương đương với đẩy "10" - heap chỉ lưu trữ phiên bản được sắp xếp của nội dung. Số lượng cácchuỗi đượcsắp xếpkhác nhauvề kích thước
3 Γ|Γ|nn ( n + 1n, cho một hằng| Γ| .(n+1|Γ|1)n|Γ||Γ|


Đẹp! Sẽ phải đọc phần chính thức một lần nữa sau. 1) Quảng cáo: Xem thêm tại đây . 2) Đối số bị phá vỡ nếu chúng ta cho phép lựa chọn không xác định của biểu tượng heap được trả về (trong số tất cả các biểu tượng có cùng mức độ ưu tiên).
Raphael
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.