Giới hạn về không gian cho thuật toán lựa chọn?


11

Có một thuật toán lựa chọn trường hợp xấu nhất được biết đến để tìm phần tử lớn thứ k trong một mảng các số nguyên. Nó sử dụng cách tiếp cận trung bình để tìm một trục đủ tốt, phân vùng mảng đầu vào tại chỗ và sau đó tiếp tục đệ quy trong tìm kiếm phần tử lớn nhất thứ k .O(n) kk

Điều gì sẽ xảy ra nếu chúng ta không được phép chạm vào mảng đầu vào, cần thêm bao nhiêu dung lượng để tìm phần tử lớn nhất thứ trong thời gian O ( n ) ? Chúng ta có thể tìm thấy phần tử lớn nhất thứ k trong không gian thừa O ( 1 ) và vẫn giữ thời gian chạy O ( n ) không? Ví dụ: việc tìm phần tử tối đa hoặc tối thiểu cần thời gian O ( n ) và không gian O ( 1 ) . kO(n)kO(1)O(n)O(n)O(1)

Theo trực giác, tôi không thể tưởng tượng rằng chúng ta có thể làm tốt hơn không gian nhưng có bằng chứng nào về điều này không?O(n)

Can điểm một người tham gia tham chiếu hoặc đưa ra một cuộc tranh cãi tại sao 'th yếu tố đòi hỏi O ( n ) không gian để được tìm thấy trong O ( n ) thời gian?n/2O(n)O(n)


2
Tôi không phải là chuyên gia nhưng có lẽ những tài liệu này rất hữu ích: Giới hạn thời gian dựa trên không gian dựa trên so sánh để lựa chọn và đánh đổi không gian và các vấn đề đặt hàng đầu tiên trong một mô hình chương trình
Vor

Câu trả lời:


13

O(n)O(1)

O(n1+ε)O(1/ε)ε>0

O(n)pp

pA(k)ε=1/kA(k)A(k1)A(1)thuật toán. Kích thước khối bên phải (và thực hiện phép toán) cung cấp cho bạn các yêu cầu về thời gian và không gian như đã nêu ở trên.

Btw, các thuật toán bạn đang tìm kiếm, gần đây được đặt tên là thuật toán không gian làm việc không đổi .

Tôi không nhận thức được bất kỳ ràng buộc thấp hơn.

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.