bagofholding 0.1.0

A crate of collection types. Efficient data structures that look bigger on the inside.
Documentation

Tries are a very interesting data structure. Tries are designed to compress string prefixes to allow the storage of large string datasets in a memory-efficient manner. Tries are built as trees of substrings. In fact, the word "trie" was selected because the word "tree" was already taken; initially trie was pronounced identicially as tree, but spelled differently to differentiate the two structures.

There are many different flavors of trie, each with different trade offs.

Static Tries

Dynamic Tries

  • Array Trie

  • Patricia array

  • Burst Trie

  • HAT Trie

  • Judy

  • B-Trie

  • Suffix Trees

  • LOUDS-Sparse / LOUDS-Dense / Surf

  • Radix Trie

  • Compact Trie

  • R-way Trie

  • De la Briandais Trie

  • List Trie

  • Ternary Search Trie

  • Double-array

Node Label Map

In practice, most tries don't actually store the characters on each node, but instead store them in a Node Label Map, which is a data structure mapping from unique integer IDs to substrings.

There are different NLM implementations, each again offering different trade-offs.

  • m-Bonsai

  • FK-hash