Jump to content

Функция с привязкой к памяти

Ограничение памяти относится к ситуации, в которой время выполнения данной вычислительной задачи определяется в первую очередь объемом свободной памяти, необходимой для хранения рабочих данных . В этом отличие от алгоритмов, привязанных к вычислениям , где решающим фактором является количество элементарных шагов вычислений.

Границы памяти и вычислений иногда могут быть сопоставлены друг с другом, например, путем сохранения и повторного использования предварительных результатов или использования справочных таблиц .

Функции, связанные с памятью, и функции памяти

[ редактировать ]

, связанные с памятью Функции , и функции памяти связаны тем, что обе требуют обширного доступа к памяти, но между ними существует различие.

Функции памяти используют метод динамического программирования, называемый мемоизацией , чтобы снизить неэффективность рекурсии , которая может возникнуть. Он основан на простой идее расчета и сохранения решений подзадач, чтобы их можно было повторно использовать позже без повторного пересчета подзадач . Самый известный пример использования мемоизации — алгоритм вычисления чисел Фибоначчи . Следующий псевдокод использует рекурсию и мемоизацию и выполняется за линейное время процессора :

 Fibonacci (n)
 {
     for i = 0 to n-1
         results[i] = -1  // -1 means undefined

     return Fibonacci_Results (results, n);
 }

 Fibonacci_Results (results, n)
 {
     if (results[n] != -1)  // If it has been solved before,
         return results[n]  // look it up.
     if (n == 0)
         val = 0
     else if (n == 1)
         val = 1
     else
         val = Fibonacci_Results(results, n-2 ) + Fibonacci_Results(results, n-1)
     results[n] = val  // Save this result for re-use.

     return val
 }

Сравните приведенное выше с алгоритмом, который использует только рекурсию и работает за экспоненциальное время процессора:

 Recursive_Fibonacci (n)
 {
     if (n == 0)
         return 0
     if (n == 1)
         return 1

     return Recursive_Fibonacci (n-1) + Recursive_Fibonacci (n-2)
 }

Хотя алгоритм, использующий только рекурсию, проще и элегантнее, чем алгоритм, использующий рекурсию и мемоизацию, последний имеет значительно меньшую временную сложность, чем первый.

Термин «функция, связанная с памятью» появился совсем недавно и используется в основном для описания функции, которая использует XOR и состоит из серии вычислений, в которых каждое вычисление зависит от предыдущего вычисления. В то время как функции памяти уже давно играют важную роль в улучшении временной сложности, функции, связанные с памятью, нашли гораздо меньше применений. Недавно [ когда? ] Однако ученые предложили метод, использующий функции, привязанные к памяти, как средство предотвращения злоупотребления ресурсами спамерами, что может стать крупным прорывом в этой области.

Использование функций с привязкой к памяти для предотвращения спама

[ редактировать ]

Функции, связанные с памятью, могут быть полезны в системе доказательства работы , которая может сдерживать спам , который стал проблемой масштабов эпидемии в Интернете .

В 1992 году ученые-исследователи IBM Синтия Дворк и Мони Наор опубликовали на CRYPTO 1992 статью под названием « Ценообразование через обработку или борьбу с нежелательной почтой» . [1] предлагая возможность использования функций, связанных с процессором, для предотвращения рассылки спама злоумышленниками. Схема была основана на идее, что пользователи компьютеров с гораздо большей вероятностью будут злоупотреблять ресурсом, если стоимость злоупотребления ресурсом незначительна: основная причина, по которой спам стал таким безудержным, заключается в том, что отправка электронного письма обходится спамерам совсем незначительно.

Дворк и Наор предположили, что спам можно сократить за счет дополнительных затрат в виде дорогостоящих вычислений ЦП : функции, привязанные к ЦП, будут потреблять ресурсы ЦП на компьютере отправителя для каждого сообщения, тем самым предотвращая отправку огромных объемов спама в одном сообщении. короткий период.

Основная схема, защищающая от злоупотреблений, выглядит следующим образом:
Даны отправитель, получатель и сообщение электронной почты. Если Получатель заранее дал согласие на получение электронного письма от Отправителя, то Сообщение передается обычным способом. В противном случае Отправитель вычисляет некоторую функцию G(Сообщение) и отправляет (Сообщение, G(Сообщение)) Получателю. Получатель проверяет, имеет ли то, что он получает от отправителя, форму (Сообщение, G(Сообщение)) . Если да, Получатель принимает Сообщение. В противном случае Получатель отклоняет Сообщение.

Функция G() выбирается таким образом, чтобы проверка Получателем была относительно быстрой (например, занимала миллисекунду) и чтобы вычисления Отправителя были несколько медленными (занимающими по меньшей мере несколько секунд). Таким образом, Отправителю будет не рекомендуется отправлять сообщение нескольким получателям без каких-либо предварительных соглашений: затраты времени и вычислительных ресурсов на повторное вычисление G() станут непомерно высокими для спамера, который намеревается отправить многие миллионы электронных писем. .

Основная проблема использования приведенной выше схемы заключается в том, что быстрые процессоры выполняют вычисления намного быстрее, чем медленные. Кроме того, компьютерные системы более высокого класса также имеют сложные конвейеры и другие полезные функции, облегчающие вычисления. В результате спамер с современной системой вряд ли пострадает от такого сдерживания, в то время как обычный пользователь с посредственной системой пострадает. Если вычисление занимает несколько секунд на новом ПК , оно может занять минуту на старом ПК и несколько минут на КПК , что может быть неприятно для пользователей старых ПК, но, вероятно, неприемлемо для пользователей КПК. Несоответствие в скорости клиентского ЦП представляет собой одно из серьезных препятствий на пути широкого внедрения любой схемы, основанной на функции, привязанной к ЦП. Поэтому исследователи озабочены поиском функций, которые большинство компьютерных систем будут оценивать примерно с одинаковой скоростью, чтобы высокопроизводительные системы могли оценивать эти функции несколько быстрее, чем младшие системы (в 2–10 раз быстрее, но не в 10–100 раз). быстрее), как это может подразумевать из-за различий в процессорах. Эти соотношения « эгалитарный » достаточно для предполагаемых применений: эти функции эффективны в предотвращении злоупотреблений и не приводят к чрезмерной задержке законных взаимодействий в широком диапазоне систем.

Новый эгалитарный подход основан на функциях, связанных с памятью. Как говорилось ранее, функция, привязанная к памяти, — это функция, время вычисления которой во многом зависит от времени, затрачиваемого на доступ к памяти. Функция, привязанная к памяти, получает доступ к местам в большой области памяти непредсказуемым образом, поэтому использование кэшей неэффективно. В последние годы скорость процессора резко выросла, но прогресс в разработке более быстрой основной памяти был сравнительно небольшим. Поскольку коэффициент машин задержки памяти , построенных за последние пять лет, обычно не превышает двух и почти всегда меньше четырех, функция, связанная с памятью, в обозримом будущем будет равноправной для большинства систем.

См. также

[ редактировать ]
  1. ^ Дворк, Синтия ; Наор, Мони (1992). «Ценообразование посредством обработки или борьбы с нежелательной почтой» . Достижения криптологии — КРИПТО' 92 . Конспекты лекций по информатике. Том. 740. стр. 139–147. дои : 10.1007/3-540-48071-4_10 . ISBN  978-3-540-57340-1 . ( обновленная версия того же )
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 928da003298ef01cdf2a19cace737e50__1722873240
URL1:https://arc.ask3.ru/arc/aa/92/50/928da003298ef01cdf2a19cace737e50.html
Заголовок, (Title) документа по адресу, URL1:
Memory-bound function - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)