UNPKG

@graphty/algorithms

Version:

Graph algorithms library for browser environments implemented in TypeScript

86 lines 2.62 kB
import type { NodeId } from "../types/index.js"; /** * Interface for read-only graph operations */ export interface ReadonlyGraph<TNodeId = NodeId> { nodeCount(): number; edgeCount(): number; hasNode(nodeId: TNodeId): boolean; hasEdge(source: TNodeId, target: TNodeId): boolean; neighbors(nodeId: TNodeId): IterableIterator<TNodeId>; outDegree(nodeId: TNodeId): number; nodes(): IterableIterator<TNodeId>; } /** * Compressed Sparse Row (CSR) graph representation * * Provides cache-efficient graph storage with sequential memory access patterns. * Optimized for traversal operations and sparse graphs. */ export declare class CSRGraph<TNodeId = NodeId> implements ReadonlyGraph<TNodeId> { private data; constructor(adjacencyList: Map<TNodeId, TNodeId[]>, weights?: Map<string, number>, buildReverse?: boolean); /** * Build CSR structure from adjacency list */ private buildCSR; nodeCount(): number; edgeCount(): number; hasNode(nodeId: TNodeId): boolean; hasEdge(source: TNodeId, target: TNodeId): boolean; /** * Get neighbors as node IDs */ neighbors(nodeId: TNodeId): IterableIterator<TNodeId>; /** * Get all nodes */ nodes(): IterableIterator<TNodeId>; /** * Get neighbors as indices (internal use) */ getNeighborIndices(nodeIndex: number): number[]; outDegree(nodeId: TNodeId): number; /** * Get out-degree by index (internal use) */ outDegreeByIndex(nodeIndex: number): number; /** * Iterator support for neighbor indices */ iterateNeighborIndices(nodeIndex: number): Generator<number>; /** * Iterator support for incoming neighbor indices (for bottom-up BFS) */ iterateIncomingNeighborIndices(nodeIndex: number): Generator<number>; /** * Convert node ID to index */ nodeToIndex(nodeId: TNodeId): number; /** * Convert index to node ID */ indexToNodeId(index: number): TNodeId; /** * Get edge weight */ getEdgeWeight(source: TNodeId, target: TNodeId): number | undefined; /** * Binary search for target in sorted array */ private binarySearch; /** * Create CSR graph from standard Graph */ static fromGraph<TNodeId = NodeId>(graph: { nodes(): IterableIterator<{ id: TNodeId; }>; neighbors(nodeId: TNodeId): IterableIterator<TNodeId>; hasNode(nodeId: TNodeId): boolean; getEdge?(source: TNodeId, target: TNodeId): { weight?: number; } | undefined; }): CSRGraph<TNodeId>; } //# sourceMappingURL=csr-graph.d.ts.map