进行串匹配的方法 本申请关系到串匹配的一般领域,更具体地关系到使用串编辑距离的下界估计的一种串匹配方法。
串匹配是比较两个串以便确定它们在多大程度上相似。一种普遍使用的对串的相似性的测度是“串编辑距离”。简单地说,串编辑距离衡量把一个串编辑为另一个串的“费用”。串编辑距离将在后面详述。
计算串编辑距离的最普遍使用的方法叫做“动态编程”。动态编程的准确特性已为人知,在此申请中不再详述。动态编程以及所有这样的串编辑距离算法都是计算量大。在商业设备中,计算资源总是受费用的限制,因此希望尽可能减少应用程序对计算资源的需求:为了维持用户输入的响应时间在可接受的水平上,这一点经常是关键的。
一个具有有限的处理能力并运行一个串匹配应用的设备就是在一欧洲申请(其申请号94304890)中由同一申请人所描述的“草书匹配”设备。“草书匹配”是搜索电子墨水的样本“草书”而不先把它们翻译成ASCII字符地操作。一幅草书是用户用电子输入笔直接写在屏上输入的。这里串匹配是用来将一个代表一幅输入草书的串,即查询串,与代表先前输入的一系列草书的串,即候选串相比较。匹配操作的目的是恢复与候选串之一相联的一个数据对象(例如电话号码)。如果减少了计算串编辑距离所需的处理,就可以在这一设备降低用户输入的响应时间。
串编辑距离还用于很多其它的串匹配应用。很多商业字处理器就利用串编辑距离计算,如像DNA比较程序。在后者,候选串可能是一个“长”距离候选串的子串。所有这些应用都会从减少执行串匹配所需的计算量中获益。
因此本发明的目标就是改进串匹配的方法。
根据本发明,我们提供了一个查询串和一个候选串相匹配的方法,该方法包括对候选串的串编辑距离的下界估计的计算,其中计算下界估计包含如下步骤:
-通过给较短的串加上填充元素使两串长度相等;
-根据两个串的内部元素的值把两个串排序;
-计算两个串的对应位置的元素的替换费用的总和。
这一方法的优点在于它对处理的需求比先前技术的串匹配方法要少。
在本发明的第一实施例中,串匹配操作包含如下步骤:
-计算查询串与所述候选串之一之间的串编辑距离,并把所述的候选串存起来作为当前的最佳匹配串。
-计算剩下的每一个候选串的一个下界估计距离并衡量结果,以便:
-如果下界估计距离比当前最佳匹配距离的候选串大,则候选串被丢弃;
-否则计算查询串与当前候选串之间的串编辑距离,并保留当前候选串或者当前最佳匹配串,哪一个离查询串的串编辑距离小,哪一个就作为当前最佳匹配候选串;
-存储最终的最佳候选串。
在本发明的第二实施例中,通过执行一个初始步骤,即对每一个候选串计算它与查询串的下界估计距离,并根据下界距离对候选串排序;然后查询串的下界估计距离超过当前最佳匹配距离的所有候选串丢掉,这样便提高了串匹配操作的效率。
在本发明的第三实施例中,还包含一个步骤,即在执行第一次串编辑距离的计算之前丢弃所有的下限估计距离大于一个预定义的门限距离的那些所述候选串。
对本发明在草书匹配领域的具体实施例,将参考如下的图以举例方式来描述。
图1显示了一个使用根据本发明的串编辑距离的下界估计的手持式草书匹配设备的例子;
图2是图1的设备的草书匹配子系统的简化方框图;
图3是传统的串匹配方法的流程图;
图4是显示本发明使用的串匹配方法的流程图;
图5a显示了把第一个两字符的串映射到第二个两字符的串的合法的串编辑序列;
图5b显示了一个使用“交叉”的非法的串编辑序列;
图6是一个显示根据本发明的计算串编辑距离的下界的算法的流程图;
图7是一个计算两个整数代码串的下界估计距离的例子;
图8是本发明进一步改进串匹配操作的方法的第二个应用的流程图;
图9是本发明包含一个门限步骤以进一步加速计算的方法的第三个应用的流程图。
在图1中显示的一个手持式“草书匹配”设备10是作为一个具有有限计算能力的设备的例子,在此设备中本发明可以用来减少计算时间。
设备10包含一个笔敏感的屏幕12和一支输入笔11用来往屏幕上写。设备包含一个微处理器,例如Intel80386,来执行普通控制功能,如初始化。该设备还包含一个基于处理器的串匹配子系统20,后者把电话号码和名字与用输入笔11在屏幕12上写入的编码的草书匹配。
现在参考图2详细描述草书匹配子系统20。草书匹配子系统包含一个计算一个输入草书的查询串表达式的编码器21。该查询串被输入到匹配器23,此匹配器用来计算它与前面存储的一组候选串22之间的串编辑距离。“距离得分”是对每一个候选串22相对于查询串计算的,其结果24用来确定最佳匹配。图2中名字“Dan”被匹配到相应于“Dan”的候选串,因为这两个串之间的距离得分最低。这一候选串连同它相联的电话号码作为最佳匹配被返回。
草书匹配操作的编码方面的问题不是本发明的论题,不再详述。
现在参考图3的流程图给出对传统的匹配操作的描述,它有如下步骤:步骤31:把编码的查询串加载到匹配器;步骤32:装入第一候选串;步骤33:使用一种计算量大的技术,例如动态编程来计算两个串之间的串编辑距离,并把它存起来。步骤34:串编辑距离被存储。
对第2个及后面的候选串重复步骤32-34,直到所有的候选串都被处理完;步骤35:将离查询串的串编辑距离最小的候选串作为最佳匹配返回。
在传统方法中,计算串编辑距离必须对每个候选串都执行,因而大大地增加了总体计算量的需求。
图4勾划出了使用本发明的一个改进的串匹配方法。这一实施例在可能的地方需要用低计算强度的“下界估计距离”计算来替换高计算强度的串编辑距离计算。下界估计距离是对串编辑距离的计算的近似,保证不会超越它所近似的串编辑距离的大小。这个的计算强度比串编辑距离小得多。由此可见,如果计算出的下界估计距离比当前最佳匹配的串编辑距离大,就没有必要计算这个候选串的实际的串编辑距离。这是正确的,因为实际的串编辑距离总是大于或等于下界估计距离。
因此在图4中:步骤41:装入查询串;步骤42:装入第一个候选串;步骤43:计算查询串与第一候选串之间的串编辑距离;步骤44:这个候选串作为当前最佳匹配存起来;步骤45:装入下一个候选串;步骤46:计算它与候选串之间的下界估计距离;如果下界估计比当前最佳匹配的串编辑距离大,该候选串可以立即消除,并在步骤45中装入下一个候选串。步骤47:如果下界估计距离比当前最佳匹配的串编辑距离小,那么必须计算候选串的串编辑距离。
当下界估计比当前最佳匹配的串编辑距离小时,必须计算候选串的串编辑距离,以便在当前最佳匹配与候选串之间进行有意义的比较。
如果候选串的串编辑比当前最佳匹配的小,则方法转回到步骤44,候选串成为当前最佳匹配。
否则,候选串被丢弃,在步骤45装入下一个候选串。
此方法被重复,直到所有的候选串都被处理完。
这一方法保证从候选串的集合中找出最佳匹配串。
从前面描述中知,作为一个有效的抛弃准则,有必要使下界估计接近低估,但是决不能超过实际的串编辑距离。理论上有很多方法计算对串编辑距离的下界估计。下界估计的一例是“0”,它是所有串编辑距离的下界。但是“0”不是一个串编辑距离的好的估计,因为它不能成为有效的抛弃准则。我们提供了一个计算下界估计的方法,它提供了对串编辑距离非常接近的近似,但计算强度小得多。
通过对串编辑距离的更详尽的解释可以获得对本发明更好的理解。
一个“串编辑序列”通过一系列“替换”(Sub),“删除”(del)和“插入”(Ins)操作,把一个串变换成另一个串。图5a显示了一例,其中一个两字符的串使用合法的串编辑序列映射到另一个两字符的串。图中串a1b1可以通过三个合法编辑序列之一映射到串a2b2:
1.del(a1),sub(b1,b2),ins(a2)
2.del(b2),sub(a1,a2),ins(b1)
3.del(a1),del(b1),ins(b2),ins(a2)其中sub(a,b)即用b替换a。
三个编辑操作中的每一个都赋予一个“费用”。费用的选取纯粹依赖于应用,并由系统设计者制定。“串编辑距离”就定义为把一个串转换成另一个串所需的编辑操作的费用的最小值和。如果插入和删除操作的费用选为统一的,即插入操作的费用等于删除操作的费用;而且替换操作的费用选为对称,即Sub(a,b)的费用等于Sub(b,a)的费用,并且比一个插入加一个删除的费用的和小;图5a的串编辑距离将是上面的序列1或2的总费用。
对于图5a的简单情况,串编辑序列1和2的最小费用是容易识别的。但在实际应用中,涉及更长的串,而且编辑费用的赋值方式也更为高级,找出串编辑序列的最小费用变得更复杂。为了找出最小和,使用动态编程来考虑所有可能的合法的串编辑序列的费用。
图5b显示了第四种可能的串编辑序列,它使用了交叉替换sub(a1,a2),sub(b1,b2)。这个串编辑序列的总费用较低,但不允许这样。禁止交叉替换是使用动态编程的前提。如果允许交叉替换,例如在处理打字转置的情况,那么搜索串编辑序列的最小费用将更为复杂,这个算法的计算强度甚至比采用动态编程更大。
本发明的下界估计距离放松了交叉的限制,并且如果可能的话,使用交叉允许一个串中的每个元素被另一个串的一个元素所替换。但是下界估计计算不搜索交叉替换的所有可能组合。反而利用一个过程以确定基于两个串的顺序所用的交叉。这样的结果费用保证比相应的串编辑距离小。
下面的讨论是S()代表替换费用,i()代表插入费用,d()代表删除费用。
下界估计距离算法做出五个假设:
1.串x和y包含从集S提取的元素序列,象整数集一样具有总体顺序。
2.在元素xi,yi∈S上的所有编辑操作的费用大于或等于0。即
S(xi,yj)≥0
i(xi)≥0
d(xi)≥0
3.两个元素的替换费用小于或等于插入一个和删除另一个的费用,即
S(xi,yj)≤i(yj)+d(xi)
4.有一个空值φ,对于元素来说,这样用φ替换一个元素xi的费用小于或等于插入或删除xi的费用,即
S(xi,φ)≤d(xi)
和S(φ,xi)≤i(xj)
另外,如果需要串编辑距离及其下界在两个串的次序中是对称的,则
5.编辑操作费用应当对称
i(xi)=d(xi)
和S(xi,yj)=S(yj,xi)
计算串编辑距离的下界估计的算法如图6的流程图所示。在步骤61和62装入串。在步骤63通过往较短的串加入填充(空)元素来使各串长度相等。在步骤64,两个串都按内部元素次序排序。然后在串的相应位置中的元素的替换费用总和在步骤65进行计算。
这一方法比动态编程的计算费用小得多。
针对两个整数代码串的这个算法应用的一例,如图7所示,费用如下:
S(xi,yj)=|xi-yj|
d(xi)=|xi|
i(yj)=|yj|
φ=0
应用图6的方法:串C2填以空元素。对齐之后两个串被排序,此例中用升序。相应元素的替换费用的总和,对整数来说,就是简单地把它们之间的距离幅度加起来。
对于精于此道的人会很清楚,对图4的串匹配算法应用本发明所带来的改进在很大程度上依赖于候选串被处理的顺序。在最坏情况下,以串编辑距离的降序安排候选串的处理。那么对每个候选串,下界估计距离和串编辑距离两者都要计算,结果其处理需求超过了传统的需求。但是,在实际的设备上这种情况不会频繁发生,使得平均起来说,使用本发明的串匹配算法估计串编辑距离在总体的处理上比传统算法少是可能的。
本发明还可以应用于解决如图8所示的顺序问题。图中,在预处理步骤81-83中,对每一个候选串计算其下界估计距离,在步骤84所有的候选串以它们的下界估计距离的升序分类。然后此方法根据图4继续进行。这一改进不仅消除了上述的最坏情况顺序,而且进一步降低了处理需求。这是因为一旦循环到达与查询串的下界距离超过了当前最佳匹配距离的第一个候选串时,所有剩下的候选串都被丢弃。
图9的流程图显示了如何进一步使用本发明所提供的机会来进一步减少在串匹配应用的处理需求。这是在步骤91对每一个候选串都计算下界估计,然后候选串象图8一样以它们的下界估计的升序排序。但是接着应用一个门限操作步骤93,以便马上丢弃所有那些具有下界估计距离比某个预定门限大的候选串。余下的候选串然后在步骤94用前面图4描述的本发明方法进行匹配。
门限可以选择为某个绝对水平,或者可能是相对水平,例如候选串集合的最低下界估计。这种启发式的战略不能保证找到最佳匹配。下界估计距离的顺序不能完全预测候选串到某个查询串的串编辑距离,而且一个启发式门限有时候可能消除那些下界估计距离较高但对应于最小费用的串编辑距离的候选串。但是,这种方法的潜在优势在于有可能以可以接受的匹配错误水平而设置一个适当的门限。
因此能以多种方式使用下界估计来减少串匹配操作的处理需求。