Edit Distance
编辑距离是针对二个字符串(例如英文字)的差异程度的量化量测,量测方式是看至少需要多少次的处理才能将一個字符串变成另一個字符串。
事实上编辑距离有几种不同的定义:
1. Levenshtein (莱文斯坦距离) ----通常的定义,编辑操作包括可以删除、插入、替换字符串中的任意一个字元。
2. Damerau-Levenshtein → 1 的 变种,还可以允许一单一操作交换相邻的两个字符 (转置)。即 aba → aab 的编辑距离为 1 而非 Levenshtein 的 2 。
3. LCS - D(详见后续的最长公共子序列问题) 只允许删除和插入。
4. Hamming Distance (汉明距离) 只允许替换。
5. Jaro 只允许字符转置。
Problem
给定 2 个字符串 s0、s1 s 0 、 s 1 . 编辑距离是将 s0变成s1 s 0 变 成 s 1 的最少操作次数,操作只允许如下 3 种:
插入一个字符,例如:ha → hat
删除一个字符,例如:abc → ac
替换一个字符,例如:sex → hex
Analyze
- 编辑距离是对称的,即 s0→s1 s 0 → s 1 等于 s1→s0 s 1 → s 0