Skip to content

Latest commit

 

History

History

graph

npm version Deno

Licence

@rimbu/graph

Welcome to @rimbu/graph! This package provides a versatile and powerful Graph data structure, allowing you to model complex relationships between nodes with ease.

Key Features:

  • Directed and Undirected Graphs: Choose between Arrow Graphs (directed) and Edge Graphs (undirected) based on your needs.
  • Valued Graphs: Add values to your edges for richer data representation.
  • Hashed and Sorted Implementations: Optimize your graphs with hashed or sorted nodes for efficient lookups and ordered traversal.

Exported Types:

Name Description
ArrowGraph<N> A generic directed graph with nodes of type N.
ArrowGraphHashed<N> A directed graph with hashed nodes of type N.
ArrowGraphSorted<N> A directed graph with sorted nodes of type N.
EdgeGraph<N> A generic undirected graph with nodes of type N.
EdgeGraphHashed<N> An undirected graph with hashed nodes of type N.
EdgeGraphSorted<N> An undirected graph with sorted nodes of type N.
Graph<N> A generic graph with nodes of type N.
ValuedGraph<N, V> A generic graph with nodes of type N and edges with value type V.
VariantGraph<N> A generic type-variant graph with nodes of type N.
VariantValuedGraph<N, V> A generic type-variant graph with nodes of type N and edges with value type V.

Documentation

For complete documentation, please visit the Graph page in the Rimbu Docs, or directly explore the Rimbu Graph API Docs.

Try It Out

Experience @rimbu/graph in action! Try Out Rimbu on CodeSandBox.

Installation

Compabitity

Package Managers

Yarn:

yarn add @rimbu/graph

npm:

npm install @rimbu/graph

Bun:

bun add @rimbu/graph

Deno Setup

Create or edit import_map.json in your project root:

{
  "imports": {
    "@rimbu/": "https://deno.land/x/rimbu@x.y.z/"
  }
}

Replace x.y.z with the desired version.

In this way you can use relative imports from Rimbu in your code, like so:

import { List } from '@rimbu/core/mod.ts';
import { HashMap } from '@rimbu/hashed/mod.ts';

Note that for sub-packages, due to conversion limitations it is needed to import the index.ts instead of mod.ts, like so:

import { HashMap } from '@rimbu/hashed/map/index.ts';

To run your script (let's assume the entry point is in src/main.ts):

deno run --import-map import_map.json src/main.ts

Usage

import { EdgeGraphSorted } from '@rimbu/graph';

console.log(EdgeGraphSorted.of([1, 2], [2, 3], [3, 1], [5]).toString());

Author

Created and maintained by Arvid Nicolaas.

Contributing

We welcome contributions! Please read our Contributing guide.

Contributors

Made with contributors-img.

License

This project is licensed under the MIT License. See the LICENSE for details.