Skip to content

DDOtten/partitions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Partitions

A disjoint-sets/union-find implementation that allows for efficient iteration over the elements of a set.

Latest version Documentation Average time to resolve an issue Percentage of issues still open Maintenance Build Status

The main struct of this crate is PartitionVec<T> which has the functionality of a Vec<T> and in addition divides the elements of this vector in sets. The elements each start in their own set and sets can be joined with the union method. You can check if elements share a set with the same_set method and iterate on the elements in a set with the set method. The union and same_set methods are extremely fast and have an amortized complexity of O(α(n)) where α is the inverse Ackermann function and n is the length. This complexity is proven to be optimal and α(n) has value below 5 for any n that can be written in the observable universe. The next element of the iterator returned by set is found in O(1) time.

The Disjoint-Sets algorithm is used in high-performance implementations of unification. It is also a key component in implementing Kruskal's algorithm to find the minimum spanning tree of a graph.

Using Partitions

The recommended way to use this crate is to add a line into your Cargo.toml such as:

[dependencies]
partitions = "0.2"

and then add the following to to your lib.rs or main.rs:

extern crate partitions;

This crate is fully documented on docs.rs.

License

Partitions is distributed under the terms of the Apache License (Version 2.0).

About

A disjoint-sets/union-find implementation that allows for efficient iteration over the elements of a set.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages