Как преобразовать матрицу в произведение ядерных матриц?

Постановка задачи:

Допустим, у нас есть набор ядерных квадратных матриц = {K1, K2, .. , Кн}. Данный матрица A найти произведение с наименьшим количеством матрицы умножение, которое дает: A = Ki * Kj * ... * Kz

Пример:

Say we have these two matrices in the set of Kernel matrices:
K1 = (1 2)    K2 = (5 6)
     (3 4)         (7 8)

Then we have a solution for A=K1*K2=(19 22) and also for B=K1*K1*K2=(105 122)
                                    (43 50)                         (229 266)

Существует ли какая-либо существующая библиотека C или C++, которую я могу использовать для поиска решения? Если нет, то есть ли какой-либо известный алгоритм/эвристика?

П.С. это не вопрос домашнего задания, или теоретический вопрос, или что-то еще. Это реальная проблема, которую мне нужно решить для побочного проекта, над которым я работаю на своей основной работе.

8
задан zr. 29 May 2012 в 07:45
поделиться