Hash Array Mapped Trie (HAMT) es una estructura de datos que ofrece muchas flexibilidades para el caso de uso que describa. Cada nodo interno tiene un factor de ramificación de [math] 2 ^ k [/ math] que generalmente se implementa como una matriz de elementos [math] 2 ^ k [/ math]. Es una estructura de datos con reconocimiento de caché y tiene una profundidad esperada de [matemática] O (\ log_ {2 ^ k} n) [/ matemática] y se escala extremadamente bien con respecto a las inserciones y consultas. Debido a su alto factor de ramificación de nodos internos, ofrece una complejidad de tiempo casi [matemática] O (1) [/ matemática] y, por lo tanto, coincide con el rendimiento de una tabla hash en el mundo real. Es una estructura de datos funcional y persistente y ofrece toda la bondad de la inmutabilidad. Esta estructura de datos es originalmente de Phil Bagwell. Vea su artículo Ideal Hash Trees (http://lampwww.epfl.ch/papers/id…) para más detalles. Esta estructura de datos viene con las bibliotecas estándar de Scala y Clojure.
También está disponible una versión simultánea sin bloqueo de esta estructura de datos, conocida como CTrie, que ofrece una implementación segura de subprocesos mutables que garantiza el progreso. El documento Cache-Aware Lock-Free Concurrent Hash Trie (http://infoscience.epfl.ch/recor…) de Aleksandar Prokopec, Phil Bagwell y Martin Odersky brinda más detalles de la implementación.
- ¿Las empresas comerciales de algo funcionan mejor que las empresas comerciales que no son algo?
- ¿Cuáles son los algoritmos y las estructuras de datos que tengo que aprender para competir en Google Code Jam?
- ¿Cuáles son los buenos canales en YouTube para aprender algoritmos y estructuras de datos para la preparación de Google Code Jam o Facebook Hacker Cup?
- ¿Qué estructura de datos usaría para diseñar un programa de planificación de producción?
- ¿Dónde se usa el algoritmo de Dijkstra?