Một ứng dụng cổ điển của phân chia và chinh phục là để giải quyết vấn đề sau:
Cho một mảng gồm các phần tử riêng biệt, có thể so sánh, đếm số lượng cặp đảo ngược trong mảng: cặp sao cho và .i < j
Một cách tiếp cận này là thực hiện Sắp xếp Hợp nhất, nhưng cũng đếm số lượng cặp đảo ngược trong các vấn đề phụ. Trong bước hợp nhất, chúng tôi đếm số cặp đảo ngược trải qua (hai) vấn đề phụ và thêm vào số lượng của các vấn đề phụ.
Mặc dù điều này là tốt và đưa ra thuật toán thời gian , nhưng điều này làm rối tung mảng.
Nếu chúng ta có ràng buộc bổ sung rằng mảng chỉ đọc, thì chúng ta có thể tạo một bản sao và xử lý bản sao hoặc sử dụng cấu trúc dữ liệu bổ sung như cây nhị phân cân bằng thống kê đơn hàng để thực hiện đếm, cả hai đều sử dụng không gian.
Câu hỏi hiện tại là cố gắng và tốt hơn không gian, trong khi không ảnh hưởng đến thời gian chạy. I E
Có thuật toán thời gian để đếm số cặp đảo ngược, hoạt động trên mảng chỉ đọc và sử dụng không gian tuyến tính phụ (tức là ) không?o ( n )
Giả sử một mô hình RAM chi phí thống nhất và các phần tử chiếm không gian và so sánh giữa chúng là .O ( 1 )
Một tài liệu tham khảo sẽ làm, nhưng một lời giải thích sẽ tốt hơn :-)
Tôi đã thử tìm kiếm trên web, nhưng không thể tìm thấy bất kỳ câu trả lời tích cực / tiêu cực nào cho việc này. Tôi cho rằng đây chỉ là một sự tò mò.