В информатике алгоритмом anytime является алгоритм , который может вернуть действительное решение проблемы, даже если он был прерван до того, как закончился. Ожидается, что алгоритм будет находить все лучшие и лучшие решения, чем дольше он работает.
Большинство алгоритмов работают до завершения: они предоставляют один ответ после выполнения некоторого фиксированного количества вычислений. Однако в некоторых случаях пользователь может захотеть завершить алгоритм до его завершения. Например, объем требуемых вычислений может быть значительным, и вычислительные ресурсы могут быть перераспределены. Большинство алгоритмов либо работают до завершения, либо не предоставляют никакой полезной информации о решении. Однако алгоритмы Anytime способны возвращать частичный ответ, качество которого зависит от объема вычислений, которые они смогли выполнить. Ответ, сгенерированный алгоритмами Anytime, является приближением правильного ответа.
Алгоритм anytime также может называться «прерываемым алгоритмом». Они отличаются от алгоритмов контракта, которые должны объявлять время заранее; в алгоритме anytime процесс может просто объявить, что он завершается. [1]
Целью алгоритмов anytime является предоставление интеллектуальным системам возможности выдавать результаты лучшего качества в обмен на время выполнения. [2] Они также должны быть гибкими во времени и ресурсах. [3] Они важны, потому что алгоритмам искусственного интеллекта или ИИ может потребоваться много времени для завершения результатов. Этот алгоритм разработан для выполнения за более короткий промежуток времени. [3] Кроме того, они предназначены для лучшего понимания того, что система зависит и ограничена своими агентами и тем, как они работают совместно. [3] Примером является итерация Ньютона-Рафсона , применяемая для нахождения квадратного корня числа. [4] Другим примером, который использует алгоритмы anytime, являются задачи траектории, когда вы нацеливаетесь на цель; объект движется в пространстве, ожидая завершения алгоритма, и даже приблизительный ответ может значительно повысить его точность, если дать его заранее. [3]
Что делает алгоритмы anytime уникальными, так это их способность возвращать множество возможных результатов для любых заданных входных данных. [2] Алгоритм anytime использует множество четко определенных показателей качества для отслеживания прогресса в решении проблем и распределенных вычислительных ресурсов. [2] Он продолжает искать наилучший возможный ответ за то количество времени, которое ему дано. [5] Он может не работать до завершения и может улучшить ответ, если ему позволить работать дольше. [6] Это часто используется для больших задач с множеством решений. [7] Это, как правило, не дает полезной информации, если ему не позволить завершиться. [8] Хотя это может показаться похожим на динамическое программирование , разница в том, что он настраивается с помощью случайных корректировок, а не последовательных.
Алгоритмы Anytime разработаны таким образом, что им можно приказать остановиться в любой момент и они вернут наилучший результат, который они нашли до сих пор. [3] Вот почему он называется прерываемым алгоритмом. Некоторые алгоритмы Anytime также сохраняют последний результат, так что если им дать больше времени, они могут продолжить с того места, где остановились, чтобы получить еще лучший результат. [3]
Когда решающий должен действовать, должна быть некоторая двусмысленность. Также должна быть некоторая идея о том, как разрешить эту двусмысленность. Эта идея должна быть транслируема в диаграмму состояния к действию. [7]
Профиль производительности оценивает качество результатов на основе входных данных и количества времени, выделенного алгоритму. [3] Чем лучше оценка, тем скорее будет найден результат. [3] Некоторые системы имеют большую базу данных, которая дает вероятность того, что выход является ожидаемым выходом. [3] Важно отметить, что один алгоритм может иметь несколько профилей производительности. [9] В большинстве случаев профили производительности строятся с использованием математической статистики с использованием репрезентативных случаев. Например, в задаче о коммивояжере профиль производительности был сгенерирован с использованием определенной пользователем специальной программы для генерации необходимой статистики. [1] В этом примере профиль производительности представляет собой отображение времени на ожидаемые результаты. [1] Это качество можно измерить несколькими способами:
Первоначальное поведение: в то время как некоторые алгоритмы начинают с немедленных догадок, другие используют более расчетливый подход и имеют начальный период, прежде чем делать какие-либо догадки. [9]
В литературе описано много известных алгоритмов anytime. Перечислим некоторые из них.