我有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#编写它并尽可能快地运行它,因为我可能要求它运行超过一百万字节的数组来进行比较。
答案 0 :(得分:0)
由于任何O(n ^ 2)解决方案对于n = 100,000似乎太慢,您可能想要使用https://en.wikipedia.org/wiki/Locality-sensitive_hashing
我不确定它会有所帮助,但它应该给你一些指导。