Một số vấn đề không tầm thường mà chúng ta biết thuật toán hiện tại chúng ta có là một vấn đề tối ưu không có triệu chứng? (Đối với máy turing)
Và điều này được chứng minh như thế nào?
Một số vấn đề không tầm thường mà chúng ta biết thuật toán hiện tại chúng ta có là một vấn đề tối ưu không có triệu chứng? (Đối với máy turing)
Và điều này được chứng minh như thế nào?
Câu trả lời:
Bất kỳ thuật toán nào mất thời gian tuyến tính và phải đọc toàn bộ đầu vào của nó phải tối ưu không có triệu chứng. Tương tự, như Raphael nhận xét, bất kỳ thuật toán nào có thời gian chạy có cùng thứ tự với kích thước đầu ra là tối ưu.
Nếu thước đo độ phức tạp mà bạn đang xem xét là độ phức tạp của truy vấn, nghĩa là số lần máy phải xem đầu vào để giải quyết một vấn đề cụ thể, thì có nhiều vấn đề chúng tôi có thuật toán tối ưu. Lý do cho điều này là các giới hạn thấp hơn cho độ phức tạp truy vấn dễ dàng đạt được hơn các giới hạn thấp hơn về độ phức tạp thời gian hoặc không gian, nhờ một số kỹ thuật phổ biến bao gồm phương pháp đối nghịch .
Tuy nhiên, nhược điểm là biện pháp phức tạp này hầu như được sử dụng rất nhiều trong xử lý thông tin lượng tử vì nó cung cấp một cách dễ dàng để chứng minh khoảng cách giữa năng lượng tính toán lượng tử và cổ điển. Thuật toán lượng tử khét tiếng nhất trong khung này là thuật toán của Grover . Cho một chuỗi nhị phân tồn tại một i duy nhất sao cho x i = n , bạn bắt buộc phải tìm i . Về mặt kinh điển (không có máy tính lượng tử), thuật toán tầm thường nhất là tối ưu: bạn cần truy vấn chuỗi này trung bình n / 2 lần để tìm . Grover cung cấp một thuật toán lượng tử mà không như vậy trong O ( √truy vấn chuỗi. Điều này cũng đã được chứng minh là tối ưu.
Sắp xếp so sánh bằng cách sử dụng so sánh (sắp xếp hợp nhất, để đặt tên một) là tối ưu, bằng chứng chỉ đơn giản là tính chiều cao của cây với n ! lá.
Giả sử phỏng đoán trò chơi độc đáo, Khot, Kindler, Mossel và O'donnell đã chỉ ra rằng nó hoàn thành NP để xấp xỉ Max-Cut tốt hơn thuật toán của Goemans và Williamson. Vì vậy, theo nghĩa đó, G & W là tối ưu (giả sử rằng ).
Một số thuật toán phân tán có thể được hiển thị là tối ưu đối với một số điều kiện (ví dụ: tỷ lệ bộ xử lý đối nghịch), nhưng vì bạn đã đề cập đến máy Turing, tôi đoán đó không phải là loại ví dụ bạn đang tìm kiếm.
Giả sử bạn đang đưa đầu vào và được yêu cầu để quyết định xem máy RAM M chấm dứt vào đầu vào x sau khi t bước. Theo định lý phân cấp thời gian, thuật toán tối ưu để quyết định điều này là mô phỏng việc thực hiện M ( x ) cho các bước t , có thể được thực hiện trong thời gian O ( t ) .
(Lưu ý: đối với máy Turing, mô phỏng việc thực hiện thực hiện các bước O ( t log t ) ; chúng tôi chỉ biết giới hạn dưới của Ω ( t ) . Vì vậy, điều này không hoàn toàn tối ưu cho máy Turing cụ thể).
Có một số vấn đề khác có chứa phiên bản của vấn đề tạm dừng là trường hợp phụ. Ví dụ, quyết định có một câu là kết quả của các WS1S mất thời gian 2 ↑ ↑ O ( | θ | ) và điều này là tối ưu.
Nếu bạn cho phép các vấn đề cấu trúc dữ liệu động, chúng tôi biết một số thuật toán tối ưu thời gian siêu tuyến tính. Đây là trong mô hình thăm dò tế bào, mạnh như RAM từ, tức là đây không phải là mô hình bị hạn chế như cây quyết định đại số.
Một ví dụ là giữ tiền tố dưới các cập nhật động. Chúng tôi bắt đầu với một dãy các số và mục tiêu là giữ cấu trúc dữ liệu cho phép các hoạt động sau:
Bạn có thể dễ dàng hỗ trợ cả hai thao tác trong thời gian với cấu trúc dữ liệu dựa trên cây nhị phân tăng cường với A [ i ] ở các lá. Patrascu và Demaine cho thấy điều này là tối ưu: đối với bất kỳ cấu trúc dữ liệu nào, có một chuỗi n bổ sung và truy vấn tổng tiền tố phải mất tổng thời gian Ω ( n log n ) .
Một ví dụ khác là công đoàn tìm : bắt đầu với một phân vùng của thành độc thân, và giữ một cấu trúc dữ liệu cho phép hai hoạt động:
có hai thuật toán tìm kiếm hơi giống nhau mà [sự hiểu biết của tôi] là tối ưu dựa trên một ràng buộc cụ thể về thứ tự / phân phối đầu vào. tuy nhiên các bài thuyết trình về các thuật toán thường không nhấn mạnh sự tối ưu này.
phần vàng tìm kiếm để tìm tối đa hoặc tối thiểu (cực trị) của một hàm không chính thống. giả sử đầu vào là một hàm unimodal. tìm thấy nó trong thời gian logarit trung bình. như tôi nhớ có thể đã có một bằng chứng về sự lạc quan trong cuốn sách Cấu trúc & Giải thích các chương trình máy tính của abelson & sussman.
tìm kiếm nhị phân tìm thấy một điểm trong thời gian logarit trung bình trong một danh sách được sắp xếp, nhưng yêu cầu đầu vào phải được sắp xếp.
Tôi đang trích dẫn wikipedia ở trên nhưng nó không có bằng chứng rằng chúng là tối ưu, có thể một số tài liệu tham khảo khác chứng minh sự tối ưu có thể được tìm thấy bởi khán giả.
Nhiều thuật toán thời gian tuyến tính có giới hạn trên khớp với giới hạn dưới của chúng.