Adams descreve um algoritmo de dividir e conquistar para encontrar a união de dois conjuntos (representados como árvores de pesquisa binária com ponderação de peso). Ele então descreve um novo algoritmo de "união de hedge" que, segundo ele, melhora o algoritmo de dividir e conquistar. No entanto, ele não oferece uma prova, ou mesmo uma explicação real, de por que deveria ser , e muito menos por que deveria ser mais rápido do que dividir e conquistar.
Blelloch, Ferizovic e Sun mostram que o algoritmo de dividir e conquistar de Adams, na verdade, atinge o idealmente teoricamente ideal que . No entanto, eles não abordam o algoritmo de hedge union.
A união de hedge é, de fato, tão eficiente quanto dividir e conquistar? A parte menos óbvia é a guarnição interna. Parece, pelo menos superficialmente, duplicar o trabalho entre as subárvores esquerda e direita que a divisão completa compartilha entre elas. Talvez esteja tudo bem por algum motivo, mas não sei por quê.
Uma investigação adicional: Haskell Data.Set
e Data.Map
usa variantes de hedge de interseção e diferença, além de união. Não encontrei nenhuma discussão publicada sobre esses algoritmos. Perguntas semelhantes se aplicam a elas também.
fonte
Data.Set
base nessas observações?