dagre-d3-es
Version:
<p align="center"> <a href="https://tbo47.github.io/" ><img src="https://img.shields.io/badge/created_by-tbo47-blue.svg" alt="Created by tbo47"></a> <a href="https://www.npmjs.com/dagre-d3-es"><img src="https://img.shields.io/npm/v/dagre-d3-es.svg?log
89 lines (88 loc) • 2.83 kB
TypeScript
/**
* A min-priority queue data structure. This algorithm is derived from Cormen,
* et al., "Introduction to Algorithms". The basic idea of a min-priority
* queue is that you can efficiently (in O(1) time) get the smallest key in
* the queue. Adding and removing elements takes O(log n) time. A key can
* have its priority decreased in O(log n) time.
*/
export class PriorityQueue {
/**
* @private
* @type {Array<{key: string, priority: number}>}
*/
private _arr;
/**
* @private
* @type {Record<string, number>}
*/
private _keyIndices;
/**
* @returns {number} the number of elements in the queue.
* @remarks Takes `O(1)` time.
*/
size(): number;
/**
* @returns {string[]} the keys that are in the queue.
* @remarks Takes `O(n)` time.
*/
keys(): string[];
/**
* @param {Object} key - The key to check for presence in the queue.
* @returns {boolean} `true` if **key** is in the queue and `false` if not.
*/
has(key: any): boolean;
/**
* @param {Object} key - The key to get the priority for.
* @returns {number | undefined} the priority for **key**.
* If **key** is not present in the queue then this function returns `undefined`.
* @remarks Takes `O(1)` time.
*/
priority(key: any): number | undefined;
/**
* @returns {string} the key for the minimum element in this queue.
* @throws {Error} if the queue is empty.
* @remarks Takes `O(1)` time.
*/
min(): string;
/**
* Inserts a new key into the priority queue.
*
* @remarks Takes `O(n)` time.
*
* @param {Object} key the key to add. This will be coerced to a `string`.
* @param {Number} priority the initial priority for the key
* @returns {boolean} `true` if the key was added and `false` if it was already
* present in the queue.
*/
add(key: any, priority: number): boolean;
/**
* Removes and returns the smallest key in the queue.
* @returns {string} the key with the smallest priority
* @remarks Takes `O(log n)` time.
*/
removeMin(): string;
/**
* Decreases the priority for **key** to **priority**.
*
* @param {Object} key the key for which to raise priority
* @param {Number} priority the new priority for the key
* @throws {Error} if the new priority is greater than the previous priority.
*/
decrease(key: any, priority: number): void;
/**
* @param {number} i - Lower index.
* @private
*/
private _heapify;
/**
* @param {number} index - Index to decrease.
* @private
*/
private _decrease;
/**
* @param {number} i - First index
* @param {number} j - Second index
* @private
*/
private _swap;
}