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.

86 packages
  • jumper 1.0.2

    Jump consistent hash implementation in Elixir

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

    564
    518.3k last 90 days
  • ra 2.17.2

    Raft library

    928
    463.0k last 90 days
  • flow 1.2.4

    Computational parallel flows for Elixir

    1.6k
    375.4k last 90 days
  • zipper 1.1.1

    Generic Zipper Implementation for Erlang

    37
    328.1k last 90 days
  • General purpose circular buffer.

    26
    279.5k last 90 days
  • shards 1.1.1

    Erlang/Elixir library for partitioned or sharded ETS tables.

    296
    205.1k last 90 days
  • libgraph 0.16.0

    A high-performance graph datastructure library for Elixir projects

    566
    201.2k last 90 days
  • libring 1.7.0

    A fast consistent hash ring implementation in Elixir

    227
    187.3k last 90 days
  • radix 0.5.0

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

    11
    167.0k last 90 days
  • Parallel stream operations for Elixir

    103
    163.6k last 90 days
  • trie 2.0.7

    Erlang Trie Implementation

    132
    156.7k last 90 days
  • table 0.1.2

    Unified access to tabular data

    46
    139.0k last 90 days
  • abit 0.3.3

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

    10
    105.6k last 90 days
  • A faster Map, augmented with a MerkleTree

    106
    101.3k last 90 days
  • Implementations of δ-CRDTs

    549
    99.1k 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.

    5
    91.3k last 90 days
  • crux 0.1.2

    Library for boolean satisfiability solving and expression manipulation.

    10
    89.6k last 90 days
  • deque 1.2.0

    Fast bounded deque using two rotating lists.

    156
    70.3k last 90 days
  • algae 1.3.1

    Bootstrapped algebraic data types for Elixir

    336
    68.0k last 90 days
  • A SQL92 predicate evaluator in Erlang

    61.7k last 90 days
  • a_tree 0.3.3

    A dynamic data structure for efficiently indexing arbitrary boolean expressions

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

    21
    31.6k last 90 days
  • bimap 1.3.0

    Elixir implementation of bidirectional map and multimap

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

    30
    27.6k 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
    23.6k last 90 days
  • Consistent Hash Ring

    45
    23.2k last 90 days
  • qex 0.5.2

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

    34
    23.2k last 90 days
  • jchash 0.1.4

    Jump Consistent Hash NIF library for Erlang/Elixir.

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

    1
    20.5k last 90 days
  • A graph library. Including path finding.

    1
    15.9k last 90 days
  • Priority Search Queue

    7
    15.9k last 90 days
  • noether 1.0.1

    Algebra utilities for Elixir

    24
    15.5k last 90 days
  • A simple, dependency free boolean satisfiability solver.

    5
    14.8k last 90 days
  • heap 3.0.0

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

    12.6k last 90 days
  • Non-empty lists in Gleam

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

    10
    11.3k last 90 days
  • A splay-tree implementation

    13
    11.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
    10.7k last 90 days
  • Immutable arrays for Gleam

    9
    10.1k last 90 days
  • ord_map 0.1.0

    Ordered map for Elixir lang

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

    1
    9.0k last 90 days
  • SortedSet is a fast and efficient Rust backed sorted set.

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

    2
    8.9k last 90 days
  • adt 1.0.0

    A light ADT module for Elixir.

    11
    8.9k last 90 days
  • A library for cosine similarity & simhash calculation

    16
    8.6k last 90 days
  • Permutation is a package and protocol for calculating the possible permutations or combinations of an Enumerable.

    4
    8.4k last 90 days
  • An OTP application

    7.7k last 90 days
  • aatree 0.1.0

    AA Tree in Pure Elixir

    5
    6.8k 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.

    22
    6.8k last 90 days
  • abbrev 0.1.0

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

    0
    6.8k last 90 days
  • Elixir library computing simple combination and permutation on Enumerables.

    34
    6.8k last 90 days
  • merklet 2.0.0

    Merkle Trees for data replication purposes

    77
    6.7k last 90 days
  • Tries in Gleam

    13
    6.4k 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.

    90
    6.2k last 90 days
  • An Erlang CRDT library

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

    0
    5.9k last 90 days
  • ane 0.1.1

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

    29
    5.9k last 90 days
  • tote 1.0.2

    Bags (or multisets) in Gleam

    9
    5.4k last 90 days
  • lqueue 1.2.0

    Double-ended queue with limited length

    3
    4.7k last 90 days
  • fixpoint 0.16.4

    Constraint Programming Solver

    63
    4.5k last 90 days
  • cbuf 0.7.1

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

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

    11
    4.3k last 90 days
  • sets-like wrapper based on maps

    13
    3.6k last 90 days
  • zlist 1.3.0

    Erlang lazy list library

    10
    3.5k last 90 days
  • solverl 1.1.2

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

    46
    3.5k last 90 days
  • pqueue 2.0.7

    Erlang Priority Queue Implementation

    172
    3.4k last 90 days
  • pacer 0.1.6

    Dependency graphs for optimal function call ordering

    47
    3.4k last 90 days
  • Library for dealing with data structures

    52
    3.3k last 90 days
  • talan 0.2.0

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

    8
    3.3k last 90 days
  • A double-ended queue data structure

    8
    3.3k last 90 days
  • iv 1.4.1

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

    3.2k last 90 days
  • RingBuffer - size limited queue, like a ring or cyclic buffer. With non blocking and non locking writers.

    5
    3.2k last 90 days
  • A Rose Tree and Zipper in Elixir with a slew of navigation primitives.

    25
    3.1k last 90 days
  • router 1.0.4

    Trie based router.

    15
    3.0k last 90 days
  • Aho-Corasick algorithm, implemented in Elixir using Erlang's :digraph for the graph structure

    13
    3.0k last 90 days
  • affine 0.1.0

    Affine Transform Library

    1
    3.0k last 90 days
  • Implementation of Walker's Alias method by Elixir

    1
    3.0k last 90 days
  • alltid 0.1.0

    Alltid offers a simplified approach to editing deeply nested immutable data structures in Elixir.

    1
    2.9k last 90 days
  • Annealing is a library for building and running simulated annealing algorithms in Elixir.

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

    48
    2.8k last 90 days
  • riak_dt 2.1.1

    riak CTDT datatypes

    356
    2.7k last 90 days
  • An Elixir implementation of the Google diff_match_patch library.

    5
    2.7k last 90 days
  • Sorts a list of maps per a list of sort specs.

    6
    2.4k last 90 days
  • types 0.1.8

    Conflict-free Replicated Data Types

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

    1
    2.4k last 90 days