UNPKG

js-graph-algorithms

Version:

Package implements data structures and algorithms for processing various types of graphs

257 lines (255 loc) 7 kB
declare namespace JsGraphs { interface Node { label?: string; } class StackNode<T> { value: T; next: StackNode<T> | null; constructor(value: T); } class Stack<T> { private N; private first; constructor(); push(a: T): void; _push(x: StackNode<T> | null, a: T): StackNode<T>; pop(): T | undefined; size(): number; isEmpty(): boolean; peep(): T | undefined; toArray(): T[]; } class QueueNode<T> { value: T; next: QueueNode<T> | null; constructor(a: T); } class Queue<T> { private first; private last; private N; constructor(); enqueue(item: T): void; dequeue(): T | undefined; size(): number; isEmpty(): boolean; toArray(): T[]; } class MinPQ<T> { private s; private N; private compare; constructor(compare?: (a1: any, a2: any) => number); enqueue(item: T): void; swim(k: number): void; delMin(): T | undefined; sink(k: number): void; size(): number; isEmpty(): boolean; } class QuickUnion { private id; constructor(V: number); union(v: number, w: number): void; root(q: number): number; connected(v: number, w: number): boolean; } class IndexMinPQ<T> { private keys; private pq; private qp; private N; private compare; constructor(N: number, compare?: (a1: any, a2: any) => number); insert(index: number, key: T): void; decreaseKey(index: number, key: T): void; minKey(): T | null; min(): number; delMin(): number; swim(k: number): void; sink(k: number): void; containsIndex(index: number): boolean; isEmpty(): boolean; size(): number; } class Graph { V: number; private adjList; private nodeInfo; private edges; constructor(V: number); addEdge(v: number, w: number): void; adj(v: number): number[]; node(v: number): Node; edge(v: number, w: number): Edge | null; } class DiGraph { V: number; private adjList; private nodeInfo; private edges; constructor(V: number); addEdge(v: number, w: number): void; edge(v: number, w: number): Edge | null; adj(v: number): number[]; node(v: number): Node; reverse(): DiGraph; } class Edge { private v; private w; weight: number; label?: string; constructor(v: number, w: number, weight: number); either(): number; other(x: number): number; from(): number; to(): number; } class WeightedGraph { V: number; protected adjList: Edge[][]; private nodeInfo; constructor(V: number); adj(v: number): Edge[]; edge(v: number, w: number): Edge | null; node(v: number): Node; addEdge(e: Edge): void; } class WeightedDiGraph extends WeightedGraph { addEdge(e: Edge): void; edge(v: number, w: number): Edge | null; toDiGraph(): DiGraph; } class FlowEdge { private v; private w; private capacity; private flow; label?: string; constructor(v: number, w: number, capacity: number); residualCapacityTo(x: number): number; addResidualFlowTo(x: number, deltaFlow: number): void; from(): number; to(): number; other(x: number): number; } class FlowNetwork { V: number; private adjList; private nodeInfo; constructor(V: number); node(v: number): Node; edge(v: number, w: number): FlowEdge | null; addEdge(e: FlowEdge): void; adj(v: number): FlowEdge[]; } class DepthFirstSearch<T> { private s; private marked; private edgeTo; constructor(G: Graph, s: number); dfs(G: Graph, v: number): void; hasPathTo(v: number): boolean; pathTo(v: number): number[]; } class BreadthFirstSearch { private V; private s; private marked; private edgeTo; constructor(G: Graph, s: number); hasPathTo(v: number): boolean; pathTo(v: number): number[]; } class ConnectedComponents { private count; private marked; private id; constructor(G: Graph); dfs(G: Graph, v: number): void; componentId(v: number): number; componentCount(): number; } class TopologicalSort { private postOrder; private marked; constructor(G: DiGraph); dfs(G: DiGraph, v: number): void; order(): number[]; } class StronglyConnectedComponents { private count; private marked; private id; constructor(G: DiGraph); dfs(G: DiGraph, v: number): void; componentId(v: number): number; componentCount(): number; } class KruskalMST { mst: Edge[]; constructor(G: WeightedGraph); } class LazyPrimMST { mst: Edge[]; private marked; private pq; constructor(G: WeightedGraph); visit(G: WeightedGraph, v: number): void; } class EagerPrimMST { mst: Edge[]; private pq; private marked; constructor(G: WeightedGraph); visit(G: WeightedGraph, v: number): void; } class Dijkstra { private s; private marked; private edgeTo; private cost; private pq; constructor(G: WeightedGraph, s: number); relax(e: Edge): void; hasPathTo(v: number): boolean; pathTo(v: number): Edge[]; distanceTo(v: number): number; } class BellmanFord { private s; private marked; private edgeTo; private cost; constructor(G: WeightedGraph, s: number); relax(e: Edge): void; hasPathTo(v: number): boolean; pathTo(v: number): Edge[]; distanceTo(v: number): number; } class TopologicalSortShortestPaths { private s; private marked; private edgeTo; private cost; constructor(G: WeightedDiGraph, s: number); relax(e: Edge): void; hasPathTo(v: number): boolean; pathTo(v: number): Edge[]; distanceTo(v: number): number; } class FordFulkerson { value: number; private marked; private edgeTo; private s; private t; constructor(G: FlowNetwork, s: number, t: number); hasAugmentedPath(G: FlowNetwork): boolean; minCut(G: FlowNetwork): FlowEdge[]; } } declare module "js-graph-algorithms" { export = JsGraphs; }