晚上有个哥们问有没什么文件比较的算法可以用,大致想了一下,顺便记一记。
处理分两层:
第一层——文本行层,这一层比较单位为行,将每一行看作一个元素,那么两个文件就是两个元素序列,采用LCS算法,算出相同的元素数,相同元素数越多,相似度越大。考虑不同的比较中总文件行数有差异,不能直接用相同元素数这个值作为相似度,应该将两个待比较文件总元素数考虑在内,可以采用 相似度=相同元素数/(文件1元素数+文件2元素数)。
复杂度分析:
如果第二层采用简单判断的方式,那么整个算法的时间复杂度是O(n^2 * m),如果第二层采用相似度判断的方式,那么整个算法的复杂度是o(n^2 * m^2),其中n为文件内文本行数,m为行内字符数。