如何在多个二进制文件中找到最长公共子序列?

问题描述

我得到了 10 个二进制文件,我必须找到两个或多个文件之间相同的最长字节链。 任何帮助表示赞赏。提前致谢。

解决方法

  • 一种蛮力方法是将每个文件与任何其他文件进行比较 文件,这需要 10 * 9 = 90 次比较。

  • 为了比较任意两个文件,你可以遍历它们 bytewise 并比较它们是否相等,然后一路上你 存储迄今为止找到的最长序列。任何时候序列中断, 你开始一个新的临时序列,只有在它出现时才存储它 比原版长。

  • 另一种但有些类似的方法是使用动态规划 最长公共子序列 (LCS) 但需要更多内存 比以前的所以取决于文件的大小等,但是 对于这种方法,有大量的图形资源 算法的可视化和伪代码。