@graphty/algorithms
Version:
Graph algorithms library for browser environments implemented in TypeScript
74 lines • 2.21 kB
TypeScript
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