UNPKG

@graphty/algorithms

Version:

Graph algorithms library for browser environments implemented in TypeScript

74 lines 2.21 kB
import type { NodeId } from "../types/index.js"; import { CSRGraph } from "./csr-graph.js"; /** * Options for Direction-Optimized BFS */ export interface DirectionOptimizedBFSOptions { alpha?: number; beta?: number; } /** * Result of BFS traversal */ export interface BFSResult<TNodeId> { distances: Map<TNodeId, number>; parents: Map<TNodeId, TNodeId | null>; visitedCount: number; } /** * Direction-Optimized Breadth-First Search * * Dynamically switches between top-down and bottom-up search strategies * based on the size of the frontier. Particularly effective for low-diameter * graphs like social networks. * * Based on: Beamer, S., Asanović, K., & Patterson, D. (2012). * "Direction-optimizing breadth-first search." SC'12. */ export declare class DirectionOptimizedBFS<TNodeId = NodeId> { private graph; private alpha; private beta; private parent; private frontier; private nextFrontier; private distances; constructor(graph: CSRGraph<TNodeId>, options?: DirectionOptimizedBFSOptions); /** * Perform BFS from a single source */ search(source: TNodeId): BFSResult<TNodeId>; /** * Top-down BFS step - explore from frontier */ private topDownStep; /** * Bottom-up BFS step - check unvisited nodes */ private bottomUpStep; /** * Calculate edges to check for switching heuristic */ private calculateEdgesToCheck; /** * Build result map from internal data structures */ private buildResult; /** * Perform multi-source BFS */ searchMultiple(sources: TNodeId[]): BFSResult<TNodeId>; /** * Reset internal state for reuse */ reset(): void; } /** * Convenience function for single-source BFS */ export declare function directionOptimizedBFS<TNodeId = NodeId>(graph: CSRGraph<TNodeId>, source: TNodeId, options?: DirectionOptimizedBFSOptions): BFSResult<TNodeId>; /** * Convenience function for multi-source BFS */ export declare function directionOptimizedBFSMultiple<TNodeId = NodeId>(graph: CSRGraph<TNodeId>, sources: TNodeId[], options?: DirectionOptimizedBFSOptions): BFSResult<TNodeId>; //# sourceMappingURL=direction-optimized-bfs.d.ts.map