Hiệu quả giải quyết vấn đề phổ quát?


12

Xác định một "vấn đề" là một thuật toán A chấp nhận một số tự nhiên và trở về 0 hoặc 1 mà trả về 1 trên ít nhất một nN . Bất kỳ như vậy nđược gọi là "giải pháp" cho A

Xác định "trình giải bài toán phổ quát" là thuật toán U chấp nhận bài toán và trả về một trong các giải pháp của nó. Ví dụ: U có thể hoạt động bằng cách lặp qua tất cả các số tự nhiên và chạy đầu vào của nó cho đến khi có 1 kết quả (chỉ phải dừng lại ở đầu vào hợp lệ)

Tôi thích khám phá giới hạn hiệu suất trên các bộ giải quyết vấn đề phổ quát

Cho U một người giải quyết vấn đề phổ quát và A là một vấn đề, biểu thị t(U,A) thời gian để U tạo ra đầu ra khi chấp nhận đầu vào A

Một người giải quyết vấn đề phổ quát U được gọi là "hiệu quả" khi đối với bất kỳ người giải quyết vấn đề phổ quát V , chúng ta có

t(U,A)<t(V,A)+tV

Ở đây phụ thuộc vào nhưng không phụ thuộc vàotVVA

Do người giải quyết vấn đề phổ quát hiệu quả tồn tại?

EDIT: Tôi nhận ra rằng có thể thay đổi các định nghĩa về "vấn đề" và "người giải quyết vấn đề phổ quát" thành một cái gì đó thanh lịch hơn một chút và về cơ bản là tương đương. "Vấn đề" là một thuật toán không có đầu vào trả về 0 hoặc 1 (tạm dừng). Một "người giải quyết vấn đề phổ quát" là một thuật toán chấp nhận một vấn đề và trả về kết quả của nó. Nó ít nhiều là một máy Turing phổ dụng

Cũ định nghĩa có thể được giảm xuống còn định nghĩa mới, kể từ khi đưa A vấn đề theo nghĩa cũ, chúng ta có thể xây dựng B một vấn đề theo nghĩa mới mà chỉ áp dụng cũ cảm giác vấn đề phổ quát giải tầm thường để A (người giải quyết được mô tả trong các văn bản nêu trên )

Định nghĩa mới có thể được giảm xuống còn định nghĩa cũ, kể từ khi cho một vấn đề theo nghĩa mới, chúng tôi có thể xây dựng một một vấn đề theo nghĩa cũ mà chỉ tính B và so sánh đầu vào để kết quảBAB

Ví dụ tầm thường của một người giải quyết vấn đề phổ quát có ý nghĩa mới là một thuật toán chỉ đơn giản là chạy đầu vào của nó

Câu trả lời:


5

Không có giải quyết vấn đề phổ quát hiệu quả. Theo trực giác, U nên có thời gian chạy (gần như) tối ưu cho mọi vấn đề quyết định có thể quyết định; trong khi định lý speedup nói rằng có những vấn đề quyết định có thể quyết định mà không có thuật toán tối ưu (thậm chí không phải trong một ý nghĩa rất nhẹ). Để chính thức hóa điều này:

Thời gian tăng tốc lý (xem ví dụ [1])): Đối với mỗi tính toán (và siêu tuyến tính) chức năng tồn tại một tập decidable S ví dụ rằng nếu S D T I M E ( t ) sau đó S D T I M E ( t ) cho t thỏa mãn g ( t ( n ) ) < t ( n ) .gSSDTIME(t)SDTIME(t)tg(t(n))<t(n)

Sau đây, chúng tôi làm việc với định nghĩa thứ hai. Hãy để là bất kỳ người giải quyết vấn đề phổ quát. Hãy g ( n ) = 2 2 nA là một thuật toán mà quyết định S . Đặt A i là TM không có đầu vào st A i = A ( i ) . Có một TM ˜ U ( i ) = U ( A i ) với khoảng quá tải logarit trong thời gian chạy (Mã hóa của AA iUg(n)=22nASAiAi=A(i)U~(i)=U(Ai)AAichỉ khác nhau ). Bởi tốc độ lên thoerem, có một TM B rằng quyết định S2 2 T I M E ( B ) < T I M E ( ~ U ) . Vậy ta có 2 T I M E ( B ) < T I M E ( { U ( A i ) } ) .O(logi)BS22TIME(B)<TIME(U~)2TIME(B)<TIME({U(Ai)})

Đặt là một bộ giải bài toán phổ biến sao cho đầu vào A i , nó mô phỏng B ( i ) với sự quá tải logarit theo thời gian. (Rõ ràng là các hàm thời gian chạy của cả A ( i )B ( i ) không bị ràng buộc) Vì vậy, chúng tôi cóVAiB(i)A(i)B(i)

cAit(U,Ai)>t(V,Ai)+c

Vì vậy, không thể có hiệu quả.U

[1] Oded Goldreich, Độ phức tạp tính toán, Quan điểm khái niệm, định lý 4.8. Chương 4.2.1.2 cũng có liên quan.


Giải pháp tuyệt vời, thx!
Vanessa

12

Thuật toán phổ Levin là một thuật toán như vậy mà . Bằng cách thay đổi các thuật toán (xem ví dụ Hutter của Các nhanh nhất và ngắn nhất Thuật toán cho tất cả Well-Defined vấn đề ), bạn có thể làm cho s V một hằng số vũ trụ, mặc dù chắc chắn không phải 1 như bạn yêu cầu. Đối với công việc liên quan, tham khảo công việc của Hirsch, Itsykson và sinh viên của họ, ví dụ như báo cáo kỹ thuật này .t(U,A)<sVt(V,A)+tVsV1

Chỉnh sửa: Như bình luận của Squark, thời gian chạy của thuật toán Levin cũng phụ thuộc vào thời gian chạy của , vì nó phải xác minh câu trả lời của nó. Để có được một hằng số của V , tất cả các bạn cần làm là để thiết lập tốc độ của thuật toán khác nhau trong tiến trình hình học (chứ không phải là nhà toán học, như trong thuật toán gốc Levin của).AsV


1
Nếu tôi hiểu chính xác, Levin là một cái gì đó theo dòng "hãy chạy song song tất cả các thuật toán có thể và mỗi khi một trong số chúng tạo ra câu trả lời, hãy kiểm tra và dừng lại nếu nó đúng". Vì V là một trong những thuật toán mà U đang chạy, nó sẽ tìm thấy câu trả lời cùng lúc với V cho đến khi chậm lại liên quan đến phần "thời gian CPU" được phân bổ cho "luồng" của V. Tuy nhiên, tôi nghĩ rằng bạn đang thiếu một thuật ngữ phụ thuộc A bổ sung: thời gian cần thiết để kiểm tra câu trả lời. Thuật toán của Hutter dựa vào tìm kiếm bằng chứng không đủ cho tôi vì tôi không đưa ra giả định nào về khả năng chứng minhU
Vanessa

1
Yuval, tôi đang thiếu một cái gì đó. Trong những gì ý nghĩa trở nên liên tục? Nó vẫn phụ thuộc vào V vì các thuật toán khác nhau chạy với tốc độ khác nhau, bất kỳ tiến trình nào bạn sử dụng, phải không? sVV
Vanessa

Tôi tin rằng bạn có thể (thống nhất) ràng buộc với chi phí làm cho t V phát triển mạnh hơn nữa (nhưng vẫn không đổi đối với bất kỳ V đã cho ). sVtVV
Yuval Filmus

1
Tôi không hiểu làm thế nào. Btw nếu tôi thêm điều kiện V có thể chứng minh là người giải quyết vấn đề phổ quát, có thể loại bỏ thuật ngữ phụ thuộc A bằng cách chỉ chạy các thuật toán có thể được chứng minh là người giải quyết vấn đề phổ quát
Vanessa
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.