Chọn liên kết các mảng được sắp xếp: Đã biết?


12

Tôi đang tìm các tài liệu tham khảo thư mục cho thuật toán / vấn đề sau: Tôi đặt tên cho nó là "BiSelect" hoặc "t-ary Chọn" hoặc "Chọn trong Liên minh các mảng được sắp xếp", nhưng tôi đoán nó đã được giới thiệu trước dưới một tên khác?

Vấn đề

Hãy xem xét vấn đề sau:

Với rời nhau được sắp xếp mảng A 1 , ... , A k , có kích thước tương ứng n 1 , ... , n k , và một số nguyên t [ 1 .. Σ n i ] , là những gì t giá trị -thứ của công đoàn được sắp xếp họ i A i ?kA1,,Akn1,,nkt[1..ni]t iAi

Các giải pháp

k = 2 k = 2O(lgmin{n1,n2,t})k= =2k= =2Một1[t/2]Một2[t/2]Một1[t/2 ..t]A2[1..t/2]A1[1..t/2] tương ứng, trong cả hai trường hợp với tham số t / 2 (và một số tối ưu hóa nhỏ khi n 1A2[t/2..t]t/2n1 hoặc nhỏ hơn t ).n2t

Khái quát này cho một thuật toán hơi phức tạp hơn chạy trong thời gian cho các giá trị lớn hơn k , dựa trên tính toán trung bình của các giá trị A i [ t / k ] cho i [ 1 .. k ] : các t / k các phần tử nhỏ nhất có thể được bỏ qua trong các mảng k / 2 trong đó A i [ t / k ] nhỏ hơn trung vị và các phần tử của các cấp bậc trong [O(klgt)kAi[t/k]i[1..k]t/kk/2Ai[t/k] t trong mỗi lần tái phát (và chi phí O ( k ) cho trung vị).[tt/k..]có thể được bỏ qua thêm trong mảng khác, dẫn đến giảm một nửak/2tO(k)

Người giới thiệu?

Tôi hài lòng với (các) giải pháp của mình, nhưng tôi cho rằng vấn đề (và giải pháp của nó) đã được biết đến. Nó liên quan đến thuật toán thời gian tuyến tính để tính toán trung vị (bằng cách sắp xếp các nhóm có kích thước và lặp lại trên trung vị của các câu đố của chúng), nhưng nói chung chung hơn một chút. Tôi đã hỏi một số trường đại học tại Madalgo ở Aarhus (Đan Mạch), và sau đó một số trường khác tại hội thảo Stringology (Rouen), nhưng không thành công: Tôi hy vọng rằng ai đó hiểu biết hơn có thể giúp đỡ về Trao đổi Stack ...5

Động lực

Các giải pháp cho vấn đề này có các ứng dụng cho Cấu trúc dữ liệu hoãn lại trên các mảng (thực sự, nó có thể được xem như là một toán tử trong cấu trúc dữ liệu hoãn lại cho sự kết hợp của các mảng được sắp xếp); và theo một cách phức tạp hơn, để tính toán thích ứng của các mã miễn phí tiền tố tối ưu.

Câu trả lời:


2

Thuật toán được mô tả bởi Frederickson và Johnson năm 1982 cho rằng tất cả các bộ đều có cùng kích thước. Họ cũng mô tả vào năm 1980 một giải pháp tối ưu tận dụng các kích cỡ khác nhau của các bộ được sắp xếp. Sự phức tạp của thuật toán này là trong Ôi(k+ΣTôi= =1kđăng nhậpnTôi) .

Tài liệu tham khảo

Greg N. Frederickson và Donald B. Johnson. 1980. Lựa chọn và xếp hạng tổng quát (Phiên bản sơ bộ). Trong Kỷ yếu của hội nghị chuyên đề ACM hàng năm lần thứ mười hai về Lý thuyết điện toán (STOC '80). ACM, New York, NY, Hoa Kỳ, 420-428. DOI = 10.1145 / 800141.804690 http://doi.acm.org/10.1145/800141.804690


20

Frederickson và Johnson đã đạt được một kết quả tối ưu trong thập niên 80. Đặt , sau đó tồn tại một thuật toán giải quyết vấn đề của bạn trong O ( k + p log tp= =tối thiểu(k,t).Ôi(k+pđăng nhậptp)

Tài liệu tham khảo

GN Frederickson, DB Johnson " Sự phức tạp của lựa chọn và xếp hạng theo x + y và ma trận với các cột được sắp xếp " J. Comput. Hệ thống khoa học, 24 (2) (1982), trang 197


0

Trường hợp k = 2 xuất hiện trong sắp xếp hợp nhất song song do việc hợp nhất hai mảng được sắp xếp từ các luồng khác nhau cần được phân chia giữa hai luồng để duy trì cùng một lượng song song. Giải pháp bài tập về nhà này là một tài liệu tham khảo.

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.