Постановка задачи:
Допустим, у нас есть набор ядерных квадратных матриц = {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++, которую я могу использовать для поиска решения? Если нет, то есть ли какой-либо известный алгоритм/эвристика?
П.С. это не вопрос домашнего задания, или теоретический вопрос, или что-то еще. Это реальная проблема, которую мне нужно решить для побочного проекта, над которым я работаю на своей основной работе.