Jump to content

Специализация по алгоритмам времени выполнения

В информатике . специализация алгоритмов времени выполнения — это методология создания эффективных алгоритмов для дорогостоящих вычислительных задач определенного рода Методология берет свое начало в области автоматизированного доказательства теорем , а точнее, в проекте доказательства теорем Vampire .

Идея основана на использовании частичной оценки при оптимизации перевода программы. Многие основные операции в средствах доказательства теорем демонстрируют следующую закономерность.Предположим, что нам нужно выполнить некоторый алгоритм в ситуации, когда значение фиксируется для потенциально многих различных значений . Чтобы сделать это эффективно, мы можем попытаться найти специализацию за каждое фиксированное , т. е. такой алгоритм , что выполнение эквивалентно выполнению .

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

Отличие от частичной оценки

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

Ключевое различие между специализацией во время выполнения и частичной оценкой заключается в том, что значения на котором является специализированным, не известны статически, поэтому специализация происходит во время выполнения .

Есть и важное техническое отличие. Частичная оценка применяется к алгоритмам, явно представленным в виде кодов на каком-либо языке программирования. Во время выполнения нам не нужно какое-либо конкретное представление . Нам остается только представить когда мы программируем процедуру специализации.Все, что нам нужно, это конкретное представление специализированной версии. . Это также означает, что мы не можем использовать какие-либо универсальные методы специализации алгоритмов, что обычно имеет место при частичном вычислении. Вместо этого нам нужно запрограммировать процедуру специализации для каждого конкретного алгоритма. . Важным преимуществом этого является то, что мы можем использовать некоторые мощные специальные приемы, использующие особенности и представление и , которые недоступны никаким универсальным методам специализации.

Специализация по компиляции

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

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

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

Интерпретация осуществляется путем выборки инструкций в определенном порядке с определением их типа.и выполнение действий, связанных с этим типом. В C или C++ мы можем использовать оператор переключения для связи некоторые действия с разными тегами инструкций. Современные компиляторы обычно довольно эффективно компилируют оператор переключения с целочисленными метками из узкого диапазона, сохраняя адрес оператора, соответствующий значению. в -я ячейка специального массива. Это можно использоватьвзяв значения для тегов инструкций из небольшого интервала целых чисел.

Специализация в области данных и алгоритмов

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

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

См. также

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

Дальнейшее чтение

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: fe108919202df71c2cfafd29ee4ef648__1699144800
URL1:https://arc.ask3.ru/arc/aa/fe/48/fe108919202df71c2cfafd29ee4ef648.html
Заголовок, (Title) документа по адресу, URL1:
Run-time algorithm specialization - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)