¿Qué significa la memoria Θ (1)?


13

Tengo la definición de un algoritmo in situ del profesor, pero no lo entiendo.

Los algoritmos in situ se refieren a algoritmos que funcionan con memoria Θ (1).

Qué significa eso?



44
"Se dice que un algoritmo es un algoritmo in situ, o un algoritmo in situ, si la cantidad adicional de memoria requerida para ejecutar el algoritmo es O (1), es decir, [memoria] no excede una constante, no importa cuán grande sea la entrada . Por ejemplo, heapsort es un algoritmo de clasificación in situ ". en.wikipedia.org/wiki/In_situ#Computer_science
Auberon

@Auberon, se debe agregar que impone un requisito adicional que O ( 1 ) : que la memoria total utilizada en cualquier invocación en particular no cae por debajo de una constante sin importar el tamaño de la entrada. Θ(1)O(1)
Olathe

1
@Olathe Todavía no he visto un algoritmo que use más de cero pero menos que una constante de cualquier recurso
adrianN

@adrianN, el cifrado AES de archivos se realiza con el uso de RAM bajo un límite superior constante. Usted procesa un bloque a la vez, cada bloque necesita la misma cantidad de RAM para procesarse, y la RAM se puede reutilizar de un bloque al siguiente. Un ejemplo más simple es convertir todas las letras de un archivo codificado en ASCII a mayúsculas. Puede leer en un bloque, digamos 4096 bytes, del archivo, procesar esos 4096 bytes, escribir los resultados de ese bloque y reutilizar la misma RAM para el siguiente bloque.
Olathe

Respuestas:


13

Primero, descomprimimos lo que .Θ(1)

Big y big Θ son clases de funciones. Hay una definición formal aquí , pero para los propósitos de esta pregunta, decimos que una función f está en O ( 1 ) si hay una constante c , donde, para todos x , fOΘfO(1)cxf(x)C . Es decir, crece como máximo tan rápido como una función constante.f

Big- no significa mucho para las funciones constantes, porque cuando se describe el tiempo de algoritmo o el uso del espacio, no hay mucho por debajo de la constante. Pero para explicar lo que significa, f Θ ( 1 ) si hay algunas constantes c , d tales que, para todo x , d f ( x ) c . Es decir, fΘfΘ(1)c,dxdf(x)cf crece al menos tan rápido, y como máximo tan rápido, como una función constante.

¿Qué tiene que ver esto con el uso de la memoria? Considere algún algoritmo . Hay alguna función (matemática) que, dada una entrada n , proporciona el uso máximo de memoria de su algoritmo A en cualquier entrada de tamaño n . Llamemos a esta función m e m .AnAnmem

Entonces, ahora combinamos nuestros dos conceptos. Si un algoritmo usa memoria , entonces su función de uso de memoria está en Θ ( 1 ) , lo que significa que existe alguna d , c tal que, para cualquier entrada, la memoria utilizada está entre d y c .Θ(1)Θ(1)d,cdc

En resumen, esto significa que el uso de memoria del algoritmo está en un rango constante, independientemente de la entrada.

Por lo general, la función de memoria no tiene en cuenta la memoria utilizada para almacenar la entrada al algoritmo, ya que de lo contrario el uso de la memoria siempre sería al menos .Θ(n)


"no depende efectivamente de su aporte". - ¿para qué definición de "efectivamente"?
Raphael

Como en, la memoria utilizada puede cambiar dependiendo de la entrada, pero solo dentro de un intervalo fijo. Siéntase libre de editarlo si puede pensar en una mejor redacción.
jmite

dc para cualquier entrada". Tampoco hay necesidad de uno.
Raphael

ejemplos ilustrativos simples serían útiles
vzn

8

Complejidad espacial constante del algoritmo

La cantidad de memoria que usa su algoritmo es independiente de la entrada.

Se dice que un algoritmo tiene una complejidad espacial constante si utiliza una cantidad fija de espacio. Puede ser10 variables o una matriz de exactamente 10 elementos.

However, In-situ algorithms perform their intended function on the input itself and thus require very little or no extra space. The input is usually overwritten by the output as the algorithm executes. (ref)

In-situ algorithms do not consider the space occupied by the input and take only the extra space into account, while calculating space complexity.


3
Esto es incorrecto. Por ejemplo, puede ser que, para un algoritmo particular, las entradas de menos de tres caracteres usen 5 bytes de memoria, mientras que todas las entradas más grandes usan un millón de bytes de memoria. El uso de memoria de ese algoritmo definitivamente no sería independiente de la entrada, pero definitivamente usaríaΘ(1)espacio. Para corregir la declaración, existen límites superiores e inferiores constantes para el uso de la memoria que son independientes de la entrada.
Olathe

@Olathe El espacio ocupado por cada entrada en términos de bytes y el número de entrada en términos de conteo no son dos conceptos diferentes.
Prateek

0

That means that additional memory amount required for algorithm is not greater than some constant amount that doesn't depend on input size for sufficiently big input.


2
It's also not less than some (perhaps other) constant amount, since Θ is the intersection of O and Ω. With another example, O(x2) allows functions like f(x)=3x2 and also f(x)=x. On the other hand, Θ(x2) is more strict, allowing only functions of the same complexity like f(x)=3x2 but disallowing those of lesser complexity like f(x)=x.
Olathe
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.