data-structure-typed 1.36.7 → 1.36.8

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/.eslintrc.js CHANGED
@@ -11,7 +11,7 @@ module.exports = {
11
11
  "ignorePatterns": ["lib/", "dist/", "umd/", "coverage/", "docs/"],
12
12
  "rules": {
13
13
  "import/no-anonymous-default-export": "off",
14
- "@typescript-eslint/no-unused-vars": "error",
14
+ "@typescript-eslint/no-unused-vars": "warn",
15
15
  "@typescript-eslint/ban-ts-comment": "off",
16
16
  "@typescript-eslint/no-explicit-any": "off",
17
17
  "@typescript-eslint/no-var-requires": "off",
package/CHANGELOG.md CHANGED
@@ -8,10 +8,11 @@ All notable changes to this project will be documented in this file.
8
8
  - [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
9
9
  - [`auto-changelog`](https://github.com/CookPete/auto-changelog)
10
10
 
11
- ## [v1.36.7](https://github.com/zrwusa/data-structure-typed/compare/v1.35.0...main) (upcoming)
11
+ ## [v1.36.8](https://github.com/zrwusa/data-structure-typed/compare/v1.35.0...main) (upcoming)
12
12
 
13
13
  ### Changes
14
14
 
15
+ - [heap] fibonacci heap implemented. [test] big O estimate. [project] n… [`#15`](https://github.com/zrwusa/data-structure-typed/pull/15)
15
16
  - [rbtree] implemented, but with bugs [`#13`](https://github.com/zrwusa/data-structure-typed/pull/13)
16
17
  - [trie] renamed ambiguous methods and add comments to all methods. [`#12`](https://github.com/zrwusa/data-structure-typed/pull/12)
17
18
  - [binarytree] modified the getDepth method to adhere to the proper def… [`#11`](https://github.com/zrwusa/data-structure-typed/pull/11)
@@ -8,18 +8,28 @@ import type { Comparator } from '../../types';
8
8
  import { DFSOrderPattern } from '../../types';
9
9
  export declare class Heap<E> {
10
10
  protected nodes: E[];
11
- private readonly comparator;
11
+ protected readonly comparator: Comparator<E>;
12
12
  constructor(comparator: Comparator<E>);
13
13
  /**
14
14
  * Insert an element into the heap and maintain the heap properties.
15
- * @param value - The element to be inserted.
15
+ * @param element - The element to be inserted.
16
16
  */
17
- add(value: E): Heap<E>;
17
+ add(element: E): Heap<E>;
18
+ /**
19
+ * Insert an element into the heap and maintain the heap properties.
20
+ * @param element - The element to be inserted.
21
+ */
22
+ push(element: E): Heap<E>;
18
23
  /**
19
24
  * Remove and return the top element (smallest or largest element) from the heap.
20
- * @returns The top element or null if the heap is empty.
25
+ * @returns The top element or undefined if the heap is empty.
21
26
  */
22
- poll(): E | null;
27
+ poll(): E | undefined;
28
+ /**
29
+ * Remove and return the top element (smallest or largest element) from the heap.
30
+ * @returns The top element or undefined if the heap is empty.
31
+ */
32
+ pop(): E | undefined;
23
33
  /**
24
34
  * Float operation to maintain heap properties after adding an element.
25
35
  * @param index - The index of the newly added element.
@@ -36,18 +46,18 @@ export declare class Heap<E> {
36
46
  protected fix(): void;
37
47
  /**
38
48
  * Peek at the top element of the heap without removing it.
39
- * @returns The top element or null if the heap is empty.
49
+ * @returns The top element or undefined if the heap is empty.
40
50
  */
41
- peek(): E | null;
51
+ peek(): E | undefined;
42
52
  /**
43
53
  * Get the size (number of elements) of the heap.
44
54
  */
45
55
  get size(): number;
46
56
  /**
47
57
  * Get the last element in the heap, which is not necessarily a leaf node.
48
- * @returns The last element or null if the heap is empty.
58
+ * @returns The last element or undefined if the heap is empty.
49
59
  */
50
- get leaf(): E | null;
60
+ get leaf(): E | undefined;
51
61
  /**
52
62
  * Check if the heap is empty.
53
63
  * @returns True if the heap is empty, otherwise false.
@@ -64,10 +74,10 @@ export declare class Heap<E> {
64
74
  refill(nodes: E[]): void;
65
75
  /**
66
76
  * Use a comparison function to check whether a binary heap contains a specific element.
67
- * @param value - the element to check.
77
+ * @param element - the element to check.
68
78
  * @returns Returns true if the specified element is contained; otherwise, returns false.
69
79
  */
70
- has(value: E): boolean;
80
+ has(element: E): boolean;
71
81
  /**
72
82
  * Depth-first search (DFS) method, different traversal orders can be selected。
73
83
  * @param order - Traversal order parameter: 'in' (in-order), 'pre' (pre-order) or 'post' (post-order).
@@ -98,3 +108,118 @@ export declare class Heap<E> {
98
108
  */
99
109
  static heapify<E>(nodes: E[], comparator: Comparator<E>): Heap<E>;
100
110
  }
111
+ export declare class FibonacciHeapNode<E> {
112
+ element: E;
113
+ degree: number;
114
+ left?: FibonacciHeapNode<E>;
115
+ right?: FibonacciHeapNode<E>;
116
+ child?: FibonacciHeapNode<E>;
117
+ parent?: FibonacciHeapNode<E>;
118
+ marked: boolean;
119
+ constructor(element: E, degree?: number);
120
+ }
121
+ export declare class FibonacciHeap<E> {
122
+ root?: FibonacciHeapNode<E>;
123
+ protected min?: FibonacciHeapNode<E>;
124
+ size: number;
125
+ protected readonly comparator: Comparator<E>;
126
+ constructor(comparator?: Comparator<E>);
127
+ /**
128
+ * Default comparator function used by the heap.
129
+ * @param {E} a
130
+ * @param {E} b
131
+ * @protected
132
+ */
133
+ protected defaultComparator(a: E, b: E): number;
134
+ /**
135
+ * Get the size (number of elements) of the heap.
136
+ * @returns {number} The size of the heap. Returns 0 if the heap is empty. Returns -1 if the heap is invalid.
137
+ */
138
+ clear(): void;
139
+ /**
140
+ * Create a new node.
141
+ * @param element
142
+ * @protected
143
+ */
144
+ protected createNode(element: E): FibonacciHeapNode<E>;
145
+ /**
146
+ * Merge the given node with the root list.
147
+ * @param node - The node to be merged.
148
+ */
149
+ protected mergeWithRoot(node: FibonacciHeapNode<E>): void;
150
+ /**
151
+ * O(1) time operation.
152
+ * Insert an element into the heap and maintain the heap properties.
153
+ * @param element
154
+ * @returns {FibonacciHeap<E>} FibonacciHeap<E> - The heap itself.
155
+ */
156
+ add(element: E): FibonacciHeap<E>;
157
+ /**
158
+ * O(1) time operation.
159
+ * Insert an element into the heap and maintain the heap properties.
160
+ * @param element
161
+ * @returns {FibonacciHeap<E>} FibonacciHeap<E> - The heap itself.
162
+ */
163
+ push(element: E): FibonacciHeap<E>;
164
+ /**
165
+ * O(1) time operation.
166
+ * Peek at the top element of the heap without removing it.
167
+ * @returns The top element or undefined if the heap is empty.
168
+ * @protected
169
+ */
170
+ peek(): E | undefined;
171
+ /**
172
+ * O(1) time operation.
173
+ * Get the size (number of elements) of the heap.
174
+ * @param {FibonacciHeapNode<E>} head - The head of the linked list.
175
+ * @protected
176
+ * @returns FibonacciHeapNode<E>[] - An array containing the nodes of the linked list.
177
+ */
178
+ consumeLinkedList(head?: FibonacciHeapNode<E>): FibonacciHeapNode<E>[];
179
+ /**
180
+ * O(log n) time operation.
181
+ * Remove and return the top element (smallest or largest element) from the heap.
182
+ * @param node - The node to be removed.
183
+ * @protected
184
+ */
185
+ protected removeFromRoot(node: FibonacciHeapNode<E>): void;
186
+ /**
187
+ * O(log n) time operation.
188
+ * Remove and return the top element (smallest or largest element) from the heap.
189
+ * @param parent
190
+ * @param node
191
+ */
192
+ mergeWithChild(parent: FibonacciHeapNode<E>, node: FibonacciHeapNode<E>): void;
193
+ /**
194
+ * O(log n) time operation.
195
+ * Remove and return the top element (smallest or largest element) from the heap.
196
+ * @param y
197
+ * @param x
198
+ * @protected
199
+ */
200
+ protected link(y: FibonacciHeapNode<E>, x: FibonacciHeapNode<E>): void;
201
+ /**
202
+ * O(log n) time operation.
203
+ * Remove and return the top element (smallest or largest element) from the heap.
204
+ * @protected
205
+ */
206
+ protected consolidate(): void;
207
+ /**
208
+ * O(log n) time operation.
209
+ * Remove and return the top element (smallest or largest element) from the heap.
210
+ * @returns The top element or undefined if the heap is empty.
211
+ */
212
+ poll(): E | undefined;
213
+ /**
214
+ * O(log n) time operation.
215
+ * Remove and return the top element (smallest or largest element) from the heap.
216
+ * @returns The top element or undefined if the heap is empty.
217
+ */
218
+ pop(): E | undefined;
219
+ /**
220
+ * O(log n) time operation.
221
+ * merge two heaps. The heap that is merged will be cleared. The heap that is merged into will remain.
222
+ * @param heapToMerge
223
+ */
224
+ merge(heapToMerge: FibonacciHeap<E>): void;
225
+ }
@@ -6,7 +6,7 @@
6
6
  * @license MIT License
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.Heap = void 0;
9
+ exports.FibonacciHeap = exports.FibonacciHeapNode = exports.Heap = void 0;
10
10
  class Heap {
11
11
  constructor(comparator) {
12
12
  this.nodes = [];
@@ -14,20 +14,27 @@ class Heap {
14
14
  }
15
15
  /**
16
16
  * Insert an element into the heap and maintain the heap properties.
17
- * @param value - The element to be inserted.
17
+ * @param element - The element to be inserted.
18
18
  */
19
- add(value) {
20
- this.nodes.push(value);
19
+ add(element) {
20
+ return this.push(element);
21
+ }
22
+ /**
23
+ * Insert an element into the heap and maintain the heap properties.
24
+ * @param element - The element to be inserted.
25
+ */
26
+ push(element) {
27
+ this.nodes.push(element);
21
28
  this.bubbleUp(this.nodes.length - 1);
22
29
  return this;
23
30
  }
24
31
  /**
25
32
  * Remove and return the top element (smallest or largest element) from the heap.
26
- * @returns The top element or null if the heap is empty.
33
+ * @returns The top element or undefined if the heap is empty.
27
34
  */
28
35
  poll() {
29
36
  if (this.nodes.length === 0) {
30
- return null;
37
+ return undefined;
31
38
  }
32
39
  if (this.nodes.length === 1) {
33
40
  return this.nodes.pop();
@@ -37,6 +44,13 @@ class Heap {
37
44
  this.sinkDown(0);
38
45
  return topValue;
39
46
  }
47
+ /**
48
+ * Remove and return the top element (smallest or largest element) from the heap.
49
+ * @returns The top element or undefined if the heap is empty.
50
+ */
51
+ pop() {
52
+ return this.poll();
53
+ }
40
54
  /**
41
55
  * Float operation to maintain heap properties after adding an element.
42
56
  * @param index - The index of the newly added element.
@@ -87,11 +101,11 @@ class Heap {
87
101
  }
88
102
  /**
89
103
  * Peek at the top element of the heap without removing it.
90
- * @returns The top element or null if the heap is empty.
104
+ * @returns The top element or undefined if the heap is empty.
91
105
  */
92
106
  peek() {
93
107
  if (this.nodes.length === 0) {
94
- return null;
108
+ return undefined;
95
109
  }
96
110
  return this.nodes[0];
97
111
  }
@@ -103,11 +117,11 @@ class Heap {
103
117
  }
104
118
  /**
105
119
  * Get the last element in the heap, which is not necessarily a leaf node.
106
- * @returns The last element or null if the heap is empty.
120
+ * @returns The last element or undefined if the heap is empty.
107
121
  */
108
122
  get leaf() {
109
123
  var _a;
110
- return (_a = this.nodes[this.size - 1]) !== null && _a !== void 0 ? _a : null;
124
+ return (_a = this.nodes[this.size - 1]) !== null && _a !== void 0 ? _a : undefined;
111
125
  }
112
126
  /**
113
127
  * Check if the heap is empty.
@@ -132,11 +146,11 @@ class Heap {
132
146
  }
133
147
  /**
134
148
  * Use a comparison function to check whether a binary heap contains a specific element.
135
- * @param value - the element to check.
149
+ * @param element - the element to check.
136
150
  * @returns Returns true if the specified element is contained; otherwise, returns false.
137
151
  */
138
- has(value) {
139
- return this.nodes.includes(value);
152
+ has(element) {
153
+ return this.nodes.includes(element);
140
154
  }
141
155
  /**
142
156
  * Depth-first search (DFS) method, different traversal orders can be selected。
@@ -215,4 +229,270 @@ class Heap {
215
229
  }
216
230
  }
217
231
  exports.Heap = Heap;
232
+ class FibonacciHeapNode {
233
+ constructor(element, degree = 0) {
234
+ this.element = element;
235
+ this.degree = degree;
236
+ this.marked = false;
237
+ }
238
+ }
239
+ exports.FibonacciHeapNode = FibonacciHeapNode;
240
+ class FibonacciHeap {
241
+ constructor(comparator) {
242
+ this.size = 0;
243
+ this.clear();
244
+ this.comparator = comparator || this.defaultComparator;
245
+ if (typeof this.comparator !== 'function') {
246
+ throw new Error('FibonacciHeap constructor: given comparator should be a function.');
247
+ }
248
+ }
249
+ /**
250
+ * Default comparator function used by the heap.
251
+ * @param {E} a
252
+ * @param {E} b
253
+ * @protected
254
+ */
255
+ defaultComparator(a, b) {
256
+ if (a < b)
257
+ return -1;
258
+ if (a > b)
259
+ return 1;
260
+ return 0;
261
+ }
262
+ /**
263
+ * Get the size (number of elements) of the heap.
264
+ * @returns {number} The size of the heap. Returns 0 if the heap is empty. Returns -1 if the heap is invalid.
265
+ */
266
+ clear() {
267
+ this.root = undefined;
268
+ this.min = undefined;
269
+ this.size = 0;
270
+ }
271
+ /**
272
+ * Create a new node.
273
+ * @param element
274
+ * @protected
275
+ */
276
+ createNode(element) {
277
+ return new FibonacciHeapNode(element);
278
+ }
279
+ /**
280
+ * Merge the given node with the root list.
281
+ * @param node - The node to be merged.
282
+ */
283
+ mergeWithRoot(node) {
284
+ if (!this.root) {
285
+ this.root = node;
286
+ }
287
+ else {
288
+ node.right = this.root.right;
289
+ node.left = this.root;
290
+ this.root.right.left = node;
291
+ this.root.right = node;
292
+ }
293
+ }
294
+ /**
295
+ * O(1) time operation.
296
+ * Insert an element into the heap and maintain the heap properties.
297
+ * @param element
298
+ * @returns {FibonacciHeap<E>} FibonacciHeap<E> - The heap itself.
299
+ */
300
+ add(element) {
301
+ return this.push(element);
302
+ }
303
+ /**
304
+ * O(1) time operation.
305
+ * Insert an element into the heap and maintain the heap properties.
306
+ * @param element
307
+ * @returns {FibonacciHeap<E>} FibonacciHeap<E> - The heap itself.
308
+ */
309
+ push(element) {
310
+ const node = this.createNode(element);
311
+ node.left = node;
312
+ node.right = node;
313
+ this.mergeWithRoot(node);
314
+ if (!this.min || this.comparator(node.element, this.min.element) <= 0) {
315
+ this.min = node;
316
+ }
317
+ this.size++;
318
+ return this;
319
+ }
320
+ /**
321
+ * O(1) time operation.
322
+ * Peek at the top element of the heap without removing it.
323
+ * @returns The top element or undefined if the heap is empty.
324
+ * @protected
325
+ */
326
+ peek() {
327
+ return this.min ? this.min.element : undefined;
328
+ }
329
+ /**
330
+ * O(1) time operation.
331
+ * Get the size (number of elements) of the heap.
332
+ * @param {FibonacciHeapNode<E>} head - The head of the linked list.
333
+ * @protected
334
+ * @returns FibonacciHeapNode<E>[] - An array containing the nodes of the linked list.
335
+ */
336
+ consumeLinkedList(head) {
337
+ const nodes = [];
338
+ if (!head)
339
+ return nodes;
340
+ let node = head;
341
+ let flag = false;
342
+ while (true) {
343
+ if (node === head && flag)
344
+ break;
345
+ else if (node === head)
346
+ flag = true;
347
+ if (node) {
348
+ nodes.push(node);
349
+ node = node.right;
350
+ }
351
+ }
352
+ return nodes;
353
+ }
354
+ /**
355
+ * O(log n) time operation.
356
+ * Remove and return the top element (smallest or largest element) from the heap.
357
+ * @param node - The node to be removed.
358
+ * @protected
359
+ */
360
+ removeFromRoot(node) {
361
+ if (this.root === node)
362
+ this.root = node.right;
363
+ if (node.left)
364
+ node.left.right = node.right;
365
+ if (node.right)
366
+ node.right.left = node.left;
367
+ }
368
+ /**
369
+ * O(log n) time operation.
370
+ * Remove and return the top element (smallest or largest element) from the heap.
371
+ * @param parent
372
+ * @param node
373
+ */
374
+ mergeWithChild(parent, node) {
375
+ if (!parent.child) {
376
+ parent.child = node;
377
+ }
378
+ else {
379
+ node.right = parent.child.right;
380
+ node.left = parent.child;
381
+ parent.child.right.left = node;
382
+ parent.child.right = node;
383
+ }
384
+ }
385
+ /**
386
+ * O(log n) time operation.
387
+ * Remove and return the top element (smallest or largest element) from the heap.
388
+ * @param y
389
+ * @param x
390
+ * @protected
391
+ */
392
+ link(y, x) {
393
+ this.removeFromRoot(y);
394
+ y.left = y;
395
+ y.right = y;
396
+ this.mergeWithChild(x, y);
397
+ x.degree++;
398
+ y.parent = x;
399
+ }
400
+ /**
401
+ * O(log n) time operation.
402
+ * Remove and return the top element (smallest or largest element) from the heap.
403
+ * @protected
404
+ */
405
+ consolidate() {
406
+ const A = new Array(this.size);
407
+ const nodes = this.consumeLinkedList(this.root);
408
+ let x, y, d, t;
409
+ for (const node of nodes) {
410
+ x = node;
411
+ d = x.degree;
412
+ while (A[d]) {
413
+ y = A[d];
414
+ if (this.comparator(x.element, y.element) > 0) {
415
+ t = x;
416
+ x = y;
417
+ y = t;
418
+ }
419
+ this.link(y, x);
420
+ A[d] = undefined;
421
+ d++;
422
+ }
423
+ A[d] = x;
424
+ }
425
+ for (let i = 0; i < this.size; i++) {
426
+ if (A[i] && this.comparator(A[i].element, this.min.element) <= 0) {
427
+ this.min = A[i];
428
+ }
429
+ }
430
+ }
431
+ /**
432
+ * O(log n) time operation.
433
+ * Remove and return the top element (smallest or largest element) from the heap.
434
+ * @returns The top element or undefined if the heap is empty.
435
+ */
436
+ poll() {
437
+ return this.pop();
438
+ }
439
+ /**
440
+ * O(log n) time operation.
441
+ * Remove and return the top element (smallest or largest element) from the heap.
442
+ * @returns The top element or undefined if the heap is empty.
443
+ */
444
+ pop() {
445
+ if (this.size === 0)
446
+ return undefined;
447
+ const z = this.min;
448
+ if (z.child) {
449
+ const nodes = this.consumeLinkedList(z.child);
450
+ for (const node of nodes) {
451
+ this.mergeWithRoot(node);
452
+ node.parent = undefined;
453
+ }
454
+ }
455
+ this.removeFromRoot(z);
456
+ if (z === z.right) {
457
+ this.min = undefined;
458
+ this.root = undefined;
459
+ }
460
+ else {
461
+ this.min = z.right;
462
+ this.consolidate();
463
+ }
464
+ this.size--;
465
+ return z.element;
466
+ }
467
+ /**
468
+ * O(log n) time operation.
469
+ * merge two heaps. The heap that is merged will be cleared. The heap that is merged into will remain.
470
+ * @param heapToMerge
471
+ */
472
+ merge(heapToMerge) {
473
+ if (heapToMerge.size === 0) {
474
+ return; // Nothing to merge
475
+ }
476
+ // Merge the root lists of the two heaps
477
+ if (this.root && heapToMerge.root) {
478
+ const thisRoot = this.root;
479
+ const otherRoot = heapToMerge.root;
480
+ const thisRootRight = thisRoot.right;
481
+ const otherRootLeft = otherRoot.left;
482
+ thisRoot.right = otherRoot;
483
+ otherRoot.left = thisRoot;
484
+ thisRootRight.left = otherRootLeft;
485
+ otherRootLeft.right = thisRootRight;
486
+ }
487
+ // Update the minimum node
488
+ if (!this.min || (heapToMerge.min && this.comparator(heapToMerge.min.element, this.min.element) < 0)) {
489
+ this.min = heapToMerge.min;
490
+ }
491
+ // Update the size
492
+ this.size += heapToMerge.size;
493
+ // Clear the heap that was merged
494
+ heapToMerge.clear();
495
+ }
496
+ }
497
+ exports.FibonacciHeap = FibonacciHeap;
218
498
  //# sourceMappingURL=heap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"heap.js","sourceRoot":"","sources":["../../../src/data-structures/heap/heap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heap.js","sourceRoot":"","sources":["../../../src/data-structures/heap/heap.ts"],"names":[],"mappings":"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"}