Skip to content
/ dsu Public

Disjoint Set data structure implementation in Go

License

Notifications You must be signed in to change notification settings

ihebu/dsu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

2b177e0 · Jan 29, 2022

History

30 Commits
Apr 29, 2021
Apr 27, 2021
May 13, 2021
Jan 29, 2022
Jan 29, 2022
Apr 27, 2021

Repository files navigation

dsu

GoDoc Go Report Card Build Status codecov Mentioned in Awesome Go

Implementation of the Disjoint-Set data structure. The Disjoint-Set, Also called a Union-Find or Merge-Find set, is a data structure that stores a collection of disjoint (non-overlapping) sets. Equivalently, it stores a partition of a set into disjoint subsets. It provides operations for adding new sets, merging sets (replacing them by their union), and finding a representative member of a set. The last operation allows to find out efficiently if any two elements are in the same or different sets.

Installation

go get github.com/ihebu/dsu

Documentation

You can check the code documentation here

Usage Example

// Create a new disjoint-set
d := dsu.New()

// Add the elements 1, 2, 3 to the set
d.Add(1)
d.Add(2)
d.Add(3)

// The set is now {1}, {2}, {3}

// Unite the sets {1}, {2} 
d.Union(1, 2)

// The set is now {1, 2}, {3}

// Find the representative element of each set
d.Find(1) // returns 2
d.Find(2) // returns 2
d.Find(3) // returns 3

// Check the existence of an element in the set
d.Contains(2) // returns true
d.Contains(54) // returns false

// Note : you can add elements of different type in the set
// Example

d.Add("hello")
d.Add(34.5)

d.Union("hello", 34.5)

About

Disjoint Set data structure implementation in Go

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages