All Projects β†’ yourbasic β†’ Graph

yourbasic / Graph

Licence: bsd-2-clause
Graph algorithms and data structures

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Graph

Libgrape Lite
πŸ‡ A C++ library for parallel graph processing πŸ‡
Stars: ✭ 169 (-60.79%)
Mutual labels:  graph-algorithms, graph-theory, library
Differentia.js
No longer being supported or maintained. A Graph Theory & Data Structure Library for JavaScript.
Stars: ✭ 13 (-96.98%)
Mutual labels:  graph-algorithms, graph-theory
networkx-guide
We here are very big fans of NetworkX as a graph library and its comprehensive set of graph algorithms. For many though, working with NetworkX involves a steep learning curve. This guide is designed as an aid for beginners and experienced users to find specific tips and explore the world of complex networks.
Stars: ✭ 28 (-93.5%)
Mutual labels:  graph-algorithms, graph-theory
grblas
Python wrapper around GraphBLAS
Stars: ✭ 22 (-94.9%)
Mutual labels:  graph-algorithms, graph-theory
graphs
Graph algorithms written in Go
Stars: ✭ 60 (-86.08%)
Mutual labels:  graph-algorithms, graph-theory
jsgraph
Deprecated: Use the @encapsule/arccore package that includes the graph library
Stars: ✭ 42 (-90.26%)
Mutual labels:  graph-algorithms, graph-theory
Graph-Algorithms
Everything you need to know about graph theory to ace a technical interview πŸ”₯
Stars: ✭ 87 (-79.81%)
Mutual labels:  graph-algorithms, graph-theory
C Macro Collections
Easy to use, header only, macro generated, generic and type-safe Data Structures in C
Stars: ✭ 192 (-55.45%)
Mutual labels:  data-structures, library
Graphs.jl
An optimized graphs package for the Julia programming language
Stars: ✭ 197 (-54.29%)
Mutual labels:  graph-algorithms, graph-theory
everystreet
An algorithm finding #everystreet route on Open Street Map (OSMnx)
Stars: ✭ 43 (-90.02%)
Mutual labels:  graph-algorithms, graph-theory
py-algorithms
Algorithms and Data Structures, solutions to common CS problems.
Stars: ✭ 26 (-93.97%)
Mutual labels:  graph-algorithms, data-structures
Grafatko
An app for creating and visualizing graphs and graph-related algorithms.
Stars: ✭ 22 (-94.9%)
Mutual labels:  graph-algorithms, graph-theory
Deepgraph
Analyze Data with Pandas-based Networks. Documentation:
Stars: ✭ 232 (-46.17%)
Mutual labels:  data-structures, graph-theory
jgrapht
Master repository for the JGraphT project
Stars: ✭ 2,259 (+424.13%)
Mutual labels:  graph-algorithms, graph-theory
C Algorithms
A library of common data structures and algorithms written in C.
Stars: ✭ 2,654 (+515.78%)
Mutual labels:  data-structures, library
kaliningraph
πŸ•ΈοΈ Graphs, finite fields and discrete dynamical systems in Kotlin
Stars: ✭ 62 (-85.61%)
Mutual labels:  graph-algorithms, graph-theory
Towel
Throw in the towel.
Stars: ✭ 333 (-22.74%)
Mutual labels:  data-structures, library
Sc
Common libraries and data structures for C.
Stars: ✭ 161 (-62.65%)
Mutual labels:  data-structures, library
Collections C
A library of generic data structures.
Stars: ✭ 2,297 (+432.95%)
Mutual labels:  data-structures, library
LightGraphs.jl
An optimized graphs package for the Julia programming language
Stars: ✭ 680 (+57.77%)
Mutual labels:  graph-algorithms, graph-theory

Your basic graph GoDoc

Golang library of basic graph algorithms

Topological ordering

Topological ordering, image by David Eppstein, CC0 1.0.

This library offers efficient and well-tested algorithms for

  • breadth-first and depth-first search,
  • topological ordering,
  • strongly and weakly connected components,
  • bipartion,
  • shortest paths,
  • maximum flow,
  • Euler walks,
  • and minimum spanning trees.

The algorithms can be applied to any graph data structure implementing the two Iterator methods: Order, which returns the number of vertices, and Visit, which iterates over the neighbors of a vertex.

All algorithms operate on directed graphs with a fixed number of vertices, labeled from 0 to n-1, and edges with integer cost. An undirected edge {v, w} of cost c is represented by the two directed edges (v, w) and (w, v), both of cost c. A self-loop, an edge connecting a vertex to itself, is both directed and undirected.

Graph data structures

The type Mutable represents a directed graph with a fixed number of vertices and weighted edges that can be added or removed. The implementation uses hash maps to associate each vertex in the graph with its adjacent vertices. This gives constant time performance for all basic operations.

The type Immutable is a compact representation of an immutable graph. The implementation uses lists to associate each vertex in the graph with its adjacent vertices. This makes for fast and predictable iteration: the Visit method produces its elements by reading from a fixed sorted precomputed list.

Virtual graphs

The subpackage graph/build offers a tool for building graphs of type Virtual.

In a virtual graph no vertices or edges are stored in memory, they are instead computed as needed. New virtual graphs are constructed by composing and filtering a set of standard graphs, or by writing functions that describe the edges of a graph.

The following standard graphs are predefined:

  • empty graphs,
  • complete graphs and complete bipartite graphs,
  • grid graphs and complete k-ary trees,
  • cycle graphs and circulant graphs,
  • and hypergraphs.

The following operations are supported:

  • adding and deleting sets of edges,
  • adding cost functions,
  • filtering graphs by edge functions,
  • complement, intersection and union,
  • subgraphs,
  • connecting graphs at a single vertex,
  • joining two graphs by a set of edges,
  • matching two graphs by a set of edges,
  • cartesian product and tensor product.

Non-virtual graphs can be imported, and used as building blocks, by the Specific function. Virtual graphs don't need to be β€œexported‬”; they implement the Iterator interface and hence can be used directly by any algorithm in the graph package.

Installation

Once you have installed Go, run this command to install the graph package:

go get github.com/yourbasic/graph

Documentation

There is an online reference for the package at godoc.org/github.com/yourbasic/graph.

Roadmap

  • The API of this library is frozen.
  • Bug fixes and performance enhancement can be expected.
  • New functionality might be included.
  • Version numbers adhere to semantic versioning.

The only accepted reason to modify the API of this package is to handle issues that can't be resolved in any other reasonable way.

New features and performance enhancements are limited to basic algorithms and data structures, akin to the ones that you might find in a computer science textbook.

Stefan Nilsson – korthaj

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].