Límite de memoria la función
Límite de memoria se refiere a una situación en la cual el tiempo para completar un determinado problema computacional se decide principalmente por la cantidad de memoria necesaria para sostener datos. En otras palabras, es el factor limitante de resolver un problema dado el velocidad de acceso a memoria. La aplicación del límite de memoria funciones podrían para ser valiosos en la prevención de spam, que se ha convertido en un problema de proporciones epidémicas en el Internet.
Contenido
- 1 Memoria obligado funciones y memoria
- 2 Utilizar memoria obligado funciones para evitar el spam
- 3 Véase también
- 4 Referencias
- 5 Enlaces externos
Memoria obligado funciones y memoria
Memoria había ligada funciones y funciones de la memoria están relacionadas que incluyen acceso a memoria extensa, pero existe una distinción entre los dos.
Funciones de memoria uso un programación dinámica técnica llamada memoization con el fin de aliviar la ineficiencia del recursión Eso podría ocurrir. Se basa en la simple idea de calcular y almacenar soluciones a subproblemas para que las soluciones pueden ser reutilizadas posteriormente sin volver a calcular el subproblemas otra vez. El ejemplo más conocido que se aprovecha de memoization es un algoritmo que calcula la Números de Fibonacci. Los siguientes pseudocódigo ilustra un algoritmo que utiliza memoization, que funciona en lineal Tiempo de CPU:
Fibonacci (n) {} para i = 0 to n-1 resultados [i] = -1 / / -1 significa indefinido retorno Fibonacci_Results (resultados, n); } {} Fibonacci_Results (resultados, n) if (resultados [n]! = -1) //check si ya ha sido resuelto antes retorno resultados [n] if (n == 0) val = 0 if más (n == 1) val = 1 más Val = Fibonacci_Results (resultados, n -2) + Fibonacci_Results (n -1, resultados) resultados [n] = val retorno Val}
Comparar lo anterior con un algoritmo que utiliza recursividad, que funciona en exponencial Tiempo de CPU:
Recursive_Fibonacci (n) {} if (n == 0) retorno 0 if más (n == 1) retorno 1 más retorno Recursive_Fibonacci (n -1) + Recursive_Fibonacci (n -2)}
Mientras que el algoritmo recursivo es más simple y más elegante que el algoritmo que utiliza memoization, este último tiene una menor complejidad de tiempo que el anterior. El término "función de memoria obligado" ha surgido recientemente y se utiliza principalmente para describir una función que utiliza XOR y consiste en una serie de cálculos en el cual cada cómputo depende el cómputo anterior. Considerando que las funciones de memoria han sido un actor importante en la mejora de la complejidad del tiempo, memoria consolidadas funciones han visto mucho menos aplicaciones. Recientemente[¿Cuándo?], sin embargo, los científicos han propuesto un método usando memoria obligado funciones como un medio para desalentar a los spammers de abusar de los recursos, que podrían ser un avance muy importante en esa zona.
Utilizar memoria obligado funciones para evitar el spam
En 1992, los investigadores de IBM Cynthia Dwork y Moni Naor publicó un libro titulado Fijación de precios mediante la transformación o la lucha contra el correo basura, sugiriendo la posibilidad de utilizar CPU bound funciones para disuadir a los abusadores de enviar spam. El esquema se basó en la idea de que los usuarios de computadoras son mucho más propensos a abusar de un recurso si el costo de abusar del recurso es insignificante: la razón subyacente de spam se ha vuelto tan galopante es que enviar un correo electrónico tiene coste minúsculo para los spammers.
Proponen Dwork y Naor spam podría reducirse mediante la inyección de un costo adicional en forma de una cara CPU cómputo: CPU bound funciones que consumen recursos de la CPU en la máquina del remitente para cada mensaje, evitando así grandes cantidades de spam de ser enviado en un corto período. El esquema básico que protege contra los abusos es como sigue:
Dejar S ser remitente, R ser receptor, y M ser un correo electrónico. If R ha acordado previamente recibir correo electrónico desde S, entonces M se transmite en la forma habitual. De lo contrario, S calcula una función G(M) y envía (M, G(M)) Para R. R Comprueba si lo que recibe de S es de la forma (M, G(M)). En caso afirmativo, R acepta M. De lo contrario, R rechaza M. La figura de la derecha representa a casos en los que hubo no hay acuerdos previos:
La función G() seleccionado es tal que la verificación por R es relativamente rápido (tomando un milisegundo) y que el cómputo de S es un poco lento (que involucra al menos varios segundos). Por lo tanto, S serán disuadidos de envío M a varios destinatarios con sin acuerdos previos: el costo en términos de tiempo y recursos de computación de computación G() repetidamente se convertirá en muy prohibitivos para un spammer que pretende enviar millones de correos electrónicos.
El principal problema de usar el esquema anterior es mucho más rápido que lento CPUs eso cálculo rápido de CPUs. Sistemas informáticos más, high-end también cuentan con sofisticados tuberías y otras características ventajosas que facilitan los cálculos. Como resultado, un spammer con un sistema de estado-of-the-art apenas se verán afectado por dicha disuasión, mientras que un usuario típico con un sistema de mediocre se verán afectado negativamente. Si un cálculo tarda unos segundos en un nuevo PC, puede tardar un minuto en un viejo PC y varios minutos una PDA, que puede ser una molestia para los usuarios de PC antiguo, pero probablemente inaceptable para los usuarios de PDAs. La disparidad en la velocidad de CPU cliente constituye uno de los obstáculos destacados para su adopción generalizada de cualquier esquema basado en una función de CPU de destino. Por lo tanto, los investigadores están preocupados con encontrar las funciones que la mayoría de sistemas informáticos evaluará en sobre la misma velocidad, para que los sistemas de gama alta pueden evaluar estas funciones un poco más rápidas que los sistemas de gama bajo (2 - 10 veces más rápido, pero no 10-100 más rápido) como las disparidades CPU podrían implicar. Estas relaciones son"igualitaria"suficiente para los usos previstos: las funciones son efectivas para disuadir a los abusos y no añadir un retraso prohibitivo en interacciones legítimas, a través de una amplia gama de sistemas.
El nuevo enfoque igualitario es contar con funciones de memoria limitado. Como se indicó antes, una memoria consolidados es una función cuyo tiempo de cómputo está dominado por el tiempo pasado acceso a memoria. Una memoria función dependiente accede a lugares de memoria en una extensa región de manera impredecible, en tal una manera que el uso cachés no son eficaces. En los últimos años, la velocidad de la CPU ha crecido drásticamente, pero ha habido comparativamente pequeños progresos en el desarrollo más rápida de la memoria principal. Puesto que el proporciones de la memoria latencias de máquinas construidas en los últimos cinco años normalmente no es mayor que dos, y casi siempre menos de cuatro, la función de memoria obligado será igualitaria a la mayoría de los sistemas en el futuro previsible.
Véase también
- Sistema de prueba-de-trabajo
- CPU bound
- I/O bound
- Memoria
- Programación dinámica
- Memoization
- Spam
- Recursión
- Subestructura óptima
- Arquitectura de computadores
Referencias
- Abadi, M., Burrows, M., Manasse, M. & Wobber, T. (2005, mayo). Moderadamente duras, memoria-limitan funciones. ACM Transactions on Internet Technology
- Dwork, C., Goldberg, A. y Naor, M. (2003). Funciones de memoria-limite para combatir el Spam. Avances en criptología
- Dwork, C. & Naor, M. (1992). Fijación de precios mediante la transformación o la lucha contra el correo basura Avances en criptología
- Hellman, M. E. (1980). Un criptoanalítico tiempo-Memory Trade-Off. IEEE Transactionson teoría de la información
Enlaces externos
- Implementación de una función de memoria Bound
- Arquitectura de computadores
- Cómo funciona la memoria de la computadora
- Programación dinámica
- CPU Bound vs I/O Bound
- FTC-SPAM