Lớp ngôn ngữ có thể nhận biết bằng các TM 3 trạng thái băng đơn


9

Có một thời gian tôi tò mò về Turing Machines với chính xác một băng và chính xác 3 trạng thái (cụ thể là trạng thái bắt đầu q0 , trạng thái chấp nhận qaccept và trạng thái từ chối qreject ). Lưu ý rằng tôi cho phép bảng chữ cái băng tùy ý (hữu hạn) (nghĩa là bảng chữ cái băng không bị giới hạn bằng với bảng chữ cái đầu vào).

Để thuận tiện, hãy gọi lớp ngôn ngữ có thể nhận biết bằng các TM như vậy C3. Tôi có một số câu hỏi về lớp học này:

  1. Đã C3 trước đây đã được nghiên cứu?
  2. C3 tiếng để bằng bất kỳ lớp học phức tạp / computability khác quan tâm?
  3. Là lớp C3 mạnh mẽ để thay đổi trong mô hình. Ví dụ: nếu các TM được sử dụng được phép giữ nguyên vị trí trong một lần chuyển tiếp (trái ngược với việc luôn luôn di chuyển sang trái hoặc phải) hoặc nếu băng được tạo thành vô hạn theo cả hai hướng thay vì chỉ sang phải, thì lớp đó ngôn ngữ có thể nhận biết bởi các TM 3 băng 1 trạng thái thay đổi?
  4. Làm thế nào để C3 liên quan đến lớp ngôn ngữ thông thường, Regular ? (Cụ thể, có phải mọi ngôn ngữ thông thường trong C3 ?)

Một tìm kiếm (khá khó hiểu) chỉ đưa ra bài đăng cs.stackexchange này có liên quan nhưng không trả lời câu hỏi của tôi và bài viết này , mà tôi chưa đọc đủ chi tiết để chắc chắn rằng nó quan tâm chính xác đến lớp C3 chứ không phải là một lớp tương tự nhưng khác nhau (bài báo tuyên bố chứng minh rằng (1) mọi ngôn ngữ trong C3 đều có thể quyết định và (2) rằng C3Regularlà các lớp riêng biệt với giao điểm không trống). Như đã chỉ ra trong các bình luận của bài viết cs.stackexchange, các loại TM này có thể được coi là automata di động rất đặc biệt, vì vậy có lẽ ai đó biết tài liệu về lý thuyết tự động tế bào có thể giúp ích.


1
Nếu bạn chỉ có một trạng thái không kết thúc và một băng (băng đầu vào), thì máy của bạn không thể nhớ bất cứ thứ gì nó đọc được. Vì vậy, nó có thể chấp nhận hoặc từ chối chính xác các đầu vào có chứa (các) ký hiệu xác định từ bảng chữ cái đầu vào.
David G

4
Máy không thể nhớ những gì nó đọc, nhưng nó có thể viết lại những gì nó đọc với một cái gì đó khác. Vì vậy, tôi không thực sự thấy lý do tại sao các đặc tính bạn đưa ra sẽ chính xác. (tức là tôi có thể nghĩ về một cỗ máy đơn giản chấp nhận và từ chối 011 ; ở đây hành vi không được xác định hoàn toàn bởi các ký hiệu nào trong đầu vào). 01011
Mikhail Rudoy

1
Bạn nói đúng, trực giác của tôi đã sai.
David G

Câu trả lời:


7

Quái thú cực kỳ mạnh , ví dụ chúng ta có thể xây dựng một TM chấp nhận mọi chuỗi của biểu mẫuM

LY={r0n1mAmn}

và từ chối mọi chuỗi của biểu mẫu

LN={r0n1mAm>n}

Ý tưởng là biến đầu tiên thành R và sau đó cho đầu đến giữa chuỗi sau đó thực hiện zig-zag "không trạng thái"; nếu nó đạt A trước R thì nó chấp nhận.rRAR

Mô tả không chính thức:

  • trên viết R và di chuyển sang phải (chuẩn bị từ chối)rR
  • trên viết c và di chuyển sang phải (di chuyển về phía trung tâm)0c
  • trên viết > và di chuyển sang trái (đánh dấu 1 , chuẩn bị cho lần vượt từ trái sang phải tiếp theo và sang trái)1>1
  • trên viết < và di chuyển sang phải (đánh dấu 0 , chuẩn bị cho giao lộ từ phải sang trái tiếp theo và đi sang phải)c<0
  • trên write > và đi sang trái (qua trái sang phải, chuẩn bị cho lần tiếp theo từ phải sang trái)<>
  • bật viết < và đi từ phải sang phải (qua phải từ trái sang phải, chuẩn bị cho lần tiếp theo từ trái sang phải)><
  • trên chấp nhận, trên R từ chốiAR
  • trên trống từ chốib

Thí dụ:

  :r 0 0 0 1 1 A
   R:0 0 0 1 1 A
   R c:0 0 1 1 A
   R c c:0 1 1 A
   R c c c:1 1 A
   R c c:c > 1 A
   R c c <:> 1 A
   R c c < <:1 A
   R c c <:< > A
   R c c:< > > A
   R c:c > > > A
   R c <:> > > A
   ...
   R c < < < <:A ACCEPT

Kỹ thuật zig-zag này được sử dụng trong cỗ máy Universal Turing 2 trạng thái nhỏ nhất (nó có 18 ký hiệu) được chế tạo bởi Rogozhin (Rogozhin 1996. TCS, 168 (2): 215 điều240)).

Cần chú ý một chút để chứng minh rằng dừng trên tất cả các đầu vào (chỉ cần lưu ý rằng nó từ chối đầu vào trống và tất cả các biểu tượng không dừng "hội tụ" thành < hoặc > không thể dẫn đến một vòng lặp vô hạn).M<>

Theo nhận xét của DavidG, ngôn ngữ được công nhận bởi M là một superset của L Y (tức là L YL ( M ) ) nhưng nó không chứa bất kỳ chuỗi từ L N (tức là L ( M ) L N = ) và - như nhận xét của MikhailRudoy - điều này đủ để chứng minh rằng L ( M ) không thường xuyên.L(M)MLYLYL(M)LNL(M)LN=L(M)

Thật vậy nếu là thường xuyên sau đó cũng L ( M ) { r 0 * 1 * Một } = L Y = { r 0 n 1 m Một | m n } sẽ thường xuyên (mà không phải là một ứng dụng đơn giản của bổ đề bơm); dẫn đến một mâu thuẫn.L(M)L(M){r01A}=LY={r0n1mAmn}

Vì vậy không thường xuyên .L(M)

... Nhưng giống như tất cả các siêu anh hùng có gót chân của Achille: nó thậm chí không thể nhận ra thông thường:C3

L={12n}

Không chính thức nó chỉ có thể sử dụng ngoài cùng ( b là ký hiệu trống) hoặc người theo chủ nghĩa đúng 1 b . . . như một cái móc và "mở rộng" theo hướng khác; nhưng Chấp nhận hoặc Từ chối cuối cùng không thể nằm trên biểu tượng trống của phía đối diện, do đó, nó chỉ có thể được thực hiện ở phần bên trong của 1 giây và bắt đầu từ một đầu vào đủ dài, nó có thể được "làm giả" kéo dài nó.b1...b1b...1

Cuối cùng - sau khi đọc bài viết - tôi có thể xác nhận rằng TM một trạng thái được mô tả trong nó khớp với lớp của bạn ... (vì vậy không có gì mới ở đây :-) ... và ngôn ngữ được tác giả sử dụng để chứng minh rằng nó có chứa ngôn ngữ không thường xuyên rất giống với ngôn ngữ của tôi.C3


1
Tôi rất thích câu trả lời (+1). Tuy nhiên, TM được mô tả chấp nhận một ngôn ngữ khác. Ví dụ, nó cũng chấp nhận các chuỗi rrrrr00011AAAA, r000000r0000r0000r00011A, r00011A11111111 (sau A có thể là bất cứ thứ gì thay vì các chuỗi) ...
David G

@DavidG: Bạn nói đúng! Tôi đã không nghĩ về nó quá nhiều ... Tôi cố gắng sửa nó.
Marzio De Biasi

4
Trên thực tế, thậm chí thông qua không phải là ngôn ngữ được công nhận bởi TM mô tả, ngôn ngữ mà chắc chắn là không thường xuyên: nếu TM đó là M , sau đó L ( M ) r 0 * 1 * Một = L do đó, một bằng chứng ngắn bởi sự mâu thuẫn (nếu L ( M ) là thường xuyên sau đó L ( M ) r 0 * 1 * Một = L cũng sẽ được thường xuyên; mâu thuẫn) có thể chứng minh rằng L ( M ) là không bình thường.LML(M)r01A=LL(M)L(M)r01A=LL(M)
Mikhail Rudoy

3
@MikhailRudoy: vâng! Tôi đã có cùng một ý tưởng. Tôi mở cstheory để chỉnh sửa câu trả lời, và thấy bình luận của bạn. Hãy xem liệu tôi có thể viết lại câu trả lời có tính đến nhận xét của bạn không ...
Marzio De Biasi

5

Tôi đã đánh giá thấp sức mạnh của ... thực ra nó không quá xa so với Hypercomputing !C3

(Tôi đăng bài này như một câu trả lời riêng biệt để rõ ràng hơn)

Chúng ta có thể xây dựng một nhà nước đơn Turing máy chấp nhận các chuỗi có dạng:M

LY={a0n1mRm2n}

và từ chối các chuỗi có dạng:

LN={a0n1mRm<2n}

Ý tưởng và cấu trúc tương tự như trong câu trả lời trước: biến đổi đầu tiên thành A , để đầu đến giữa chuỗi sau đó thực hiện zig-zag "không trạng thái", nhưng các chuyển đổi "thực hiện" một "bộ đếm nhị phân "trên nửa đầu theo cách này: trên Z (Không) bật đầu về bên phải và chuyển Z thành S (Một) vào lần tiếp theo đầu đến S , biến đổi thành a ) và để đầu di chuyển sang trái; khi đạt đến đầu ) chuyển đổi nó vào một Z . Nửa sau của chuỗi hoạt động giống như một bộ đếm đơn nguyên.aAZZSS))Z

Các chuyển đổi là:

  • trên viết R và di chuyển sang phải (chuẩn bị từ chối)rR
  • trên viết Z và di chuyển sang phải (di chuyển về phía trung tâm, đặt bộ đếm nhị phân thành 0 ..)0Z
  • trên viết > và di chuyển sang trái (đánh dấu 1 và giảm bộ đếm đơn nguyên, chuẩn bị cho giao cắt từ trái sang phải tiếp theo và quay trở lại bộ đếm nhị phân)1>1
  • bật viết < và đi sang phải (từ phải sang trái của nửa sau của chuỗi, chuẩn bị cho lần tiếp theo từ trái sang phải)><
  • trên write > và đi sang trái (qua trái sang phải của nửa sau của chuỗi, chuẩn bị cho lần tiếp theo từ phải sang trái)<>
  • trên viết S và di chuyển sang phải (chuyển đổi chữ số thành một và bật ngược về bên phải về phía bộ đếm đơn)ZS
  • trên viết ) và di chuyển sang trái (xóa chữ số và để đầu di chuyển sang trái như "vác", chuẩn bị cho phần tiếp theo từ trái sang phải của phần đầu tiên)S)
  • bật viết Z và di chuyển sang phải (đặt số 0 sẽ tạo ra độ nảy và để đầu di chuyển sang phải))Z
  • trên chấp nhận, trên R từ chốiAR
  • trên trống từ chốib

Thí dụ:

 :a 0 0 0 1 1 1 1 1 1 1 1 R
  A:0 0 0 1 1 1 1 1 1 1 1 R
  A Z:0 0 1 1 1 1 1 1 1 1 R
  ...
  A Z Z Z:1 1 1 1 1 1 1 1 R
  A Z Z:Z > 1 1 1 1 1 1 1 R
  A Z Z S:> 1 1 1 1 1 1 1 R
  A Z Z S <:1 1 1 1 1 1 1 R
  A Z Z S:< > 1 1 1 1 1 1 R
  A Z Z:S > > 1 1 1 1 1 1 R
  A Z:Z ) > > 1 1 1 1 1 1 R
  A Z S:) > > 1 1 1 1 1 1 R
  A Z S Z:> > 1 1 1 1 1 1 R
  ...
  A Z S:Z > > > 1 1 1 1 1 R
  ...
  A Z S S < < <:1 1 1 1 1 R
  ...
  A S:) ) > > > > 1 1 1 1 R
  ...
 :A ) ) ) > > > > > > > > R ---> ACCEPT

Cần chú ý một chút để chứng minh rằng dừng trên tất cả các đầu vào (chỉ cần lưu ý rằng nó từ chối đầu vào trống và tất cả các ký hiệu không tạm dừng "chu kỳ" thông qua ( , S , Z hoặc < , > không thể dẫn đến một vòng lặp vô hạn ).M(,S,Z<,>

Ngôn ngữ là một superset của L Y ( L YL ( M ) ) và nó không chứa các chuỗi từ L N ( L ( M ) L N = ).L(M)LYLYL(M)LNL(M)LN=

Giả sử rằng Context miễn phí , sau đó - bởi tính chất đóng CFL, giao nhau nó với ngôn ngữ thường xuyên { r 0 * 1 * Một } tạo ra một ngôn ngữ CF:L(M){r01A}

L(M){r01A}={a0n1mRm2n}=LY

Nhưng bằng một ứng dụng đơn giản của Bổ đề của Ogden cho CFL, chúng ta có thể chứng minh rằng : chỉ cần chọn một s L Y đủ dài và đánh dấu tất cả 0 s; ít nhất một số 0 có thể được bơm và bất kể số 1 s trong chuỗi bơm là bao nhiêu, sự tăng trưởng theo cấp số nhân của 2 n dẫn đến một chuỗi L Y ).LYCFLsLY01s2nLY

Vì vậy, không phải là bối cảnh miễn phí .L(M)

... Bây giờ tôi đang tự hỏi nếu đây là một câu trả lời "phát minh lại bánh xe" khác, hay đó là một kết quả mới (nhỏ).


Chà, ngôn ngữ ở đây có thể tính toán ở một lớp thấp như coNLOGTIME, vì vậy nó không chính xác yêu cầu siêu tính toán. (Trên thực tế, LY có thể được tách ra ngay cả trong DLOGTIME.)LN
Emil Jeřábek

@ EmilJeřábek: Tôi đã nói "không quá xa" ... đừng kìm hãm tham vọng của lớp học nhỏ bé đó ... :-)
Marzio De Biasi

2

Trong câu trả lời này, người ta cho rằng máy Turing có băng vô hạn cả hai chiều. Các yêu cầu không giữ cho băng vô hạn một chiều.

Trước tiên, tôi định nghĩa lớp ngôn ngữ là lớp của tất cả các ngôn ngữ có thể quyết định bằng máy Turing một băng có 3 trạng thái ( C 3 được định nghĩa là lớp ngôn ngữ có thể nhận biết bằng máy Turing một băng có 3 trạng thái). Tôi đã giới thiệu lớp C ' 3 vì trong câu trả lời ban đầu của tôi, tôi vô thức swaped các lớp C 3C ' 3 (tôi chỉ coi là lớp C ' 3 ).C3C3C3C3C3C3

Câu trả lời này là một bổ sung cho câu trả lời @MarzioDeBiasi. Ông chỉ ra rằng các lớp học C ' 3 không có trong CFL và do đó chứa ngôn ngữ khá thú vị. Tuy nhiên, như tôi sẽ hiển thị trong bài này, mỗi ngôn ngữ L trong C ' 3 có tài sản mà tập { 1 n ; n N{ 0 } } là trong L hoặc trong phần bù của nóC3C3LC3{1n;nN{0}}L . LCDo đóC3cũng rất hạn chế, ví dụ. nó chỉ chứa các ngôn ngữ đơn phương tầm thường , { ε } , { 1 n ; n N }{ 1 n ; n N{ 0 } } . Lớp C 3 chứa một số ngôn ngữ đơn nhất. Tuy nhiên, nó cho rằng nếu L C 31 nL cho n 1 , sau đó 1{}{ε}{1n;nN}{1n;nN{0}}C3LC31nLn1 với mọi m n . 1mLmnMột hệ quả đơn giản là không phải tất cả các ngôn ngữ thông thường là trong cũng không phải trong C ' 3 . Ngoài ra ngôn ngữ{1}không có trong C 3 cũng không phải trong C ' 3 .C3C3{1}C3C3


Đối với yêu cầu bồi thường (in đậm) về , nó là đủ để chứng minh rằng một băng Turing máy M với 3 tiểu bang mà luôn tạm dừng hoặc chấp nhận hoặc từ chối tất cả các chuỗi từ { 1 n ; n N{ 0 } } . Giả sử rằng một chuỗi có dạng 1 nC3M{1n;nN{0}}1n , , được trao cho M . Có ba trường hợp:nN{0}M

1) Khi đọc 1, nó chấp nhận hoặc từ chối.M

2) Khi đọc 1, nó di chuyển đầu sang trái. MNếu chúng ta muốn dừng lại ở đầu vào này, nó phải chấp nhận, từ chối hoặc di chuyển sang bên phải trên biểu tượng trống. Do đó, nó không bao giờ truy cập vào ô bên phải của ô ban đầu của băng. Nếu có, nó sẽ chạy mãi mãi ở đầu vào 1.M

3) Khi đọc 1, nó di chuyển đầu sang phải. MTheo sau bước, nội dung của băng là A n trong đó A là một số ký hiệu từ bảng chữ cái băng và đầu M nằm trên biểu tượng trống ngoài cùng bên trái của A cuối cùng . Nếu chúng ta muốn M dừng lại ở đầu vào này, nó phải chấp nhận, từ chối hoặc di chuyển sang bên trái trên biểu tượng trống. Như trong trường hợp 2), người đứng đầu M sẽ không bao giờ truy cập trực tiếp vào ô bên trái của A ngoài cùng bên phải . Nếu vậy, M sẽ chạy mãi mãi ở đầu vào 1.nAnAMAMMAM

Rõ ràng là trong cả ba trường hợp đều chấp nhận tất cả các chuỗi từ tập { 1 nM hoặc nó từ chối tất cả.{1n;nN{0}}


Bằng chứng của yêu cầu (in đậm) về tuân theo cùng một dòng như trên. Chúng tôi có một băng 3 trạng thái của máy Turing M chấp nhận một chuỗi 1 n đối với một số n 1 . Giả sử M được cho đầu vào 1 m cho m n . Chúng tôi phải chứng minh rằng M chấp nhận đầu vào này. Chúng tôi có 3 trường hợp:C3M1nn1M1mmnM

1) Khi đọc 1, nó chấp nhận.M

2) Khi đọc 1, nó di chuyển đầu sang trái. M chấp nhận đầu vào 1 n , nên nó phải chấp nhận hoặc di chuyển sang phải trên biểu tượng trống. Do đó, nó không bao giờ truy cập vào ô thứ n ở bên phải của ô ban đầu. Nếu có, nó sẽ chạy mãi mãi ở đầu vào 1 n .M1nn1n

3) Khi đọc 1, nó di chuyển đầu sang phải. MTheo sau các bước , nội dung của băng là A m trong đó A là một số ký hiệu từ bảng chữ cái băng và đầu của M nằm trên biểu tượng trống ngoài cùng bên trái của A cuối cùng . Vì M chấp nhận đầu vào 1 n , nên nó phải chấp nhận hoặc di chuyển sang trái trên biểu tượng trống. Như trong trường hợp 2), người đứng đầu M sẽ không bao giờ truy cập vào ô thứ n ở bên trái của A ngoài cùng bên phải . Điều này là do trên đầu vào 1 n , MmAmAMAM1nMnA1nM không truy cập vào ô trực tiếp bên trái của ô ban đầu, vì nó chứa biểu tượng trống và nếu nó đọc nó, nó sẽ chạy mãi mãi.

Rõ ràng là trong cả ba trường hợp đều chấp nhận tất cả các chuỗi từ tập { 1 m ; m n } .M{1m;mn}


Trước hết, không nơi nào trong câu hỏi nói rằng M phải dừng lại trên tất cả các đầu vào, do đó làm hỏng một số logic trong câu trả lời này. Ngoài ra, logic trong một số trường hợp không có ý nghĩa với tôi. Ví dụ: trong trường hợp 3, nếu M di chuyển sang trái trên cả trống và A, thì M sẽ truy cập vào ô trực tiếp bên trái của A bên phải (trái ngược với yêu cầu từ câu trả lời.)
Mikhail Rudoy

Đẹp; một cách khác để nhà nước đó là: nếu (ngôn ngữ unary) thì k  st  1 kL ( M ) L ( M ) = { 1 n | n > 0 } ...Σ={1}k s.t. 1kL(M)L(M)={1nn>0}
Marzio De Biasi

@MikhailRudoy, ​​trước tiên hãy làm rõ trường hợp 3: nếu đầu di chuyển sang trái trên cả biểu tượng A và trống, thì nó sẽ di chuyển sang trái mãi mãi và sẽ không dừng lại. Nếu bao giờ (sau 100 bước) truy cập vào ô trực tiếp bên trái của A bên phải, thì trong trường hợp đầu vào 1, nó không bao giờ dừng lại (trong trường hợp này, ô trực tiếp bên trái của A bên phải sẽ chứa ký hiệu trống).
David G

@MikhailRudoy, ​​đúng là tôi cho rằng một máy Turing phải tạm dừng. Tôi sẽ chỉnh sửa câu trả lời để bao gồm cả khả năng nó chạy mãi mãi. Kết quả tương tự.
David G

3
@MikhailRudoy: BTW vấn đề hận là có thể quyết định đối với 1 máy Turing của nhà nước; xem Gabor T. Herman, Vấn đề tạm dừng đồng phục cho các máy turing một trạng thái tổng quát . Mô hình được mô tả có một chút khác biệt so với mô hình của bạn: TM chấp nhận nếu kết thúc bằng cấu hình sinh tử (không có Chấp nhận / Từ chối); nhưng kết quả cũng áp dụng cho mô hình của bạn (chỉ dừng lại TM trên các biểu tượng dẫn đến trạng thái Chấp nhận / Từ chối thêm của bạn).
Marzio De Biasi
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.