【问题标题】:Parse multiple array similarity query解析多个数组相似度查询
【发布时间】:2016-06-24 16:31:54
【问题描述】:

我正在研究一种算法,该算法将比较 2 个对象,即对象 1 和对象 2。每个对象具有 5 个不同数组的属性,数组 A、B、C、D 和 E。

为了使两个对象匹配,对象 1 A 中的至少一项必须在对象 2 A 中,对象 1 B 必须在对象 2 B 中,以此类推,直到对象 E 必须相似。每个数组 A-E 中的匹配数越多,匹配将产生的分数越高。

我是否必须拉出对象 1 和对象 2,然后对每个数组进行 n^2 复杂性搜索以确定两个数组中都存在哪些?然后我会根据每个数组中有多少匹配项来计算分数,然后将它们相加,总分就会给我。

我觉得必须有更好的选择,尤其是 Parse.com

也许我在解决这个问题时完全错了,有人可以帮我解决这个问题。我会为此提供一些代码,但我还没有开始编写代码,因为我无法理解设计它的最佳方式。这两个对象数据库已经到位。 谢谢!

正如我所说,我可能以错误的方式思考这个问题。如果我不清楚我正在尝试做的任何事情,请告诉我,我会相应地更新。

【问题讨论】:

  • 我认为无论哪种方式,你最终都会得到 N^2 复杂性......检查一个数组中的所有内容与另一个数组中的所有内容对于喜欢提高效率的人来说只是一个悲伤的时刻算法。但如果有人有其他解决方案,我会很高兴听到!

标签: algorithm search parse-platform


【解决方案1】:

最简单的解决方案:

将某个数组 object1 中的所有元素复制到哈希表(无序映射),然后在第二个对象中迭代数组,并在映射中查找存在。因此,时间复杂度为 O(N)。

智能解决方案:

保留所有对象中的元素,而不是在“朴素数组”中,而是在数组中,结构为具有双哈希算法的哈希表。如果是这样,objects1、2 中的所有数组都将被预先索引,而您需要什么 - 迭代数组,包含更少的元素,并且匹配元素与最长的预先索引数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-24
    • 2015-11-23
    • 2011-01-15
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    相关资源
    最近更新 更多