UNPKG

@graphty/algorithms

Version:

Graph algorithms library for browser environments implemented in TypeScript

47 lines 1.6 kB
/** * Check if a graph should use optimizations based on its size */ function shouldUseOptimizations(nodeCount, edgeCount) { // Use optimizations for graphs with more than 10k nodes or 100k edges return nodeCount > 10000 || edgeCount > 100000; } /** * Determine if optimizations should be used for a given graph */ export function shouldOptimize(graph, options = {}) { const { optimized = "auto" } = options; if (optimized === "auto") { // Check graph size return shouldUseOptimizations(graph.nodeCount, graph.totalEdgeCount); } return optimized; } /** * Merge optimization options with algorithm-specific options */ export function mergeOptimizationOptions(graph, options) { const { optimized: userOptimized, ...rest } = options; return { ...rest, optimized: shouldOptimize(graph, userOptimized !== undefined ? { optimized: userOptimized } : {}), }; } /** * Create an optimized version of an algorithm * @example * const optimizedBetweenness = createOptimizedAlgorithm( * betweennessCentrality, * (graph, options) => ({...options, optimized: true}) * ); */ export function createOptimizedAlgorithm(algorithm, optionsTransformer) { return (...args) => { const [graph, options, ...rest] = args; if (optionsTransformer && options !== undefined) { const transformedOptions = optionsTransformer(graph, options); return algorithm(...[graph, transformedOptions, ...rest]); } return algorithm(...args); }; } //# sourceMappingURL=optimization-helpers.js.map