@danielsimonjr/mathts-functions 0.35.0 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/geometry/geometry-extra.d.ts +109 -0
- package/dist/geometry/geometry-extra.d.ts.map +1 -0
- package/dist/graph/optimization.d.ts +116 -0
- package/dist/graph/optimization.d.ts.map +1 -0
- package/dist/graph/traversal-centrality.d.ts +147 -0
- package/dist/graph/traversal-centrality.d.ts.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +986 -27
- package/dist/numeric/interpn.d.ts +40 -0
- package/dist/numeric/interpn.d.ts.map +1 -0
- package/dist/numeric/interval.d.ts +84 -0
- package/dist/numeric/interval.d.ts.map +1 -0
- package/dist/typed/algebra.d.ts +40 -3
- package/dist/typed/algebra.d.ts.map +1 -1
- package/dist/typed/numeric.d.ts +19 -4
- package/dist/typed/numeric.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
type Quat = readonly [number, number, number, number] | readonly number[];
|
|
2
|
+
/**
|
|
3
|
+
* Multiplicative inverse of a quaternion: `conj(q) / |q|²`. For unit
|
|
4
|
+
* quaternions this equals the conjugate.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* quaternionInverse([0, 1, 0, 0]) // [0, -1, 0, 0]
|
|
8
|
+
*/
|
|
9
|
+
export declare function quaternionInverse(q: Quat): number[];
|
|
10
|
+
/**
|
|
11
|
+
* Spherical linear interpolation between two (unit) quaternions, `t ∈ [0,1]`.
|
|
12
|
+
* Chooses the shortest arc (negating `q2` when the dot product is negative)
|
|
13
|
+
* and falls back to normalized linear interpolation (nlerp) when the inputs
|
|
14
|
+
* are nearly parallel, where the slerp coefficients become numerically
|
|
15
|
+
* unstable.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* quaternionSlerp([1,0,0,0], [0,1,0,0], 0) // [1,0,0,0]
|
|
19
|
+
* quaternionSlerp([1,0,0,0], [0,1,0,0], 1) // [0,1,0,0]
|
|
20
|
+
*/
|
|
21
|
+
export declare function quaternionSlerp(q1: Quat, q2: Quat, t: number): number[];
|
|
22
|
+
/**
|
|
23
|
+
* Convert a (unit) quaternion `[w, x, y, z]` to ZYX intrinsic Euler angles
|
|
24
|
+
* `[roll, pitch, yaw]` in radians (the standard aerospace yaw-pitch-roll
|
|
25
|
+
* sequence). Pitch is clamped at the ±90° gimbal-lock singularity.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* quaternionToEuler([1, 0, 0, 0]) // [0, 0, 0]
|
|
29
|
+
*/
|
|
30
|
+
export declare function quaternionToEuler(q: Quat): [number, number, number];
|
|
31
|
+
/**
|
|
32
|
+
* Axis-aligned bounding box (per-dimension min/max) of a set of nD points.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* boundingBox([[1,2],[3,0],[2,5]]) // { min: [1,0], max: [3,5] }
|
|
36
|
+
*/
|
|
37
|
+
export declare function boundingBox(points: number[][]): {
|
|
38
|
+
min: number[];
|
|
39
|
+
max: number[];
|
|
40
|
+
};
|
|
41
|
+
/** Result of {@link procrustes}: best-fit rotation, uniform scale, and residual. */
|
|
42
|
+
export interface ProcrustesResult {
|
|
43
|
+
/** Orthogonal `d x d` rotation (or reflection) matrix. */
|
|
44
|
+
R: number[][];
|
|
45
|
+
/** Optimal uniform scale factor. */
|
|
46
|
+
scale: number;
|
|
47
|
+
/** Residual sum of squares after alignment (centered + unit-normalized inputs). */
|
|
48
|
+
disparity: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Orthogonal Procrustes alignment: find the rotation `R`, uniform scale
|
|
52
|
+
* `scale`, and residual `disparity` that best map `B` onto `A` after both are
|
|
53
|
+
* centered on their centroid and normalized to unit Frobenius norm.
|
|
54
|
+
*
|
|
55
|
+
* Algorithm: `A0`, `B0` = centered + unit-normalized `A`, `B`;
|
|
56
|
+
* `M = A0ᵀ B0 = U Σ Vᵀ` (SVD); `R = V Uᵀ` (minimizes `‖B0 R − A0‖`);
|
|
57
|
+
* `scale = Σ Σᵢ` (sum of singular values); `disparity = ‖A0 − scale·B0·R‖²`.
|
|
58
|
+
* Pinned against `scipy.spatial.procrustes` (disparity matches to float
|
|
59
|
+
* precision for both exact-rotation and unrelated-point-set inputs).
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* procrustes([[0,0],[1,0],[0,1]], [[0,0],[0,1],[-1,0]])
|
|
63
|
+
* // R ~ 90° rotation, disparity ~ 0
|
|
64
|
+
*/
|
|
65
|
+
export declare function procrustes(A: number[][], B: number[][]): ProcrustesResult;
|
|
66
|
+
/**
|
|
67
|
+
* Indices of the `k` nearest points to `query` (Euclidean distance,
|
|
68
|
+
* nearest-first). Brute-force — see `../ml/dbscan-knn.ts` for the same
|
|
69
|
+
* strategy used by the k-NN classifier/regressor.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* kdTreeKNN([[0,0],[1,0],[5,5]], [0,0], 2) // [0, 1]
|
|
73
|
+
*/
|
|
74
|
+
export declare function kdTreeKNN(points: number[][], query: number[], k: number): number[];
|
|
75
|
+
/**
|
|
76
|
+
* Indices of all points within Euclidean radius `r` of `query` (brute force).
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* kdTreeRadius([[0,0],[1,0],[5,5]], [0,0], 2) // [0, 1]
|
|
80
|
+
*/
|
|
81
|
+
export declare function kdTreeRadius(points: number[][], query: number[], r: number): number[];
|
|
82
|
+
/**
|
|
83
|
+
* True when every element of `b` (with multiplicity) appears in `a` — i.e.
|
|
84
|
+
* `a` is a (multiset) superset of `b`. Complement of `setIsSubset`.
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* setIsSuperset([1, 2, 3], [1, 2]) // true
|
|
88
|
+
* setIsSuperset([1, 2], [1, 2, 3]) // false
|
|
89
|
+
*/
|
|
90
|
+
export declare function setIsSuperset(a: unknown[], b: unknown[]): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* True when `a` and `b` are equal as multisets (same elements, same
|
|
93
|
+
* multiplicities, order-independent).
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* setEqual([1, 2, 2], [2, 1, 2]) // true
|
|
97
|
+
* setEqual([1, 2], [1, 2, 2]) // false
|
|
98
|
+
*/
|
|
99
|
+
export declare function setEqual(a: unknown[], b: unknown[]): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* True when `a` and `b` share no elements (multiset intersection is empty).
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* setDisjoint([1, 2], [3, 4]) // true
|
|
105
|
+
* setDisjoint([1, 2], [2, 3]) // false
|
|
106
|
+
*/
|
|
107
|
+
export declare function setDisjoint(a: unknown[], b: unknown[]): boolean;
|
|
108
|
+
export {};
|
|
109
|
+
//# sourceMappingURL=geometry-extra.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry-extra.d.ts","sourceRoot":"","sources":["../../src/geometry/geometry-extra.ts"],"names":[],"mappings":"AAcA,KAAK,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,CAAC;AAU1E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,CAInD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAuBvE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAOnE;AAMD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,CAAA;CAAE,CAahF;AAMD,oFAAoF;AACpF,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACd,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,SAAS,EAAE,MAAM,CAAC;CACnB;AA6CD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,gBAAgB,CAyBzE;AAeD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAIlF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAMrF;AAoBD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAEjE;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAE5D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAM/D"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph Optimization — Max-Flow/Min-Cut, A* Search, Hungarian Assignment
|
|
3
|
+
*
|
|
4
|
+
* Complements the existing traversal/shortest-path/centrality graph
|
|
5
|
+
* functions (`typed/graph.ts`, `graph/traversal-centrality.ts`) with
|
|
6
|
+
* classic combinatorial-optimization algorithms:
|
|
7
|
+
*
|
|
8
|
+
* - `maxFlow` / `minCut`: Edmonds-Karp max-flow (BFS shortest-augmenting-path
|
|
9
|
+
* on the residual graph) and the corresponding min-cut via the
|
|
10
|
+
* max-flow-min-cut theorem.
|
|
11
|
+
* - `astar`: heuristic-guided shortest path on a weighted adjacency matrix;
|
|
12
|
+
* reduces to Dijkstra when the heuristic is the zero function.
|
|
13
|
+
* - `hungarian`: Kuhn-Munkres optimal assignment minimizing total cost on a
|
|
14
|
+
* square cost matrix.
|
|
15
|
+
*
|
|
16
|
+
* Input format: adjacency/capacity/cost matrices as `number[][]`, matching
|
|
17
|
+
* the convention used elsewhere in this directory.
|
|
18
|
+
*
|
|
19
|
+
* @packageDocumentation
|
|
20
|
+
*/
|
|
21
|
+
/** Result of `maxFlow`. */
|
|
22
|
+
export interface MaxFlowResult {
|
|
23
|
+
/** Total maximum flow value from `source` to `sink`. */
|
|
24
|
+
maxFlow: number;
|
|
25
|
+
/** Flow matrix: `flow[i][j]` is the net flow sent along edge i -> j. */
|
|
26
|
+
flow: number[][];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Maximum flow from `source` to `sink` via the Edmonds-Karp algorithm
|
|
30
|
+
* (Ford-Fulkerson with BFS shortest-augmenting-path selection).
|
|
31
|
+
*
|
|
32
|
+
* Time complexity: O(V*E^2) (O(V^5) on a dense adjacency matrix).
|
|
33
|
+
*
|
|
34
|
+
* @param capacity - Capacity matrix (directed reading; `capacity[i][j]` is
|
|
35
|
+
* the capacity of edge i -> j; 0 or negative means no edge)
|
|
36
|
+
* @param source - Source node index
|
|
37
|
+
* @param sink - Sink node index
|
|
38
|
+
* @returns `{ maxFlow, flow }`
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* const cap = [[0,3,2,0],[0,0,1,2],[0,0,0,3],[0,0,0,0]];
|
|
42
|
+
* maxFlow(cap, 0, 3).maxFlow // => 5
|
|
43
|
+
*/
|
|
44
|
+
export declare function maxFlow(capacity: number[][], source: number, sink: number): MaxFlowResult;
|
|
45
|
+
/** Result of `minCut`. */
|
|
46
|
+
export interface MinCutResult {
|
|
47
|
+
/** Value of the minimum cut (equals the maximum flow value). */
|
|
48
|
+
value: number;
|
|
49
|
+
/** `[S, T]` partition: `S` reachable from `source` in the residual
|
|
50
|
+
* graph after saturating max-flow, `T` the rest. */
|
|
51
|
+
partition: [number[], number[]];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Minimum s-t cut, computed via the max-flow-min-cut theorem: run
|
|
55
|
+
* `maxFlow`, then BFS the residual graph from `source` — reachable nodes
|
|
56
|
+
* form the source-side partition `S`, the rest form `T`.
|
|
57
|
+
*
|
|
58
|
+
* @param capacity - Capacity matrix (directed reading)
|
|
59
|
+
* @param source - Source node index
|
|
60
|
+
* @param sink - Sink node index
|
|
61
|
+
* @returns `{ value, partition: [S, T] }`
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* const cap = [[0,3,2,0],[0,0,1,2],[0,0,0,3],[0,0,0,0]];
|
|
65
|
+
* minCut(cap, 0, 3) // => { value: 5, partition: [[0, ...], [...]] }
|
|
66
|
+
*/
|
|
67
|
+
export declare function minCut(capacity: number[][], source: number, sink: number): MinCutResult;
|
|
68
|
+
/** Result of `astar`. */
|
|
69
|
+
export interface AStarResult {
|
|
70
|
+
/** Node sequence from `start` to `goal` (empty if unreachable). */
|
|
71
|
+
path: number[];
|
|
72
|
+
/** Total path cost (Infinity if unreachable). */
|
|
73
|
+
cost: number;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* A* shortest path on a weighted adjacency matrix, guided by `heuristic`
|
|
77
|
+
* (an admissible estimate of the remaining cost to `goal`). With
|
|
78
|
+
* `heuristic = () => 0` this reduces to Dijkstra's algorithm.
|
|
79
|
+
*
|
|
80
|
+
* A directed edge i -> j exists when `adj[i][j]` is finite and nonzero.
|
|
81
|
+
*
|
|
82
|
+
* @param adj - Adjacency matrix (directed reading; edge weights should be
|
|
83
|
+
* non-negative for optimality)
|
|
84
|
+
* @param start - Source node index
|
|
85
|
+
* @param goal - Target node index
|
|
86
|
+
* @param heuristic - `(node) => estimated cost from node to goal`
|
|
87
|
+
* @returns `{ path, cost }`; `{ path: [], cost: Infinity }` if unreachable
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* const adj = [[0,1,4],[1,0,1],[4,1,0]];
|
|
91
|
+
* astar(adj, 0, 2, () => 0) // => { path: [0, 1, 2], cost: 2 }
|
|
92
|
+
*/
|
|
93
|
+
export declare function astar(adj: number[][], start: number, goal: number, heuristic: (node: number) => number): AStarResult;
|
|
94
|
+
/** Result of `hungarian`. */
|
|
95
|
+
export interface HungarianResult {
|
|
96
|
+
/** `assignment[i]` is the column assigned to row i. */
|
|
97
|
+
assignment: number[];
|
|
98
|
+
/** Total cost of the optimal assignment. */
|
|
99
|
+
cost: number;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Optimal assignment minimizing total cost, via the Kuhn-Munkres
|
|
103
|
+
* (Hungarian) algorithm on a square cost matrix. Uses the O(n^3)
|
|
104
|
+
* Jonker-Volgenant-style potential/shortest-augmenting-path formulation
|
|
105
|
+
* (1-indexed internally per the classical presentation).
|
|
106
|
+
*
|
|
107
|
+
* @param cost - Square cost matrix (`cost[i][j]` = cost of assigning row i
|
|
108
|
+
* to column j)
|
|
109
|
+
* @returns `{ assignment, cost }`
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* hungarian([[4,1,3],[2,0,5],[3,2,2]])
|
|
113
|
+
* // => { assignment: [1, 0, 2], cost: 5 } (scipy linear_sum_assignment)
|
|
114
|
+
*/
|
|
115
|
+
export declare function hungarian(cost: number[][]): HungarianResult;
|
|
116
|
+
//# sourceMappingURL=optimization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimization.d.ts","sourceRoot":"","sources":["../../src/graph/optimization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,2BAA2B;AAC3B,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;CAClB;AA6BD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAuCzF;AAED,0BAA0B;AAC1B,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd;wDACoD;IACpD,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;CACjC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAgCvF;AAMD,yBAAyB;AACzB,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CACnB,GAAG,EAAE,MAAM,EAAE,EAAE,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAClC,WAAW,CAsDb;AAMD,6BAA6B;AAC7B,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,eAAe,CAwE3D"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph Traversal, All-Pairs Shortest Paths, and Distance-Based Centrality
|
|
3
|
+
*
|
|
4
|
+
* Complements the existing single-source Dijkstra `shortestPath` /
|
|
5
|
+
* `graphDistance` (see `../typed/graph.ts`) with:
|
|
6
|
+
*
|
|
7
|
+
* - `bfs` / `dfs`: visitation-order traversal (directed reading; neighbors
|
|
8
|
+
* visited in ascending index order).
|
|
9
|
+
* - `floydWarshall`: all-pairs shortest-path distances (handles negative
|
|
10
|
+
* edge weights, not negative cycles).
|
|
11
|
+
* - `bellmanFord`: single-source shortest paths, negative-weight-aware,
|
|
12
|
+
* with negative-cycle detection.
|
|
13
|
+
* - `closenessCentrality` / `harmonicCentrality`: distance-based centrality
|
|
14
|
+
* measures (networkx-compatible conventions), built on `floydWarshall`.
|
|
15
|
+
*
|
|
16
|
+
* Input format: adjacency matrix as `number[][]` where `adj[i][j]` is the
|
|
17
|
+
* weight of the directed edge i -> j. Both `Infinity` and `0` (off the
|
|
18
|
+
* diagonal) are treated as "no edge" by the weighted routines
|
|
19
|
+
* (`floydWarshall`, `bellmanFord`, and the centrality functions). `bfs`/`dfs`
|
|
20
|
+
* instead treat any finite, nonzero off-diagonal entry as an edge. Graphs
|
|
21
|
+
* are read as directed (adjacency is never symmetrized).
|
|
22
|
+
*
|
|
23
|
+
* @packageDocumentation
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Breadth-first traversal order starting from `start`.
|
|
27
|
+
*
|
|
28
|
+
* A directed edge i -> j exists when `adj[i][j]` is finite and nonzero.
|
|
29
|
+
* Neighbors are visited in ascending index order.
|
|
30
|
+
*
|
|
31
|
+
* @param adj - Adjacency matrix (directed reading; not symmetrized)
|
|
32
|
+
* @param start - Source node index
|
|
33
|
+
* @returns Node indices in BFS visitation order
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* const adj = [[0,1,Infinity],[1,0,1],[Infinity,1,0]];
|
|
37
|
+
* bfs(adj, 0) // => [0, 1, 2]
|
|
38
|
+
*/
|
|
39
|
+
export declare function bfs(adj: number[][], start: number): number[];
|
|
40
|
+
/**
|
|
41
|
+
* Depth-first traversal order starting from `start` (iterative, preserves
|
|
42
|
+
* ascending-neighbor-order visitation as if implemented recursively).
|
|
43
|
+
*
|
|
44
|
+
* A directed edge i -> j exists when `adj[i][j]` is finite and nonzero.
|
|
45
|
+
*
|
|
46
|
+
* @param adj - Adjacency matrix (directed reading; not symmetrized)
|
|
47
|
+
* @param start - Source node index
|
|
48
|
+
* @returns Node indices in DFS visitation order
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* const adj = [[0,1,Infinity],[1,0,1],[Infinity,1,0]];
|
|
52
|
+
* dfs(adj, 0) // => [0, 1, 2]
|
|
53
|
+
*/
|
|
54
|
+
export declare function dfs(adj: number[][], start: number): number[];
|
|
55
|
+
/**
|
|
56
|
+
* All-pairs shortest-path distances via the Floyd-Warshall algorithm.
|
|
57
|
+
*
|
|
58
|
+
* `d[i][j]` = 0 if i === j, else `adj[i][j]` when it is a finite nonzero
|
|
59
|
+
* edge, else `Infinity`. Handles negative edge weights. A negative value
|
|
60
|
+
* remaining on the diagonal after the triple loop indicates a negative
|
|
61
|
+
* cycle reachable through that node (not flagged by this function — use
|
|
62
|
+
* `bellmanFord` for explicit negative-cycle detection).
|
|
63
|
+
*
|
|
64
|
+
* Time complexity: O(V^3).
|
|
65
|
+
*
|
|
66
|
+
* @param adj - Adjacency matrix (directed reading)
|
|
67
|
+
* @returns n x n matrix of shortest-path distances
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* const adj = [[0,1,Infinity],[1,0,1],[Infinity,1,0]];
|
|
71
|
+
* floydWarshall(adj)[0][2] // => 2
|
|
72
|
+
*/
|
|
73
|
+
export declare function floydWarshall(adj: number[][]): number[][];
|
|
74
|
+
/** Result of `bellmanFord`. */
|
|
75
|
+
export interface BellmanFordResult {
|
|
76
|
+
/** Shortest-path distance from source to each node (Infinity if unreachable). */
|
|
77
|
+
dist: number[];
|
|
78
|
+
/** True if a negative-weight cycle is reachable from the source. */
|
|
79
|
+
hasNegativeCycle: boolean;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Single-source shortest paths via the Bellman-Ford algorithm.
|
|
83
|
+
*
|
|
84
|
+
* Handles negative edge weights and detects a negative-weight cycle
|
|
85
|
+
* reachable from `source`: relaxes all edges |V|-1 times, then performs one
|
|
86
|
+
* additional pass — any edge that can still be relaxed indicates a
|
|
87
|
+
* reachable negative cycle.
|
|
88
|
+
*
|
|
89
|
+
* Time complexity: O(V*E) (O(V^3) on a dense adjacency matrix).
|
|
90
|
+
*
|
|
91
|
+
* @param adj - Adjacency matrix (directed reading)
|
|
92
|
+
* @param source - Source node index
|
|
93
|
+
* @returns `{ dist, hasNegativeCycle }`
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* const adj = [[0,1,Infinity],[1,0,1],[Infinity,1,0]];
|
|
97
|
+
* bellmanFord(adj, 0) // => { dist: [0, 1, 2], hasNegativeCycle: false }
|
|
98
|
+
*/
|
|
99
|
+
export declare function bellmanFord(adj: number[][], source: number): BellmanFordResult;
|
|
100
|
+
/**
|
|
101
|
+
* Closeness centrality for each node, using the networkx (Wasserman &
|
|
102
|
+
* Faust) convention for possibly-disconnected graphs:
|
|
103
|
+
*
|
|
104
|
+
* `C(u) = ((r-1)/(n-1)) * ((r-1)/sum(d))`
|
|
105
|
+
*
|
|
106
|
+
* where `r` is the number of nodes that can reach `u` (including `u`) and
|
|
107
|
+
* `sum(d)` is the sum of shortest-path distances from those nodes to `u`.
|
|
108
|
+
* For a graph where every node reaches all others (`r === n`), this reduces
|
|
109
|
+
* to `(n-1)/sum(d)`. Isolated nodes (`r === 1`) score 0.
|
|
110
|
+
*
|
|
111
|
+
* **Direction note (matches networkx default):** closeness uses the
|
|
112
|
+
* *incoming* distance to `u` for directed graphs — how reachable `u` is
|
|
113
|
+
* *from* the rest of the graph, not how far `u` can reach. This mirrors
|
|
114
|
+
* `networkx.closeness_centrality`'s documented default ("the closeness
|
|
115
|
+
* distance function computes the incoming distance to u for directed
|
|
116
|
+
* graphs"). For undirected graphs (symmetric `adj`) direction is moot.
|
|
117
|
+
*
|
|
118
|
+
* @param adj - Adjacency matrix (directed reading)
|
|
119
|
+
* @returns Closeness centrality score for each node (length = n)
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* const adj = [[0,1,Infinity],[1,0,1],[Infinity,1,0]];
|
|
123
|
+
* closenessCentrality(adj) // middle node scores highest
|
|
124
|
+
*/
|
|
125
|
+
export declare function closenessCentrality(adj: number[][]): number[];
|
|
126
|
+
/**
|
|
127
|
+
* Harmonic centrality for each node:
|
|
128
|
+
*
|
|
129
|
+
* `H(u) = sum_{v != u} 1/d(v,u)`
|
|
130
|
+
*
|
|
131
|
+
* Unreachable nodes contribute 0 (1/Infinity), so this remains well-defined
|
|
132
|
+
* for disconnected graphs without normalization.
|
|
133
|
+
*
|
|
134
|
+
* **Direction note (matches networkx default):** like closeness, harmonic
|
|
135
|
+
* centrality sums *incoming* distances (`d(v,u)`, from other nodes to `u`),
|
|
136
|
+
* matching `networkx.harmonic_centrality`'s directed-graph default. For
|
|
137
|
+
* undirected graphs (symmetric `adj`) direction is moot.
|
|
138
|
+
*
|
|
139
|
+
* @param adj - Adjacency matrix (directed reading)
|
|
140
|
+
* @returns Harmonic centrality score for each node (length = n)
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* const adj = [[0,1,Infinity],[1,0,1],[Infinity,1,0]];
|
|
144
|
+
* harmonicCentrality(adj) // => [1.5, 2, 1.5] (middle node reaches both neighbors at distance 1)
|
|
145
|
+
*/
|
|
146
|
+
export declare function harmonicCentrality(adj: number[][]): number[];
|
|
147
|
+
//# sourceMappingURL=traversal-centrality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traversal-centrality.d.ts","sourceRoot":"","sources":["../../src/graph/traversal-centrality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB5D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAmB5D;AAeD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CA0BzD;AAMD,+BAA+B;AAC/B,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,oEAAoE;IACpE,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAsC9E;AAMD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAuB7D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAgB5D"}
|
package/dist/index.d.ts
CHANGED
|
@@ -49,6 +49,8 @@ export { minimizeScalar } from './numeric/minimize-scalar.js';
|
|
|
49
49
|
export type { MinimizeScalarOptions, MinimizeScalarResult } from './numeric/minimize-scalar.js';
|
|
50
50
|
export { quad } from './numeric/adaptive-quad.js';
|
|
51
51
|
export type { QuadOptions, QuadResult } from './numeric/adaptive-quad.js';
|
|
52
|
+
export { interpn } from './numeric/interpn.js';
|
|
53
|
+
export type { NDArrayInput } from './numeric/interpn.js';
|
|
52
54
|
export { movingAverage, ewma, detrend, acf } from './timeseries-extra.js';
|
|
53
55
|
export { pacf, ljungBox, durbinWatson, adfuller } from './stats/timeseries.js';
|
|
54
56
|
export type { LjungBoxResult, AdfullerResult } from './stats/timeseries.js';
|
|
@@ -85,6 +87,8 @@ export { idwt, wavedec, waverec, cwt } from './signal/wavelets.js';
|
|
|
85
87
|
export { findPeaks, peakWidths, csd, coherence, stft, istft, decimate, } from './signal/spectral-peaks.js';
|
|
86
88
|
export type { FindPeaksOptions, CsdOptions, StftOptions, StftResult, } from './signal/spectral-peaks.js';
|
|
87
89
|
export { haversine, EARTH_RADIUS_KM, slerp, quaternionMultiply, quaternionConjugate, quaternionNormalize, quaternionFromAxisAngle, quaternionRotate, quaternionToRotationMatrix, } from './geometry-extra.js';
|
|
90
|
+
export { quaternionInverse, quaternionSlerp, quaternionToEuler, boundingBox, procrustes, kdTreeKNN, kdTreeRadius, setIsSuperset, setEqual, setDisjoint, } from './geometry/geometry-extra.js';
|
|
91
|
+
export type { ProcrustesResult } from './geometry/geometry-extra.js';
|
|
88
92
|
export { noncentralChi2CDF, noncentralFCDF, noncentralTCDF, circmean, circstd, circvar, vonMisesPDF, mcnemar, cochranQ, } from './stats/inference-extra2.js';
|
|
89
93
|
export type { CircularOptions, McNemarOptions, McNemarResult, CochranQResult, } from './stats/inference-extra2.js';
|
|
90
94
|
export { hyp0f1, hyp1f1, hyp2f1, pFq } from './special/hypergeometric.js';
|
|
@@ -92,4 +96,9 @@ export { polygamma, trigamma, jacobiP, gegenbauerC } from './special/polygamma-o
|
|
|
92
96
|
export { jacobiSN, jacobiCN, jacobiDN } from './special/jacobi-elliptic.js';
|
|
93
97
|
export { rootsLegendre } from './numeric/gauss-nodes.js';
|
|
94
98
|
export type { RootsLegendreResult } from './numeric/gauss-nodes.js';
|
|
99
|
+
export { bfs, dfs, floydWarshall, bellmanFord, closenessCentrality, harmonicCentrality, } from './graph/traversal-centrality.js';
|
|
100
|
+
export type { BellmanFordResult } from './graph/traversal-centrality.js';
|
|
101
|
+
export { maxFlow, minCut, astar, hungarian } from './graph/optimization.js';
|
|
102
|
+
export type { MaxFlowResult, MinCutResult, AStarResult, HungarianResult, } from './graph/optimization.js';
|
|
103
|
+
export { interval, Interval } from './numeric/interval.js';
|
|
95
104
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|