https://github.com/vigna/sux4j
Sux4J is an effort to bring succinct data structures to Java.
https://github.com/vigna/sux4j
elias-fano java minimal-perfect-hash ranking selection succinct-data-structure
Last synced: 7 months ago
JSON representation
Sux4J is an effort to bring succinct data structures to Java.
- Host: GitHub
- URL: https://github.com/vigna/sux4j
- Owner: vigna
- License: lgpl-2.1
- Created: 2015-05-11T16:36:26.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2025-06-22T08:47:18.000Z (8 months ago)
- Last Synced: 2025-06-22T09:32:36.664Z (8 months ago)
- Topics: elias-fano, java, minimal-perfect-hash, ranking, selection, succinct-data-structure
- Language: Java
- Homepage:
- Size: 22.1 MB
- Stars: 163
- Watchers: 12
- Forks: 24
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES
- License: COPYING.LESSER
Awesome Lists containing this project
README
# Welcome to the Sux Project and Sux4J!
## Introduction
Sux is an umbrella nickname for the results of my fiddling with the
implementation of basic succinct data structures in
[C++](https://github.com/vigna/sux/),
[Java](https://github.com/vigna/Sux4J/), and
[Rust](https://github.com/vigna/sux-rs/).
This repository contains the Java code and references to some papers.
Please have a look at the other repositories for the main highlights in
each language.
This is free software. The Rust and Java code is distributed under either
the [GNU Lesser General Public License
2.1+](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) or the
[Apache Software License
2.0](https://www.apache.org/licenses/LICENSE-2.0). The C++ code is
distributed under the [GNU General Public License
3.0+](https://www.gnu.org/licenses/gpl-3.0.html) with a [Runtime Library
Exception](https://www.gnu.org/licenses/gcc-exception-3.1.html) (as the C
standard library).
## Building
You need [Ant](https://ant.apache.org/) and [Ivy](https://ant.apache.org/ivy/).
Then, run `ant ivy-setupjars jar`.
## Papers
* A [paper](http://vigna.di.unimi.it/papers.php#VigBIRSQ) on the broadword
techniques used in the rank/select code, and in particular about the
broadword implementation of select queries implemented in Fast.select().
* A [paper](http://vigna.di.unimi.it/papers.php#BBPMMPH) on the theory of
monotone minimal perfect hashing.
* An [experimental paper](http://vigna.di.unimi.it/papers.php#BBPTPMMPH2)
on monotone minimal perfect hashing.
* A [paper](http://vigna.di.unimi.it/papers.php#GOVFSCF) on the current
implementation of static and minimal perfect hash functions.
* A [paper](http://vigna.di.unimi.it/papers.php#GeVECSF) on the current
implementation of compressed static functions.
* A [paper](http://vigna.di.unimi.it/papers.php#MaVCFTDRS) on the C++
implementation dynamic ranking and selection using compact Fenwick trees.
* A [paper](http://vigna.di.unimi.it/papers.php#EGVRS) on the C++
implementation of RecSplit.
* A [paper](http://vigna.di.unimi.it/papers.php#VigECS) on the Rust
implementation of functions and filters based on ε-cost sharding.