///
Algoritmos para assimilação de dados geralmente envolvem cálculos complexos que dependem de diversos fatores, como o tamanho dos espaços de estados, número de pontos da grade em questão, tamanho da janela de assimilação, etc. Frequentemente, observa-se que dois algoritmos usados para solucionar um mesmo problema podem ter eficiências diferentes, por conta de diferenças em suas implementações.
Uma maneira de se mensurar e representar a complexidade de um algoritmo é contabilizar o número de operações de ponto-flutuante (flops) necessárias para executá-lo e utilizar a notação “O-grande”.
Considere o algoritmo a seguir, implementado em uma linguagem de pseudocódigo autoexplicativa.
1: // Sendo M uma matriz quadrada n x n
2:
3: linhas, colunas = formato(M);
4:
5: n = linhas;
6:
7: soma = 0;
8:
9: para i = 1 até n:
10: para j = 1 até n:
11: soma = soma + M[i][j]*M[i][j];A complexidade desse algoritmo será