10 votos

Clase natural de funciones cuyos $\mathcal O$-sistemas se ordenan linealmente

Haciendo el análisis de la complejidad de los algoritmos, se limita a menudo a su complejidad asintótica. Una función de $g: \mathbb N \to \mathbb R_+$ es asintóticamente delimitada por $f: \mathbb N \to \mathbb R_+$ si hay constantes $c \in \mathbb R_+, N \in \mathbb N$ tal que para cada una de las $n \geq N$, $$ g(n) \leq c\cdot f(n). $$ El conjunto de todos los $g$ se conoce como $\mathcal O(f)$. Dejando $g \preceq f$ si $\mathcal O(g) \subseteq \mathcal O(f)$, obtenemos un reservas en el conjunto de las funciones de $\mathbb N \to \mathbb R_+$.

Ejemplos de funciones que normalmente se presentan como las complejidades de los algoritmos son: $$\etiqueta{*} \log(\log(n)), \log(n),\log(n)^2, \sqrt{n}, n, n\log(n),n\sqrt{n},n^3, 2^n, 3^n, 2^{2^n}. $$ Curiosamente, estas funciones son todos los linealmente ordenado por $\preceq$. Se nota que no es difícil encontrar funciones que no linealmente ordenado por $\preceq$, como $|\sin(n)|$$|\cos(n)|$, y con un poco de tocar el violín no sería demasiado duro para hacer ejemplos de estrictamente creciente (o incluso convexo) funciones que no son linealmente ordenado por $\preceq$. Sin embargo, todos estos ejemplos parecen artificiales, y, en particular, me sorprendería si es que alguna vez llegó hasta como las complejidades de los algoritmos.

Podemos explícitamente dar una buena clase de funciones que incluye, al menos, todas las funciones que figuran en (*), y para los que $\preceq$ es lineal hacer el pedido? Es esta clase también cerrado, en virtud de algunas operaciones, como la multiplicación, la exponenciación por una constante, o tomando logaritmos? Y, tal vez, se podría incluso justificar por qué el algoritmo es probable que tenga una complejidad en esta clase?

6voto

jkramer Puntos 7271

El conjunto de funciones creadas a partir de las constantes, las operaciones de campo y permitiendo exp y registro es linealmente ordenado por el big-O. se llama exp-funciones de registro. Echa un vistazo a Hardy "Órdenes del Infinito", página 24. Para más información sobre esto, búsqueda para "Hardy campos".

Esta clase cubre la mayoría de los "típicos" complejidades. Sin embargo, el mundo de la complejidad es mucho más rica que cualquier simple descripción que puede ser escrito. La complejidad puede ser:

  • Un crecimiento extremadamente lento: Hay algoritmos cuya complejidad utiliza inversa Ackermann (unión de encontrar) o $\log^{\ast} n$ (distribuido tricoloring de un árbol). Las funciones crecen más lentamente que los $\log(\log(\dots n\dots))$ para cualquier número finito de registros.
  • Extremadamente rápido crecimiento: Algunos problemas no pueden ser resueltos en el tiempo que es $\exp(\exp(\dots n \dots))$, para cualquier número finito de $n$. Ellos son llamados nonelementary. La función de Ackermann crece demasiado rápido, y según esta respuesta no son naturales problemas con Ackermannian complejidad.
  • Arbitrario: Para más sensata de las funciones de $F$, es posible tener un algoritmo con complejidad $F(n)$, que se obtiene de una máquina de Turing y simula por $F(n)$ pasos. Por ejemplo, usted puede obtener un algoritmo con complejidad $n^{5+(-1)^n}$. También puede definir (artificialmente) un problema que puede ser resuelto en este momento.
  • -Definida: Blum del speedup teorema muestra que existe una función computable $f$ de manera tal que, si $f$ puede ser calculado en tiempo de $X$, $f$ puede calculada en el tiempo $\log X$. No existe "el mejor" algoritmo para calcular $f$. No es "natural" porque es una de diagonalización contra los posibles algoritmos, sino que muestra cómo raro esto puede conseguir.

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