Có bất kỳ vấn đề hiện tại sẽ không thể giải quyết được với một lời tiên tri tạm dừng?


11

Tôi hiểu rằng hầu hết các vấn đề là tầm thường nếu có một lời tiên tri tạm dừng (hoặc, tôi nghĩ tương đương, siêu tính toán). Tuy nhiên, việc áp dụng đối số cho thấy Sự cố dừng là không thể đối với máy Turing cũng cho thấy rằng nhà tiên tri Turing + không thể quyết định Vấn đề Ngừng đối với nhà tiên tri Turing +. Có bất kỳ ví dụ thực tế, thực tế, về các vấn đề không thể giải quyết bằng một lời tiên tri tạm dừng?

Lưu ý: bởi "oracle" Tôi có nghĩa là nhà tiên tri cho một máy Turing tiêu chuẩn, không phải là một TM có chính nó.


2
những vấn đề "tùy tiện không thể giải quyết được", xem ví dụ ở đây . Tôi không biết về các ví dụ "thực tế" (cũng không phù hợp với tiêu đề bạn đã chọn); những gì đủ điều kiện là "thực tế" cho bạn?
Raphael

Điều đó không chỉ đơn giản là trả lời câu hỏi này. Tôi thừa nhận rằng vấn đề tạm dừng cấp độ tiếp theo vẫn được áp dụng.
ike

Ngoài ra, tất cả các ngôn ngữ không thể liệt kê đệ quy đều không thể rút gọn thành HALT. Ví dụ bao gồm FINITE, EMPTY, cho dù hai CFG có cùng ngôn ngữ hay không, v.v.

Câu trả lời:


15

Chỉ cần thực hiện một vấn đề có mức độ Turing trên , đó là mức độ của The Halting Oracle. Xét về hệ thống phân cấp số học, bạn muốn có các vấn đề nằm trên . Ví dụ về các vấn đề như vậy (trong đó là hàm tính toán một phần thứ và là0 φ n n W n = { k N | φ n ( k )  được định nghĩa }Σ10ϕnnWn={kNϕn(k) is defined} - bộ tính toán có thể tính được):n

  • Σ 0 2 -complete.{nNφn terminates for finitely many inputs}Σ20
  • Π 0 2 -complete.{nNφn is a total function}Π20
  • Σ 0 3- hoàn thành.{nN|Wn là một bộ tính toán}Σ30

Không ai trong số này có thể được giải quyết ngay cả khi bạn có một Ngừng Oracle. Ví dụ, hãy xem xét ví dụ thứ hai, "là tổng?" Với n như thế nào sẽ là Tạm dừng Oracle giúp đỡ chúng tôi quyết định xem máy Turing được mã hóa bởi n tạm dừng trên mỗi đầu vào?φnnn


[Đã thêm 2014-06-03] Đối với khía cạnh "thực tế" của tất cả những điều này, hãy xem xét vấn đề: một lập trình viên đã viết một hàm void charge_credit_card(int card_number, int amount)và chúng tôi muốn biết liệu hàm đó có chấm dứt trên tất cả các đầu vào hay không. Không thể viết một trình biên dịch có thể tự động kiểm tra điều này nói chung. Hơn nữa, ngay cả khi chúng tôi cho phép trình biên dịch hỏi chúng tôi các câu hỏi có dạng "có charge_credit_cardchấm dứt khi có đầu vào (k,m)không?", Điều đó vẫn không thể.


2
Sayng "Tôi không hiểu ví dụ" mà không giải thích điều gì làm bạn bối rối là không hiệu quả. Bạn đã đọc các trang Wikipedia có liên quan mà tôi đã chỉ? Những điều đó liên quan trực tiếp đến câu hỏi của bạn, vì vậy điều đầu tiên bạn nên làm quen là làm quen với các khái niệm cơ bản liên quan.
Andrej Bauer

1
@ike, ví dụ này có nghĩa là có một số lượng vô hạn int, khá rõ ràng. Bạn có thực sự cần tôi viết BigInthoặc một số như vậy, hoặc sau đó bạn sẽ phàn nàn rằng bộ nhớ máy tính là hữu hạn?
Andrej Bauer

1
Bất cứ điều gì. Tôi đã nói với bạn câu trả lời cho câu hỏi của bạn là gì. Nếu bạn không muốn hiểu nó một cách thiện chí, thì đừng làm phiền chúng tôi bằng những câu hỏi.
Andrej Bauer

2
HMộtLT¯{<M,w>M không dừng lại trên w}

1
@tAllan: bạn nên đăng nó như một câu trả lời. Nó đánh bại tôi những gì OP coi là "thực tế", nhưng ví dụ của bạn chắc chắn tốt hơn của tôi.
Andrej Bauer
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.