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 ?
Các giải pháp
k = 2 k = 2 và 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 1 hoặc nhỏ hơn t ).
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 [ t trong mỗi lần tái phát (và chi phí O ( k ) cho trung vị).có thể được bỏ qua thêm trong mảng khác, dẫn đến giảm một nửa
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 ...
Độ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.