单词纠错APP

设计思路:

(1)我们首先需要提出一个指标来衡量单词的相似程度,利用编辑距离,即字符串A经过插入,删除,改变三个操作变成字符串B需要花费的最少操作次数,利用动态规划即可解决.
(2)如何高效找出候选单词呢,建立字典树然后遍历比较是可以的,但是在单词数量大的时候效率很低。利用BK树可以避免大量的不必要比较,简单来说,A->B+B->C的距离一定大于等于A->C的距离,它满足三角不等式,由此可以推导出两边之和小于第三边的公式。假设我们希望A与B的距离小于N1,那么对于任意C,不妨假设AC距离是d,CB距离是X,有如下结论:
D+N=>D+Distance(A,B)>=x
X+Distance(A,B)>=d  => X>= d-Distance(A,b) >= d – N
X+d>=Distance(A,B) = > x>=N-d

所以X一定位于(|d-n|,d+n)之间。一般来说,n相对比较小,不妨假设是2,那么x至多有5种可能,如果我们将每一个单词看作节点,每个距离看作边,显然可以构造一棵树,然后从当前节点出发只有5条边可以走,不妨假设5条边占全部数据的0.6,树有5层,那么需要比较的数据量就变成了0.6**5 = %7.7左右,极大的减少了不必要的比较。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值