Не помню подробностей, но задача похожа на попытку доказательства гипотезы Штрассена путём улучшения его же алгоритма умножения матриц 2 на 2.
Вы угадали
Там всё сводится к попытке найти коэффициенты, при которых четыре суммы четырёх произведений дадут четыре искомых значения. Ну а остальное лишь обычные преобразования. Выглядит это так:
При этом, например
, можно получить так:
В таком примере имеем одно умножение для получения
и три умножения для получения
. Для получения же четырёх значений через четыре умножения нужно точно таким же способом скомбинировать четыре результата умножения двух сумм, но с разными коэффициентами. Для начала (если решений нет, то можно расширить суммы до всех элементов всех матриц) можно взять суммы всех элементов из первой матрицы, умножить их на коэффициенты и затем полученную сумму умножить на такую же для второй матрицы:
Перемножение получившихся матриц даст нам вариант подстановки в набор сумм произведений. При изменении коэффициентов
и
мы получим все возможные варианты для подстановки в комбинацию из четырёх умножений, дающую четыре значения
. Но сначала для каждого варианта в комбинации нужно задать дополнительный общий коэффициент
так, что бы сумма произведений давала именно нужный нам
.
Здесь нужно обратить внимание на практическую сторону задачи. Зачем нужно именно четыре умножения? Потому что 8 существующих (или 7 Штрассеновских) - это дорого с точки зрения вычислительных затрат, либо количества кремния. При этом операции сдвига (умножение на
) очень дёшевы, дешевле сложения, которое в свою очередь много дешевле умножения. Так же дешёвым является и умножение на константу, например - умножение на 5 даёт сдвиг на два разряда и одно сложение. Поэтому для практических решений подходит множество коэффициентов
и
, особенно, если они будут степенями двойки. То же самое относится и к коэффициенту
, а так же к коэффициенту при
, который в идеале должен быть равен единице, но так же может быть отрицательным (дешёвая операция смены знака) или степенью двойки (дешёвая операция деления на степень двойки).
Исходя из таких ограничений получаем:
При этом сами значения элементов матриц нам не интересны, нам их находить не нужно, а на получаемые далее уравнения они никак не влияют. Поэтому их более не упоминаем.
Введём множество всех вариантов перемножения коэффициентов и обозначим его
:
Далее берём произвольные четыре элемента множества
и получаем составляющие для комбинирования в виде суммы, с целью получить все
. При этом уберём и из
начальные значения из перемножаемых матриц, поскольку в сумме произведений нас будут интересовать лишь коэффициенты при значениях, а не сами значения.
Из системы
имеем те самые 64 уравнения, о которых говорилось выше. То есть при сложении каждого
имеем сумму произведений трёх коэффициентов - a_i_j, b_k_l, k_m_n. После сложения группируем суммы произведений троек коэффициентов и приравниваем их к нулю в 12 случая и к единице в 4-х случаях (но если
решено тоже перебирать, то получаем ещё четыре переменных).
Вот и всё. Если система имеет решения, то гипотеза Штрассена доказана. Если система решений не имеет, то остаются варианты с пятью и шестью умножениями, а так же с использованием всех возможных элементов в суммах, для получения перебираемых произведений. Все эти варианты выглядят аналогично, но имеют гораздо большее количество уравнений.