Đếm các cặp đảo ngược


14

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 < ja[1n](i,j)a[i]>a[j]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.O(nlogn)

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.Θ(n)

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 )O(nlogn)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 )O(1)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ò.


3
Chan và Pătraşcu đưa ra thuật toán thời gian , nhưng theo như tôi có thể nói từ việc lướt qua tờ giấy, họ cần không gian . o(nđăng nhậpn)Ω(n)
Raphael

2
Ôi(n)Ω(n)

1
@Raphael: Cảm ơn! Nếu không có câu trả lời nào được đưa ra, bình luận của bạn sẽ là câu trả lời tốt nhất cho đến nay.
Aryabhata

BTW Tôi có một chút bối rối về điều đó Ajtai et al ràng buộc thấp hơn. Định lý 8 nói "bất kỳ thuật toán nào", nhưng ràng buộc thấp hơn đối với tôi dường như chống lại các thuật toán phát trực tuyến chính xác, một mô hình rất hạn chế
Sasho Nikolov

Ôi(n)

Câu trả lời:


3

Đây là câu trả lời của Raphael:

o(nđăng nhậpn)Ω(n)Ôi(n)Ω(n)


Cảm ơn đã làm cho nó một câu trả lời. Tôi sẽ cho nó thêm một thời gian nữa. Giao thông dường như được chọn.
Aryabhata
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.