¿Qué es O en Big O?

23

¿Qué es Big y O en notación Big O? He leído las definiciones y no dice qué se pronuncia O como 'oh'. Por ejemplo, entiendo que O (n) es la complejidad de un algoritmo lineal donde n podría ser el número de operaciones. pero que es un O ?

Karen15
fuente
13
Es la decimoquinta letra del alfabeto inglés. También es la decimoquinta letra del alfabeto griego.
Joel Etherton
1
Solo para aclarar: ¿Está buscando la razón de por qué O es el símbolo que se usa (en lugar de Q o E u otra cosa), y qué significado, si lo hay, tiene O sobre otros símbolos?
FrustratedWithFormsDesigner
66
@ Joel: En realidad, es Omicron, y esa es la pista de por qué se eligió esta carta en particular.
Jörg W Mittag el
esta respuesta refuta (correctamente, creo) la teoría de Omicron.
Hawkeye Parker el

Respuestas:

31

Bueno, mi suposición sería el orden, que coincide con wikipedia .

Editar: (mi propia (cualquier mejora apreciada)) traducción del artículo de Wikipedia en alemán

La letra mayúscula O (en realidad un omicron mayúscula en ese momento) como símbolo del orden de (alemán: "Ordnung von") fue utilizada por primera vez por el teórico de números alemán Paul Bachman en la segunda edición de su libro sobre teoría analítica de números. en 1894. La notación ganó popularidad debido al trabajo de Edmund Landau, otro teórico de números alemán, a quien esta nomenclatura se asocia ampliamente hoy, especialmente en la terminología alemana.

back2dos
fuente
55
Si bien puede ser el caso de que muchos matemáticos se hayan referido a él como tal, originalmente no fue así. Si lees libros de teoría de números de principios del siglo XX, no encontrarás tal explicación. Es lo que es y no puedo leer alemán para entender cuál era su opinión sobre la notación.
Jonathan Henson el
1
@ Jonathan: publicación actualizada.
back2dos
¡Muy agradable! Miré en todos mis libros de teoría de números y no pude encontrar una explicación de la O en ningún lado. +1
Jonathan Henson el
2
Siempre he pronunciado como orden de tan sólo diciendo O no significa mucho.
Newtopian
16

"Grande" significa "capital" y "O" significa orden, como en "orden de complejidad". Llamado así por la convención de escribir "orden de complejidad" como O (f (x)), por ejemplo, con una letra mayúscula 'O' o una 'O grande'. Nadie habla mucho de eso porque 'todos' entienden lo que significa, y entenderlo realmente no ayuda a comprender el análisis de complejidad.

Para comprender el análisis de complejidad, creo que el enlace publicado por topgun_ivard es un buen lugar para comenzar. Un buen libro de texto introductorio que abarque estructuras de datos o algoritmos también podría ayudar.

Ethel Evans
fuente
55
Lo siento, pero la notación de Bachmann-Landau fue inventada por un matemático alemán, por lo que no creo que la haya nombrado después de una palabra en inglés. De hecho, incluso si hubiera sido inventado por un matemático estadounidense, probablemente seguiría teniendo el nombre de una palabra alemana, porque cuando se inventó (alrededor de 1920, creo), el idioma internacional de las matemáticas era el alemán. Además, ni remotamente tiene nada que ver con la complejidad.
Jörg W Mittag el
1
@ Jörg: Sí, pero eso no sería Ordnung , que según el artículo wiki alemán es el origen: de.wikipedia.org/wiki/Landau-Symbole#Geschichte
back2dos
1
@Ethel, ¿podrías hacer un cambio menor en tu artículo para que pueda votarte? De hecho tienes razón. Tienes que editar antes de que pueda votar.
Jonathan Henson el
1
@ Jonathan, no estoy seguro de qué cambio menor quieres. ¿Puedes seguir adelante y hacer la edición que quieras? O bien, podríamos dejar que la respuesta de back2dos se mantenga, parece que podría haber terminado con la mejor respuesta de todos modos debido a una excelente investigación :)
Ethel Evans
1
Hm, interesante. En Suecia, Big Oh generalmente se llama "ordo" (latín para, bueno, orden) en lugar de "ordning" (la palabra sueca para orden).
Vatine
11

O representa el orden.

Fue introducido originalmente por el matemático alemán Paul Bachmann en el segundo volumen de sus libros sobre teoría de números Die Analytische Zahlentheorie , publicado en 1894 (p. 401) . Él observa, después de una fórmula donde primero usa la notación:

(...) wenn wir durch das Zeichen O (n) einde Grösse ausdrücken, deren Ordnung en Bezug auf n die Ordnung von n nicht überschreitet (...)

Mi traducción:

(...) donde con la notación O (n) indicamos una magnitud cuyo orden con referencia a n no excede el orden de n (...)

En contraste con lo que otros han dicho, nada en su texto indica que este sea de hecho un omikron de capital griego. Utiliza muchos caracteres griegos y latinos, por lo que realmente no hay forma de saberlo. Dado su uso continuo de "Ordnung n log n ", etc. en el texto, está claro que significa "Ordnung" (alemán para "orden" si había alguna duda) en cualquier caso, pero eso podría dejar abierto el uso de un elegante griego O.

Sin embargo, el origen del omikron es más probable que sea un retónimo debido a Donald Knuth, quien introdujo los símbolos omega (Ω) y theta (Θ) para conceptos relacionados en su artículo Big Omicron y Big Omega y Big Theta , o posiblemente Hardy y Littlewood que introdujo un símbolo omega anteriormente.


fuente
2
Interesante. Supongo que tienes razón. Solo busqué las definiciones en los libros de Landau y Bachmann, y de hecho a) usan un latín Oh, no un griego Omikron, b) ambos usan la palabra "Ordnung", yc) Landau declara explícitamente que significa "Ordnung" . Estoy corregido.
Jörg W Mittag el
¿Qué mejor palabra se puede encontrar? Quiero decir, de un alemán? Ordnung ist das halbe Leben!
JensG 01 de
Creo que la primera oración de su respuesta (correcta, votada, asombrosa) debería decir: 'O significa "Ordnung" (en alemán significa "Orden") ". Sería útil esta respuesta para captar la atención de otros lectores.
Hawkeye Parker el
5

¡Me gusta este artículo , esperando que lo encuentres útil también!

Citando una sección del artículo:
Grandes letras griegas

Big O a menudo se usa mal. Big O o Big Oh es en realidad la abreviatura de Big Omicron. Representa el límite superior de la complejidad asintótica. Entonces, si un algoritmo es O (n log n) existe una constante c tal que el límite superior es cn log n.

Θ (n log n) (Big Theta) está más unido que eso. Tal algoritmo significa que existen dos constantes c1 y c2, de modo que c1n log n <f (n) <c2n log n.

Ω (n log n) (Big Omega) dice que el algoritmo tiene un límite inferior de cn log n.

Hay otros, pero estos son los más comunes y Big O es el más común de todos. Dicha distinción generalmente no es importante, pero vale la pena señalar. La notación correcta es la notación correcta, después de todo.

¿Qué es Big O?

La notación Big O busca describir la complejidad relativa de un algoritmo reduciendo la tasa de crecimiento a los factores clave cuando el factor clave tiende hacia el infinito. Por esta razón, a menudo escuchará la frase complejidad asintótica. Al hacerlo, se ignoran todos los demás factores. Es una representación relativa de la complejidad.

¿Qué no es Big O?

Big O no es una prueba de rendimiento de un algoritmo. También es nocional o abstracto, ya que tiende a ignorar otros factores. La complejidad del algoritmo de clasificación generalmente se reduce a la cantidad de elementos que se ordenan como factor clave. Esto está bien, pero no tiene en cuenta problemas como:

Uso de memoria: un algoritmo podría usar mucha más memoria que otro. Dependiendo de la situación, esto podría ser desde completamente irrelevante hasta crítico; Costo de la comparación: puede ser que comparar elementos sea realmente costoso, lo que potencialmente cambiará cualquier comparación del mundo real entre algoritmos; Costo de mover elementos: copiar elementos suele ser barato, pero este no es necesariamente el caso; etc.

topgun_ivard
fuente
55
Simplemente vincular un artículo no es demasiado útil. Por lo general, es una buena idea parafrasear o citar la sección que encuentre especialmente relevante para el hilo.
Demian Brecht
3
¿Son realmente necesarios los votos negativos? El artículo que vinculó es muy relevante y, en mi humilde opinión, es bastante útil. Mientras tanto, la respuesta más votada es un enlace a un artículo de Wikipedia. +1 para compensar la hipocresía de la mente colmena.
Brandon Moretz
1
-1, porque el artículo, aunque es un artículo muy bonito y bien escrito, no tiene nada que ver con la pregunta.
Jörg W Mittag
@Jorg, nunca dije que el artículo resolvería el problema, pero lo compartí porque lo encontré útil cuando estaba mirando estos conceptos.
topgun_ivard
3
@topgun_ivard: Entonces, ¿qué sucede si se convierte en un enlace muerto? Parafrasear permite 1) que la audiencia de este hilo obtenga una versión de notas de Coles de su enlace (el tiempo es dinero), y 2) asegura que su publicación no sea irrelevante en un enlace inactivo.
Demian Brecht
2

"f (x) es grande-oh de g (x)"

Es una forma matemática de predecir el crecimiento de las funciones.

Supongamos que f y g son funciones del conjunto de números enteros o del conjunto o números reales al conjunto de números reales. Decimos que f (x) es O (g (x)) si hay constantes C y k tales que | f (x) | <= C | g (x) | donde x> k.

Leerías esto como "f (x) es grande-oh de g (x)"

El big-O a veces se llama un símbolo de Landau después del matemático alemán Edmund Landau. No creo que signifique nada más que eso. También tiene las notaciones similares big-Omega y big-Theta. Los símbolos son tan arbitrarios como siempre usar theta para denotar los ángulos en sus triángulos en su clase de geometría plana de la escuela secundaria.

Correction @ back2dos ha proporcionado una explicación satisfactoria para el O en referencia al pedido. Gran trabajo. Ver su respuesta.

Donald Knuth lo aplicó al estudio de la complejidad de los programas de computadora.

Si desea encontrar la razón por la cual se usó la notación, debe leer

"Analytische Zahlentheorie" de Paul Bachmann desde 1892

Jonathan Henson
fuente
2

EDITAR: Resulta que estoy equivocado. Sin embargo, tal vez esto ayude a alguien a mantener sus símbolos rectos, por lo que no voy a eliminarlo.


En realidad, es que no la letra latina Oh , es la letra griega Omicron . Desafortunadamente, esos dos tienen exactamente el mismo glifo, por lo que, con el tiempo, la versión original se corrompió, y ahora es solo Oh .

La elección del símbolo en realidad no tiene ningún significado particular, se eligió como un dispositivo mnemónico :

  • Omicron tiene las letras MICRO, y la semántica del símbolo Omicron significa "más pequeño que"
  • Omega tiene las letras MEGA y la semántica del símbolo Omega significa "más grande que"
  • Theta (Θ) se parece un poco a un signo igual, y la semántica del símbolo Theta significa aproximadamente "igual a"

Eso es. No tiene un significado real, es solo un juego de palabras, si quieres, para ayudarte a recordar la semántica más fácilmente.

Jörg W Mittag
fuente
2
Si bien me encantaría creer su propuesta mnemónica (es una idea realmente genial), voy a necesitar ver alguna prueba de que esta es la intención original real de Bachmann. Proporciónalo y te haré +1.
Jonathan Henson el
2
@ Jonathan Henson: Aparentemente, el profesor Knuth me engañó :-)
Jörg W Mittag el
-5

ACTUALIZACIÓN: Intento limpiar mi respuesta y ser más preciso

La notación Big O es una forma de caracterizar las funciones de acuerdo con sus tasas de crecimiento. La O significa orden (el primer orden es n, el segundo orden es n-cuadrado, etc.). Y si no me equivoco, este sería el peor de los casos para un tiempo de ejecución de métodos (o almacenamiento) dados N elementos. Cuanto mayor es el orden, peor es el método.
Por ejemplo, buscar un registro en una matriz es O (1) (creo en alguna implementación de tablas hash que también es el caso). Agregar un valor al final de una lista de enlaces sería O (N) porque debe llegar al final de la lista antes de poder agregar el elemento, etc.

Esta respuesta debería ser un poco más correcta que mi primer intento :)

SoftwareSavant
fuente
2
-1 porque esto es simplemente viejo y incorrecto Y respondió una pregunta separada de la que se hizo. La pregunta era por qué se usa la letra "O", no "¿cómo funciona la notación Big O?". Sin embargo, no está seguro de cómo funciona Big-oh ... recorrer una matriz es O (n) donde n es el tamaño de la matriz, no O (1). La notación no tiene nada que ver con los "ciclos" de un algoritmo ... es una medida del límite superior del tiempo de ejecución de un algoritmo.
Casey Patton el
No discutir contigo aquí, pero eso es lo que quise decir. ¿Qué significa el tiempo de ejecución correcto? Bueno, el tiempo de ejecución está determinado por lo que debe procesarse en la máquina. Supongo que uso el ciclo liberalmente aquí. Por ciclo, supongo que debería haber dicho iterar o algo así. Sin embargo, tiene razón sobre el límite superior, no determina el promedio. Por lo tanto, acepto la rebaja.
SoftwareSavant