Necesito almacenar conjuntos de elementos de tipo a. El tipo a está parcialmente ordenado, por lo que comparar y puede devolver menor, mayor, igual o incomparable.
Un problema con las tablas hash es que dos elementos iguales se pueden representar de manera diferente, y no tengo acceso a una función hash coherente con la igualdad.
Comparar dos elementos puede ser un proceso largo, por lo que sería interesante minimizar las comparaciones. Si es necesario, es posible memorizar llamadas al operador de comparación. Ahora me doy cuenta de que solo necesitaré almacenar antichains (o supongamos que sí). Más precisamente, las operaciones que tendré que realizar son las siguientes:
- Eliminar un elemento de la antichain;
- Intenta agregar un elemento. Si el elemento es más pequeño que un miembro, no lo agregue, de lo contrario, agréguelo y elimine todos los elementos más pequeños.
También puedo vincular cada elemento con dos enteros, de modo que si sé que e , entonces saber me da instantáneamente . Por supuesto, no significa a \ not <b ... Encontrar límites enteros es una operación relativamente barata en comparación con una comparación completa de elementos.i 3 < b < i 4 i 2 < i 3 a < b i 2 ≮ i 3
Respuestas:
El documento "Clasificación y selección en PoSets" de Daskalakis, Karp, Mossel, Risensefield, Verbin, 2008, que describe una representación dinámica de PoSets basada en antichains.
También puede estar interesado en el artículo "Posets sucintos" de Munro, Nicholson, 2012 publicado recientemente en Arxiv y en la bibliografía que contiene. Su estructura de datos es estática, pero supongo que el siguiente paso es tener una estructura de datos dinámica.
fuente
¿Has visto "Buscar en órdenes parciales dinámicas de árbol dinámico" de Heeringa et al . Proporcionan una estructura de datos dinámica para el problema anterior en los posets. Está diseñado para una RAM, pero puede representar matrices como árboles binarios balanceados e incurrir solo en una sobrecarga multiplicativa mientras hace que la estructura sea puramente funcional.O(lgn)
fuente
e
forman una cadena.