#algorithm #optimization #time-complexity #computation-theory #minimization
#алгоритм #оптимизация #временная сложность #теория вычислений #минимизация
Вопрос:
Допустим, у меня есть N одномерных функций с положительным значением. Требуется ли больше вычислений функций для числового минимизатора, чтобы минимизировать их произведение в N-мерном пространстве, а не выполнять N отдельных одномерных минимизаций?
Если да, есть ли интуитивный способ понять это? Почему-то я чувствую, что обе проблемы должны быть равны по сложности.
Ответ №1:
Минимизация их продукта — это минимизация суммы их журналов. Существует множество алгоритмов для минимальной (максимальной) имитации N-мерных функций. Одним из них является старый резервный OPTIF9. Если вам приходится использовать жесткие ограничения, то есть вы минимизируете в рамке, это может быть намного сложнее, но обычно вы можете этого избежать.
Комментарии:
1. Но быстрее ли решить проблему в N-d, чем выполнять N отдельных одномерных минимизаций? И если да, то почему?
2. @Alex, если проблема разрешима, то конечно. В общем, вы выполняете N-мерную оптимизацию, если измерения взаимосвязаны. Если решение для каждого измерения i зависит от решений для некоторых или всех других измерений. Например, в моей работе по фармакометрии, если у вас есть множество образцов крови, взятых с течением времени после приема дозы, вам нужно оценить как объем крови, так и скорость выведения почками. Эти два измерения взаимосвязаны. Вы не можете оценить их независимо.
Ответ №2:
Сложность не линейна по количеству переменных. Обычно n
небольшие проблемы лучше, чем одна большая проблема. Или, другими словами: увеличение задачи в два раза (с точки зрения переменных) сделает ее решение более чем в два раза дороже.
В некоторых особых случаях может быть несколько полезно объединить несколько задач, в основном из-за фиксированных накладных расходов (некоторые решатели многое делают перед фактическим началом итерации).
Комментарии:
1. Что управляет этим нелинейным масштабированием, особенно в случае разделяемой функции?
2. Решатели не знают, что проблема разделима, поэтому они просто рассматривают ее как большую N-мерную задачу. Ни один из известных мне алгоритмов не обладает линейной сложностью. Простым примером является просто решение
Ax=b
: этоO(n^3)
.3. Мое внутреннее ощущение заключалось в том, что каким-то образом выполнение одного шага вдоль N-го градиента приведет вас к тому же месту, что и выполнение N одномерных шагов, которые вы сделали бы при минимизации отдельных функций (ЕСЛИ N-я функция является произведением N одномерных функций).