Package Exports
- fast-graph
- fast-graph/lib/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (fast-graph) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
fast-graph
A robust and fast package for handling graph opperations and algorithms
Description
🚀 Cutting-edge TypeScript library designed to empower developers with a high-performance solution for efficient graph operations and algorithms. With a focus on speed and reliability, this library simplifies the implementation of graph-related tasks, offering a comprehensive set of features for seamless integration into any real world case.
Install
yarn add fast-graphnpm install fast-graphReal life usecases
- Social Networks: Identify influencers and communities effortlessly.
- Software Dependencies: Streamline module sequencing in large projects.
- Route Optimization: Efficient planning for maps and network routing.
- Task Scheduling: Smooth management of project tasks and dependencies.
- Code Compilation: Parallel execution for faster builds.
- Recommendation Systems: Personalized user insights for better recommendations.
- Supply Chain Optimization: Improve logistics by analyzing distribution networks.
Usage
1. Node Class:
The Node class represents a node in the graph, holding a unique identifier (id) and an associated value of generic type (T). The incomingNeighbors property tracks incoming edges to the node.
import { Node } from "fast-graph";
// Example Usage:
const myNode = new Node<string>("uniqueId", "Node Value");2. Graph Class:
The Graph class is the core component for graph operations. It allows you to create, manipulate, and perform various algorithms on graphs.
import { Node, Graph } from "fast-graph";
// Example Usage:
const myGraph = new Graph<string>();
// Adding Nodes
const nodeA = new Node<string>("A", "Node A");
const nodeB = new Node<string>("B", "Node B");
myGraph.addNode(nodeA);
myGraph.addNode(nodeB);
// Adding Edges
myGraph.addEdge(nodeA, nodeB);
// Removing Nodes
myGraph.removeNode(nodeA);
// Removing Edges
myGraph.removeEdge(nodeB, nodeA);
// Checking if the Graph is Empty
const isEmpty = myGraph.isEmpty();
// Getting Neighbors of a Node
const neighbors = myGraph.getNeighbors(nodeB);
// Kahn's Topological Sort
const topologicalOrder = myGraph.kahnTopologicalSort();
// Use BFS to visit all nodes in the graph
myGraph.bfs(node => {
console.log(`Visiting Node ${node.id} with value ${node.value}`);
return SearchAlgorithmNodeBehavior.continue;
});
// Use BFS to find a node
myGraph.bfs(node => {
console.log(`Visiting Node ${node.id} with value ${node.value}`);
return node.id === "id_your_looking_for"
? SearchAlgorithmNodeBehavior.break
: SearchAlgorithmNodeBehavior.continue;
});
// Use BFS to visit all nodes in the graph async
await myGraph.bfsAsync(async node => {
await yourExternalApiCall(node);
return SearchAlgorithmNodeBehavior.continue;
});Note: Ensure that you handle errors appropriately, as the library throws an error if attempting operations on non-existing nodes or in the presence of cycles.
Contributing
Contributions are welcome! Please submit a pull request with any improvements or bug fixes. Make sure to add tests for any new features and bug fixes, and ensure that the existing tests pass.
License
This project is licensed under the MIT License.
Contact
If you need help or have questions, feel free to open an issue in the GitHub repository.
