Sim, claro. Isso é bom e perfeitamente aceitável. É comum e padrão ver algoritmos cujo tempo de execução depende de dois parâmetros.
Por exemplo, você verá frequentemente o tempo de execução da busca pela profundidade expressa como , onde é o número de vértices e é o número de arestas no gráfico. Isso é perfeitamente válido. O significado disso é que existe uma constante e os números modo que o tempo de execução do algoritmo seja no máximo , para todos os . Em outras palavras, se o tempo de execução exato for , dizemos que se existir modo que e implicaO(n+m)nmcn0,m0c⋅(n+m)n>n0,m>m0f(n,m)f(n,m)=O(n+m)c,n0,m0n>n0m>m0f(n,m)≤c⋅(n+m) .
Sim, é perfeitamente apropriado e aceitável dizer que o primeiro estágio leva tempo e o segundo estágio leva tempo .O(n)O(m)
Importante: Certifique-se de definir o que e são. Você não pode dizer "este é um algoritmo de tempo " sem especificar o que é. Se não estiver especificado na declaração do problema, você precisará especificá-lo. Por exemplo, consulte algoritmos de gráfico, onde geralmente definimos # de vértices e # de arestas.nmO(n)nnn=m=
Tanto quanto você pode chamá-los de tempo , não, claro que não - a menos que você saiba que . Obviamente, se você sabe que , segue-se que ; portanto, um algoritmo de tempo também é um algoritmo de tempo . Mas se não houver garantia de que , não será possível chamá-lo de algoritmo de tempo .m = O ( n ) m = O ( n ) m + n = O ( n ) O ( m + n ) O ( n ) m = O ( n ) O ( n )O(n)m=O(n)m=O(n)m+n=O(n)O(m+n)O(n)m=O(n)O(n)
Isso é coisa básica. Você encontrará tudo isso em livros didáticos de algoritmos.