129 votos

¿Existe una función que crezca más rápido que la exponencial pero más lento que el factorial?

En notación big-O la clase de complejidad $O(2^n)$ se denomina "exponencial". La clase de complejidad $O(n!)$ se llama "factorial".

Creo que $f(n) = O(2^n)$ y $g(n) = O(n!)$ significa que $f(n)/g(n)$ va a cero en el límite como $n$ va al infinito.

¿Se conoce alguna función entre las clases de complejidad factorial y exponencial?

En otras palabras, ¿hay alguna función conocida $j(n)$ que domina todas las funciones de $O(2^n)$ tal que..: $$ (j(n) \neq O(2^n)) \wedge (j(n) = O(n!)) \wedge (n! \neq O(j(n))) $$ o, informalmente, $j(n)$ crece asintóticamente de forma estrictamente más rápida que $2^n$ pero no tan rápido como $n!$ ?

¿O acaso se ha demostrado que no puede existir tal función?

Nota: esto puede parecer una pregunta de Ciencias de la Computación, pero en realidad estoy tratando de demostrar que cualquier serie de potencias periódica y convergente debe tener coeficientes cuyos inversos crecen asintóticamente tan rápido como $n!$ pero no más rápido. Creo que puedo demostrar que la mayoría crecen más rápido que $O(2^n)$ pero eso no demuestra que estén en $\Theta(n!)$ a menos que no haya una clase de complejidad entre $O(2^n)$ y $O(n!)$ .

55 votos

Como $\sqrt{n!}$ ?

11 votos

¿Qué tal si $O(n2^n)$ ?

6 votos

Bueno, $j(n)=a^n$ para $a>2$ funciona, pero tal vez usted está realmente interesado en una función entre $a^n$ y $n!$ por cada $a \in \mathbb R$ .

206voto

Lissome Puntos 31

Sugerencia Para el exponencial tienes el crecimiento $$\frac{a_{n+1}}{a_n}=\mbox{constant}$$

Para el factorial tienes el crecimiento $$\frac{b_{n+1}}{b_n}=n$$

Tome cualquier función $g(n)$ que crece hasta el infinito más lentamente que $n$ y establecer $$\frac{c_{n+1}}{c_n}=g(n)$$

Por ejemplo, $g(n)=\sqrt{n}$ da el ejemplo $\sqrt{n!}$ dado por AntonioVargas .

Otro ejemplo interesante es $g(n)=\ln(n)$ que da $$d_n =\prod_{k=2}^n \ln(k)$$

0 votos

¡Un ejemplo interesante! ¿Sabes cómo se define su análogo continuo? Podría estar bien incluirlo si es así.

2 votos

@Mehrdad $\ln(d_n) = \sum_{k=2}^n \ln ( \ln (k))$ . Así que el análogo continuo "natural" debería ser $$\ln(f(x)) =\int_2^x \ln( \ln(t)) dt$$ o $$f(x)=e^{\int_2^x \ln( \ln(t)) dt}$$

0 votos

Eso... ¿no tiene sentido? Para $n = 2$ tienes $d_n = \ln 2$ pero $f(2) = e$ ...

86voto

Lee Puntos 34

Dadas dos funciones positivas cualesquiera $f$ y $g$ tal que $\frac{f(x)}{g(x)}$ tiende a cero, dejemos que $j(x) = \sqrt{f(x)g(x)}$ (este es el media geométrica de $f$ y $g$ ).

Entonces $\frac{f}{ j} = \frac{j}{ g} = \sqrt{\frac{f}{g}}$ que también debe tender a cero, por lo que $j$ es una clase de complejidad intermedia.

8 votos

La mejor respuesta. Se deduce que el número de tasas de crecimiento diferentes entre dos tasas de crecimiento diferentes no está acotado.

5 votos

Bien, pero por qué no mencionas que esto es sólo la media geométrica ?

3 votos

@leftaroundabout Porque cualquier $j(x) = f^p(x) g^q(x)$ con $p, q \in \mathbb{R}^+, \; p+q=1$ y $f, g$ tal y como lo plantea el OP satisfaría su petición de crecer más rápido que la exponencial pero más lento que la factorial, y así hay incontables ejemplos. El geomeano es sólo el caso especial $p=q=0.5$ .

26voto

Hurkyl Puntos 57397

Para variar, he aquí dos llamativos ejemplos de este tipo $j$ que demuestran lo estrechas que son las clases de complejidad big-theta cuando se aplican a funciones de crecimiento tan rápido:

  • $j(n) = 3^n$
  • $j(n) = (n-1)!$

La primera demuestra algo que puede haber malinterpretado: el crecimiento exponencial es una clase de complejidad mucho más amplia que la mera $O(2^n)$ .

1 votos

Se podría abusar de alguna notación y escribir $O(2^{O(n)})$ :-)

7 votos

@yo' La notación común es $3^n = 2^{O(n)}$ .

3 votos

Esta es una respuesta excelente y poco apreciada. Desafío a cualquier lector a que calcule la distancia $O(n!)$ y $O((n/2)!)$ son. Es casi seguro que lo subestimes masivamente.

16voto

Especially Lime Puntos 51

Muchas de las respuestas dadas son en realidad "como" el factorial: si se agrupan todas las funciones de crecimiento exponencial en una sola clase, tendría sentido agrupar cosas como $n!$ y $\sqrt{n!}$ en una sola clase también. Pero todavía hay clases intermedias.

¿Qué quiero decir con esto? Funciones como $2^n$ y $3^n$ no son realmente muy similares si los comparas directamente - $3^n$ crece mucho más rápido y no está cerca de ser $O(2^n)$ . Pero lo que los hace similares es que su logaritmos tienen el mismo crecimiento - $\log(2^n)=\Theta(\log(3^n))=\Theta(n)$ .

Ahora $\log(n!)=\Theta(n\log n)$ por lo que tendría sentido poner todas las funciones con esta propiedad - como $\sqrt{n!}$ o $(n/2)!$ o $n^n$ - en una clase general "factorial" de la misma manera que definimos la clase exponencial.

Con esta forma de pensar, está claro que todavía hay algo intermedio, que crece más rápido que cualquier cosa de tipo exponencial pero más lento que cualquier cosa de tipo factorial. Sólo tienes que elegir alguna función $f(n)$ que crece más rápido que $\Theta(n)$ pero más lento que $\Theta(n\log n)$ como por ejemplo $f(n)=n\sqrt{\log n}$ o $f(n)=n\log\log n$ y luego $\exp(f(n))$ está en una clase intermedia.

La segunda opción que sugerí para $f(n)$ te da algo muy natural: $\exp(n\log\log n)=(\log n)^n$ . (Este es el mismo tipo de función que el segundo ejemplo de N.S.).

2 votos

Que los logaritmos tengan el mismo crecimiento es suficiente para poner a los exponenciales en una sola clase de complejidad, porque el logaritmo es la antifunción de un exponente. El logaritmo es no la anti-función de factorial, por lo que no se deduce que la familia que has definido como "factorial-like" caiga en una única clase de complejidad.

1 votos

@BenVoigt Creo que el hecho de que los logaritmos sean inversos de los exponenciales es una pista falsa. Simplemente estoy definiendo mis clases de complejidad basándome en $f(n)$ estando en la misma clase que $g(n)$ si $\log(f(n))=\Theta(\log(g(n))$ . Esta noción es la natural para definir no sólo la clase exponencial $\log(f(n))=\Theta(n)$ sino también la clase polinómica $\log(f(n))=\Theta(\log n)$ .

0 votos

Pero normalmente no ponemos todos los polinomios en la misma clase -- al menos el tiempo constante y el tiempo lineal reciben clases separadas.

9voto

Rchn Puntos 11

Para cualquier función $f$ y $g$ , $\sqrt{fg}$ tiene un crecimiento que está entre $f$ y $g$ .

6 votos

Cierto, pero esto ya se dijo hace 7 horas aquí

6 votos

Cierto, no me di cuenta porque escribió $j = \sqrt{\frac{f}{g}}$ en lugar de $j = \sqrt{fg}$ lo que supongo que debe ser una errata.

2 votos

Introduje erróneamente este error cuando "mejoré" el látex de su puesto.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X