¿Cuál es el significado de ?

44

Esta es una pregunta básica, pero estoy pensando que es lo mismo que , ya que el término más grande debería dominar a medida que avanzamos hasta el infinito. Además, eso sería diferente de O (\ min (m, n)) . ¿Está bien? Sigo viendo esta notación, especialmente cuando discuto algoritmos gráficos. Por ejemplo, usted ve habitualmente: O (| V | + | E |) (por ejemplo, vea aquí ).O(m+n)O(max(m,n))O(min(m,n))O(|V|+|E|)

Franco
fuente
tal vez m depende de n
Andrew

Respuestas:

33

Tienes razón. Observe que el término O(n+m) abusa levemente de la notación clásica big-O , que se define para funciones en una variable. Sin embargo, existe una extensión natural para múltiples variables.

Simplemente hablando, dado que

12(m+n)max{m,n}m+n2max{m,n},
puede deducir que O(n+m) y O(max{m,n}) son límites superiores asintóticos equivalentes.

Por otro lado, O(n+m) es diferente de O(min{n,m}) , ya que si establece n=2m , obtendrá

O(2m+m)=O(2m)O(m)=O(min{2m,m}).
A.Schulz
fuente
3
Creo que es digno de mención que escriben en abstracto: "Mostramos que es imposible definir la notación big-O para funciones en más de una variable de una manera que implique las propiedades comúnmente utilizadas en el análisis de algoritmos. También demostramos que las definiciones comunes no implican estas propiedades incluso si las funciones dentro de la notación big-O están restringidas a ser estrictamente no decrecientes ".
Raphael
44
Como seguimiento a mi comentario anterior, el reciente artículo de una definición general de la notación O algoritmo para el análisis de K. Rutanen (2015) hace muestran cómo definir notación O significativo para los conjuntos generales, incluyendo . N2
Raphael
25

Lo creas o no, parece (en mi experiencia) que muchos algoritmos la gente realmente no ha pensado en lo que significa formalmente la gran notación O, y cuando se le pregunta al respecto, puede obtener varias respuestas diferentes. Algunos temas se discuten en el documento sobre la notación asintótica con múltiples variables de Rodney R. Howell.

Curiosamente, también parece que la mayoría de los cursos de algoritmos introductorios pasan mucho tiempo siendo muy formales acerca de la notación O grande con una sola variable, y luego las próximas semanas usan felizmente la notación para algoritmos gráficos con varias variables de una manera informal, sin discutir qué notación realmente significa.

Kristoffer Arnsfelt Hansen
fuente
El enlace en mi respuesta se refiere al artículo de Howell, que de hecho es un buen tratamiento para esta pregunta.
A.Schulz
1
@ A.Schulz: De hecho, te estaba escribiendo mi respuesta simultáneamente.
Kristoffer Arnsfelt Hansen
1
Soy partidario de tener cuidado con los términos de Landau, así que estoy de acuerdo, pero esto contiene demasiadas críticas para una buena respuesta.
Raphael
44
@Raphael: La respuesta no pretende ser una queja, pero tal vez podría haber sido redactada con mayor precisión. La cuestión es, básicamente, cuál es el significado de O grande con más de un parámetro. La respuesta es que debería significar lo que sea que haya consenso sobre la comunidad de algoritmos, lo que se enseña en los cursos de algoritmos, etc. Mi punto es que aparentemente no existe tal consenso sobre lo que significa la notación precisamente.
Kristoffer Arnsfelt Hansen