Eu preciso armazenar conjuntos de elementos do tipo a. O tipo a é parcialmente ordenado, portanto, a comparação de e pode retornar menor, maior, igual ou incomparável.
Um problema com as hashtables é que dois elementos iguais podem ser representados de maneira diferente, e eu não tenho acesso a uma função de hash consistente com a igualdade.
A comparação de dois elementos pode ser um processo demorado, pelo que seria interessante minimizar as comparações. Se necessário, é possível memorizar as chamadas para o operador de comparação. Agora percebo que só precisarei armazenar antichains (ou vamos supor). Mais precisamente, as operações que precisarei executar são as seguintes:
- Remova um elemento do antichain;
- Tente adicionar um elemento. Se o elemento for menor que um membro, não o adicione, caso contrário, adicione-o e remova todos os elementos menores que ele.
Também posso vincular cada elemento por dois números inteiros, de modo que, se eu souber que e , conhecer instantaneamente me dará . Obviamente, não significa ... Encontrar limites inteiros é uma operação relativamente barata em comparação com uma comparação completa de elementos.
Respostas:
O artigo "Classificação e seleção em PoSets", de Daskalakis, Karp, Mossel, Risensefield, Verbin, 2008, descreve uma representação dinâmica de PoSets baseada em antichains.
Você também pode estar interessado no artigo "Succinct Posets" de Munro, Nicholson, 2012, lançado recentemente em Arxiv e na bibliografia deste. Sua estrutura de dados é estática, mas presumo que o próximo passo seja ter uma estrutura de dados dinâmica.
fonte
fonte
e
formam uma cadeia.