hegg
sdsl-lite
hegg | sdsl-lite | |
---|---|---|
3 | 5 | |
72 | 2,174 | |
- | - | |
6.7 | 0.0 | |
15 days ago | 12 months ago | |
Haskell | C++ | |
BSD 3-clause "New" or "Revised" License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
hegg
- [ANN] E-graphs and equality saturation: hegg 0.1
-
Ask HN: What are some 'cool' but obscure data structures you know about?
Equality graphs (e-graphs) for theorem proving and equality saturation and other equality-related things.
They're awesome data structures that efficiently maintain a congruence relation over many expressions
> At a high level, e-graphs extend union-find to compactly represent equivalence classes of expressions while maintaining a key invariant: the equivalence relation is closed under congruence.
e.g. If I were to represent "f(x)" and "f(y)" in the e-graph, and then said "x == y" (merged "x" and "y" in the e-graph), then the e-graph, by congruence, would be able to tell me that "f(x) == f(y)"
e.g. If I were to represent "a(2/2)", in the e-graph, then say "2/2 == 1", and "x1 == x", by congruence the e-graph would know "a*(2/2) == a" !
The most recent description of e-graphs with an added insight on implementation is https://arxiv.org/pdf/2004.03082.pdf to the best of my knowledge.
P.S: I'm currently implementing them in Haskell https://github.com/alt-romes/hegg
sdsl-lite
- SDSL – Succinct Data Structure Library
-
Ask HN: What are some 'cool' but obscure data structures you know about?
Succinct Data Structures [0] [1]. It encompass many different underlying data structure types but the overarching idea is that you want small data size while still keeping "big O" run time.
In other words, data structures that effectively reach a 'practical' entropy lower bound while still keeping asymptotic run time.
[0] https://en.wikipedia.org/wiki/Succinct_data_structure
[1] https://github.com/simongog/sdsl-lite
-
SDSL-RS: A Rust interface for the C++ Succinct Data Structure Library.
The book mentioned in another comment is probably the best way to go. But FYI, documentation for some data structures include references. An SDSL-lite example can be found here. And its equivalent in SDSL-RS can be found here.
What are some alternatives?
Folly - An open-source C++ library developed and used at Facebook.
plurid-data-structures-typescript - Utility Data Structures Implemented in TypeScript
us - An alternative interface to Sia
sdsl-lite - Succinct Data Structure Library 3.0
RoaringBitmap - A better compressed bitset in Java: used by Apache Spark, Netflix Atlas, Apache Pinot, Tablesaw, and many others
minisketch - Minisketch: an optimized library for BCH-based set reconciliation
CPython - The Python programming language
dictomaton - Finite state dictionaries in Java
ann-benchmarks - Benchmarks of approximate nearest neighbor libraries in Python
gring - Golang circular linked list with array backend
multiversion-concurrency-contro
pyroscope - Continuous Profiling Platform. Debug performance issues down to a single line of code [Moved to: https://github.com/grafana/pyroscope]