Notación O grande anidada


8

Digamos que tengo un gráficocon aristas. Quiero ejecutar BFS en que tiene un tiempo de ejecución de .El |solEl |El |miEl |=O(V2)solO(V+mi)

Se siente natural escribir que el tiempo de ejecución en este gráfico sería y luego simplificar a .O(O(V2)+V)O(V2)

¿Hay alguna dificultad para usar un atajo de "quitar-el-anidado-O" (no solo en este caso, sino en general)?


44
Si trabaja a través de la definición de big-O, verá que los Os anidados son naturales y redundantes, y que la regla de descartar el O interno es correcta.
Dave Clarke

Como V está en O (V ^ 2), supongo que podría reemplazar O (V ^ 2) con V si no supiera lo que estaba haciendo.
The Unfun Cat

3
Si no sabe lo que está haciendo, puede hacer cosas arbitrariamente incorrectas.
Dave Clarke

44
En efecto. = no es = en tierra grande-O.
Dave Clarke

3
Vea también esta excelente pregunta sobre matemáticas. SE sobre = en notación Landau.
Raphael

Respuestas:


14

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, obtenemoshO(F+O(sol))O

solO(sol).hO(F+sol)

y entonces

solO(sol).re>0.norte.h(norte)re(F(norte)+sol(norte))

que es equivalente a

C>0.re>0.norte.h(norte)re(F(norte)+Csol(norte)).

Como ciertamente² re(F(norte)+Csol(norte))Cre(F(norte)+sol(norte)), vemos que esto es equivalente a hO(F+sol); la pérdida de precisión es ignorada porO de todas formas.


¿Qué pasa con otras combinaciones, digamos hO(F+Ω(sol))? Si intentamos lo mismo aquí, obtenemos

solΩ(sol).hO(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.


  1. 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.
  2. 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.

2

Solo quería agregar esto porque recientemente lo encontré. Si bien este atajo está bien con la suma y la multiplicación (cuando no se mezclaO con Ω; ver la respuesta aceptada), se debe tener cuidado al usar exponentes. Por ejemplo:

O(nO(m))O(nm).
En este ejemplo, n2m pertenece a la primera clase pero no a la segunda.

1

Por definición, O(sol) es un conjunto y si usa esta notación anidada, tendría un conjunto en un conjunto, lo que sería incorrecto.

La definición de la notación O

O(sol)={FEl |C>0 0X0 0>0 0X>X0 0:El |F(X)El |CEl |sol(X)El |}

El error

Usaste términos como O(O(n)+k) donde k y n son funciones y O(n)es un conjunto. Pero, ¿cuál es el resultado de una función agregada a un conjunto? ¡No está definido!

Versión correcta

En lugar de utilizar los símbolos de Landau anidados, puede hacer lo siguiente: O(m+k),mO(n)


2
Sí, pero con frecuencia se abusa de la notación Landau en aras de la (supuesta) facilidad de uso, por lo que es mejor que nos aseguremos de que todos entiendan lo mismo. Ver aquí para un enfoque estructurado.
Raphael

0

En la sección 9.3 "OManipulación "del libro Matemáticas concretas (segunda edición), Knuth ha enumerado algunas reglas de manipulación en elO-notation (En lo siguiente, supongo que ambos F(norte) y sol(norte)son positivos observe que se ha cambiado el orden de las reglas).

(1).nortemetro=O(nortemetro),metrometro(3).F(norte)=O(F(norte))(5 5).O(O(F(norte)))=O(F(norte))(4 4).CO(F(norte))=O(F(norte))(2).O(F(norte))+O(sol(norte))=O(F(norte)+sol(norte))(6 6).O(F(norte))O(sol(norte))=O(F(norte)sol(norte))=F(norte)O(sol(norte))

Por (3), puede envolver / desenvolver una función F(norte)con una notación O. Luego, mediante (5), puede envolver / desenvolver (o llamar, anidar ) veces arbitrariamente finitas. Usando (4), también puede agregar / eliminar factores de multiplicación constantes a / deO.

Luego, (2) y (6) le permiten manipular anidados O-notaciones en la forma compatible con + y ×.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.