Sí, por supuesto. Esto está bien y es perfectamente aceptable. Es común y estándar ver algoritmos cuyo tiempo de ejecución depende de dos parámetros.
Por ejemplo, a menudo verá el tiempo de ejecución de la búsqueda de profundidad primero expresada como , donde n es el número de vértices ym es el número de aristas en el gráfico. Esto es perfectamente válido. El significado de esto es que existe una constante c y números n 0 , m 0, de modo que el tiempo de ejecución del algoritmo es como máximo c ⋅ ( n + m ) , para todos n > n 0 , m > m 0O ( n + m )nortemetroCnorte0 0, m0 0c ⋅ ( n + m )n > n0 0, m > m0 0. En otras palabras, si el tiempo de ejecución exacto es , decimos que f ( n , m ) = O ( n + m ) si existe c , n 0 , m 0 tal que n > n 0 y m > m 0 implica f ( n , m ) ≤ c ⋅ ( n + m )F( n , m )F( n , m ) = O ( n + m )c , n0 0, m0 0n > n0 0m > m0 0F( n , m ) ≤ c ⋅ ( n + m ).
Sí, es perfectamente apropiado y aceptable decir que la primera etapa toma tiempo y la segunda etapa toma tiempo O ( m ) .O ( n )O ( m )
Importante: asegúrese de definir qué son y m . No puede decir "este es un algoritmo de tiempo O ( n ) " sin especificar qué es n . Si n no se especifica en el enunciado del problema, debe especificarlo. Por ejemplo, vea algoritmos de gráficos, donde generalmente definimos n = # de vértices ym = # de aristas.nortemO(n)nnn=m=
En cuanto a si puede llamarlos tiempo , no, por supuesto que no, a menos que de alguna manera sepa que m = O ( n ) . Por supuesto, si sabe que m = O ( n ) , entonces se deduce que m + n = O ( n ) , por lo que un algoritmo de tiempo O ( m + n ) también es un algoritmo de tiempo O ( n ) . Pero si no hay garantía de que m = O (O(n)m=O(n)m=O(n)m+n=O(n)O(m+n)O(n) , entonces no puede llamarlo unalgoritmo de tiempo O ( n ) .m=O(n)O(n)
Esto es algo básico. Lo encontrarás en todos los algoritmos de los libros de texto.