¿Qué representa exactamente la notación Ө grande?


179

Estoy realmente confundido acerca de las diferencias entre la notación O grande, Omega grande y Theta grande.

Entiendo que la gran O es el límite superior y la gran Omega es el límite inferior, pero ¿qué representa exactamente la gran Ө (theta)?

He leído que significa estricto , pero ¿qué significa eso?


Respuestas:


93

Significa que el algoritmo es big-O y big-Omega en la función dada.

Por ejemplo, si es así Ө(n), entonces hay alguna constante k, tal que su función (tiempo de ejecución, lo que sea), es más grande que lo n*ksuficientemente grande n, y alguna otra constante Ktal que su función sea más pequeña que lo n*Ksuficientemente grande n.

En otras palabras, para lo suficientemente grande n, se intercala entre dos funciones lineales:

Para k < Ky nsuficientemente grande,n*k < f(n) < n*K


No es así, esas variables son un poco confusas, no están relacionadas.
Aaron Robeson

@committedandroider No, son minúsculas y mayúsculas por lo tanto diferentes, está usando un estilo matemático típico en el que dos variables "similares" (pero no relacionadas de ninguna manera aquí) usan mayúsculas y minúsculas.
Santropedro

329

Primero, comprendamos qué son grandes O, grandes Theta y grandes Omega. Todos son conjuntos de funciones.

Big O está dando un límite asintótico superior , mientras que Big Omega está dando un límite inferior. Big Theta da los dos.

Todo lo que es Ө(f(n))es también O(f(n)), pero no al revés.
T(n)se dice que está adentro Ө(f(n))si está adentro O(f(n))y adentro Omega(f(n)).
En terminología de conjuntos, Ө(f(n))es la intersección de O(f(n))yOmega(f(n))

Por ejemplo, fusionar el peor de los casos es ambos O(n*log(n))y Omega(n*log(n)), por lo tanto Ө(n*log(n)), también lo es , pero también lo es O(n^2), ya que n^2es asintóticamente "más grande" que él. Sin embargo, es no Ө(n^2) , ya que el algoritmo no es Omega(n^2).

Una explicación matemática un poco más profunda

O(n)es el límite superior asintótico. Si T(n)es así O(f(n)), significa que desde cierto n0, hay una constante Ctal que T(n) <= C * f(n). Por otro lado, big-Omega dice que hay una constante C2tal que T(n) >= C2 * f(n))).

¡No confundir!

No debe confundirse con el análisis de los casos peor, mejor y promedio: las tres notaciones (Omega, O, Theta) no están relacionadas con el mejor, peor y el análisis de casos promedio de algoritmos. Cada uno de estos se puede aplicar a cada análisis.

Por lo general, lo usamos para analizar la complejidad de los algoritmos (como el ejemplo de clasificación de fusión anterior). Cuando decimos "el algoritmo A es O(f(n))", lo que realmente quieren decir es "La complejidad de algoritmos en las peores 1 análisis de casos es O(f(n))" - lo que significa - que las escalas "similar" (o formalmente, no es peor que) la función f(n).

¿Por qué nos preocupamos por el límite asintótico de un algoritmo?

Bueno, hay muchas razones para ello, pero creo que las más importantes son:

  1. Es mucho más difícil determinar la función de complejidad exacta , por lo tanto, "comprometemos" las notaciones big-O / big-Theta, que son teóricamente suficientemente informativas.
  2. El número exacto de operaciones también depende de la plataforma . Por ejemplo, si tenemos un vector (lista) de 16 números. ¿Cuántas operaciones tomará? La respuesta es, depende. Algunas CPU permiten adiciones de vectores, mientras que otras no, por lo que la respuesta varía entre diferentes implementaciones y diferentes máquinas, lo cual es una propiedad no deseada. Sin embargo, la notación big-O es mucho más constante entre máquinas e implementaciones.

Para demostrar este problema, eche un vistazo a los siguientes gráficos: ingrese la descripción de la imagen aquí

Está claro que f(n) = 2*nes "peor" que f(n) = n. Pero la diferencia no es tan drástica como lo es de la otra función. Podemos ver que f(n)=lognrápidamente se está volviendo mucho más bajo que las otras funciones, y f(n) = n^2rápidamente se está volviendo mucho más alto que los demás.
Entonces, debido a las razones anteriores, "ignoramos" los factores constantes (2 * en el ejemplo de los gráficos) y tomamos solo la notación big-O.

En el ejemplo anterior, f(n)=n, f(n)=2*nestará tanto dentro O(n)como dentro Omega(n), y por lo tanto también estará dentro Theta(n).
Por otro lado, f(n)=lognestará dentro O(n)(es "mejor" que f(n)=n), pero NO estará dentro Omega(n), y por lo tanto tampoco estará dentro Theta(n).
Simétricamente, f(n)=n^2estará dentro Omega(n), pero NO dentro O(n)y, por lo tanto, tampoco lo estará Theta(n).


1 Por lo general, aunque no siempre. cuando falta la clase de análisis (peor, promedio y mejor), realmente queremos decir el peor de los casos.


44
@krishnaChandra: f(n) = n^2es asintóticamente más fuerte entonces n, y por lo tanto es Omega (n). Sin embargo, no es O (n) (porque para nvalores grandes , es más grande que c*n, para todos n). Como dijimos Theta (n) es la intersección de O (n) y Omega (n), dado que no es O (n), tampoco puede ser Theta (n).
amit

8
Es genial ver a alguien explicar cómo la notación big-O no está relacionada con el mejor / peor caso de tiempo de ejecución de un algoritmo. Hay muchos sitios web que aparecen cuando busco en Google el tema que dice O (T (n)) significa el peor tiempo de ejecución.
Will Sewell

1
@almel Es 2 * n (2n, dos veces n) no 2 ^ n
amit

55
@VishalK 1. Big O es el límite superior ya que n tiende al infinito. 2. Omega es el límite inferior ya que n tiende al infinito. 3. Theta es tanto el límite superior como el inferior , ya que n tiende al infinito. Tenga en cuenta que todos los límites solo son válidos "ya que n tiende al infinito", porque los límites no se mantienen para valores bajos de n (menor que n0 ). Los límites se mantienen para todos nn0 , pero no por debajo de n0, donde los términos de orden inferior se vuelven dominantes.
baño

1
@hey_you Lee la respuesta nuevamente. O grande, Theta, Omega son para funciones, no para algoritmos. El tipo de combinación es Omega (n) en el peor de los casos. También es O (n ^ 2) mejor caso. También es el peor de los casos de Theta (nlogn). Básicamente, para cada análisis (peor / mejor / promedio / ...) tiene una función de complejidad T_best(n), T_worst(n), T_average(n). No tienen que ser idénticos (y sobre todo, no lo son). O / Omega / Theta se puede aplicar a cualquiera de ellos de forma independiente.
amit

14

Theta (n):f(n) pertenece a una función Theta(g(n)), si existen constantes positivas c1y c2tales que f(n)se pueden intercalar entre c1(g(n))y c2(g(n)). es decir, proporciona límites superiores e inferiores.

Theta (g (n)) = {f (n): existen constantes positivas c1, c2 y n1 tales que 0 <= c1 (g (n)) <= f (n) <= c2 (g (n)) para todo n> = n1}

cuando decimos f(n)=c2(g(n))o f(n)=c1(g(n))representa un límite asintóticamente estrecho.

O (n): proporciona solo el límite superior (puede o no estar ajustado)

O (g (n)) = {f (n): existen constantes positivas c y n1 tales que 0 <= f (n) <= cg (n) para todo n> = n1}

Ej : El límite 2*(n^2) = O(n^2)es asintóticamente apretado, mientras que el límite 2*n = O(n^2)no es asintóticamente apretado.

o (n): solo da un límite superior (nunca un límite apretado)

La diferencia notable entre O (n) y o (n) es que f (n) es menor que cg (n) para todos n> = n1 pero no igual que en O (n).

ej . : 2*n = o(n^2)pero2*(n^2) != o(n^2)


1
No mencionaste la gran Omega, que se refiere al límite inferior. De lo contrario, muy buena primera respuesta y bienvenido!
bohney

1
Me gustó la forma en que enmarcaba la definición de Theta (n). ¡Votado!
user720694


1

Notación Theta grande:

¡Nada que estropear amigo!

Si tenemos funciones con valores positivos f (n) yg (n) toma un argumento con valores positivos n entonces ϴ (g (n)) definido como {f (n): existen constantes c1, c2 y n1 para todo n> = n1}

donde c1 g (n) <= f (n) <= c2 g (n)

Tomemos un ejemplo:

dejar f (n) =

g (n) =

c1 = 5 y c2 = 8 y n1 = 1

Entre todas las notaciones, la notación ϴ da la mejor intuición sobre la tasa de crecimiento de la función porque nos da un límite apretado a diferencia de big-oh y big -omega que da los límites superior e inferior respectivamente.

ϴ nos dice que g (n) está tan cerca como f (n), la tasa de crecimiento de g (n) está lo más cerca posible de la tasa de crecimiento de f (n).

mira la imagen para tener una mejor intuición


0

Primero de todo la teoría

  1. Big O = Límite superior O (n)

  2. Theta = Función de orden - theta (n)

  3. Omega = Notación Q (Límite inferior) Q (n)

¿Por qué la gente está tan confundida?

En muchos blogs y libros, cómo se enfatiza esta declaración es como

"Esto es Big O (n ^ 3)" etc.

y la gente a menudo se confunde como el clima

O (n) == theta (n) == Q (n)

Pero lo que vale la pena tener en cuenta es que son solo una función matemática con los nombres O, Theta y Omega

entonces tienen la misma fórmula general de polinomio,

Dejar,

f (n) = 2n4 + 100n2 + 10n + 50 entonces,

g (n) = n4, entonces g (n) es una función que toma la función como entrada y devuelve variable con Biggerst Power,

Misma f (n) yg (n) para Abajo todas las explicaciones

Big O - Función (proporciona límite superior)

Big O (n4) = 3n4, porque 3n4> 2n4

3n4 es el valor de Big O (n4) Al igual que f (x) = 3x

n4 está jugando un papel de x aquí, así que,

Reemplazando n4 con x'so, Big O (x ') = 2x', ahora ambos estamos contentos.

Entonces 0 ≤ f (n) ≤ O (x ')

O (x ') = cg (n) = 3n4

Poniendo valor,

0 ≤ 2n4 + 100n2 + 10n + 50 ≤ 3n4

3n4 es nuestro límite superior

Theta (n) proporciona un límite inferior

Theta (n4) = cg (n) = 2n4 Porque 2n4 ≤ Nuestro ejemplo f (n)

2n4 es el valor de Theta (n4)

entonces, 0 ≤ cg (n) ≤ f (n)

0 ≤ 2n4 ≤ 2n4 + 100n2 + 10n + 50

2n4 es nuestro límite inferior

Omega n - Función de pedido

Esto se calcula para descubrir que el límite inferior del clima es similar al límite superior,

Caso 1). El límite superior es similar al límite inferior

if Upper Bound is Similar to Lower Bound, The Average Case is Similar

Example, 2n4 ≤ f(x) ≤ 2n4,
Then Omega(n) = 2n4

Caso 2). si Upper Bound no es similar a Lower Bound

in this case, Omega(n) is Not fixed but Omega(n) is the set of functions with the same order of growth as g(n).

Example 2n4 ≤ f(x) ≤ 3n4, This is Our Default Case,
Then, Omega(n) = c'n4, is a set of functions with 2 ≤ c' ≤ 3

Espero que esto se explique !!

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.