【发布时间】:2021-06-29 10:22:48
【问题描述】:
给定一个主要事件序列(例如,A->B->A->B->B)、一个子序列(A->B)和介于两者之间的最大允许事件(n),我想计算子序列的数量(@987654324 @) 在主序列中。
例如,
N=2 for n=0(第一个 A -> 第一个 B,第二个 A -> 第二个 B)
N=3 for n=1(第一个 A -> 第一个 B,第二个 A -> 第二个 B,第二个 A -> 第三个 B)
N=4 for n=2(第一个 A -> 第一个 B,第二个 A -> 第二个 B,第二个 A -> 第三个 B,第一个 A -> 第二个 B)
N=5 for n=3(第一个 A -> 第一个 B,第二个 A -> 第二个 B,第二个 A -> 第三个 B,第一个 A -> 第二个 B,第一个 A -> 第三个 B)
对于这个问题有有效的算法吗?我的问题的主序列可能很长,而且我有很多子序列要计算。
【问题讨论】:
-
在一般情况下,你不能做得比线性(w.r.t. 的主序列长度)更好。 OTOH,滑动窗口是线性解决方案。