@graphty/algorithms 1.0.1
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/LICENSE +21 -0
- package/README.md +193 -0
- package/dist/src/algorithms/centrality/betweenness.d.ts +34 -0
- package/dist/src/algorithms/centrality/betweenness.d.ts.map +1 -0
- package/dist/src/algorithms/centrality/betweenness.js +223 -0
- package/dist/src/algorithms/centrality/betweenness.js.map +1 -0
- package/dist/src/algorithms/centrality/closeness.d.ts +43 -0
- package/dist/src/algorithms/centrality/closeness.d.ts.map +1 -0
- package/dist/src/algorithms/centrality/closeness.js +202 -0
- package/dist/src/algorithms/centrality/closeness.js.map +1 -0
- package/dist/src/algorithms/centrality/degree.d.ts +17 -0
- package/dist/src/algorithms/centrality/degree.d.ts.map +1 -0
- package/dist/src/algorithms/centrality/degree.js +86 -0
- package/dist/src/algorithms/centrality/degree.js.map +1 -0
- package/dist/src/algorithms/centrality/index.d.ts +11 -0
- package/dist/src/algorithms/centrality/index.d.ts.map +1 -0
- package/dist/src/algorithms/centrality/index.js +8 -0
- package/dist/src/algorithms/centrality/index.js.map +1 -0
- package/dist/src/algorithms/centrality/pagerank.d.ts +74 -0
- package/dist/src/algorithms/centrality/pagerank.d.ts.map +1 -0
- package/dist/src/algorithms/centrality/pagerank.js +191 -0
- package/dist/src/algorithms/centrality/pagerank.js.map +1 -0
- package/dist/src/algorithms/components/connected.d.ts +58 -0
- package/dist/src/algorithms/components/connected.d.ts.map +1 -0
- package/dist/src/algorithms/components/connected.js +234 -0
- package/dist/src/algorithms/components/connected.js.map +1 -0
- package/dist/src/algorithms/components/index.d.ts +5 -0
- package/dist/src/algorithms/components/index.d.ts.map +1 -0
- package/dist/src/algorithms/components/index.js +5 -0
- package/dist/src/algorithms/components/index.js.map +1 -0
- package/dist/src/algorithms/index.d.ts +8 -0
- package/dist/src/algorithms/index.d.ts.map +1 -0
- package/dist/src/algorithms/index.js +12 -0
- package/dist/src/algorithms/index.js.map +1 -0
- package/dist/src/algorithms/shortest-path/bellman-ford.d.ts +52 -0
- package/dist/src/algorithms/shortest-path/bellman-ford.d.ts.map +1 -0
- package/dist/src/algorithms/shortest-path/bellman-ford.js +131 -0
- package/dist/src/algorithms/shortest-path/bellman-ford.js.map +1 -0
- package/dist/src/algorithms/shortest-path/dijkstra.d.ts +26 -0
- package/dist/src/algorithms/shortest-path/dijkstra.d.ts.map +1 -0
- package/dist/src/algorithms/shortest-path/dijkstra.js +199 -0
- package/dist/src/algorithms/shortest-path/dijkstra.js.map +1 -0
- package/dist/src/algorithms/shortest-path/index.d.ts +7 -0
- package/dist/src/algorithms/shortest-path/index.d.ts.map +1 -0
- package/dist/src/algorithms/shortest-path/index.js +6 -0
- package/dist/src/algorithms/shortest-path/index.js.map +1 -0
- package/dist/src/algorithms/traversal/bfs.d.ts +25 -0
- package/dist/src/algorithms/traversal/bfs.d.ts.map +1 -0
- package/dist/src/algorithms/traversal/bfs.js +189 -0
- package/dist/src/algorithms/traversal/bfs.js.map +1 -0
- package/dist/src/algorithms/traversal/dfs.d.ts +32 -0
- package/dist/src/algorithms/traversal/dfs.d.ts.map +1 -0
- package/dist/src/algorithms/traversal/dfs.js +259 -0
- package/dist/src/algorithms/traversal/dfs.js.map +1 -0
- package/dist/src/algorithms/traversal/index.d.ts +7 -0
- package/dist/src/algorithms/traversal/index.d.ts.map +1 -0
- package/dist/src/algorithms/traversal/index.js +6 -0
- package/dist/src/algorithms/traversal/index.js.map +1 -0
- package/dist/src/core/graph.d.ts +100 -0
- package/dist/src/core/graph.d.ts.map +1 -0
- package/dist/src/core/graph.js +276 -0
- package/dist/src/core/graph.js.map +1 -0
- package/dist/src/data-structures/index.d.ts +6 -0
- package/dist/src/data-structures/index.d.ts.map +1 -0
- package/dist/src/data-structures/index.js +6 -0
- package/dist/src/data-structures/index.js.map +1 -0
- package/dist/src/data-structures/priority-queue.d.ts +60 -0
- package/dist/src/data-structures/priority-queue.d.ts.map +1 -0
- package/dist/src/data-structures/priority-queue.js +152 -0
- package/dist/src/data-structures/priority-queue.js.map +1 -0
- package/dist/src/data-structures/union-find.d.ts +54 -0
- package/dist/src/data-structures/union-find.d.ts.map +1 -0
- package/dist/src/data-structures/union-find.js +145 -0
- package/dist/src/data-structures/union-find.js.map +1 -0
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +13 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/types/index.d.ts +74 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +5 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/test/browser/basic.test.d.ts +2 -0
- package/dist/test/browser/basic.test.d.ts.map +1 -0
- package/dist/test/browser/basic.test.js +70 -0
- package/dist/test/browser/basic.test.js.map +1 -0
- package/dist/test/unit/bellman-ford.test.d.ts +2 -0
- package/dist/test/unit/bellman-ford.test.d.ts.map +1 -0
- package/dist/test/unit/bellman-ford.test.js +231 -0
- package/dist/test/unit/bellman-ford.test.js.map +1 -0
- package/dist/test/unit/betweenness-centrality.test.d.ts +2 -0
- package/dist/test/unit/betweenness-centrality.test.d.ts.map +1 -0
- package/dist/test/unit/betweenness-centrality.test.js +311 -0
- package/dist/test/unit/betweenness-centrality.test.js.map +1 -0
- package/dist/test/unit/bfs.test.d.ts +2 -0
- package/dist/test/unit/bfs.test.d.ts.map +1 -0
- package/dist/test/unit/bfs.test.js +277 -0
- package/dist/test/unit/bfs.test.js.map +1 -0
- package/dist/test/unit/closeness.test.d.ts +2 -0
- package/dist/test/unit/closeness.test.d.ts.map +1 -0
- package/dist/test/unit/closeness.test.js +266 -0
- package/dist/test/unit/closeness.test.js.map +1 -0
- package/dist/test/unit/connected-components.test.d.ts +2 -0
- package/dist/test/unit/connected-components.test.d.ts.map +1 -0
- package/dist/test/unit/connected-components.test.js +355 -0
- package/dist/test/unit/connected-components.test.js.map +1 -0
- package/dist/test/unit/degree-centrality.test.d.ts +2 -0
- package/dist/test/unit/degree-centrality.test.d.ts.map +1 -0
- package/dist/test/unit/degree-centrality.test.js +260 -0
- package/dist/test/unit/degree-centrality.test.js.map +1 -0
- package/dist/test/unit/dfs.test.d.ts +2 -0
- package/dist/test/unit/dfs.test.d.ts.map +1 -0
- package/dist/test/unit/dfs.test.js +350 -0
- package/dist/test/unit/dfs.test.js.map +1 -0
- package/dist/test/unit/dijkstra.test.d.ts +2 -0
- package/dist/test/unit/dijkstra.test.d.ts.map +1 -0
- package/dist/test/unit/dijkstra.test.js +311 -0
- package/dist/test/unit/dijkstra.test.js.map +1 -0
- package/dist/test/unit/graph.test.d.ts +2 -0
- package/dist/test/unit/graph.test.d.ts.map +1 -0
- package/dist/test/unit/graph.test.js +175 -0
- package/dist/test/unit/graph.test.js.map +1 -0
- package/dist/test/unit/pagerank.test.d.ts +2 -0
- package/dist/test/unit/pagerank.test.d.ts.map +1 -0
- package/dist/test/unit/pagerank.test.js +281 -0
- package/dist/test/unit/pagerank.test.js.map +1 -0
- package/dist/test/unit/priority-queue.test.d.ts +2 -0
- package/dist/test/unit/priority-queue.test.d.ts.map +1 -0
- package/dist/test/unit/priority-queue.test.js +189 -0
- package/dist/test/unit/priority-queue.test.js.map +1 -0
- package/dist/test/unit/union-find.test.d.ts +2 -0
- package/dist/test/unit/union-find.test.d.ts.map +1 -0
- package/dist/test/unit/union-find.test.js +245 -0
- package/dist/test/unit/union-find.test.js.map +1 -0
- package/package.json +100 -0
- package/src/algorithms/centrality/betweenness.ts +303 -0
- package/src/algorithms/centrality/closeness.ts +296 -0
- package/src/algorithms/centrality/degree.ts +105 -0
- package/src/algorithms/centrality/index.ts +11 -0
- package/src/algorithms/centrality/pagerank.ts +302 -0
- package/src/algorithms/components/connected.ts +298 -0
- package/src/algorithms/components/index.ts +17 -0
- package/src/algorithms/index.ts +15 -0
- package/src/algorithms/shortest-path/bellman-ford.ts +214 -0
- package/src/algorithms/shortest-path/dijkstra.ts +256 -0
- package/src/algorithms/shortest-path/index.ts +7 -0
- package/src/algorithms/traversal/bfs.ts +236 -0
- package/src/algorithms/traversal/dfs.ts +367 -0
- package/src/algorithms/traversal/index.ts +7 -0
- package/src/core/graph.ts +326 -0
- package/src/data-structures/index.ts +6 -0
- package/src/data-structures/priority-queue.ts +180 -0
- package/src/data-structures/union-find.ts +170 -0
- package/src/index.ts +35 -0
- package/src/types/index.ts +95 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/core/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data-structures/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data-structures/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Priority Queue implementation using a binary heap
|
|
3
|
+
*
|
|
4
|
+
* Optimized for graph algorithms requiring efficient priority-based operations.
|
|
5
|
+
* Uses a min-heap by default but supports custom comparison functions.
|
|
6
|
+
*/
|
|
7
|
+
export declare class PriorityQueue<T> {
|
|
8
|
+
private heap;
|
|
9
|
+
private compareFn;
|
|
10
|
+
constructor(compareFn?: (a: number, b: number) => number);
|
|
11
|
+
/**
|
|
12
|
+
* Add an item with the given priority to the queue
|
|
13
|
+
*/
|
|
14
|
+
enqueue(item: T, priority: number): void;
|
|
15
|
+
/**
|
|
16
|
+
* Remove and return the item with the highest priority
|
|
17
|
+
*/
|
|
18
|
+
dequeue(): T | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* View the item with the highest priority without removing it
|
|
21
|
+
*/
|
|
22
|
+
peek(): T | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Check if the queue is empty
|
|
25
|
+
*/
|
|
26
|
+
isEmpty(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Get the number of items in the queue
|
|
29
|
+
*/
|
|
30
|
+
size(): number;
|
|
31
|
+
/**
|
|
32
|
+
* Update the priority of an item if it exists in the queue
|
|
33
|
+
* Returns true if the item was found and updated
|
|
34
|
+
*/
|
|
35
|
+
updatePriority(item: T, newPriority: number): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Clear all items from the queue
|
|
38
|
+
*/
|
|
39
|
+
clear(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Convert queue to array (for testing/debugging)
|
|
42
|
+
*/
|
|
43
|
+
toArray(): {
|
|
44
|
+
item: T;
|
|
45
|
+
priority: number;
|
|
46
|
+
}[];
|
|
47
|
+
/**
|
|
48
|
+
* Move element up the heap until heap property is satisfied
|
|
49
|
+
*/
|
|
50
|
+
private heapifyUp;
|
|
51
|
+
/**
|
|
52
|
+
* Move element down the heap until heap property is satisfied
|
|
53
|
+
*/
|
|
54
|
+
private heapifyDown;
|
|
55
|
+
/**
|
|
56
|
+
* Swap two elements in the heap
|
|
57
|
+
*/
|
|
58
|
+
private swap;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=priority-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priority-queue.d.ts","sourceRoot":"","sources":["../../../src/data-structures/priority-queue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,aAAa,CAAC,CAAC;IACxB,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,SAAS,CAAmC;gBAExC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM;IAMxD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMxC;;OAEG;IACH,OAAO,IAAI,CAAC,GAAG,SAAS;IAwBxB;;OAEG;IACH,IAAI,IAAI,CAAC,GAAG,SAAS;IAKrB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,IAAI,IAAI,MAAM;IAId;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAyBrD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,IAAI;QAAC,IAAI,EAAE,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,EAAE;IAIxC;;OAEG;IACH,OAAO,CAAC,SAAS;IAgBjB;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;OAEG;IACH,OAAO,CAAC,IAAI;CAQf"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Priority Queue implementation using a binary heap
|
|
3
|
+
*
|
|
4
|
+
* Optimized for graph algorithms requiring efficient priority-based operations.
|
|
5
|
+
* Uses a min-heap by default but supports custom comparison functions.
|
|
6
|
+
*/
|
|
7
|
+
export class PriorityQueue {
|
|
8
|
+
heap;
|
|
9
|
+
compareFn;
|
|
10
|
+
constructor(compareFn) {
|
|
11
|
+
this.heap = [];
|
|
12
|
+
// Default to min-heap (smaller priority values have higher priority)
|
|
13
|
+
this.compareFn = compareFn ?? ((a, b) => a - b);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Add an item with the given priority to the queue
|
|
17
|
+
*/
|
|
18
|
+
enqueue(item, priority) {
|
|
19
|
+
const element = { item, priority };
|
|
20
|
+
this.heap.push(element);
|
|
21
|
+
this.heapifyUp(this.heap.length - 1);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Remove and return the item with the highest priority
|
|
25
|
+
*/
|
|
26
|
+
dequeue() {
|
|
27
|
+
if (this.heap.length === 0) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
if (this.heap.length === 1) {
|
|
31
|
+
return this.heap.pop()?.item;
|
|
32
|
+
}
|
|
33
|
+
const root = this.heap[0];
|
|
34
|
+
const lastElement = this.heap.pop();
|
|
35
|
+
if (!root) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
if (lastElement) {
|
|
39
|
+
this.heap[0] = lastElement;
|
|
40
|
+
this.heapifyDown(0);
|
|
41
|
+
}
|
|
42
|
+
return root.item;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* View the item with the highest priority without removing it
|
|
46
|
+
*/
|
|
47
|
+
peek() {
|
|
48
|
+
const first = this.heap[0];
|
|
49
|
+
return first ? first.item : undefined;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Check if the queue is empty
|
|
53
|
+
*/
|
|
54
|
+
isEmpty() {
|
|
55
|
+
return this.heap.length === 0;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get the number of items in the queue
|
|
59
|
+
*/
|
|
60
|
+
size() {
|
|
61
|
+
return this.heap.length;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Update the priority of an item if it exists in the queue
|
|
65
|
+
* Returns true if the item was found and updated
|
|
66
|
+
*/
|
|
67
|
+
updatePriority(item, newPriority) {
|
|
68
|
+
const index = this.heap.findIndex((element) => element.item === item);
|
|
69
|
+
if (index === -1) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
const element = this.heap[index];
|
|
73
|
+
if (!element) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
const oldPriority = element.priority;
|
|
77
|
+
element.priority = newPriority;
|
|
78
|
+
// Determine whether to heapify up or down based on priority change
|
|
79
|
+
if (this.compareFn(newPriority, oldPriority) < 0) {
|
|
80
|
+
this.heapifyUp(index);
|
|
81
|
+
}
|
|
82
|
+
else if (this.compareFn(newPriority, oldPriority) > 0) {
|
|
83
|
+
this.heapifyDown(index);
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Clear all items from the queue
|
|
89
|
+
*/
|
|
90
|
+
clear() {
|
|
91
|
+
this.heap = [];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Convert queue to array (for testing/debugging)
|
|
95
|
+
*/
|
|
96
|
+
toArray() {
|
|
97
|
+
return [...this.heap];
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Move element up the heap until heap property is satisfied
|
|
101
|
+
*/
|
|
102
|
+
heapifyUp(index) {
|
|
103
|
+
if (index === 0) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const parentIndex = Math.floor((index - 1) / 2);
|
|
107
|
+
const current = this.heap[index];
|
|
108
|
+
const parent = this.heap[parentIndex];
|
|
109
|
+
if (current && parent && this.compareFn(current.priority, parent.priority) < 0) {
|
|
110
|
+
this.swap(index, parentIndex);
|
|
111
|
+
this.heapifyUp(parentIndex);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Move element down the heap until heap property is satisfied
|
|
116
|
+
*/
|
|
117
|
+
heapifyDown(index) {
|
|
118
|
+
const leftChildIndex = (2 * index) + 1;
|
|
119
|
+
const rightChildIndex = (2 * index) + 2;
|
|
120
|
+
let targetIndex = index;
|
|
121
|
+
// Find the child with highest priority (lowest value for min-heap)
|
|
122
|
+
const leftChild = this.heap[leftChildIndex];
|
|
123
|
+
const target = this.heap[targetIndex];
|
|
124
|
+
if (leftChildIndex < this.heap.length && leftChild && target &&
|
|
125
|
+
this.compareFn(leftChild.priority, target.priority) < 0) {
|
|
126
|
+
targetIndex = leftChildIndex;
|
|
127
|
+
}
|
|
128
|
+
const rightChild = this.heap[rightChildIndex];
|
|
129
|
+
const newTarget = this.heap[targetIndex];
|
|
130
|
+
if (rightChildIndex < this.heap.length && rightChild && newTarget &&
|
|
131
|
+
this.compareFn(rightChild.priority, newTarget.priority) < 0) {
|
|
132
|
+
targetIndex = rightChildIndex;
|
|
133
|
+
}
|
|
134
|
+
// If we found a child with higher priority, swap and continue
|
|
135
|
+
if (targetIndex !== index) {
|
|
136
|
+
this.swap(index, targetIndex);
|
|
137
|
+
this.heapifyDown(targetIndex);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Swap two elements in the heap
|
|
142
|
+
*/
|
|
143
|
+
swap(i, j) {
|
|
144
|
+
const temp = this.heap[i];
|
|
145
|
+
const other = this.heap[j];
|
|
146
|
+
if (temp && other) {
|
|
147
|
+
this.heap[i] = other;
|
|
148
|
+
this.heap[j] = temp;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=priority-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priority-queue.js","sourceRoot":"","sources":["../../../src/data-structures/priority-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { NodeId } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Union-Find (Disjoint Set) data structure with path compression and union by rank
|
|
4
|
+
*
|
|
5
|
+
* Efficiently supports dynamic connectivity queries and is essential for
|
|
6
|
+
* algorithms like connected components and minimum spanning trees.
|
|
7
|
+
*/
|
|
8
|
+
export declare class UnionFind {
|
|
9
|
+
private parent;
|
|
10
|
+
private rank;
|
|
11
|
+
private componentCount;
|
|
12
|
+
constructor(elements: NodeId[]);
|
|
13
|
+
/**
|
|
14
|
+
* Find the root of the set containing the element with path compression
|
|
15
|
+
*/
|
|
16
|
+
find(element: NodeId): NodeId;
|
|
17
|
+
/**
|
|
18
|
+
* Union two sets using union by rank
|
|
19
|
+
*/
|
|
20
|
+
union(elementA: NodeId, elementB: NodeId): void;
|
|
21
|
+
/**
|
|
22
|
+
* Check if two elements are in the same connected component
|
|
23
|
+
*/
|
|
24
|
+
connected(elementA: NodeId, elementB: NodeId): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Get the number of connected components
|
|
27
|
+
*/
|
|
28
|
+
getComponentCount(): number;
|
|
29
|
+
/**
|
|
30
|
+
* Get all elements that belong to the same component as the given element
|
|
31
|
+
*/
|
|
32
|
+
getComponent(element: NodeId): NodeId[];
|
|
33
|
+
/**
|
|
34
|
+
* Get all connected components as separate arrays
|
|
35
|
+
*/
|
|
36
|
+
getAllComponents(): NodeId[][];
|
|
37
|
+
/**
|
|
38
|
+
* Get the size of the component containing the given element
|
|
39
|
+
*/
|
|
40
|
+
getComponentSize(element: NodeId): number;
|
|
41
|
+
/**
|
|
42
|
+
* Add a new element to the data structure
|
|
43
|
+
*/
|
|
44
|
+
addElement(element: NodeId): void;
|
|
45
|
+
/**
|
|
46
|
+
* Check if an element exists in the data structure
|
|
47
|
+
*/
|
|
48
|
+
hasElement(element: NodeId): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Get the total number of elements
|
|
51
|
+
*/
|
|
52
|
+
size(): number;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=union-find.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"union-find.d.ts","sourceRoot":"","sources":["../../../src/data-structures/union-find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAE9C;;;;;GAKG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,cAAc,CAAS;gBAEnB,QAAQ,EAAE,MAAM,EAAE;IAY9B;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAoB7B;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IA6B/C;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQtD;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAavC;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE,EAAE;IAmB9B;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIzC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAUjC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIpC;;OAEG;IACH,IAAI,IAAI,MAAM;CAGjB"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Union-Find (Disjoint Set) data structure with path compression and union by rank
|
|
3
|
+
*
|
|
4
|
+
* Efficiently supports dynamic connectivity queries and is essential for
|
|
5
|
+
* algorithms like connected components and minimum spanning trees.
|
|
6
|
+
*/
|
|
7
|
+
export class UnionFind {
|
|
8
|
+
parent;
|
|
9
|
+
rank;
|
|
10
|
+
componentCount;
|
|
11
|
+
constructor(elements) {
|
|
12
|
+
this.parent = new Map();
|
|
13
|
+
this.rank = new Map();
|
|
14
|
+
this.componentCount = elements.length;
|
|
15
|
+
// Initialize each element as its own parent with rank 0
|
|
16
|
+
for (const element of elements) {
|
|
17
|
+
this.parent.set(element, element);
|
|
18
|
+
this.rank.set(element, 0);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Find the root of the set containing the element with path compression
|
|
23
|
+
*/
|
|
24
|
+
find(element) {
|
|
25
|
+
const parent = this.parent.get(element);
|
|
26
|
+
if (parent === undefined) {
|
|
27
|
+
throw new Error(`Element ${String(element)} not found in UnionFind`);
|
|
28
|
+
}
|
|
29
|
+
// Path compression: make every node on the path point directly to the root
|
|
30
|
+
if (parent !== element) {
|
|
31
|
+
this.parent.set(element, this.find(parent));
|
|
32
|
+
}
|
|
33
|
+
const result = this.parent.get(element);
|
|
34
|
+
if (result === undefined) {
|
|
35
|
+
throw new Error(`Element ${String(element)} not found in UnionFind`);
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Union two sets using union by rank
|
|
41
|
+
*/
|
|
42
|
+
union(elementA, elementB) {
|
|
43
|
+
const rootA = this.find(elementA);
|
|
44
|
+
const rootB = this.find(elementB);
|
|
45
|
+
// Already in the same set
|
|
46
|
+
if (rootA === rootB) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const rankA = this.rank.get(rootA);
|
|
50
|
+
const rankB = this.rank.get(rootB);
|
|
51
|
+
if (rankA === undefined || rankB === undefined) {
|
|
52
|
+
throw new Error("Rank not found for root elements");
|
|
53
|
+
}
|
|
54
|
+
// Union by rank: attach smaller tree under root of larger tree
|
|
55
|
+
if (rankA < rankB) {
|
|
56
|
+
this.parent.set(rootA, rootB);
|
|
57
|
+
}
|
|
58
|
+
else if (rankA > rankB) {
|
|
59
|
+
this.parent.set(rootB, rootA);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// Same rank: make one root and increment its rank
|
|
63
|
+
this.parent.set(rootB, rootA);
|
|
64
|
+
this.rank.set(rootA, rankA + 1);
|
|
65
|
+
}
|
|
66
|
+
this.componentCount--;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Check if two elements are in the same connected component
|
|
70
|
+
*/
|
|
71
|
+
connected(elementA, elementB) {
|
|
72
|
+
try {
|
|
73
|
+
return this.find(elementA) === this.find(elementB);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get the number of connected components
|
|
81
|
+
*/
|
|
82
|
+
getComponentCount() {
|
|
83
|
+
return this.componentCount;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get all elements that belong to the same component as the given element
|
|
87
|
+
*/
|
|
88
|
+
getComponent(element) {
|
|
89
|
+
const root = this.find(element);
|
|
90
|
+
const component = [];
|
|
91
|
+
for (const [node] of this.parent) {
|
|
92
|
+
if (this.find(node) === root) {
|
|
93
|
+
component.push(node);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return component;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get all connected components as separate arrays
|
|
100
|
+
*/
|
|
101
|
+
getAllComponents() {
|
|
102
|
+
const componentMap = new Map();
|
|
103
|
+
for (const [node] of this.parent) {
|
|
104
|
+
const root = this.find(node);
|
|
105
|
+
if (!componentMap.has(root)) {
|
|
106
|
+
componentMap.set(root, []);
|
|
107
|
+
}
|
|
108
|
+
const component = componentMap.get(root);
|
|
109
|
+
if (component) {
|
|
110
|
+
component.push(node);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return Array.from(componentMap.values());
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get the size of the component containing the given element
|
|
117
|
+
*/
|
|
118
|
+
getComponentSize(element) {
|
|
119
|
+
return this.getComponent(element).length;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Add a new element to the data structure
|
|
123
|
+
*/
|
|
124
|
+
addElement(element) {
|
|
125
|
+
if (this.parent.has(element)) {
|
|
126
|
+
return; // Element already exists
|
|
127
|
+
}
|
|
128
|
+
this.parent.set(element, element);
|
|
129
|
+
this.rank.set(element, 0);
|
|
130
|
+
this.componentCount++;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Check if an element exists in the data structure
|
|
134
|
+
*/
|
|
135
|
+
hasElement(element) {
|
|
136
|
+
return this.parent.has(element);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get the total number of elements
|
|
140
|
+
*/
|
|
141
|
+
size() {
|
|
142
|
+
return this.parent.size;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=union-find.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"union-find.js","sourceRoot":"","sources":["../../../src/data-structures/union-find.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @graphty/algorithms - Graph algorithms library for browser environments
|
|
3
|
+
*
|
|
4
|
+
* A comprehensive TypeScript library implementing fundamental graph algorithms
|
|
5
|
+
* optimized for browser environments and visualization applications.
|
|
6
|
+
*/
|
|
7
|
+
export { Graph } from "./core/graph.js";
|
|
8
|
+
export type { BellmanFordResult, CentralityOptions, CentralityResult, CommunityResult, ComponentResult, DijkstraOptions, Edge, GirvanNewmanOptions, GraphConfig, LouvainOptions, Node, NodeId, PageRankOptions, ShortestPathResult, TraversalOptions, TraversalResult, } from "./types/index.js";
|
|
9
|
+
export * from "./algorithms/index.js";
|
|
10
|
+
export * from "./data-structures/index.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAGtC,YAAY,EACR,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,IAAI,EACJ,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,IAAI,EACJ,MAAM,EACN,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAClB,MAAM,kBAAkB,CAAC;AAG1B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @graphty/algorithms - Graph algorithms library for browser environments
|
|
3
|
+
*
|
|
4
|
+
* A comprehensive TypeScript library implementing fundamental graph algorithms
|
|
5
|
+
* optimized for browser environments and visualization applications.
|
|
6
|
+
*/
|
|
7
|
+
// Core exports
|
|
8
|
+
export { Graph } from "./core/graph.js";
|
|
9
|
+
// Algorithm exports
|
|
10
|
+
export * from "./algorithms/index.js";
|
|
11
|
+
// Data structure exports
|
|
12
|
+
export * from "./data-structures/index.js";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe;AACf,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAsBtC,oBAAoB;AACpB,cAAc,uBAAuB,CAAC;AAEtC,yBAAyB;AACzB,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core types for the Graphty Algorithms library
|
|
3
|
+
*/
|
|
4
|
+
export type NodeId = string | number;
|
|
5
|
+
export interface Edge {
|
|
6
|
+
source: NodeId;
|
|
7
|
+
target: NodeId;
|
|
8
|
+
weight?: number;
|
|
9
|
+
id?: string;
|
|
10
|
+
data?: Record<string, unknown> | undefined;
|
|
11
|
+
}
|
|
12
|
+
export interface Node {
|
|
13
|
+
id: NodeId;
|
|
14
|
+
data?: Record<string, unknown> | undefined;
|
|
15
|
+
}
|
|
16
|
+
export interface GraphConfig {
|
|
17
|
+
directed: boolean;
|
|
18
|
+
allowSelfLoops: boolean;
|
|
19
|
+
allowParallelEdges: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface ShortestPathResult {
|
|
22
|
+
distance: number;
|
|
23
|
+
path: NodeId[];
|
|
24
|
+
predecessor: Map<NodeId, NodeId | null>;
|
|
25
|
+
}
|
|
26
|
+
export type CentralityResult = Record<string, number>;
|
|
27
|
+
export interface TraversalResult {
|
|
28
|
+
visited: Set<NodeId>;
|
|
29
|
+
order: NodeId[];
|
|
30
|
+
tree?: Map<NodeId, NodeId | null>;
|
|
31
|
+
}
|
|
32
|
+
export interface CommunityResult {
|
|
33
|
+
communities: NodeId[][];
|
|
34
|
+
modularity: number;
|
|
35
|
+
iterations?: number;
|
|
36
|
+
}
|
|
37
|
+
export interface ComponentResult {
|
|
38
|
+
components: NodeId[][];
|
|
39
|
+
componentMap: Map<NodeId, number>;
|
|
40
|
+
}
|
|
41
|
+
export interface TraversalOptions {
|
|
42
|
+
targetNode?: NodeId;
|
|
43
|
+
visitCallback?: (node: NodeId, level: number) => void;
|
|
44
|
+
}
|
|
45
|
+
export interface DijkstraOptions {
|
|
46
|
+
target?: NodeId;
|
|
47
|
+
}
|
|
48
|
+
export interface BellmanFordResult {
|
|
49
|
+
distances: Map<NodeId, number>;
|
|
50
|
+
previous: Map<NodeId, NodeId | null>;
|
|
51
|
+
hasNegativeCycle: boolean;
|
|
52
|
+
negativeCycleNodes?: NodeId[];
|
|
53
|
+
}
|
|
54
|
+
export interface CentralityOptions {
|
|
55
|
+
normalized?: boolean;
|
|
56
|
+
endpoints?: boolean;
|
|
57
|
+
mode?: "in" | "out" | "total";
|
|
58
|
+
}
|
|
59
|
+
export interface PageRankOptions {
|
|
60
|
+
alpha?: number;
|
|
61
|
+
maxIterations?: number;
|
|
62
|
+
tolerance?: number;
|
|
63
|
+
personalization?: Map<NodeId, number>;
|
|
64
|
+
}
|
|
65
|
+
export interface LouvainOptions {
|
|
66
|
+
resolution?: number;
|
|
67
|
+
maxIterations?: number;
|
|
68
|
+
tolerance?: number;
|
|
69
|
+
}
|
|
70
|
+
export interface GirvanNewmanOptions {
|
|
71
|
+
maxCommunities?: number;
|
|
72
|
+
minCommunitySize?: number;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic.test.d.ts","sourceRoot":"","sources":["../../../test/browser/basic.test.ts"],"names":[],"mappings":""}
|