Volviendo a responder esta pregunta, ya que me perdí parte de la pregunta anterior. Resolví problemas similares mientras trabajaba para la búsqueda de eBay. Necesitábamos estructuras eficientes de CPU y memoria. Escribimos en C, no usamos STL, raramente usamos punteros e implementamos todas las estructuras de datos nosotros mismos, contando cada byte.
Una solución a su problema es la siguiente:
1. Si desea acceso O (1) en la búsqueda de claves y siempre buscará la clave completa utilizando una coincidencia exacta (por ejemplo, key = “foo”), considere implementar una tabla hash de dirección abierta para su índice. Esta tabla hash no utiliza una lista enlazada encadenada por cubo. Almacena los datos en la matriz de cubetas y, por lo tanto, evita el desperdicio de memoria en los punteros de dirección de 64 bits (si está ejecutando en un sistema operativo de 64 bits) utilizado en listas vinculadas.
2. Además, considere almacenar todos sus objetos en una gran cantidad de memoria contigua que controle. De esta manera, el valor del índice será solo un entero sin signo o representará un desplazamiento largo al inicio de su objeto en su losa. Básicamente, implementará su propio asignador de memoria.
Si necesita tipos de búsqueda más sofisticados, como escaneos de rango o coincidencia de cadenas difusas, necesitaría un gráfico o árbol de palabras. También hay algunas opciones para ellos. Por ejemplo, puede usar un gráfico de palabras acíclicas dirigido. Esto es esencialmente un gráfico de prefijo + sufijo muy compacto de memoria, almacenado como una matriz. Es posible implementar escaneos y editar consultas de distancia en su contra.
- ¿Cuáles son los mejores algoritmos de clasificación para DBMS?
- ¿Cuál es la lógica y la intuición detrás del algoritmo de optimización de momento y por qué se considera mejor que el descenso de gradiente?
- ¿Es una buena manera de aprender a resolver el cubo de rubik con algoritmos ya realizados en línea si no tiene idea de cómo resolverlo?
- Si F2L se resuelve mejor de forma intuitiva, ¿por qué cada tutorial incluye algoritmos para todos los casos de F2L?
- ¿Cómo son útiles las estructuras de datos?