Trie p-fast mejorado: Un algoritmo de coincidencia de prefijos altamente eficiente

2025-08-10

Este artículo presenta una estructura de datos trie p-fast mejorada, un algoritmo altamente eficiente para encontrar el prefijo coincidente más largo o el predecesor/sucesor más cercano de una cadena de consulta en un conjunto de cadenas. En comparación con versiones anteriores, esta versión mejorada es más concisa y eficiente en espacio. Utiliza una tabla hash para almacenar cada prefijo único y un mapa de bits para representar los posibles caracteres siguientes para cada prefijo, logrando una complejidad de tiempo O(log k) (donde k es la longitud de la clave). Si bien las búsquedas de predecesores pueden requerir más sondeos, su rendimiento aún supera a las tries qp tradicionales.

Leer más

Optimización del compilador: Mejora de la generación de números aleatorios casi sin división de Lemire

2025-03-09

El autor mejoró un algoritmo casi sin división para generar números aleatorios acotados (algoritmo de Lemire). Una versión anterior redujo la inflación de código al insertar en línea la ruta rápida, pero la optimización del compilador era limitada. El autor descubrió que cuando el límite es una constante en tiempo de compilación, el umbral de rechazo se puede precalcular y la evitación de la división es innecesaria. La nueva implementación tiene solo una llamada al generador de números aleatorios, y el compilador elimina automáticamente el bucle cuando el límite es una potencia de dos. Esto es más eficiente que la versión del año pasado, y el autor explora técnicas de optimización similares en tiempo de compilación en Rust.

Leer más