¿Cuál es la diferencia entre límite inferior y límite estricto?

99

Con la referencia de esta respuesta , ¿qué es Theta (límite estricto)?

Omega es un límite inferior, bastante conocido, el tiempo mínimo que puede tomar un algoritmo. Y sabemos que Big-O es para límite superior, es decir, el tiempo máximo que puede tomar un algoritmo. Pero no tengo ni idea del Theta.

Adeel Ansari
fuente

Respuestas:

154

Big O es el límite superior, mientras que Omega es el límite inferior. Theta requiere tanto Big O como Omega, por eso se lo conoce como un límite estrecho (debe ser tanto el límite superior como el inferior).

Por ejemplo, la toma de un algoritmo Omega(n log n)lleva al menos n log ntiempo, pero no tiene límite superior. La toma de un algoritmo Theta(n log n)es mucho más preferencial ya que toma al menos n log n (Omega n log n) y no más de n log n (Big O n log n).

Chris Bunch
fuente
7
Oh .. Ahora el término "estricto límite" me parece bastante autoexplicativo. Gracias Chris. Estúpido de mí, quizás esperaba alguna idea compleja. :)
Adeel Ansari
6
Sí, hay mucha notación sofisticada, pero no es demasiado compleja una vez que la tienes bajo tu cinturón.
Chris Bunch
4
Este documento disponible gratuitamente de Virginia Tech explica con ejemplos las diferencias en el rendimiento entre algoritmos de diferentes complejidades y explica brevemente el análisis asintótico: people.cs.vt.edu/shaffer/Book/C++3e20120102.pdf
Alan
¿Qué quieres decir con "Un algoritmo que toma Theta (n log n) es mucho más preferencial ya que toma al menos n log n (Omega n log n) y no más de n log n (Big O n log n)", como en, ¿es la complejidad exacta de un algoritmo como escribiste, al menos Omega (nlogn) y al máximo BigO (nlogn)?
Nikhil Verma
1
En términos simples, ¿podemos llamar: límite superior (Big (O)) como el peor de los casos? estrechamente ligado como el caso medio? límite inferior (Omega) como el mejor caso?
Revanth
113

Θ-notación (theta notación) se llama apretado unida porque es más precisa que la notación O y Ω-notación (omega notación).

Si fuera perezoso, podría decir que la búsqueda binaria en una matriz ordenada es O (n 2 ), O (n 3 ) y O (2 n ), y sería técnicamente correcto en todos los casos. Eso es porque la notación O solo especifica un límite superior , y la búsqueda binaria está limitada en el lado alto por todas esas funciones, pero no muy de cerca. Estas estimaciones perezosas serían inútiles .

La notación Θ resuelve este problema al combinar la notación O y la notación Ω. Si digo que la búsqueda binaria es Θ (log n), eso le da información más precisa. Le dice que el algoritmo está limitado en ambos lados por la función dada, por lo que nunca será significativamente más rápido o más lento de lo indicado.

Bill el lagarto
fuente
11
If I were lazy, I could say that binary search on a sorted array is O(n2), O(n3), and O(2n), and I would be technically correct in every case- Parece que la mayoría de las personas en el mundo de la informática son perezosas, ya que todo el mundo habla sobre las complejidades de Big O únicamente.
RBT
If I were lazy, I could say that binary search on a sorted array is O(n2), O(n3), and O(2n), and I would be technically correct in every caseEn caso de que alguien se confunda con esto: Para ese tipo de funciones que no son asintóticamente apretadas se usa la notación de o pequeña. Ejemplo: - El límite 2n ^ 2 = O (n ^ 2) es asintóticamente apretado, pero el límite 2n = O (n ^ 2) no lo es. Leer más: stackoverflow.com/questions/1364444/…
Dragos Strugar
18

Si tiene algo que es O (f (n)), eso significa que hay k , g (n) tales que f (n)kg (n) .

Si tiene algo que es Ω (f (n)), eso significa que hay k , g (n) tales que f (n)kg (n) .

Y si tienes algo con O (f (n)) y Ω (f (n)) , entonces es Θ (f (n) .

El artículo de Wikipedia es decente, aunque un poco denso.

Charlie martin
fuente
Ahora leyendo la familia de notaciones de Bachmann-Landau. Gracias Charlie, fui allí antes, pero regresé sin llegar a su longitud.
Adeel Ansari
Oye, es bueno actualizar las composiciones de doctorado de vez en cuando.
Charlie Martin
Tenga en cuenta que la notación Big-O de Landau no se limita a la complejidad algorítmica.
Charlie Martin
Esto se ve mal. En la primera línea debería leer "Si tiene algo que es O (g (n))", es decir, en glugar de f, y el resto puede dejarse como está. Lo mismo ocurre con la segunda línea: debería ser "Si tienes algo que es Ω (g (n))". ¿Puedes comprobarlo dos veces?
Fabio dice Reincorporar a Monica
Todo el tema está tan desordenado que alguien con ese crédito también podría equivocarse: D Bromas aparte, alguien necesita corregir esta respuesta. Esto confunde a la gente (me hizo mucho).
Rad
5

El límite superior asintótico significa que un algoritmo dado se ejecuta durante la cantidad máxima de tiempo, dependiendo del número de entradas.

Tomemos un algoritmo de clasificación como ejemplo. Si todos los elementos de una matriz están en orden descendente, ordenarlos llevará un tiempo de ejecución de O(n), mostrando la complejidad del límite superior. Si la matriz ya está ordenada, el valor será O(1).

Generalmente, O-notationse utiliza para la complejidad del límite superior.


El límite asintóticamente ajustado (c 1 g (n) ≤ f (n) ≤ c 2 g (n)) muestra la complejidad del límite promedio para una función, que tiene un valor entre los límites del límite (límite superior y límite inferior), donde c 1 y c 2 son constantes.

sameenu
fuente
1
si la matriz está ordenada, el límite seguirá siendo O (n)
Arun Aravind
2
@ArunAravind ¿Puedes explicar por qué?
nbro
3

Las frases tiempo mínimo y tiempo máximo son un poco engañosas aquí. Cuando hablamos de notaciones O grandes, no es el tiempo real lo que nos interesa, es cómo aumenta el tiempo cuando nuestro tamaño de entrada aumenta. Y generalmente es el tiempo promedio o en el peor de los casos del que estamos hablando, no en el mejor de los casos , que generalmente no es significativo para resolver nuestros problemas.

Usando la búsqueda de matriz en la respuesta aceptada a la otra pregunta como ejemplo. El tiempo que se tarda en encontrar un número particular en la lista de tamaño n es n / 2 * alguna_constante en promedio. Si lo trata como una función f(n) = n/2*some_constant, no aumenta más rápido que g(n) = n, en el sentido dado por Charlie. Además, aumenta no más lento que g(n)ninguno de los dos. Por lo tanto, g(n)es en realidad un límite superior y un límite inferior de f(n)en notación Big-O, por lo que la complejidad de la búsqueda lineal es exactamente n , lo que significa que es Theta (n).

En este sentido, la explicación en la respuesta aceptada a la otra pregunta no es del todo correcta, que afirma que O (n) es un límite superior porque el algoritmo puede ejecutarse en tiempo constante para algunas entradas (este es el mejor caso que mencioné anteriormente, que no es realmente lo que queremos saber sobre el tiempo de ejecución).

PolyThinker
fuente
Entonces, ¿podemos decir que Ω es el mejor caso y O es el peor ?. . .. ¿y deberíamos reemplazar los términos como mejor y peor caso, respectivamente?
Adeel Ansari
¿El mejor caso es O (1) para cualquier problema?
Zach Langley
1
@Adeel, no, Theta y O pueden referirse al caso promedio o al peor de los casos. @Zach, bueno, no exactamente. Gracias por señalar eso.
PolyThinker
0

Si fuera perezoso, podría decir que la búsqueda binaria en una matriz ordenada es O (n2), O (n3) y O (2n), y sería técnicamente correcto en todos los casos.

Podemos usar la notación o ("pequeño-oh") para denotar un límite superior que no es asintóticamente apretado. Tanto el gran oh como el pequeño oh son similares. Pero, es probable que big-oh se use para definir el límite superior asintóticamente ajustado.

Finn falta
fuente
0

Precisamente el límite inferior o $ \ omega $ bfon f (n) significa el conjunto de funciones que son asintóticamente menores o iguales af (n) es decir, U g (n) ≤ cf (n) $ \ para todo $ `un≥ n 'Para algunos c, n' $ \ en $ $ \ Bbb {N} $

Y el límite superior o $ \ mathit {O} $ en f (n) significa el conjunto de funciones que son asintóticamente mayores o iguales af (n) que matemáticamente dice,

$ g (n) \ ge cf (n) \ para todos los n \ ge n '$, para algunos c, n' $ \ en $ $ \ Bbb {N} $.

Ahora el $ \ Theta $ es la intersección de los dos escritos arriba

$\theta $

Como si un algoritmo fuera como "exactamente $ \ Omega \ left (f (n) \ right $", entonces es mejor decir que es $ \ Theta \ left (f (n) \ right) $.

O también podemos decir que nos da la velocidad real donde $ \omega $nos da el límite más bajo.

PI Gogole
fuente
-2

La diferencia básica entre

Blockquote

Límite superior asintóticamente y límite superior asintóticamente apretado Asym.upperbound significa un algoritmo dado que puede ejecutarse con una cantidad máxima de tiempo dependiendo del número de entradas, por ejemplo, en el algoritmo de clasificación si todos los elementos de la matriz (n) están en orden descendente y luego para ascenderlos tomará un tiempo de ejecución de O (n) que muestra la complejidad del límite superior, pero si ya están ordenados, tomará ohm (1). Por lo tanto, generalmente usamos la notación "O" para la complejidad del límite superior.

Asym. El límite ajustado muestra el para, por ejemplo, (c1g (n) <= f (n) <= c2g (n)) muestra el límite ajustado de manera que la función tiene el valor entre dos límites (límite superior y límite inferior), dando el caso medio.

BOBBY Z
fuente
2
No debe responder preguntas antiguas si su respuesta no agrega nada a las respuestas ya aceptadas.
alestanis