Если у меня есть две матрицы и с размерами и , соответственно, и я хочу вычислить , более эффективно сначала переписать выражение как и только потом оценивать численно, потому что имеет размер а имеет размер .
Я хочу решить обобщенную версию этой проблемы. Существует ли достаточно эффективный алгоритм (не грубая сила) для оптимизации выражения, содержащего:
- Свободные матричные переменные известных размеров
- Произведения произвольных подвыражений
- Произвольные подвыражения, возведенные в естественную силу
... так что для числовой оценки требуется меньше всего работы после замены переменных свободной матрицы конкретными значениями матрицы?
Задача умножения цепочки матриц является частным случаем моей проблемы.
Редактировать:
Это предварительный ответ. Это кажется мне интуитивно правильным, но у меня нет доказательств, что это правильно. Если это окажется правильным, я все еще заинтересован в доказательстве. (Если это не правильно, пожалуйста, исправьте меня.)
Для каждого произведения, возведенного в степень, скажем, , рассмотрим каждую циклическую перестановку факторов:
- ...
... рекурсивно. Каждая мощность должна быть рассчитана с использованием возведения в степень путем возведения в квадрат (очевидно), а все остальные произведения должны быть рассчитаны с использованием оптимального порядка, возвращаемого алгоритмом умножения цепочки матриц.
Редактировать:
Идея, изложенная в моем предыдущем редактировании, все еще неоптимальна. Алгоритм возведения в степень по квадрату фактически оценивает выражения вида или A n K , где K не обязательно является единичной матрицей. Но мой алгоритм не учитывает возможность использования возведения в степень при помощи алгоритма возведения в квадрат с K, не равным единичной матрице.