数学之美:地图和本地搜索的基本技术-有限状态机和动态规划

地址识别与分析:

要想进行位置搜索,首先要将用户输入的地址识别开来,然而不同用户输入习惯不同,会导致同一个位置具有不同的输入表达,如腾讯在深圳的公司:

这样地址如果直接写解析程序肯定比较复杂,而且地址还存在上下文相关性。如上海市北京东路和南京市北京东路。要严格依赖上下文。但是关于上下文的分析复杂且耗时。所幸的是由于地址的状态空间不大,有种较好的解决办法就是有限状态机。

如上图如果能够从开始状态走到终止状态,那就说明该地址有效。要使用有限状态机识别地址,需要通过一系列有效地址建立有限状态机和在给定特定有限状态机后地址字符串的匹配算法。

由于有限状态机是严格匹配的,这就当用户输入不够标准或有错别字时,有限状态机无法识别。为实现这一目的,科学家实现了基于概率的有限状态机。

全球导航和动态规划:

地图可以看成一张图,城市为节点,每条弧的权重可以用路程,费用,时间等表示。如果想找到最短路径,最好办法是动态规划。两个地址间的最短路径则意味着该最短路径的子路径也是最短路径,否则就会有一条更短的路径出现,违背假设。这也就是说假设A-B-C-D为A到D的最短路径,则A-B-C必定为A到C的最短路径。如果A-E-C为A到C的最短路径,那么A-B-C-D就不是A-到D的最短路径。在实际实现中我们使用时,由于不知道那条路径是最短路径,所以我们反过来解决整个问题。即我们先找到A到C的最短路径。这时有个问题就是无法保证从A到C到D为最短路径。

因此我们采用横切一刀的方法,,首先找到从A到切线上所有城市的最短路径,然后将切线下移,继续找到切线上最短路径,从而将问题转成找一个个局部最短路径问题。关于最短路径算法可以查看我的algorithm里的算法。

有限状态机:

有限状态机在语音识别和自然语言处理中具有重要的作用,不过在这些领域使用的是一种特殊的有限状态机——加权的有限状态传感器WFST(weighted finite state transducer)。其特殊处在于每个状态有输入和输出符号定义。

在语言识别中每个识别的句子可以使用WFST表示。

在wfst中,每条路径就是一个句子,其中概率最大的就是这个句子的识别结果。

猜你喜欢

转载自blog.csdn.net/qq_16234613/article/details/82657383