【问题标题】:Percental difference between byte array字节数组之间的百分比差异
【发布时间】:2018-02-20 10:05:28
【问题描述】:

我有 100,000 个固定长度的字节数组(长度为 150),我想将它们相互比较。我想识别我的 100,000 个字节数组中的任何一个,它们的 90% 以上的字节值位于同一位置,并且与一个或多个其他数组具有相同的值。

例如:

测试 1:A4343FBC2321FFD135423232EF.....(匹配2(100%)和3(96%))

2: A4343FBC2321FFD135423232EF.....(匹配 1 (100%) 和 3 (96%))

3: A4343FBC2321FFD135423232E1.....(匹配 1 (96%) 和 2(96%))

4: B465454ABC32321323AAAAAFFF .....(不匹配)

5: FED124343214343FE3232FE323.....(匹配 7 (100%))

6: FED12434321431121212121212.....(不匹配,相似度低于 90%)

7: FED124343214343FE3232FE323.....(匹配 5 (100%))

我想使用 C# 编写它并尽可能快地运行它,因为我可能需要它与超过一百万字节的数组一起运行以进行比较。

【问题讨论】:

  • 所以写一些代码看看它是怎么回事..
  • 堆栈溢出不能为你做功课......
  • 祝您好运 - 您正在查看 7.5 x 10 次方 13 字节比较范围内的一百万个 150 字节数组。如果你每秒可以处理 100 万次比较,那将需要 2 年多的时间。
  • 不幸的是,如果大多数数组有相似之处,你可能不得不做很多比较:对于每组 m 数组,它们以某种方式聚集到同一个“桶”中,你需要O(m^2) 比较以确认确切的百分比。最好的情况是很少有足够相似的数组,在这种情况下,您将能够断言它们在~O(n) 中都不同。实际上,您想做什么?
  • 如果您能提供minimal reproducible example,那就太好了。

标签: c# arrays compare byte diff


【解决方案1】:

由于对于 n = 100,000,任何 O(n^2) 解决方案似乎都太慢了,您可能需要使用 https://en.wikipedia.org/wiki/Locality-sensitive_hashing

我不确定它是否会有所帮助,但它应该会给你一些方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多