2016-02-16 7 views
1

Есть ли набор тестовых функций для измерения производительности (с точки зрения скорости, возможно, с высокой точностью торгуется) заданного алгоритма, задачей которого является найти/глобальный минимум вещественнозначная функция над заданным интервалом? В конце концов: эта проблема является открытой проблемой или существует теоретический лучший алгоритм для такой задачи?Бенчмарк для быстрых алгоритмов, задачей которых является минимизация функций.

EDIT: нет никаких ограничений на функцию, кроме того, что она должна быть ограничена.

+1

«нет никаких ограничений на функцию»: это нереалистичное утверждение. В таком случае единственным подходом является исчерпывающий поиск. Будьте готовы к оценке функций 2^64. –

ответ

1

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

Рассмотрим семейство вещественных функций, определенных на [0..1]:

f (x0) = y0 
f (x) = 0 for all other x in [0..1] 

Для любого фиксированного x0 in [0..1] и y0 < 0, то минимум на x0. Тем не менее, любой алгоритм без предварительного знания x0 будет с трудом находить его.

+0

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

+0

@marcotrevi Да: возможно, для непрерывных, гладких или [Липшиц] (https://en.wikipedia.org/wiki/Lipschitz_continuity) функций, вопрос имеет смысл. – Gassa

+0

@marcotrevi Возможно, вам придется определить домен, как и реальные значения в [0..1]. – Gassa

1

Возьмите функцию, которая равна 0 в каждой точке, где вы оцениваете f (x), и c для неизвестного c> 0 для каждой точки, где вы не оцениваете f (x). Если вы хотите, чтобы он был непрерывным, то если x находится между a и b, где a и b - соседние точки, где вы оценили f (a) и f (b), то f переходит в линейный от f (a) = 0 до f ((a + b)/2) = c и обратно линейно до f (b) = 0.

Очевидно, что каждый раз, когда вы оцениваете f (x), вы получаете нуль. Поскольку вы никогда ничего не оцениваете, ваш алгоритм не может заключить, что глобальный максимум - это ничего, кроме нуля, что неверно.

+0

Я подозреваю, что эта функция математически не определена, так как она зависит от алгоритма ... –

+1

@marcotrevi Мы можем это перефразировать. 1. Возьмем любой алгоритм. 2. Подождите, пока он не завершит выполнение. 3. * Тогда *, существует функция (одна такая функция определена в ответе), на которой выход алгоритма неверен. Поэтому нет «правильного» алгоритма. – Gassa

 Смежные вопросы

  • Нет связанных вопросов^_^