Adams mô tả một thuật toán phân chia và chinh phục để tìm sự kết hợp của hai bộ (được biểu diễn dưới dạng cây tìm kiếm nhị phân cân bằng trọng lượng). Sau đó, ông mô tả một thuật toán "liên minh phòng hộ" mới mà ông tuyên bố sẽ cải thiện khả năng phân chia và chinh phục. Tuy nhiên, anh ta không đưa ra một bằng chứng, hoặc thậm chí là một lời giải thích thực sự, về lý do tại sao nó phải là , chứ đừng nói tại sao nó phải nhanh hơn sự phân chia và chinh phục.
Blelloch, Ferizovic và Sun cho thấy thuật toán phân chia và chinh phục của Adams thực sự đạt được tối ưu về mặt lý thuyết trong đó . Họ không, tuy nhiên, giải quyết các thuật toán liên minh phòng hộ.m ≤ n
Là liên minh phòng hộ, trên thực tế, có hiệu quả như chia rẽ và chinh phục? Phần ít rõ ràng nhất là phần bên trong. Ít nhất là bề ngoài, có vẻ như trùng lặp công việc giữa các bên trái và bên phải rằng toàn bộ cổ phần được phân chia giữa chúng. Có lẽ điều này ổn vì một số lý do, nhưng tôi không biết tại sao.
Một cuộc điều tra khác: Haskell's Data.Set
và Data.Map
sử dụng các biến thể của hàng rào giao nhau và sự khác biệt, cũng như liên minh. Tôi chưa tìm thấy bất kỳ cuộc thảo luận được công bố nào về các thuật toán đó. Các câu hỏi tương tự cũng áp dụng cho những điều này.
Data.Set
dựa trên những quan sát này?