查找序列多样性的算法

时间:2013-10-19 22:09:32

标签: algorithm

我认为应该有一个算法,所以我希望有人可以帮助我。

我想找出一个度量标准,它显示了唯一数字数量的多样性以及给定序列的两个连续元素之间的转换。例如,

sequence-1 = [1,1,2,2,3,3]
sequence-2 = [1,1,1,1,2,2]
sequence-3 = [1,2,3,1,3,2]
sequence-4 = [2,2,2,2,2,2]

如果我根据该指标进行比较,结果应如下所示:

sequence-3 > sequence-1 > sequence-2 > sequence-4 

基本上,获得该结果的标准可能类似于:

transistion_changes for sequence-1: 2 (1->2, 2->3)
transistion_changes for sequence-2: 1 (1->2)
transistion_changes for sequence-3: 5 (1->2, 2->3, 3->1, 1->3, 3->2)
transistion_changes for sequence-4: 0 

文献中的算法是否做同样的事情?

2 个答案:

答案 0 :(得分:1)

int count = 0;
for (int i = 1; i < len; i++) if (sequence[i] != sequence[i - 1]) count++;

右?

或类似

double count = 0.0;

for (int i = 1; i < len; i++) {
    for (int k = 1; k < 3; k++) {
        if (i - k >= 0) {
            count += abs(sequence[i] - sequence[i - k]) / k;
        }
    }
}

对于以下情况:

  • 序列{2,2,2,2,2,2},count == 0.0
  • 序列{1,2,1,2,1,2},count == 5.0
  • 序列{1,2,3,4,5,6},count == 9.0
  • 序列{1,9,2,11,-3,7},count == 53.0

非常基本的指标,但有效。

答案 1 :(得分:1)

出于这个简单的目的,您可以设计一个FIR过滤器,并对结果求和。这种方式应该类似于计算信号高频段的能量。

让我们说:

y(n) = x(n) - 1/2 * x(n-1) + 1/3 * x(n-2)

无论如何,你应该在另一个StackExchange网站上问这个问题,比如数学问题。