【发布时间】:2011-12-22 04:27:46
【问题描述】:
假设我有一个二维数组,如下所示:
________________
|10|15|14|20|30|
|14|10|73|71|55|
|73|30|42|84|74|
|14|74|XX|15|10|
----------------
正如我所展示的,列的大小不必相同。
现在我需要为每一列找到最佳匹配项(具有最完全相同项目和最低差异的项目)。当然,我可以在 n^2 中做到这一点,但这对我来说太慢了。我该怎么做?
我想过一棵 k 维树并为每个树找到最近的邻居,但我不知道它是否好用,它会按我的意愿工作(可能不会)。
结果举例:
- 第一列很可能是第三列(只有三个不同 - 10、14、42)
- 第二列 -> 第五列(只有两个不同 - 15 和 55)
等等等等... :)
【问题讨论】:
-
我不明白你的问题。您的示例说第 1 列是最相似的 - 为什么?此外,第 1 列中没有 42,第 2 列中没有 55。
-
第一列有项目:10、14、73、14 第三列有:14、73、42 现在我不寻找大多数匹配的元素,我寻找最少不匹配的元素。在这种情况下,我们两个都有 14 个(所以“删除”它们以供以后比较),两个都有 73 个(所以再次“删除”),我们只剩下 3 个仅在一侧的项目。如果我们将第一列与其他列进行比较,我们会发现它们之间还有更多项目:) 我认为这可以通过多维树来完成并比较它们的距离(当然还有一些工作),但我不是“在树上” “这么多:)
标签: c++ arrays tree matching similarity