Adams menjelaskan algoritma divide-and-conquer untuk menemukan penyatuan dua set (direpresentasikan sebagai pohon pencarian biner seimbang). Dia kemudian menjelaskan algoritma "lindung nilai" yang baru dan kemudian dia klaim tingkatkan pada algoritma divide-and-conquer. Namun, ia tidak menawarkan bukti, atau bahkan penjelasan nyata, mengapa harus demikian, apalagi mengapa itu harus lebih cepat dari divide-and-conquer.
Blelloch, Ferizovic, dan Sun menunjukkan bahwa algoritma divide-and-menaklukkan Adams benar-benar mencapai optimal secara teoritis dimana . Namun, mereka tidak membahas algoritma lindung nilai serikat pekerja.
Apakah hedge union, pada kenyataannya, seefisien divide-and-menaklukkan? Bagian yang paling tidak jelas adalah trim bagian dalam. Tampaknya, setidaknya secara dangkal, untuk menduplikasi pekerjaan antara sub pohon kiri dan kanan yang dibagi penuh di antara mereka. Mungkin ini baik-baik saja untuk beberapa alasan, tetapi saya tidak tahu mengapa.
Penyelidikan lebih lanjut: Haskell Data.Set
dan Data.Map
menggunakan varian lindung nilai persimpangan dan perbedaan, serta persatuan. Saya belum menemukan diskusi yang dipublikasikan tentang algoritma tersebut sama sekali. Pertanyaan serupa juga berlaku untuk ini.
sumber
Data.Set
berdasarkan pengamatan ini?