Permítanme comenzar con una recomendación: trate la notación de Landau tal como debería (debería) tratar el redondeo: ronda raramente, ronda tarde. Si sabes algo más preciso que , Úsalo hasta que hayas terminado con todos los cálculos y Landauify al final.O(.)
En cuanto a la pregunta, profundicemos en este abuso de notación¹. ¿Cómo interpretaríamos algo como ? Deberíamos reemplazar con su definición de adentro hacia afuera. Entonces, obtenemosh∈O(f+O(g))O
∃g′∈O(g).h∈O(f+g′)
y entonces
∃g′∈O(g).∃d>0.∀n.h(n)≤d(f(n)+g′(n))
que es equivalente a
∃c>0.∃d>0.∀n.h(n)≤d(f(n)+cg(n)).
Como ciertamente² d(f(n)+cg(n))≤cd(f(n)+g(n)), vemos que esto es equivalente a h∈O(f+g); la pérdida de precisión es ignorada porO de todas formas.
¿Qué pasa con otras combinaciones, digamos h ∈ O ( f+ Ω ( g) )? Si intentamos lo mismo aquí, obtenemos
∃sol′∈ Ω ( g) .h ∈ O ( f+sol′).
Pero esta es una tautología: hciertamente está limitado por algo arbitrariamente grande. Por lo tanto, combinar los límites superior e inferior de esta manera no tiene sentido.
- O ( . )y los otros símbolos de Landau asignan funciones a clases de función. Alimentarlo con una clase de función no tiene significado inmediato.
- Al menos si consideramos solo funciones positivas, que podemos asumir con seguridad cuando hablamos de tiempos de ejecución. No estoy seguro de que esto funcione en general.