¿Por qué tiene una interpretación?


8

En CLRS (en las páginas 49-50), ¿cuál es el significado de la siguiente declaración:

Σi=1nO(i) es solo una función anónima (de ), pero no es lo mismo que , que realmente no tiene una interpretación ".iO(1)+O(2)++O(n)


Traté de formular tu pregunta con mayor precisión; También tenga en cuenta que tenemos soporte de látex aquí para que pueda escribir matemáticas con un formato agradable. Te animo a que seas más específico: ¿qué es exactamente confuso? ¿Qué parte está causando problemas? (Quizás también pueda editar el título de la pregunta en consecuencia).
Juho


1
Podría decirse que la suma expandida tampoco tiene una interpretación; deberías escribir comience con. O()
Raphael

1
¿Alguien puede explicar el significado previsto de ? ¿Suma de funciones de orden " "? Esto tiene poco sentido, ya que . ¿Suma de funciones indexadas por y de algún orden? i=1nO(i)niO(i)=O(1)ni
Yves Daoust

Respuestas:


12

Dado que , es tentador sugerir que ... pero esto de hecho no es válido. La razón es que puede haber una constante diferente para cada término en la suma.1+2++n=O(n2)O(1)+O(2)++O(n)=O(n2)

Un ejemplo

Déjame dar un ejemplo. Considere las sumas , , , , y así sucesivamente. Tenga en cuenta que , , , , y así sucesivamente para cada término en el suma. Por lo tanto, sería razonable escribir en la forma . Entonces, ¿podemos concluir que ? No De hecho, , entonces .S(1)=12S(2)=12+22S(3)=12+22+32S(4)=12+22+32+4212O(1)22O(2)32O(3)42O(4)S(j)=12++j2S(j)=O(1)++O(j)S(j)=O(j2)S(n)=n(n+1)(2n+1)/6S(n)=Θ(n3)

Si eso no ayuda, intentemos el siguiente desarrollo matemático más preciso:

Una formalizacion

Recuerde que la interpretación de, digamos, es que es un conjunto de funciones no negativas (es decir, el conjunto de funciones modo que existen constantes tal que para todo ).O(n2)f(n)f(n)c0,d0f(n)cn2nd

Lo más cercano que podemos llegar a una interpretación de es que es el conjunto de funciones de la forma tal que , , ..., .O(1)+O(2)++O(n)f1(n)+f2(n)++fn(n)f1(n)O(1)f2(n)O(2)fn(n)O(n)

Pero ahora las constantes para cada pueden ser diferentes. Por lo tanto, cada es una función no negativa modo que existen constantes con para todos .fififici0,di0fi(n)ciindi

Ahora, dado esto, ¿qué podemos decir sobre ? No muy útil Sabemos que existe una constante tal que para todos . Ahora, ¿qué podemos decir sobre esta suma? Bueno, la respuesta es que no podemos decir nada en absoluto. Podría ser arbitrariamente grande. Es tentador dejar que y decir que ... pero esto no es realmente correcto, ya que necesitamos un único valor constante de que funcione para todos , y el valorg(n)=f1(n)+f2(n)++fn(n)d=max(d1,d2,,dn)g(n)c11+c22++cnnndc=max(c1,c2,,cn)g(n)c(1+2++n)cn2=O(n2)cnmax(c1,c2,,cn) es una función de , no una constante.n

Por lo tanto, puede que no haya una constante tal que ; puede que no haya una constante tal que . No hay garantía de que .cg(n)c(1+2++n)cg(n)cn2g(n)O(n2)

Para más lectura

Consulte https://math.stackexchange.com/q/86076/14578 y los términos Sumas de Landau revisados para otras preguntas que aborden este problema general.


2
TLDR: desea que todos sean iguales pero no lo son, formalmente. fO(_)
Raphael

1

La razón por la cual el comentario de CLRS es confuso es que, técnicamente, se define como . Lo que realmente está sucediendo es que CLRS está abusando de la notación por simplicidad:i=1nO(i)O(1)+O(2)+O(n)

  • O(1) representa un conjunto de funciones. Incluye, por ejemplo, , , .f(n)=1f(n)=1/nf(n)=n1/n
  • Cuando escribe técnicamente está agregando dos conjuntos y con una operación de suma . Cuando esto se hace con más de un número constante de términos, puede conducir a comportamientos inesperados, como DW explica claramente en otra respuesta.O(1)+O(2)O(1)O(2)

En cambio, CLRS quisiera que interprete como donde la función genérica . Por ejemplo, escribirían que es u .i=1nO(i)i=1nf(i)f(i)O(i)i=1n3i5i=1nO(i)O(n2)


Esta explicación no es del todo correcta. No hay nada de malo en agregar . Eso está bien definido. es un conjunto de funciones, es un conjunto de funciones, y cuando son conjuntos de funciones, normalmente se entiende que es el conjunto de funciones . Esto es lo que comúnmente se pretende cuando agregamos dos anotaciones big-Oh, y todo funciona bien siempre que solo agregue dos (o un número constante de) símbolos big-Oh. Donde te metes en problemas es cuando el número de sumas no es una constante, como se explica en mi respuesta. O(1)+O(2)O(1)O(2)S,TS+T{f(n)+g(n):f(n)S,g(n)T}
DW

Estoy de acuerdo en que esta es la definición común de adición de conjuntos y que está bien definida, aunque no creo que sea lo que se entiende en uso común. Como dices correctamente en tu respuesta anterior, usar la suma establecida en más de un número constante de términos conduce a problemas.
Ari Trachtenberg

Prefiero definir O (f (n)) como un elemento anónimo de un determinado conjunto de funciones, en lugar del conjunto en sí. Entonces significa " para alguna función tal que ...", mientras que significa " para algunas funciones tales que ... ". Totalmente no es lo mismo. iO(i)if(i)fO(1)+O(2)++O(n)f1(1)+f2(2)++fn(n)f1,f2,,fn
JeffE
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.