动态规划求解LCS:搜索引擎开发基础

需积分: 7 1 下载量 104 浏览量 更新于2024-08-13 收藏 2.31MB PPT 举报
在本篇关于"动态规划求解LCS代码-搜索引擎初步"的文章中,作者介绍了如何使用动态规划算法来计算两个字符串(E类型的数组)的最长公共子序列(LCS)。LCS是指两个序列中具有相同字符序列的最长部分,不考虑字符的相对顺序。在这个Java方法`lcsLen`中,通过创建一个`s1.length+1`行`s2.length+1`列的二维数组`num`作为状态数组,初始化为0,来实现动态规划的计算过程。 算法的核心逻辑是遍历两个输入字符串`s1`和`s2`,如果当前字符相等,则将上一格的值加1(表示子问题的解决方案),即`num[i][j] = 1 + num[i-1][j-1]`;如果不相等,则取上一行和左一列的较大值,更新当前格子的值,即`num[i][j] = Math.max(num[i-1][j], num[i][j-1])`。最后,最长公共子序列的长度就是`num[s1.length][s2.length]`。 文章背景是关于搜索引擎开发实践的课程,讲解者罗刚教授首先介绍了搜索引擎的基本概念,包括搜索引擎的查询语法、架构、用户界面布局以及网站搜索的常见功能。此外,课程涉及到了相关的技术基础,如CoreJava、HashMap、File、BitSet、编译原理、概率论(如马尔可夫模型和贝叶斯公式)、数据结构,以及开发环境的配置,如JDK、Eclipse、Lucene(一个开源全文搜索引擎库)、Resin应用服务器、版本控制工具TortoiseSVN、构建工具Ant和Maven,以及Linux系统(这里以CentOS为例)的使用。 词法分析是搜索引擎开发中的一个重要环节,它涉及到将用户的输入(如"NBAAND比赛")转换为有意义的tokens(如"TokenNBA"、"TOKENAND"、"TERM")。在这个过程中,JavaCC工具被用于实现词法分析,它基于正则表达式和状态机的概念,生成词法分析器。词法分析器的工作原理是通过Scanner生成器、NFA(非确定有限自动机)和DFA(确定有限自动机)进行模拟,最终将输入字符串分解成一系列合法的Token。 总结来说,这篇文章不仅展示了动态规划求解LCS的Java代码,还为搜索引擎开发提供了一个全面的技术路线图,涵盖了编程语言基础、编译原理、概率统计、数据结构以及搜索引擎开发所依赖的具体工具和技术。