Một FSA có thể đếm?


11

Đây có thể là một câu hỏi ngớ ngẩn. Dường như rõ ràng rằng một FSA, vì nó là hữu hạn, chỉ có thể đếm số lượng ký hiệu trong chuỗi đầu vào của nó lên đến một số giới hạn bởi số lượng trạng thái của nó. Nhưng bây giờ, giả sử chúng tôi trang bị cho FSA khả năng đầu ra (ví dụ như in). Sau đó, sẽ rất dễ dàng để xây dựng một cỗ máy có khả năng in một biểu tượng cho mỗi biểu tượng mà nó đọc. Điều đó sẽ được tính là tính? Nếu không, tai sao không?

Thay vào đó, để đặt nó theo các FST: Tôi cho rằng không thể xây dựng một FST có khả năng ánh xạ một chuỗi có độ dài tùy ý thành biểu diễn nhị phân (tức là một số trong hệ thống số cơ sở 2) có độ dài. Nhưng tất nhiên, việc xây dựng một FST có khả năng ánh xạ một chuỗi có độ dài tùy ý thành một chuỗi các số 0 (hoặc một) có cùng độ dài. Nhưng điều đó có thể được tính là đếm, có thể không, vô hiệu hóa những gì FST đang làm là xây dựng một đại diện cho độ dài của đầu vào. Một đại diện hơi kỳ lạ, nhưng vẫn là một đại diện, phải không?


1
Vì vậy, bạn đang thực sự đặt câu hỏi "những gì đang đếm?" Điều đó không giống như khoa học máy tính đối với tôi. Sẽ là khoa học máy tính nếu câu hỏi của bạn là "đối với định nghĩa đếm này, liệu FSA có thể đếm được không?".
Sasho Nikolov

Câu trả lời:


8

Câu hỏi này hơi mơ hồ, vì vậy đây là một câu trả lời mơ hồ: Dịch unary sang unary không chính xác, vì máy không thực sự "biết" kích thước của đầu vào là "cuối cùng".

Bạn nhận ra điều này, tất nhiên, đó là lý do tại sao bạn đặt câu hỏi về thực tế rằng nó thực sự đang đếm.

Tuy nhiên, dịch từ unary sang nhị phân có vẻ như là một cách - hoạt động nâng cao hơn, bởi vì nó không chỉ liên quan đến việc đếm, mà còn liên quan đến số học.

Vì vậy, có lẽ khái niệm chính xác hơn để xem xét, thay vì đếm, là so sánh . Nghĩa là, đã cho hai số (đồng nhất) và , xác định xem .1n1mn=m

Khả năng thực hiện so sánh này là những gì tạo ra ngôn ngữ không chính quy nổi tiếng . Và việc NFA không thể đếm được là điều khiến ngôn ngữ này trở nên không thường xuyên.{anbn:n0}

Thật thú vị, ngôn ngữ này là một CFL. Và thực tế, mô hình automata tương ứng - PDA, có khả năng so sánh hạn chế.

Khi bạn nói về việc so sánh, các bộ chuyển đổi không còn cung cấp cho bạn bất kỳ sức mạnh bổ sung nào, vì vậy câu hỏi được giải quyết theo nghĩa đó.

Một lưu ý bổ sung: hoàn toàn không chính thức, khả năng so sánh hai số thường có thể được sử dụng để mô phỏng máy Minsky Machine 2 bộ đếm , tương đương với TM.


4

Số tự động trạng thái hữu hạn không được tính. Họ có thể làm những việc giống như vậy, nhưng họ không thể tính được. Họ thậm chí có thể thực hiện một số tính toán nhỏ (có dây cứng) (như xác định xem một số nhị phân có chia hết cho ba hay không ) nhưng điều đó không được tính.

Một câu chuyện nhỏ. Bạn đang ở trên một hình vuông lớn hình chữ nhật trong một thành phố nổi tiếng. Người dân địa phương cho bạn biết hình vuông thực sự là hình vuông. Nếu bạn có thể đếm, bạn kiểm tra xem số gạch ngang và dọc có khớp với nhau không bằng cách đếm gạch dọc theo các cạnh của hình vuông. Nếu bạn không thể đếm, bạn vẫn có thể xác minh khiếu nại: bắt đầu ở một góc và đi theo đường chéo. Nếu bạn chính xác đạt đến góc đối diện, bạn có một hình vuông.

Trong ví dụ của bạn các bài kiểm tra FSA liệu một chuỗi có một số lượng tương đương của 's và là bởi kiểm đếm những con số để hai băng đầu ra khác nhau. Một thiết bị khác phải thực hiện so sánh cuối cùng, trừ khi bạn có một mẹo để xử lý các chữ cái và theo cặp và bỏ qua cái này so với cái kia. Giống như trong quảng trường.abab

Bây giờ một mô hình chính thức hơn để so sánh với. Theo Định lý Chomsky, Schützenberger, mọi ngôn ngữ không ngữ cảnh là một nghịch đảo của sự chuyển đổi trạng thái hữu hạn của ngôn ngữ Dyck trên hai cặp ngoặc (không được nêu như thế trên wikipedia, nhưng bạn phải tin tôi). Bây giờ bộ chuyển đổi trạng thái hữu hạn có thể "chấp nhận" ngôn ngữ không ngữ cảnh như sau (đối với mỗi ngôn ngữ bộ chuyển đổi riêng của nó). Trên đầu vào chuyển đổi chuỗi thành chuỗi pops và đẩy của pda cho , sau đó kiểm tra xem kết quả có phải là hành vi đẩy xuống hay không, nghĩa là kết quả là một chuỗi trongLTD2L=T1(D2)TLTLD2 . (Chi tiết kỹ thuật bị bỏ qua, nhưng điều này được khẳng định theo Định lý Ch-Sch: người ta có iff )wT1(D2)T(w)D2

Quan điểm của tôi ở đây là một số "tính toán" được thực hiện bởi đầu dò nhưng nhiều sức mạnh bị ẩn trong thử nghiệm với . Tương tự như ví dụ của bạn, trong đó hai chữ cái được sắp xếp trên hai băng. D2


Tôi có thể xây dựng một DFA có giá trị từ đến (Đối với cố định ) hoặc thậm chí trong . Đó là nhiều hơn bất kỳ máy tính người hoặc thực sự quản lý. Bạn sẽ gọi đếm là gì? 2 n ! n N02n!nN
Raphael

@Raphael. Chắc chắn rồi. Và dễ dàng số lượng lớn hơn thế. Ngừng dạy rằng các ngôn ngữ không ngữ cảnh mạnh hơn các ngôn ngữ thông thường: chúng giống nhau (ít nhất là đối với các chuỗi có độ dài tối đa là ). Đùa thôi. Nhắc đến ngôn ngữ máy tính thực sự như thế làm cho bất cứ trạng thái hữu hạn nào phải không? Máy tự động hữu hạn không được tính! Họ chỉ phân biệt một số lượng hữu hạn các trạng thái, mặc dù con số đó có thể rất lớn. 2n!
Hendrik ngày

Nhưng cách mà các FSA thường được trình bày, họ chỉ "được phép" nói "có" (được chấp nhận) hoặc "không" (không được chấp nhận). Vì điều này, không ai có thể xây dựng một FSA được tính. Nếu chúng ta cho phép nó báo cáo (ví dụ như in) trạng thái (số trạng thái) khi nó kết thúc, thì nó có thể đếm, nhưng chỉ tối đa một giới hạn được đưa ra bởi số lượng trạng thái. Nhưng nếu DO chúng ta cho phép nó in, thì việc xây dựng một FSA trạng thái duy nhất in (giả sử) 1 mỗi lần nó đọc một ký hiệu từ chuỗi đầu vào, do đó báo cáo số đếm trong biểu diễn kiểm đếm. Có gì sai với ý tưởng này?
Torbjorn

Và nếu chúng ta quên báo cáo / in ấn và thay vào đó hãy nghĩ về các biểu diễn bên trong, thì một FSA có thể đếm các ký hiệu trong một chuỗi, nhưng không phải là một chuỗi dài tùy ý. FSA trạng thái duy nhất sau đó tất nhiên không thể tính được.
Torbjorn

Hendrik, tôi nghĩ chúng ta đang "tranh luận" một vấn đề ngữ nghĩa: đối với tôi, "đếm" có thể là "từ một đến mười" mà FA có thể làm. Chẳng hạn, khi giao nhau với Büchi-automata, chúng tôi đếm xem có bao nhiêu (của , cố định) automata đã đạt đến trạng thái cuối cùng trong khi những người khác tiến hành. Do đó, tôi nghĩ rằng tuyên bố "không thể đếm" là quá mạnh. Câu lệnh đúng (duy nhất) là "không thể đếm xa hơn một hằng số". k
Raphael

1

@Shaull: Cảm ơn câu trả lời của bạn! Tôi chưa quen với StackExchange và không biết cách nhận xét về câu trả lời, vì vậy tôi chọn viết câu trả lời thay vào đó, với hy vọng rằng tôi có thể được tha thứ.

Hmm, đối với tôi, một người chăn cừu đếm cừu của mình bằng cách viết một dấu trên một tờ giấy cho mỗi con cừu mà anh ta nhìn thấy, hoặc một tù nhân đếm những ngày anh ta ở tù bằng cách viết dấu trên tường, đang đếm. Tại sao n không đánh dấu trên một tờ giấy hoặc trên tường được tính là đại diện của số n? Đó không phải là những gì được gọi là đại diện kiểm đếm? AFAICS hoàn toàn không thua kém (nói) một biểu diễn nhị phân, ngoại trừ việc nó sử dụng nhiều không gian hơn.

Tôi cho rằng với bạn sau đó, "biết" có nghĩa là nó có một đại diện bên trong của số đếm cuối cùng. Sau đó, tất nhiên, rõ ràng là một FSA của FST không thể tính được độ dài của một chuỗi tùy ý. Nhưng nếu chúng ta không đòi hỏi kiến ​​thức theo nghĩa đó, nhưng chỉ yêu cầu rằng FSA hoặc FST sẽ có thể cho kết quả biết với người quan sát bên ngoài, thì đối với tôi, việc trình bày số đếm theo định dạng kiểm kê sẽ ổn.

Hơn nữa, nếu một FSA được trang bị cả đầu vào và đầu ra gia tăng, thì về nguyên tắc, nó có thể sử dụng môi trường bên ngoài của nó như một bộ nhớ đọc / ghi và do đó mạnh mẽ như một máy Turing. Đúng?

Cảm ơn đã đưa ra trường hợp so sánh. Bây giờ, có vẻ như là trường hợp nếu chúng ta nâng yêu cầu của biểu diễn bên trong và chúng ta chỉ yêu cầu máy có thể đưa ra kết quả cho người quan sát bên ngoài, thì chúng ta có thể dễ dàng xây dựng một FSM có thể tạo ra một loại trình bày đồ họa của kết quả. Giả sử FSM, khi đọc "aaaaaabbbbbb" đã viết

000000
000000

sau đó, vì các thanh có cùng độ dài, nên FSM đã chấp nhận chuỗi "aaaaaabbbbbb". Hai thanh có cùng độ dài có nghĩa là "có", độ dài khác nhau có nghĩa là "không".

Tôi đoán tôi đang bẻ cong các quy tắc, nhưng đó là điều tôi muốn vì tôi quan tâm đến các giả định ngầm ít nhiều đang được thực hiện trong lĩnh vực ngôn ngữ học toán học.


Có lẽ "mô hình" của bạn có thể được xem là một FSA với số hữu hạn (bằng kích thước bảng chữ cái) của các bộ đếm chỉ ghi cộng với trạng thái cuối cùng đặc biệt có thể so sánh hai (hoặc nhiều hơn) chúng và chấp nhận hoặc từ chối nếu chúng bằng nhau hay không. " " như vậy mạnh hơn FSA; nhưng nó có một số rắc rối khi nhận ra những thứ như tức là thực hiện số học. { a n | n  là số nguyên tố  }FSAWOC{an|n is prime }
Vor

Tôi nghĩ rằng sự khác biệt giữa các ví dụ bạn đưa ra và đầu ra FST là người chăn có thể đọc các dòng sau khi chúng được viết, trong khi một FSM thì không thể. Cùng đi để so sánh.
Shaull

Bạn có thể bình luận bằng cách nhấp vào liên kết "thêm bình luận" bên dưới bất kỳ bài đăng nào.
Raphael

Bất kỳ FSA nào được xây dựng để đếm một đàn đều có thể đếm đàn đó. Không có FSA được xây dựng có thể đếm bất kỳ đàn nào. Câu hỏi cơ bản là liệu người chăn chỉ biết đếm đủ xa để ít nhất là đếm đàn của mình hay có thể sử dụng toàn bộ các số tự nhiên. Theo kinh nghiệm của tôi, con người chúng ta phải thực hiện quá trình chuyển đổi giữa hai khả năng tại một số điểm trong giáo dục toán học của chúng ta.
rebierpost

1

Các FSM có thể "đếm" trong phạm vi hữu hạn / số bước được biểu thị bằng các chuyển đổi trạng thái. tuy nhiên, họ không thể đếm qua một số bước hữu hạn.

có một ý nghĩa trong đó một máy giống như FSA có thể đếm. một cỗ máy liên quan chặt chẽ được gọi là Bộ chuyển đổi trạng thái hữu hạn . đầu dò thực sự có thể được tính theo nghĩa đầu vào và đầu ra "đường ống". một bộ chuyển đổi đơn có thể lấy một chuỗi đầu vào (giả sử là nhị phân) và "chuyển đổi" nó thành một chuỗi đầu ra được tăng lên. sau đó một "chuỗi" các bộ chuyển đổi đếm ngược (giống hệt nhau), mỗi bộ chuyển đổi đầu vào của nó tăng thêm 1 và xuất ra nó. nó cũng giống như một "thuật toán phát trực tuyến" thô sơ .


chi tiết hơn: bộ chuyển đổi có thể tăng làm việc theo thứ tự "lsb" thành "msb" tức là "bit sig ít nhất" thành "hầu hết bit sig" bằng cách sử dụng logic tương tự như bộ cộng đầy đủ EE .
vzn

đầu dò trạng thái hữu hạn fyi dường như chưa được nghiên cứu rất nhiều. có một ứng dụng thú vị khác cho phỏng đoán collatz trong việc tạo ra một máy tính toán lặp. Bất cứ ai quan tâm đến lý thuyết / thảo luận thêm, hãy liên hệ với tôi trong trò chuyện hoặc trên blog của tôi .
vzn
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.