Sự khác biệt giữa tính không xác định và tính ngẫu nhiên là gì?
38
Gần đây tôi đã nghe điều này -
"Một máy không xác định không giống như một máy xác suất. Nói một cách thô thiển, một máy không xác định là một máy xác suất trong đó xác suất chuyển tiếp không được biết đến".
Tôi cảm thấy như thể tôi nhận được điểm nhưng tôi thực sự không. Ai đó có thể giải thích điều này cho tôi (trong bối cảnh của máy móc hoặc nói chung)?
Chỉnh sửa 1:
Chỉ cần làm rõ, trích dẫn là trong bối cảnh tự động hữu hạn, nhưng câu hỏi có ý nghĩa đối với máy Turing cũng như những người khác đã trả lời.
Ngoài ra, tôi nghe mọi người nói - "... sau đó tôi chọn đối tượng x từ tập hợp không xác định". Tôi đã từng nghĩ chúng có nghĩa - "ngẫu nhiên". Do đó nhầm lẫn.
Trong khoa học máy tính, đôi khi người ta sử dụng thuật ngữ "xác định" để nhấn mạnh rằng thuật toán không ngẫu nhiên. Do đó nhầm lẫn: xác định có nghĩa là không ngẫu nhiên, nhưng không xác định không có nghĩa là ngẫu nhiên.
Điều quan trọng là phải hiểu rằng các nhà khoa học máy tính sử dụng thuật ngữ "không xác định" khác với cách nó thường được sử dụng trong các ngành khoa học khác. Một TM không xác định thực sự mang tính quyết định theo nghĩa vật lý - nghĩa là, một NTM luôn tạo ra cùng một câu trả lời trên một đầu vào nhất định: nó luôn chấp nhận hoặc luôn từ chối. Một TM xác suất sẽ chấp nhận hoặc từ chối đầu vào với một xác suất nhất định, vì vậy trong một lần chạy, nó có thể chấp nhận và trên một lần khác, nó có thể từ chối.
Chi tiết hơn: Tại mỗi bước trong tính toán được thực hiện bởi NTM, thay vì có một quy tắc chuyển tiếp duy nhất, có nhiều quy tắc có thể được gọi. Để xác định xem NTM có chấp nhận hoặc từ chối hay không, bạn xem xét tất cả các nhánh có thể tính toán. (Vì vậy, nếu có, chính xác là 2 lần chuyển đổi để lựa chọn ở mỗi bước và mỗi nhánh tính toán có tổng số N bước, thì sẽ có tổng số lần cân nhắc.) Đối với một NTM tiêu chuẩn, một đầu vào là được chấp nhận nếu bất kỳ nhánh tính toán nào chấp nhận.2N
Phần cuối cùng của định nghĩa này có thể được sửa đổi để có được các loại máy Turing khác có liên quan. Nếu bạn quan tâm đến các vấn đề có giải pháp duy nhất, bạn có thể chấp nhận TM nếu chính xác một chi nhánh chấp nhận. Nếu bạn quan tâm đến hành vi đa số, bạn có thể xác định TM chấp nhận nếu hơn một nửa các chi nhánh chấp nhận. Và nếu bạn ngẫu nhiên (theo một số phân phối xác suất) chọn một trong những nhánh có thể và chấp nhận hoặc từ chối dựa trên những gì nhánh đó làm, thì bạn đã có một TM xác suất.
Kurt, bạn có thể vui lòng giải thích làm thế nào con số 2 ^ N được đưa ra. Nếu với mỗi nhánh có 2 khả năng và có N giai đoạn như vậy để đạt được giải pháp thì sẽ không làm cho nó 2 ^ (N + 1) -1. Tôi đang cố gắng nghĩ về nó như một biểu đồ và tôi có thể sai. Bạn có thể vui lòng giải thích làm thế nào bạn đến số 2 ^ N. Cảm ơn bạn.
Chà, nếu bạn biểu diễn tính toán dưới dạng cây, với gốc đại diện cho cấu hình ban đầu là bước 0, thì sau N bước bạn đã có 2 ^ N lá và cái mà tôi gọi là một nhánh là đường dẫn từ gốc đến một chiếc lá. Đúng là bạn sẽ có tổng số 2 ^ (N + 1) -1 nút, đại diện cho tất cả các cấu hình có thể tại một số điểm trong tính toán. Tôi hy vọng thuật ngữ của tôi là ổn!
Tất cả các khoa học sử dụng cùng một định nghĩa của thuyết không thuyết phục thống nhất về khái niệm entropy không giới hạn. Các kết quả không thể đoán trước trong tất cả các ngành khoa học là do không thể liệt kê một tiên nghiệm tất cả các kết quả đầu ra có thể có của một thuật toán (vì nó chấp nhận các trạng thái không giới hạn, tức là lớp phức tạp NP. Chỉ định một đầu vào cụ thể để quan sát xem nó có dừng lại hay không và lưu ý rằng kết quả là idempotent là tương đương trong các ngành khoa học khác để giữ phần còn lại của entropy của vũ trụ trong khi lặp lại cùng một thay đổi trạng thái. Điện toán cho phép cách ly entropy này, trong khi khoa học tự nhiên thì không.
@DavidR Richby xin lỗi David. Đi đến chủ đề khác và thấy rằng tôi đã bác bỏ bạn một cách thành công. Bạn có thể cố gắng bác bỏ logic tôi đã trình bày ở đó. Chỉ cần khẳng định mà không có bằng chứng và giải thích sẽ không mang lại cho bạn bất kỳ sự thật nào.
Trong ngữ cảnh của Turing Machines, "không xác định" thực sự có nghĩa là "song song". Một thuật toán ngẫu nhiên có thể khám phá ngẫu nhiên các nhánh của cây tính toán của máy Turing không xác định, nhưng máy Turing không xác định có thể khám phá chúng - đồng thời, đó là thứ mang lại sức mạnh cho nó.
Trong các bối cảnh khác (tôi không thể nói từ trích dẫn của bạn nếu bạn đang nói về Turing Machines), một thuật toán ngẫu nhiên có thể cố tình sử dụng tính ngẫu nhiên, trong khi thuật toán mà bạn muốn xác định có thể kết thúc bằng cách không xác định do lỗi ...
Đáp lại chỉnh sửa của bạn, khi mọi người nói "chọn một yếu tố từ một tập hợp không xác định", có thể chúng chỉ có nghĩa là "ngẫu nhiên". Tuy nhiên, cũng có thể họ có nghĩa là "kỳ diệu chọn phần tử -right- từ tập hợp". Một cách phổ biến để xem các máy turing không xác định là trước tiên họ "đoán" một cách kỳ diệu một giải pháp, sau đó kiểm tra tính chính xác của nó. Tất nhiên, bạn có thể xem dự đoán ma thuật này chỉ là kết quả của việc kiểm tra tất cả các khả năng song song.
Liên quan đến "kỳ diệu chọn đúng yếu tố": Khi từ 'nondeterminism' được sử dụng theo nghĩa này, đôi khi người ta hội đủ điều kiện với 'thiên thần'. Ngoài ra còn có "ác quỷ" không thuyết phục. (Tuy nhiên, như bạn nói, điều cốt lõi là những thứ đó xảy ra song song.)
Có một số bối cảnh khác nhau, trong đó, bộ phận xác định và bộ phận không xác định của người Hồi giáo có nghĩa là ba điều khác nhau. Trong bối cảnh có nhiều người tham gia, chẳng hạn như bảo mật và đồng thời, trực giác thường là một cái gì đó như:
có nghĩa là quyết định có nghĩa là tôi có thể chọn
không mang tính quyết định có nghĩa là người khác có thể chọn người khác
ngẫu nhiên có nghĩa là không ai được chọn
Một vài ví dụ:
[đồng thời, ngẫu nhiên] Hãy xem xét một giao thức mạng như Ethernet , nơi nhiều nút có thể gửi tin nhắn bất cứ lúc nào. Nếu hai nút gửi tin nhắn trong khoảng thời gian rất gần nhau, có một xung đột: các tin nhắn trùng nhau và không thể đọc được. Nếu xảy ra xung đột, cả hai nút phải thử gửi lại tin nhắn sau. Hãy tưởng tượng bạn đang viết đặc tả của Ethernet. Làm thế nào để bạn xác định độ trễ giữa các lần thử lại? (Sự chậm trễ tốt hơn nên khác đi hoặc sẽ lại xảy ra va chạm!)
xác định: xác định một thuật toán mà cả hai nút phải sử dụng. Điều này không được thực hiện cho Ethernet vì để đưa ra các kết quả khác nhau, thuật toán sẽ phải ưu tiên một nút so với nút khác (đối với bất kỳ nội dung thông báo đã cho nào) và Ethernet tránh làm điều đó.
không xác định: hãy để mỗi người thực hiện quyết định. Điều này là không tốt vì những người triển khai trên cả hai nút có thể chọn cùng một thuật toán.
ngẫu nhiên: mỗi nút phải chọn một giá trị độ trễ ngẫu nhiên (với phân phối được chỉ định). Đó là cách nó hoạt động. Có một xác suất nhỏ rằng hai nút chọn cùng một độ trễ và có một xung đột khác, nhưng xác suất thành công tăng không theo triệu chứng đối với 1 khi số lần thử lại tăng lên.
[concurrency, nondeterministic] Bạn viết một thuật toán đồng thời. Trong một tình huống cụ thể, có thể có một bế tắc. Làm thế nào bạn có thể ngăn chặn bế tắc xảy ra? Điều đó phụ thuộc vào loại lịch trình môi trường đồng thời của bạn có.
xác định: bộ lập lịch luôn chuyển đổi giữa các luồng tại một số điểm được xác định rõ, ví dụ chỉ khi mã mang lại một cách rõ ràng. Sau đó, bạn chỉ cần sắp xếp cho các chủ đề không mang lại vào thời điểm xấu.
ngẫu nhiên: bộ lập lịch được đảm bảo để chuyển chủ đề ngẫu nhiên. Sau đó, một chiến lược khả thi có thể là phát hiện bế tắc nếu nó xảy ra và khởi động lại thuật toán từ đầu.
không xác định (hầu hết các trình lập lịch đều như thế này): bạn không biết khi nào trình lập lịch sẽ chuyển giữa các luồng. Vì vậy, bạn thực sự phải tránh bế tắc. Nếu bạn đã cố gắng phát hiện và khởi động lại như trong trường hợp ngẫu nhiên, bạn sẽ gặp rủi ro là bộ lập lịch sẽ lên lịch cho các chủ đề của bạn theo cùng một cách lặp đi lặp lại.
[bảo mật, ngẫu nhiên] Bạn viết một ứng dụng với một dấu nhắc mật khẩu. Làm thế nào để bạn mô hình một kẻ tấn công?
xác định: kẻ tấn công luôn thử cùng một mật khẩu. Đó không phải là một mô hình hữu ích của một kẻ tấn công - những kẻ tấn công không thể dự đoán theo định nghĩa.
không đặc biệt: kẻ tấn công biết mật khẩu của bạn bằng cách nào đó và nhập nó. Điều này cho thấy giới hạn của mật khẩu: chúng phải được giữ bí mật. Nếu mật khẩu của bạn là bí mật, kẻ tấn công này là không thực tế.
ngẫu nhiên: kẻ tấn công thử mật khẩu ngẫu nhiên. Trong trường hợp này, đây là một mô hình thực tế của kẻ tấn công. Bạn có thể nghiên cứu mất bao lâu để kẻ tấn công đoán mật khẩu của bạn tùy thuộc vào phân phối ngẫu nhiên mà anh ta sử dụng. Một mật khẩu tốt là một mật khẩu mất nhiều thời gian cho bất kỳ phân phối thực tế nào.
[bảo mật, không đặc biệt] Bạn viết một ứng dụng và bạn lo lắng rằng nó có thể có lỗ hổng bảo mật. Làm thế nào để bạn mô hình một kẻ tấn công?
quyết định: kẻ tấn công biết tất cả mọi thứ bạn biết. Một lần nữa, đó không phải là mô hình hữu ích của kẻ tấn công.
ngẫu nhiên: kẻ tấn công ném rác ngẫu nhiên và hy vọng sẽ làm cho chương trình của bạn bị sập. Điều đó đôi khi có thể hữu ích (làm mờ ), nhưng kẻ tấn công có thể thông minh hơn thế.
không xác định: nếu có lỗ hổng, kẻ tấn công sẽ tìm thấy nó cuối cùng. Vì vậy, bạn nên làm cứng ứng dụng của mình (tăng yêu cầu về trí thông minh cho kẻ tấn công; lưu ý rằng vì đó là yêu cầu về trí thông minh chứ không phải là yêu cầu tính toán, nên điều này được coi là không xác định cho đến khi AI xuất hiện), hoặc tốt hơn, chứng minh rằng không có lỗ hổng bảo mật và do đó kẻ tấn công như vậy không tồn tại.
Sửa lỗi xoay quanh từ còn thiếu chứng minh trong các phát biểu của bạn: Xác định là Cẩn tôi có thể chứng minh tôi đang chọn (nghĩa là chỉ định đầy đủ kết quả chấm dứt trên đầu vào của tôi trong lớp phức tạp P), Nondeterministic là tôi không thể chứng minh tôi đang chọn (tức là bằng chứng chấm dứt là không thể giải quyết được trong lớp phức tạp NP), và ngẫu nhiên là tôi có thể chứng minh rằng tôi có thể chọn thời gian (tức là lớp phức tạp ZPP).
@ShelbyMooreIII Tôi không hiểu bạn đang ở đâu. Nói chung, chủ nghĩa quyết định không phải là về việc chứng minh rằng một cái gì đó thực sự mang tính quyết định, hoặc về một số vấn đề nằm trong một lớp phức tạp nhất định. Hơn nữa, các lớp phức tạp không phải là về bản thân hệ thống có thể chứng minh điều gì đó về tính quyết định của nó (hầu hết các vấn đề thậm chí không có khái niệm chứng minh bên trong hệ thống!).
Nondeterminism luôn là kết quả của entropy không giới hạn, do đó, một cách khác để nói rằng tôi không thể chứng minh rằng tôi đang chọn kết quả (vì tôi không thể chứng minh sự lựa chọn của mình sẽ chấm dứt). Tất cả những gì tôi có thể làm là cố gắng, điều đó có nghĩa là tôi phải liệt kê mọi lựa chọn tôi muốn đưa ra trước khi tôi biết liệu nó có chấm dứt hay không. Trong khi với tính xác định, tôi có thể chứng minh rằng tôi chọn kết quả bcz thì nó phải chấm dứt. Ngẫu nhiên là nơi tôi có thể chứng minh rằng tôi chỉ có thể chọn một lượng thời gian ngẫu nhiên vì một số entropy không nằm trong tầm kiểm soát của tôi. Nếu tôi biết số tiền không thuộc quyền kiểm soát của mình, tôi có thể chứng minh chính xác số liệu thống kê.
Đồng ý rằng nó không phải là lớp NP phức tạp làm phát sinh chủ nghĩa không điều kiện, thay vào đó NP là một sự phụ thuộc. Turing-Complete là một ví dụ về thuyết không điều kiện. Xin vui lòng xem nhận xét của tôi dưới câu trả lời của Kurt, cũng như câu trả lời của tôi về chủ đề liên quan . Quan điểm của tôi với bạn là về những gì chính xác được chứng minh & không thể đoán trước đối với các thuật ngữ xác định, không xác định và ngẫu nhiên. Đó là tất cả về entropy (& không phải về âm trầm )
Giả sử bạn phải chọn một cánh cửa để mở trong số 10000 cánh cửa (giả sử có một giải thưởng đằng sau một trong những cánh cửa). Chọn ngẫu nhiên có nghĩa là bạn sẽ chọn một trong số 10000 cửa và nhập nó. Nếu có một giải thưởng chỉ sau một cánh cửa, rất có thể bạn sẽ không tìm thấy nó. Một cỗ máy không xác định sẽ đồng thời nhập tất cả 10000 cửa. Nếu có một giải thưởng ở bất cứ đâu, máy không xác định sẽ tìm thấy nó.
@RobinKothari: "Thay vào đó, một cỗ máy không xác định sẽ chỉ mở một cửa, nhưng nó sẽ luôn luôn là đúng". Và "Một cỗ máy không xác định sẽ đồng thời nhập tất cả 10000 cửa"? - Cái nào đúng?
@tan: Cả hai đều là giải thích chính xác. Không giống như các máy xác định và ngẫu nhiên, có thể thực hiện được về mặt vật lý, một máy không xác định là một đối tượng tưởng tượng. Vì vậy, bạn có thể tưởng tượng nó theo cách bạn thích, vấn đề là nó luôn tìm đúng cửa. Có lẽ đó là người đoán giỏi nhất, có thể ai đó đã bí mật nói với cỗ máy nơi giải thưởng, có thể nó chỉ kiểm tra tất cả các cửa một cách kỳ diệu, v.v.
Định nghĩa về máy Turing không xác định : Máy Turing có nhiều trạng thái tiếp theo cho một số kết hợp nội dung của ô hiện tại và trạng thái hiện tại. Một đầu vào được chấp nhận nếu bất kỳ chuỗi di chuyển dẫn đến chấp nhận.
Không có thứ gọi là máy Turing xác suất! Chỉ có các máy xác định (trong mỗi bước một trạng thái theo dõi duy nhất có thể) và các máy không xác định (trong mỗi bước có một số lượng không đổi các trạng thái theo dõi có thể).
Tính không xác định hoạt động như sau: Hãy xem xét một máy không xác định dừng lại trên mỗi đầu vào (có thể nếu vấn đề là có thể quyết định), trong đó mỗi tính toán có thể sử dụng cùng một số bước và trong đó mỗi bước có chính xác 2 trạng thái theo dõi có thể ( cả hai không thực sự là một hạn chế). Như trong định nghĩa của NP, một máy không xác định chấp nhận đầu vào nếu tồn tại ít nhất một tính toán có thể chấp nhận và nó từ chối đầu vào nếu tất cả các tính toán từ chối.
Tính ngẫu nhiên có tác dụng như sau: Bạn có thể chọn ngẫu nhiên một con đường tính toán duy nhất từ một cỗ máy không xác định như đã nêu ở trên. Bạn chấp nhận nếu và chỉ khi con đường tính toán được chọn ngẫu nhiên này chấp nhận. Cách tiếp cận ngẫu nhiên này "giải quyết" vấn đề của bạn nếu, với xác suất áp đảo, câu trả lời này là chính xác.
Vì vậy, sự khác biệt giữa tính không xác định và tính ngẫu nhiên là liệu bạn có đang tìm kiếm sự tồn tại của một câu trả lời đúng (và câu trả lời không đáng tin cậy) hay bạn quan tâm đến việc giải quyết vấn đề của mình "hầu hết thời gian" .
-1 Lỗi trong đoạn đầu tiên của bạn. Các máy Turing xác suất tồn tại và lấy mẫu một đồng xu được ném từ entropy bên ngoài, cf lớp phức tạp ZPP. Không xác định có một số lượng không giới hạn không phải là một số hữu hạn của các trạng thái thay thế, cf lớp phức tạp NP. Xác định là lớp phức tạp P và bạn đã hiểu đúng.
Tôi nghĩ rằng bạn đang đọc sai câu trả lời của tôi. Tôi lập luận rằng bạn không cần bất kỳ máy nào khác (với khả năng tung đồng xu hoặc các khả năng khác) so với một TM không xác định "thông thường" để xác định các lớp phức tạp xác suất. Bạn cũng có thể sử dụng NTM và chỉ sử dụng một định nghĩa chấp nhận khác, cụ thể là một định nghĩa trong đó "hầu hết các đường tính toán chấp nhận đầu vào", trái ngược với "tồn tại ít nhất một đường dẫn chấp nhận duy nhất cho đầu vào".
Để đơn giản: một cỗ máy không xác định có thể tối ưu chọn kết quả của mỗi lần lật đồng xu (nếu bạn thích sự tương tự với một máy xác suất). Bạn cũng có thể tưởng tượng rằng nó thực hiện tính toán cho từng kết quả của việc lật đồng xu song song.
Bước lùi trong quá trình gỡ lỗi như một động lực cho tính không xác định
Khái niệm về một máy không xác định sẽ tự gợi ý khi bạn muốn lùi lại (kịp thời) thông qua một chương trình trong khi gỡ lỗi. Trong một máy tính thông thường, mỗi bước chỉ sửa đổi một lượng bộ nhớ hữu hạn. Nếu bạn luôn lưu thông tin này cho 10000 bước trước đó, thì bạn có thể bước độc đáo cả tiến và lùi trong chương trình, và khả năng này không giới hạn trong các chương trình đồ chơi. Nếu bạn cố gắng loại bỏ sự bất cân xứng giữa các bước tiến và bước lùi, thì bạn sẽ kết thúc với khái niệm về một máy không xác định.
Điểm tương đồng và khác biệt giữa tính không xác định và tính ngẫu nhiên
Trong khi các máy xác suất chia sẻ một số đặc điểm với các máy không xác định, sự đối xứng này giữa các bước tiến và bước lùi không được chia sẻ. Để thấy điều này, hãy mô hình hóa các bước hoặc chuyển đổi của máy xác định theo các hàm (tổng hoặc một phần), các chuyển đổi của máy không xác định theo quan hệ (hữu hạn) và chuyển tiếp của máy xác suất theo ma trận ngẫu nhiên (phụ) . Ví dụ, đây là các định nghĩa tương ứng cho automata hữu hạn
Q
Σ
δ:Q×Σ→Q
Δ:Q×Σ→P(Q)
Δ⊂Q×Σ×Q
Δ:Σ→P(Q×Q)
δ:Σ→ssM(Q)
P(Q)QssM(Q)Q
Có nhiều điều kiện chấp nhận hợp lý khác nhau
Việc chuyển đổi chỉ là một phần của máy, trạng thái ban đầu và trạng thái cuối, điều kiện đầu ra và chấp nhận có thể cũng rất quan trọng. Tuy nhiên, chỉ có rất ít điều kiện chấp nhận không hiệu quả cho các máy xác định, một số điều kiện chấp nhận hợp lý cho các máy không xác định (NP, coNP, #P, ...) và nhiều điều kiện chấp nhận có thể có cho máy xác suất. Do đó câu trả lời này tập trung chủ yếu vào các chuyển đổi.
Khả năng đảo ngược là không tầm thường đối với các máy xác suất
PPTP≠PPBAkABk
Khả năng đảo ngược là khó khăn ngay cả đối với các máy không xác định
PPTP≠PR∘Rop∘R≠RRRR∘Rop∘R=RRop∘R∘Rop=RopPQP∘Q
Những cân nhắc này cũng có ý nghĩa đối với automata đẩy xuống
Bài đăng này gợi ý rằng một động lực cho chủ nghĩa không xác định là loại bỏ sự bất cân xứng đó giữa các bước tiến và bước lùi. Là đối xứng của chủ nghĩa không xác định giới hạn trong automata hữu hạn? Dưới đây là các định nghĩa đối xứng tương ứng cho automata đẩy xuống
Q
Σ
Γ
δ:Q×Γ×(Σ∪{ϵ})→Q×Γ{0,2}δ(q,γ,ϵ)≠ϵδ(q,γ,σ)=ϵσ∈Σ
Δ:Q×Γ{0,1}×(Σ∪{ϵ})→P(Q×Γ{0,1})
Δ⊂Q×Γ{0,1}×(Σ∪{ϵ})×Q×Γ{0,1}
Δ:Σ∪{ϵ}→P(Q×Γ{0,1}×Q×Γ{0,1})
δ:Σ∪{ϵ}→ssM(Q×Γ{0,1})δ(ϵ)+δ(σ)∈ssM(Q×Γ{0,1})σ∈Σ
ϵΓ{0,2}={ϵ}∪Γ∪(Γ×Γ)Γ{0,1}={ϵ}∪ΓΓ∗
Sơ đồ xác minh đảo ngược cho (không) tiến bộ hoạt động đầu vào và ngăn xếp
b∈Σ⊂Σ∪{ϵ}
a|bc→a|bc→ab|c a|bc←ab|c←ab|c c|ba→c|ba→cb|a
ϵ∈Σ∪{ϵ}
a|bc→a|bc→a|bc a|bc←a|bc←a|bc cb|a→cb|a→cb|a
Dưới đây là sơ đồ của một hoạt động đầu vào tiến bộ mà sự đảo ngược của nó sẽ trông tệ
a|bc→a|bc→ab|ca|bc←ab|c←ab|cc|ba→c|ba→cb|a
Đối với một hoạt động ngăn xếp , có ba trường hợp , và . Hoạt động ngăn xếp được đảo ngược thành như sau ( s , t ) = ( a , ϵ ) ( s , t ) = ( ϵ , a ) ( s , t ) = ( a , b ) ( a , ϵ ) ( ϵ , a(s,t)∈Γ{0,1}×Γ{0,1}(s,t)=(a,ϵ)(s,t)=(ϵ,a)(s,t)=(a,b)(a,ϵ)(ϵ,a)
ab…→ab…→|b… ab…←|b…←b… b…→|b…→ab…
Thao tác ngăn xếp được đảo ngược thành như sau(a,b)(b,a)
ac…→ac…→bc… ac…←bc…←bc… bc…→bc…→ac…
Một hoạt động ngăn xếp tổng quát sẽ được đảo ngược thành(ab,cde)∈Γ∗×Γ∗(cde,ab)
một b f ... ← c d e f ... ← c d e f ... c d e f ... → c d e f ... → một b f ...abf…→abf…→cdef… abf…←cdef…←cdef… cdef…→cdef…→abf…
Khả năng đảo ngược cho máy Turing
Một máy có nhiều ngăn xếp tương đương với máy Turing và các thao tác ngăn xếp có thể dễ dàng đảo ngược. Động lực lúc ban đầu cũng cho thấy rằng việc đảo ngược (của máy Turing) không nên khó khăn. Một máy Turing với một bộ hướng dẫn điển hình không quá tuyệt vời để đảo ngược, bởi vì biểu tượng dưới đầu có thể ảnh hưởng đến việc băng sẽ di chuyển sang trái hay phải. Nhưng nếu bộ hướng dẫn được sửa đổi một cách thích hợp (mà không làm giảm sức mạnh tính toán của máy), thì sự đảo ngược lại gần như không đáng kể nữa.
Một sự đảo ngược cũng có thể được xây dựng mà không sửa đổi tập lệnh, nhưng nó không chuẩn và hơi xấu. Có vẻ như sự tồn tại của một sự đảo ngược cũng khó quyết định như nhiều câu hỏi khác liên quan đến máy Turing, nhưng một sự đảo ngược là một công trình địa phương và những câu hỏi khó thường có hương vị toàn cầu, vì vậy sự bi quan có lẽ sẽ không chính đáng ở đây.
Sự thôi thúc chuyển sang các bộ hướng dẫn tương đương (dễ đảo ngược hơn) cho thấy những câu hỏi này ít rõ ràng hơn so với lần đầu tiên chúng xuất hiện. Một chuyển đổi tinh tế hơn đã xảy ra trong bài viết này trước đây, khi tổng số các hàm và ma trận ngẫu nhiên được thay thế bằng các hàm một phần và ma trận thay thế. Công tắc này không thực sự cần thiết, nhưng sự đảo ngược là xấu xí. Việc chuyển sang các ma trận thay thế thực sự là điểm rõ ràng rằng sự đảo ngược không phải là quá tầm thường, và người ta nên viết ra các chi tiết (như đã làm ở trên) thay vì chỉ đưa ra một viễn cảnh cấp cao (như được trình bày trong động lực tại sự bắt đầu). Các câu hỏi được đặt ra bởi Niel de Beaudrap cũng góp phần nhận ra rằng viễn cảnh cấp cao hơi bị lung lay.
Phần kết luận
Các máy không xác định cho phép một số lượng hữu hạn các chuyển tiếp xác định ở mỗi bước. Đối với các máy xác suất, các chuyển đổi này cũng có xác suất. Bài đăng này truyền tải một quan điểm khác nhau về tính không xác định và tính ngẫu nhiên. Bỏ qua các điều kiện chấp nhận toàn cầu, thay vào đó, nó tập trung vào tính thuận nghịch cục bộ (như một đối xứng cục bộ). Bởi vì tính ngẫu nhiên bảo tồn một số đối xứng cục bộ không được bảo tồn bởi tính xác định, quan điểm này cho thấy sự khác biệt không tầm thường giữa các máy không xác định và xác suất.
Bạn có cho rằng sự chuyển tiếp không xác định là quan hệ một-nhiều? Điều gì xảy ra nếu hai cấu hình khác nhau có thể chuyển sang cấu hình chung, trong số các cấu hình khác? - Dường như với tôi rằng sự khác biệt giữa tính ngẫu nhiên và tính không đặc biệt không phải là tính thuận nghịch (không phải là không có ràng buộc nào nữa), mà là cách một thuộc tính có ý nghĩa đối với các nhánh theo kết quả: hoàn toàn dân chủ cho tính ngẫu nhiên, hoặc ưu tiên nhạy cảm với "có" hoặc Câu trả lời "không" cho thuyết không điều kiện.
@NieldeBeaudrap Tôi giả sử rằng các chuyển tiếp không xác định là quan hệ "tùy ý" (một cho mỗi biểu tượng từ bảng chữ cái đầu vào). Tôi có thể đảo ngược chúng, hoán đổi trạng thái bắt đầu và kết thúc và lấy lại một máy trạng thái hữu hạn không xác định, chấp nhận chuỗi đầu vào đảo ngược. Đây là những gì tôi gọi là "chạy máy ngược thời gian". (Máy chấp nhận nếu có ít nhất một đường dẫn từ trạng thái bắt đầu đến trạng thái kết thúc trong trường hợp không xác định và điều kiện này không thay đổi khi đảo ngược thời gian.) Hãy cố gắng thuyết phục bản thân rằng điều này hoạt động ít nhất cho một máy trạng thái hữu hạn .
Vì vậy, bạn tham khảo kép của máy. Đối với NFA, điều này có vẻ như là một khái niệm có ý nghĩa về tính thuận nghịch. Cũng rõ ràng rằng kép của một NTM (với một trạng thái chấp nhận duy nhất) là một NTM khác, nhưng tôi sẽ ngần ngại nói rằng đó là cùng một máy đang chạy ngược lại. Có phải số tiền câu trả lời của bạn chỉ là "Nondeterminism cho phép bạn có được sự đóng cửa trong các máy kép, ngẫu nhiên (và xác định) không"?
@NieldeBeaudrap Ý tưởng của tôi chắc chắn là chạy ngược thời gian, nhưng tôi biết rằng điều này không được thỏa mãn một cách hoàn hảo (vì các điều kiện cho một nghịch đảo tổng quát của một nửa nhóm nghịch đảo không được thỏa mãn). Nhưng những gì tôi đã cố gắng truyền đạt là các máy ngẫu nhiên (và xác định) không cho phép loại đảo ngược này.
Trong bối cảnh của Turing Machines ( TM ) và lý thuyết automata, một máy không xác định là một trong đó bất kỳ sự khởi tạo nào của máy chấp nhận là tốt. Theo nghĩa này, nó giống như chạy song song nhiều máy xác định và lấy đầu ra của bất kỳ trường hợp nào chấp nhận đầu vào . Trong thực tế, có một thuật toán (xác định) để chuyển đổi bất kỳ máy tự động không xác định nào (có trạng thái) thành một thuật toán xác định tương đương (với2 nn2n trạng thái, hàm mũ) bằng cách xem xét các lớp trạng thái tương đương, bất kể thuật toán được triển khai trong máy có liên quan đến ngẫu nhiên hay xác suất (xem bên dưới).
Nhưng nếu thuật toán được thực hiện trong máy, liên quan đến ngẫu nhiên hoặc xác suất (nội tại trong thuật toán), thì đó là một máy ngẫu nhiên (hoặc xác suất).
Nói chung, luôn luôn có thể loại bỏ tính không xác định khỏi máy và xây dựng một tương đương xác định (xem thuật toán ở trên), nhưng không thể thực hiện tương tự (nói chung) để loại bỏ ngẫu nhiên (trong bối cảnh ở trên) bởi vì nó là nội tại để thuật toán thực hiện .
Lưu ý rằng trong ánh sáng ở trên, cả máy xác định và máy không xác định đều có thể có xác suất nếu thuật toán (có liên quan) sử dụng ngẫu nhiên (hoặc xác suất) theo cách này.
Tóm lại, tính không xác định trong automata (trong ngữ cảnh này) đề cập đến các lớp của automata tương tự, trong khi các máy ngẫu nhiên hoặc xác suất đề cập đến (ứng dụng nội tại của ngẫu nhiên trong) các thuật toán thực tế được thực hiện bởi các automata này.