Algorithms and Data structures

Implementations of algorithms and data structures optimized for Elixir's functional programming paradigm. Packages among the 3,000 most downloaded in the past 90 days.

78 packages
  • jumper 1.0.2

    Jump consistent hash implementation in Elixir

    12
    965.2k last 90 days
  • A fast consistent hash ring implementation in Elixir.

    583
    916.7k last 90 days
  • flow 1.2.4

    Computational parallel flows for Elixir

    1.6k
    731.3k last 90 days
  • General purpose circular buffer.

    29
    588.9k last 90 days
  • ra 3.1.9

    Raft library

    955
    411.0k last 90 days
  • zipper 1.1.1

    Generic Zipper Implementation for Erlang

    37
    406.7k last 90 days
  • trie 2.0.7

    Erlang Trie Implementation

    132
    378.4k last 90 days
  • libgraph 0.16.0

    A high-performance graph datastructure library for Elixir projects

    569
    304.8k last 90 days
  • murmur 2.0.0

    Murmur is a pure Elixir implementation of the non-cryptographic hash Murmur3. It aims to implement the x86_32bit, x86_128bit and x64_128bit variants.

    6
    245.3k last 90 days
  • libring 1.7.0

    A fast consistent hash ring implementation in Elixir

    228
    237.3k last 90 days
  • table 0.1.2

    Unified access to tabular data

    46
    231.6k last 90 days
  • shards 1.1.1

    Erlang/Elixir library for partitioned or sharded ETS tables.

    298
    227.2k last 90 days
  • crux 0.1.4

    Library for boolean satisfiability solving and expression manipulation.

    13
    223.5k last 90 days
  • Parallel stream operations for Elixir

    103
    212.7k last 90 days
  • radix 0.5.0

    A bitwise radix tree for prefix based matching on bitstring keys of any length.

    12
    170.2k last 90 days
  • A faster Map, augmented with a MerkleTree

    108
    160.9k last 90 days
  • A high-performance graph datastructure library for Elixir projects with multigraph support

    2
    159.2k last 90 days
  • deque 1.2.0

    Fast bounded deque using two rotating lists.

    156
    159.1k last 90 days
  • Implementations of δ-CRDTs

    557
    158.6k last 90 days
  • Simple Elixir queue, with a constant-time `size/1` and a maximum capacity.

    21
    79.0k last 90 days
  • ETS-based partitioned buffer for high-throughput data processing

    9
    65.0k last 90 days
  • abit 0.4.0

    Use `:atomics` as a bit array or as an array of N-bit counters.

    10
    57.6k last 90 days
  • bimap 1.3.0

    Elixir implementation of bidirectional map and multimap

    34
    44.6k last 90 days
  • A simple, dependency free boolean satisfiability solver.

    5
    44.6k last 90 days
  • qex 0.5.2

    A `:queue` wrapper with improvements in API and addition of Protocol implementations

    34
    41.3k last 90 days
  • algae 1.3.1

    Bootstrapped algebraic data types for Elixir

    335
    40.0k last 90 days
  • Consistent Hash Ring

    45
    37.1k last 90 days
  • A SQL92 predicate evaluator in Erlang

    36.2k last 90 days
  • NaryTree implements the data structure for n-ary tree (also called rose tree), where each node in the tree can have zero or more children. NaryTree provides methods for traversal and manipulation of the tree structure and node contents.

    18
    34.2k last 90 days
  • A splay-tree implementation

    13
    33.8k last 90 days
  • Implementation of the Ramer–Douglas–Peucker algorithm for reducing the number of points used to represent a curve.

    31
    33.1k last 90 days
  • jchash 0.1.4

    Jump Consistent Hash NIF library for Erlang/Elixir.

    18
    31.9k last 90 days
  • heap 3.0.0

    Small composable Heap implementation. Heaps sort elements at insert time.

    23.8k last 90 days
  • a_tree 0.3.3

    A dynamic data structure for efficiently indexing arbitrary boolean expressions

    0
    22.2k last 90 days
  • noether 2.0.0

    Algebra utilities for Elixir

    25
    22.2k last 90 days
  • An OTP application

    15.7k last 90 days
  • Create an alphabetical hash. Taking an existing alphabetic hash (of any length), will return the next hash in sequence. If all characters in hash are rolled over, will append a new char (increase the length by 1.) eg. 'ZZZZ' -> 'AAAAA' eg. 'AAAZ' -> 'AABA'

    3
    13.9k last 90 days
  • ord_map 0.1.0

    Ordered map for Elixir lang

    5
    13.2k last 90 days
  • Tries in Gleam

    14
    12.8k last 90 days
  • cbuf 0.7.1

    A circular buffer backed by a queue, map, or ETS

    11
    12.6k last 90 days
  • A pure Gleam package to compute the edit distance of two strings

    10
    12.4k last 90 days
  • Elixir library computing simple combination and permutation on Enumerables.

    34
    10.6k last 90 days
  • solverl 1.1.2

    Elixir/Erlang interface to MiniZinc (https://www.minizinc.org/).

    47
    10.1k last 90 days
  • Non-empty lists in Gleam

    11
    9.9k last 90 days
  • Immutable arrays for Gleam

    9
    9.7k last 90 days
  • A library for cosine similarity & simhash calculation

    17
    9.7k last 90 days
  • eyg_ir 2.2.0

    Data structures for the EYG IR

    324
    9.6k last 90 days
  • A pure Elixir implementation of the AKS (Agrawal-Kayal-Saxena) primality test algorithm.

    1
    9.6k last 90 days
  • A high-performance, concurrent, and mutable Cuckoo Filter for Erlang and Elixir

    48
    8.5k last 90 days
  • tote 1.1.0

    Bags (or multisets) in Gleam

    9
    7.9k last 90 days
  • talan 0.2.1

    Probabilistic data structures powered by atomics. Bloom filter, Counting bloom filter, Linear counter (cardinality)

    8
    7.0k last 90 days
  • Ethereum's Merkle Patricia Trie data structure

    25
    6.5k last 90 days
  • fixpoint 0.22.1

    Constraint Programming Solver

    63
    5.9k last 90 days
  • arrays 2.1.1

    Well-structured Arrays with fast random-element-access for Elixir, offering a common interface with multiple implementations (MapArray, Erlang :array, etc.) with varying performance guarantees that can be switched in your configuration.

    91
    5.6k last 90 days
  • Accomplice is a library for grouping members of a list with a respect to a number of constraints.

    1
    5.4k last 90 days
  • dux 0.3.0

    DuckDB-native dataframe library for Elixir

    91
    5.3k last 90 days
  • Elixir lib for Aho-Corasick string searching. Uses a Rust-based NIF for greatly improved performance.

    2
    5.3k last 90 days
  • adt 1.0.0

    A light ADT module for Elixir.

    5.3k last 90 days
  • iv 1.4.4

    A fast, safe, batteries-included array for Gleam!

    5.2k last 90 days
  • riak_dt 2.1.1

    riak CTDT datatypes

    357
    5.1k last 90 days
  • pqueue 2.0.7

    Erlang Priority Queue Implementation

    173
    5.1k last 90 days
  • merklet 2.0.0

    Merkle Trees for data replication purposes

    77
    4.9k last 90 days
  • sets-like wrapper based on maps

    13
    4.4k last 90 days
  • A graph library. Including path finding.

    2
    4.3k last 90 days
  • Simple Bloom Filter wrapping the fastbloom Rust crate

    0
    4.2k last 90 days
  • lqueue 1.2.0

    Double-ended queue with limited length

    3
    4.0k last 90 days
  • Traverse is a toolset to walk arbitrary Elixir Datastructures in a functional way.

    9
    4.0k last 90 days
  • Helper functions for working with weighted random values.

    4
    4.0k last 90 days
  • pacer 0.1.6

    Dependency graphs for optimal function call ordering

    46
    3.6k last 90 days
  • An Erlang CRDT library

    36
    3.6k last 90 days
  • ease 1.0.2

    Simple implementation of standard animation easing functions.

    1
    3.5k last 90 days
  • Elixir lib for Aho-Corasick string searching. Uses a Rust-based NIF for greatly improved performance.

    0
    3.5k last 90 days
  • GenStagA data type and related functions to support an unrooted (multiple starting nodes) polytree (a tree-like graph with edges).

    1
    3.5k last 90 days
  • ane 0.1.1

    A very efficient way to share mutable data with :atomics and :ets

    29
    3.5k last 90 days
  • Real-valued intervals with support for the `Enumerable` protocol.

    11
    3.3k last 90 days
  • Abacus is a module for transforming other modules into metric systems. These modules (metric systems) make it possible to use functions to create values enclosed in a metric system and functions to manipulate these values.

    21
    3.2k last 90 days
  • aatree 0.1.0

    AA Tree in Pure Elixir

    5
    3.2k last 90 days
  • abbrev 0.1.0

    Calculates the set of unambiguous abbreviations for a given set of strings.

    0
    3.2k last 90 days