UNPKG

@graphty/algorithms

Version:

Graph algorithms library for browser environments implemented in TypeScript

48 lines 1.67 kB
/** * Hierarchical Clustering Algorithm * * Builds a hierarchy of clusters through agglomeration (bottom-up) * or division (top-down). Useful for understanding multi-scale * structure in graphs. */ export interface ClusterNode<T> { id: string; members: Set<T>; left?: ClusterNode<T> | undefined; right?: ClusterNode<T> | undefined; distance: number; height: number; trees?: ClusterNode<T>[] | undefined; } export interface HierarchicalClusteringResult<T> { root: ClusterNode<T>; dendrogram: ClusterNode<T>[]; clusters: Map<number, Set<T>[]>; } export type LinkageMethod = "single" | "complete" | "average" | "ward"; /** * Agglomerative hierarchical clustering * Builds clusters bottom-up by merging closest pairs * * @param graph - Undirected graph * @param linkage - Linkage method for cluster distance * @returns Hierarchical clustering result * * Time Complexity: O(n³) naive, O(n² log n) with heap * Space Complexity: O(n²) */ export declare function hierarchicalClustering<T>(graph: Map<T, Set<T>>, linkage?: LinkageMethod): HierarchicalClusteringResult<T>; /** * Cut dendrogram at specified height to get clusters */ export declare function cutDendrogram<T>(root: ClusterNode<T>, height: number): Set<T>[]; /** * Cut dendrogram to get k clusters */ export declare function cutDendrogramKClusters<T>(root: ClusterNode<T>, k: number): Set<T>[]; /** * Compute modularity-based hierarchical clustering * Uses modularity gain to decide merges */ export declare function modularityHierarchicalClustering<T>(graph: Map<T, Set<T>>): HierarchicalClusteringResult<T>; //# sourceMappingURL=hierarchical.d.ts.map