import type { Predicate2 } from "@thi.ng/api"; /** * Computes Levenshtein distance w/ optionally given `maxDist` (for * early termination, default: ∞) and equality predicate (default: * `===`). Returns 0 if both `a` and `b` are equal (based on predicate). * Returns `Infinity` if actual distance > `maxDist`. * * @remarks * * Based on: * * - https://en.wikipedia.org/wiki/Levenshtein_distance * - https://en.wikipedia.org/wiki/Wagner%E2%80%93Fischer_algorithm * - https://github.com/gustf/js-levenshtein/blob/develop/index.js * * @example * ```ts tangle:../export/levenshtein.ts * import { levenshtein } from "@thi.ng/arrays"; * * console.log( * levenshtein([1, 2, 3, 4, 5], [1, 2, 4, 3, 5]) * ); * // 2 * * console.log( * levenshtein( * [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }, { id: 5 }], * [{ id: 4 }, { id: 5 }, { id: 3 }, { id: 1 }, { id: 2 }], * // max dist * 2, * // predicate * (a, b) => a.id === b.id * ) * ); * // Infinity * ``` * * @param a - * @param b - * @param maxDist - * @param equiv - */ export declare const levenshtein: (a: ArrayLike, b: ArrayLike, maxDist?: number, equiv?: Predicate2) => number; /** * Normalized version of {@link levenshtein}, i.e. the actual L-dist * divided by the length of the longest input (or `Infinity` if actual * distance > `maxDist`). * * @param a - * @param b - * @param maxDist - * @param equiv - */ export declare const normalizedLevenshtein: (a: ArrayLike, b: ArrayLike, maxDist?: number, equiv?: (a: any, b: any) => boolean) => number; //# sourceMappingURL=levenshtein.d.ts.map