¿Qué significa la palabra "escalabilidad" en términos de Big O?

He encontrado muchas fuentes que afirman que:

Los puntos de referencia estiman el tiempo de ejecución, Big O estima la escalabilidad.

Explicaron el significado de "escalabilidad" de la siguiente manera:

La escalabilidad le dice cómo se escala el tiempo de ejecución de su algoritmo. Es decir, cómo crece el tiempo de cálculo cuando aumenta el tamaño de entrada. Para O ( norte ) duplica el tamaño de la entrada y duplica el tiempo de cálculo. Para O ( norte 2 ) duplica el tamaño de la entrada y cuadruplica el tiempo de cálculo y así sucesivamente.

Es decir, si su algoritmo toma F ( norte ) pasos en el peor de los casos y F O ( norte 2 ) , entonces la relación F ( 2 norte ) F ( norte ) es igual a 4 para valores suficientemente grandes de norte (usted duplica el tamaño de entrada y cuadruplica el tiempo de cálculo).

Y tenía mucho sentido. Pero recientemente me han mostrado un contraejemplo que demuestra que la declaración anterior es simplemente incorrecta. Considere la función F ( norte ) = norte 2 ( porque ( norte ) + 2 ) . Podemos ver eso F O ( norte 2 ) . Además, para aquellos de ustedes que quieran notar que por O ( norte 2 ) la gente suele querer decir Θ ( norte 2 ) podemos observar fácilmente que F Θ ( norte 2 ) también:

ingrese la descripción de la imagen aquí

Pero F no escala como norte 2 en el sentido de que no podemos afirmar que F ( 2 norte ) F ( norte ) es igual a 4 (incluso aproximadamente) para cualquier valor (incluso grande) de n. Quiero decir, si sabemos que F O ( norte 2 ) y si duplicamos su tamaño de entrada, no podemos simplemente cuadruplicar el tiempo de cálculo, porque está mal.

hice una trama de F ( 2 norte ) F ( norte ) para que lo visualices:

ingrese la descripción de la imagen aquí

No parece que esta proporción tienda a 4.

Entonces, mis preguntas son:

  1. ¿Por qué la gente explica el significado de "escalabilidad" de esa manera? ¿Hay alguna razón para eso o son técnicamente incorrectos?

  2. Entonces, ¿qué significa esta palabra "escalabilidad"? Entonces, ¿qué estima exactamente Big O (si no es "escalabilidad")?

En general, estoy buscando una explicación matemática pura de eso. Pero no lo pongas demasiado difícil, por favor: todavía estoy aprendiendo el cálculo de una sola variable. ¡Gracias a todos de antemano!

Hay un problema en que los límites técnicamente no existen. Está claro que F es Θ ( norte 2 ) por la idea de acotación, pero la definición de límite señala que mientras que la relación de las funciones definitivamente es finita y distinta de cero, el límite del coseno no está definido en el infinito (oscilación). No estoy seguro aquí, pero incluso puede haber motivos para decir que F no es O ( norte 2 ) en absoluto por esta señal.
@FShrike, gracias por el comentario. Pero F O ( norte 2 ) por la definición de Big O.
La idea de escalabilidad se confunde con la oscilación, pero no hay una conclusión inmediata de escalabilidad a partir de las definiciones de límite (aunque ahora recuerdo que las definiciones de límite usan limit suprema e infima para sortear la idea de que los límites regulares no existen, así que tomo de vuelta algo de lo que dije en el comentario anterior)
1. Ejemplos como este donde F Θ ( gramo ) pero F / gramo es oscilatorio como norte no son comunes en la práctica real. De improviso, lo único que viene a la mente con este comportamiento es la FFT, e incluso eso tiene una escala fija si trabaja solo con potencias de 2. 2. La escalabilidad aún expresa la tasa de crecimiento de la función de una manera aproximada, cuánto más grande se vuelve cuando aumenta la entrada por un montón. Big Theta todavía te da esta descripción aproximada. Pero tienes razón en que solo sabiendo, digamos, F Θ ( norte 2 ) no te dice eso F ( 2 norte ) / F ( norte ) tenderá hacia 4 .
En el contexto de la teoría de la complejidad, en particular, a las personas generalmente les importan los peores casos o los casos típicos. Los peores casos en su situación significarían "comparar dos problemas donde norte está cerca de un múltiplo de 2 π "; los casos típicos significarían "comparar dos problemas donde norte está cerca de un múltiplo impar de π / 2 ".
@Ian, ¡Gracias por el comentario! En el último comentario, afirmas que norte 2 ( C o s ( norte ) + 2 ) no puede ser el peor de los casos, porque 3 norte 2 es aun peor?
Quiero decir, si el tiempo de ejecución real es norte 2 ( porque ( norte ) + 2 ) entonces el peor de los casos para norte en un intervalo de longitud 2 π va a ser cuando norte es múltiplo de 2 π y en ese caso tienes 3 norte 2 .
@Ian, pero según tengo entendido, no hay tiempo de ejecución real si no especifica el caso primero (peor, promedio, mejor). A partir de este punto cuando lo clasificaste como peor, deduces la función F ( norte ) que representan una serie de pasos tomados para la entrada de longitud en el peor de los casos norte . Pero, ¿cómo puede ir más allá y especificar puntos separados del formulario? 2 π k para representar el comportamiento del peor de los casos, si ya tenemos la función F que representa el peor caso de comportamiento?
quiero decir que norte es el tamaño de entrada real y F ( norte ) el tiempo de ejecución real, y F ( norte ) fluctúa porque de alguna manera los números se acercan a los múltiplos enteros impares de π son mucho más fáciles de manejar que los números cercanos a múltiplos enteros pares de π (una situación inusual en sí misma). entonces lo peor norte 's de un "orden de magnitud" dado son aquellos cercanos 2 π k , por lo que si desea estudiar el crecimiento del peor de los casos, mire norte = r o tu norte d ( 2 π k ) , k = 1 , 2 , (es decir 6 , 13 , 19 etc.)
@Ian, ¿pero estás de acuerdo en que cuando consideramos la función F ( norte ) eso ya significa cada entrada norte debe ser lo peor? Porque F ( norte ) es, por su definición, toma solo las entradas del peor de los casos
No, estoy hablando de los peores valores locales de norte (que generalmente no es algo a considerar, pero es algo en su caso).

Respuestas (2)

Este (muy bonito) ejemplo es bastante inusual - en la práctica funciona F ( norte ) que en realidad surgen y son Θ ( norte 2 ) normalmente satisfacen F ( norte ) / norte 2 tiende a algún límite positivo (en lugar de simplemente estar acotado de 0 y ). Así que la versión simplificada de escalabilidad - límite norte F ( 2 norte ) / F ( norte ) - existe y es 4 .

Sin embargo, incluso para su función, todavía hay un sentido razonable en el que duplicar norte , en promedio, aumenta F ( norte ) por un factor de 4 . ¿Qué podemos entender por "en promedio"? Bueno, para sacar un promedio necesitas duplicar más de una vez. Si duplicas dos veces para ir de F ( norte ) a F ( 4 norte ) entonces el factor de escala promedio de las dos duplicaciones que tiene sentido es la media geométrica (porque está tratando de aproximarse por crecimiento geométrico), es decir F ( 4 norte ) / F ( norte ) . Ahora bien, esto tampoco tiende a un límite, pero F ( 2 k norte ) / F ( norte ) k , es decir, el factor de escala promedio (geométrico) de k duplicaciones, tiende a un límite como k , cual es 4 .

¡Gracias por la respuesta! ¿Pero no parece que acabamos de inventar de la nada una forma de justificar el significado original de la palabra "escala"?
Además, ¿por qué la media aritmética es peor en este caso? Me parece tan razonable como lo es la media geométrica.
@mathgeek Es básicamente porque si escalamos por un factor X y luego escalar por un factor y , entonces la escala general es X y no X + y . La idea de sacar un promedio es "¿qué lista de k cosas idénticas serían más como esta lista de k cosas diferentes?" Aquí escalando por k diferentes factores deberían dar el mismo resultado general que la escala por el factor "promedio" k veces, y eso funciona si como "promedio" significa la media geométrica.
¡No podía esperar una explicación mejor que esta! ¡Gracias! Pero difícilmente puedo imaginar a la gente pensando en todos estos cálculos cuando dicen cosas como que el tiempo de ejecución crece "del orden del cuadrado del tamaño de la entrada". ¿Podría aclarar lo que esas personas piensan (lo que realmente quieren decir) al decirlo y si es legítimo decirlo sobre F , dado F O ( norte 2 ) ?
Todavía es correcto, solo puede fallar en el nivel de comparación de dos valores de funciones particulares si F es raro. Y realmente no puedo enfatizar lo suficiente lo atípico que es su ejemplo en el análisis asintótico real, especialmente en la teoría de la complejidad.
@ Jean-ClaudeArbaut No veo por qué es engañoso. Estoy hablando específicamente del ejemplo de OP, que (como dice OP específicamente) es un ejemplo de una función que es Θ ( norte 2 ) pero parece no escalar como se esperaba. Si sólo sabes que una función es O ( norte 2 ) , luego en el segundo párrafo básicamente necesitas reemplazar límite por Lim sup y 4 por 4 .

Los símbolos de Landau no se preocupan por el comportamiento exacto de las funciones. F O ( gramo ) significa que para grandes X tenemos F escalas a lo sumo tan malas como gramo en el sentido de que F está acotado por un múltiplo de gramo .

Cuando las personas lo explican de la forma en que lo mencionaste, lo están simplificando demasiado, probablemente asumiendo que la otra parte no entendería de lo que uno está hablando.

¡Gracias por la respuesta! Pero si miras mi primer gráfico, notarás que F escamas peor que norte 2 a intervalos ( 10 ;   12 ) Por ejemplo. Por lo tanto, no "escala COMO MÁS tan mal como gramo ".
@mathgeek Consideramos límites como norte en la definición estándar, no como norte ( 10 , 12 )
Solo di un ejemplo para que puedas observarlo fácilmente desde la trama. Pero estoy seguro de que puede ver que mi declaración es válida para cualquier norte (puedes hacerlo tan grande como quieras).
@mathgeek Esa es una de las advertencias con la notación de Landau. Escalar es un término que usamos para el argumento que crece, pero no especificamos qué tan grande sería. Tenga en cuenta que si F es continuo y gramo es continuo y en ninguna parte 0 entonces en cualquier intervalo cerrado siempre encontramos un C con F C gramo en ese intervalo (mín./máx. de funciones continuas en conjuntos compactos). E incluso entonces, la definición de los símbolos de Landau siempre especifica: Para todos X > X 0 por alguna arbitraria X 0 . Básicamente, no nos importan los valores finitos.
Puedes pensar en esto de esta manera: Si F O ( gramo ) entonces la asintótica Lim sup F ( X ) gramo ( X ) es finito Si F Θ ( gramo ) Después también 0 < límite de información F ( X ) gramo ( X ) .
Sí, su último comentario es la definición, pero desafortunadamente no explica el significado de la palabra "escala" y por qué tiene sentido a la luz de mi pregunta publicada.
Bueno, el escalado generalmente no se usa en matemáticas puras, sino en el contexto de algoritmos y demás. Y aquí escalar solo significa: si aumento la entrada, ¿cómo cambia el tiempo requerido? Por ejemplo, si tuviera que ordenar una lista de tamaño norte los mejores algoritmos que funcionan sin grandes suposiciones tienen un orden de norte registro norte comparaciones Entonces, si aumento el tamaño de mi lista, el esfuerzo requerido aumenta un poco más que linealmente, pero menos que cuadráticamente. Por supuesto, hay varias cosas que puede considerar: ¿El mejor de los casos? ¿Peor de los casos? caso promedio?
De acuerdo, cuando señaló que "el escalado generalmente no se usa en matemáticas puras, sino en el contexto de los algoritmos", comenzó a tener sentido. Diste un ejemplo de algoritmo ejecutándose en O ( registro norte ) tiempo. ¿Podría aclarar qué quiere decir con "aumenta cuadráticamente"? Por favor, tenga en cuenta el ejemplo de la explicación incorrecta de "aumenta cuadráticamente" que di en mi pregunta.