i |
Ende Исправлена опечатка в формуле. |
Добрый день,
есть задача поиска максимума по двум дискретным параметрам, для которой есть очевидное решение с квадратичной асимптотикой. Хочется придумать что-то, чтобы решать эту задачу быстрее.
Итак, сама задача:
Имеется симметричная не отрицательно определенная малоранговая матрица

причем каждая строка

нормирована на единицу, то есть

и

,
и имеется вектор

, мне надо найти максимум по всем индексам вида

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

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

обычно равен около 10, а размерность (

), то есть если найти какое-то решение, то можно сильно ускорить поиск.
Покомпонентная максимизация часто тоже решает хорошо задачу, то есть я фиксирую, например,

и перебираю все возможные

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