【问题标题】:How to how similar the sequence of elements in two arrays are两个数组中的元素序列有多相似
【发布时间】:2018-06-27 15:28:48
【问题描述】:

我有两个数组。 A 包含一个有序的元素列表,例如[e1, e2, e2, e3, e4, e5, e5]。 B 是 A 的子集,有重复,例如 [e1, e1, e2, e5, e4]。实际上,数组会比这个大(长度可能少于 10,000 个元素),并且性能很重要。

如何定量确定两个数组中元素的顺序有多相似? (理想情况下不只是蛮力比较)

【问题讨论】:

  • 所以你需要让它们中的每一个一个集合(一个独特元素的集合),然后如果两个集合是相同的 - 它们是相等的 - 并删除重复,如stackoverflow.com/questions/3350641/…
  • 查看en.wikipedia.org/wiki/Edit_distance 了解一系列流行的字符串指标,但它们可以直接应用于数组
  • @dmitryro 我试图在问题中说明这一点,但我已经对其进行了更具体的编辑。我需要比较订单。
  • @Jones 是否可以提供示例输入以及所需输出的外观?
  • @user3080953 谢谢,我不确定要谷歌什么,但编辑距离看起来像我要找的。​​span>

标签: arrays algorithm sequence


【解决方案1】:

如果您想了解两个不同数据序列的相似程度,考虑到同一数据可能有很多重复副本,您可能需要查看dynamic time warping,这是一种测量此数量的算法.它在语音识别、时间序列数据分析和字符串相似度等方面都有应用。

【讨论】:

    【解决方案2】:

    首先,您需要验证 B 的每个元素是否属于 A。由于 A 是排序数组,因此这是一个 log(n) 操作(使用二进制搜索),最多需要重复 n 次,并且进行nxlog(n) 操作。

    其次,您需要验证 B 的元素是否已排序或计算对它们进行排序所需的交换次数。这又是一个使用 e.q. 的nxlog(n) 操作。快速排序或任何其他有效算法。

    【讨论】:

      猜你喜欢
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2014-10-18
      • 2021-10-27
      相关资源
      最近更新 更多