Algorithm 寻找(子)时间序列的(非常)快速近似匹配

Algorithm 寻找(子)时间序列的(非常)快速近似匹配,algorithm,pattern-matching,time-series,matching,sequences,Algorithm,Pattern Matching,Time Series,Matching,Sequences,我正在处理一个巨大的timeseries数据库。每n毫秒保存一个值。必须对照数据库中已有的旧时间序列检查新时间序列 此时此刻,由于每个解决方案都像O(n²)一样昂贵,我感到很沮丧 下面我有一些图片,显示短时间序列(灰色和橙色),它们是匹配的。由于我需要速度,该算法应该能够在不精确的情况下识别此类匹配。一个近似值就足够了 我在网上研究了一些关于“最长公共子序列问题”或“动态时间扭曲”的论文。但要么处理完美的测量,要么处理完美的尺寸,要么处理O(n²) 两个时间序列(灰色和橙色)的完美匹配 新测量

我正在处理一个巨大的timeseries数据库。每n毫秒保存一个值。必须对照数据库中已有的旧时间序列检查新时间序列

此时此刻,由于每个解决方案都像O(n²)一样昂贵,我感到很沮丧

下面我有一些图片,显示短时间序列(灰色和橙色),它们是匹配的。由于我需要速度,该算法应该能够在不精确的情况下识别此类匹配。一个近似值就足够了

我在网上研究了一些关于“最长公共子序列问题”或“动态时间扭曲”的论文。但要么处理完美的测量,要么处理完美的尺寸,要么处理O(n²)

  • 两个时间序列(灰色和橙色)的完美匹配
  • 新测量值不准确(橙色),但仍然匹配
  • 短的新测量值(橙色),但仍然匹配
  • 一个巨大的新测量值(橙色),但仍然匹配
  • 新的测量结果失败(橙色),但仍然匹配

  • DTW的摊销时间小于O(N)

    在10万赫兹的频率下这样做是非常容易的

    看这个视频


    bitap算法在文本搜索中似乎实现了类似的功能,也许你可以调整它?是的,我可以调整字母表。我浏览了维基百科,发现了一个非常有趣的例子。但我找不到任何实现。网络上有什么东西吗?如果你真的读了维基百科的页面,你会看到bitap已经在
    agrep
    中实现了。我读过,但据我所知,bitap是用于“较短”字符串的。我的字符串会更长,所以我很高兴G.Myers提出了一个增强的bitap实现。