最长公共子序列(longest common subsequence,LCS)是一种衡量代码相似度的可行指标.然而,经典LCS算法的时间复杂度较高,难以应对大型数据集,并且,由于代码文本序列中的词(token)本质为一种基于离散表示的编码,直接使用LCS算法无法有效...最长公共子序列(longest common subsequence,LCS)是一种衡量代码相似度的可行指标.然而,经典LCS算法的时间复杂度较高,难以应对大型数据集,并且,由于代码文本序列中的词(token)本质为一种基于离散表示的编码,直接使用LCS算法无法有效识别文本不同但语义相似的代码片段中的关键语义.针对这两方面的不足,提出一种面向LCS的嵌入方法,将代码间的LCS计算转换为代码低维稠密嵌入向量间的数值运算,并可以利用近似最近邻算法进一步加速其计算.为此,设计了一个可嵌入的基于LCS的距离度量方法,实验证明这种代码度量在提取函数关键语义的表现上优于对比嵌入工具使用的基于文本的距离或基于树的距离.同时,为了在嵌入过程中有重点地保留代码的关键语义,构建了两种损失函数和相应的训练集,识别文本上不同但语义上相似的代码元素,使模型在检测复杂代码克隆时有更好的表现.实验证明了该方法拥有很强的可扩展性,且其对复杂克隆的检测能力也保持在很高水平.将该技术应用于相似缺陷的识别,上报了23个未知缺陷,这些缺陷已被开发人员在实际项目中确认,其中有些复杂缺陷是难以被基于文本的LCS算法检出的.展开更多
本文给出了求给定两个序列最长公共子序列(Longest Common Subsequence,LCS)问题的量子算法,能在O(n)时间内求解两个长为n字符序列的最长公共子序列.算法在分析传统动态规划填表过程潜在并行性的基础上,对填表过程进行量子化,...本文给出了求给定两个序列最长公共子序列(Longest Common Subsequence,LCS)问题的量子算法,能在O(n)时间内求解两个长为n字符序列的最长公共子序列.算法在分析传统动态规划填表过程潜在并行性的基础上,对填表过程进行量子化,并通过带有量子存储器的量子Oracle,完成量子并行填表的计算.算法最后对前面计算获得的所有局部LCS的均匀叠加态应用Grover搜索,找出最终解,相对于经典动态规划实现了二次加速.展开更多
为了提高运动目标轨迹分类的准确性,该文综合考虑了轨迹的位置信息和方向信息,提出了一种结合Hausdorff距离和最长公共子序列(Longest Common SubSequence,LCSS)的轨迹分类算法。该算法首先采用改进的Hausdorff距离对轨迹的位置信息进...为了提高运动目标轨迹分类的准确性,该文综合考虑了轨迹的位置信息和方向信息,提出了一种结合Hausdorff距离和最长公共子序列(Longest Common SubSequence,LCSS)的轨迹分类算法。该算法首先采用改进的Hausdorff距离对轨迹的位置信息进行相似性测量,然后采用改进的LCSS算法对轨迹的方向信息进行相似性测量。与其他轨迹聚类算法不同,该算法融合了Hausdorff距离和LCSS两种算法的优点,提高了轨迹分类的准确性。此外,为了进一步降低计算复杂度,该文还实现了一种基于插值的保距变换算法和一种LCSS快速算法。实验结果表明,该轨迹分类算法可以明显提高轨迹的聚类准确率,聚类准确率可达到96%;基于插值的保距变换算法和LCSS快速算法可以很大程度上降低算法的计算复杂度,下降幅度最大可达到80%。该方法可以同时满足轨迹分类对精确度、实时性和鲁棒性的要求。展开更多
数据流相似性查询广泛应用于智能家居、环境监测等领域.当前以LCSS(longest common subsequence)作为相似性测度函数的研究并不多.NAIVE算法使用基本动态规划方法计算测度函数值,通过该值与相似阈值的比较得到查询结果,对基于LCSS的数...数据流相似性查询广泛应用于智能家居、环境监测等领域.当前以LCSS(longest common subsequence)作为相似性测度函数的研究并不多.NAIVE算法使用基本动态规划方法计算测度函数值,通过该值与相似阈值的比较得到查询结果,对基于LCSS的数据流相似性查询问题进行研究.针对NAIVE算法必须在动态规划矩阵所有成员取值的计算完成后才能得到查询结果的缺点,提出了一种基于PS(possible solution)-CC(column critical)域优化策略的数据流相似性查询处理算法.该算法划定了每个窗口上动态规划矩阵的PS域和CC域,很好地利用了这2个域中成员所具有的性质和相似性查询的特点,无须获得测度函数的最终值便可得到查询结果,省略了很多矩阵成员的计算.实验部分证明了该算法的有效性,与同类算法相比,在处理具有更高精度结果要求的查询时效果更好.展开更多
文摘最长公共子序列(longest common subsequence,LCS)是一种衡量代码相似度的可行指标.然而,经典LCS算法的时间复杂度较高,难以应对大型数据集,并且,由于代码文本序列中的词(token)本质为一种基于离散表示的编码,直接使用LCS算法无法有效识别文本不同但语义相似的代码片段中的关键语义.针对这两方面的不足,提出一种面向LCS的嵌入方法,将代码间的LCS计算转换为代码低维稠密嵌入向量间的数值运算,并可以利用近似最近邻算法进一步加速其计算.为此,设计了一个可嵌入的基于LCS的距离度量方法,实验证明这种代码度量在提取函数关键语义的表现上优于对比嵌入工具使用的基于文本的距离或基于树的距离.同时,为了在嵌入过程中有重点地保留代码的关键语义,构建了两种损失函数和相应的训练集,识别文本上不同但语义上相似的代码元素,使模型在检测复杂代码克隆时有更好的表现.实验证明了该方法拥有很强的可扩展性,且其对复杂克隆的检测能力也保持在很高水平.将该技术应用于相似缺陷的识别,上报了23个未知缺陷,这些缺陷已被开发人员在实际项目中确认,其中有些复杂缺陷是难以被基于文本的LCS算法检出的.
文摘本文给出了求给定两个序列最长公共子序列(Longest Common Subsequence,LCS)问题的量子算法,能在O(n)时间内求解两个长为n字符序列的最长公共子序列.算法在分析传统动态规划填表过程潜在并行性的基础上,对填表过程进行量子化,并通过带有量子存储器的量子Oracle,完成量子并行填表的计算.算法最后对前面计算获得的所有局部LCS的均匀叠加态应用Grover搜索,找出最终解,相对于经典动态规划实现了二次加速.
文摘为了提高运动目标轨迹分类的准确性,该文综合考虑了轨迹的位置信息和方向信息,提出了一种结合Hausdorff距离和最长公共子序列(Longest Common SubSequence,LCSS)的轨迹分类算法。该算法首先采用改进的Hausdorff距离对轨迹的位置信息进行相似性测量,然后采用改进的LCSS算法对轨迹的方向信息进行相似性测量。与其他轨迹聚类算法不同,该算法融合了Hausdorff距离和LCSS两种算法的优点,提高了轨迹分类的准确性。此外,为了进一步降低计算复杂度,该文还实现了一种基于插值的保距变换算法和一种LCSS快速算法。实验结果表明,该轨迹分类算法可以明显提高轨迹的聚类准确率,聚类准确率可达到96%;基于插值的保距变换算法和LCSS快速算法可以很大程度上降低算法的计算复杂度,下降幅度最大可达到80%。该方法可以同时满足轨迹分类对精确度、实时性和鲁棒性的要求。
文摘数据流相似性查询广泛应用于智能家居、环境监测等领域.当前以LCSS(longest common subsequence)作为相似性测度函数的研究并不多.NAIVE算法使用基本动态规划方法计算测度函数值,通过该值与相似阈值的比较得到查询结果,对基于LCSS的数据流相似性查询问题进行研究.针对NAIVE算法必须在动态规划矩阵所有成员取值的计算完成后才能得到查询结果的缺点,提出了一种基于PS(possible solution)-CC(column critical)域优化策略的数据流相似性查询处理算法.该算法划定了每个窗口上动态规划矩阵的PS域和CC域,很好地利用了这2个域中成员所具有的性质和相似性查询的特点,无须获得测度函数的最终值便可得到查询结果,省略了很多矩阵成员的计算.实验部分证明了该算法的有效性,与同类算法相比,在处理具有更高精度结果要求的查询时效果更好.