Не помню подробностей, но задача похожа на попытку доказательства гипотезы Штрассена путём улучшения его же алгоритма умножения матриц 2 на 2.
Вы угадали
Там всё сводится к попытке найти коэффициенты, при которых четыре суммы четырёх произведений дадут четыре искомых значения. Ну а остальное лишь обычные преобразования. Выглядит это так:
![$$\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}\cdot \begin{bmatrix}
e & f \\
g & h
\end{bmatrix}=\begin{bmatrix}
ae+bg=r_1 & af+bh=r_2 \\
ce+dg=r_3 & cf+dh=r_4
\end{bmatrix}$$ $$\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}\cdot \begin{bmatrix}
e & f \\
g & h
\end{bmatrix}=\begin{bmatrix}
ae+bg=r_1 & af+bh=r_2 \\
ce+dg=r_3 & cf+dh=r_4
\end{bmatrix}$$](https://dxdy-03.korotkov.co.uk/f/a/3/c/a3cc7dc9ddf8c7642964a275ad3d948a82.png)
При этом, например
![$ae+bg$ $ae+bg$](https://dxdy-04.korotkov.co.uk/f/3/b/7/3b7c450221ee8b12c7e763d144c241ff82.png)
, можно получить так:
![$(a+b)(e+g)=ae+be+ag+bg=p_x$ $(a+b)(e+g)=ae+be+ag+bg=p_x$](https://dxdy-01.korotkov.co.uk/f/0/0/6/006572cbe85d7db8651a5abce1a621a382.png)
![$p_x-be-ag=ae+bg=r_1$ $p_x-be-ag=ae+bg=r_1$](https://dxdy-01.korotkov.co.uk/f/0/f/b/0fbc11eb21c55f44e7bb29a207301a3182.png)
В таком примере имеем одно умножение для получения
![$p_x$ $p_x$](https://dxdy-01.korotkov.co.uk/f/8/e/c/8ec35ba8dc7d424198d79d73a2d5c22582.png)
и три умножения для получения
![$r_1$ $r_1$](https://dxdy-02.korotkov.co.uk/f/1/4/3/14330ec69840636094d5efd1aaa8497c82.png)
. Для получения же четырёх значений через четыре умножения нужно точно таким же способом скомбинировать четыре результата умножения двух сумм, но с разными коэффициентами. Для начала (если решений нет, то можно расширить суммы до всех элементов всех матриц) можно взять суммы всех элементов из первой матрицы, умножить их на коэффициенты и затем полученную сумму умножить на такую же для второй матрицы:
![$$\begin{bmatrix}
a & b & c & d
\end{bmatrix}\cdot \begin{bmatrix}
a_1 \\ a_2 \\ a_3 \\ a_4
\end{bmatrix}=a_1a+a_2b+a_3c+a_4d$$ $$\begin{bmatrix}
a & b & c & d
\end{bmatrix}\cdot \begin{bmatrix}
a_1 \\ a_2 \\ a_3 \\ a_4
\end{bmatrix}=a_1a+a_2b+a_3c+a_4d$$](https://dxdy-02.korotkov.co.uk/f/1/d/1/1d1f80ff49cb321d14ac29be553e5f7e82.png)
![$$\begin{bmatrix}
e & f & g & h
\end{bmatrix}\cdot \begin{bmatrix}
b_1 \\ b_2 \\ b_3 \\ b_4
\end{bmatrix}=b_1e+b_2f+b_3g+b_4h$$ $$\begin{bmatrix}
e & f & g & h
\end{bmatrix}\cdot \begin{bmatrix}
b_1 \\ b_2 \\ b_3 \\ b_4
\end{bmatrix}=b_1e+b_2f+b_3g+b_4h$$](https://dxdy-04.korotkov.co.uk/f/b/b/3/bb39f25f34c5d8690c8e8985bb17522f82.png)
Перемножение получившихся матриц даст нам вариант подстановки в набор сумм произведений. При изменении коэффициентов
![$a_i$ $a_i$](https://dxdy-03.korotkov.co.uk/f/6/5/e/65ed4b231dcf18a70bae40e50d48c9c082.png)
и
![$b_j$ $b_j$](https://dxdy-03.korotkov.co.uk/f/2/0/2/2020a79c00e140ee1a054ecab57a289c82.png)
мы получим все возможные варианты для подстановки в комбинацию из четырёх умножений, дающую четыре значения
![$r_k$ $r_k$](https://dxdy-03.korotkov.co.uk/f/e/e/d/eed77c5296d3cd11c33cd86d1e14efef82.png)
. Но сначала для каждого варианта в комбинации нужно задать дополнительный общий коэффициент
![$k_i_j$ $k_i_j$](https://dxdy-03.korotkov.co.uk/f/e/d/5/ed5f62a82a7e74143618df75b8c4d4a782.png)
так, что бы сумма произведений давала именно нужный нам
![$r_k$ $r_k$](https://dxdy-03.korotkov.co.uk/f/e/e/d/eed77c5296d3cd11c33cd86d1e14efef82.png)
.
Здесь нужно обратить внимание на практическую сторону задачи. Зачем нужно именно четыре умножения? Потому что 8 существующих (или 7 Штрассеновских) - это дорого с точки зрения вычислительных затрат, либо количества кремния. При этом операции сдвига (умножение на
![$2^x$ $2^x$](https://dxdy-04.korotkov.co.uk/f/b/9/5/b9507ea95f6fa713288fccafa706ea2882.png)
) очень дёшевы, дешевле сложения, которое в свою очередь много дешевле умножения. Так же дешёвым является и умножение на константу, например - умножение на 5 даёт сдвиг на два разряда и одно сложение. Поэтому для практических решений подходит множество коэффициентов
![$a_i$ $a_i$](https://dxdy-03.korotkov.co.uk/f/6/5/e/65ed4b231dcf18a70bae40e50d48c9c082.png)
и
![$b_j$ $b_j$](https://dxdy-03.korotkov.co.uk/f/2/0/2/2020a79c00e140ee1a054ecab57a289c82.png)
, особенно, если они будут степенями двойки. То же самое относится и к коэффициенту
![$k_i_j$ $k_i_j$](https://dxdy-03.korotkov.co.uk/f/e/d/5/ed5f62a82a7e74143618df75b8c4d4a782.png)
, а так же к коэффициенту при
![$r_i$ $r_i$](https://dxdy-04.korotkov.co.uk/f/3/c/f/3cf87ea38a615ed99e0232f8ed9431fe82.png)
, который в идеале должен быть равен единице, но так же может быть отрицательным (дешёвая операция смены знака) или степенью двойки (дешёвая операция деления на степень двойки).
Исходя из таких ограничений получаем:
![$$\begin{pmatrix}\begin{bmatrix}
a & b & c & d
\end{bmatrix}\cdot \begin{bmatrix}
a_1 \\ a_2 \\ a_3 \\ a_4
\end{bmatrix}\end{pmatrix}\cdot\begin{pmatrix}\begin{bmatrix}
e & f & g & h
\end{bmatrix}\cdot \begin{bmatrix}
b_1 \\ b_2 \\ b_3 \\ b_4
\end{bmatrix}\end{pmatrix}=p$$ $$\begin{pmatrix}\begin{bmatrix}
a & b & c & d
\end{bmatrix}\cdot \begin{bmatrix}
a_1 \\ a_2 \\ a_3 \\ a_4
\end{bmatrix}\end{pmatrix}\cdot\begin{pmatrix}\begin{bmatrix}
e & f & g & h
\end{bmatrix}\cdot \begin{bmatrix}
b_1 \\ b_2 \\ b_3 \\ b_4
\end{bmatrix}\end{pmatrix}=p$$](https://dxdy-03.korotkov.co.uk/f/6/9/b/69b19ccfeb3db1c40959c8edde66eede82.png)
При этом сами значения элементов матриц нам не интересны, нам их находить не нужно, а на получаемые далее уравнения они никак не влияют. Поэтому их более не упоминаем.
Введём множество всех вариантов перемножения коэффициентов и обозначим его
![$P$ $P$](https://dxdy-02.korotkov.co.uk/f/d/f/5/df5a289587a2f0247a5b97c1e8ac58ca82.png)
:
![$p \in P$ $p \in P$](https://dxdy-03.korotkov.co.uk/f/6/6/4/664620dda45aeff8a9b52848738c2f4482.png)
Далее берём произвольные четыре элемента множества
![$P$ $P$](https://dxdy-02.korotkov.co.uk/f/d/f/5/df5a289587a2f0247a5b97c1e8ac58ca82.png)
и получаем составляющие для комбинирования в виде суммы, с целью получить все
![$r_i$ $r_i$](https://dxdy-04.korotkov.co.uk/f/3/c/f/3cf87ea38a615ed99e0232f8ed9431fe82.png)
. При этом уберём и из
![$r_i$ $r_i$](https://dxdy-04.korotkov.co.uk/f/3/c/f/3cf87ea38a615ed99e0232f8ed9431fe82.png)
начальные значения из перемножаемых матриц, поскольку в сумме произведений нас будут интересовать лишь коэффициенты при значениях, а не сами значения.
![$$\begin{bmatrix}
p_1 & p_2 & p_3 & p_4
\end{bmatrix}\cdot \begin{bmatrix}
k_1_1 & k_2_1 & k_3_1 & k_4_1 \\ k_1_2 & k_2_2 & k_3_2 & k_4_2 \\ k_1_3 & k_2_3 & k_3_3 & k_4_3 \\ k_1_4 & k_2_4 & k_3_4 & k_4_4
\end{bmatrix}=\begin{bmatrix}r_1 & r_2 & r_3 & r_4\end{bmatrix}=s$$ $$\begin{bmatrix}
p_1 & p_2 & p_3 & p_4
\end{bmatrix}\cdot \begin{bmatrix}
k_1_1 & k_2_1 & k_3_1 & k_4_1 \\ k_1_2 & k_2_2 & k_3_2 & k_4_2 \\ k_1_3 & k_2_3 & k_3_3 & k_4_3 \\ k_1_4 & k_2_4 & k_3_4 & k_4_4
\end{bmatrix}=\begin{bmatrix}r_1 & r_2 & r_3 & r_4\end{bmatrix}=s$$](https://dxdy-04.korotkov.co.uk/f/b/3/8/b38170d8e9cd850d50e64d51554098ff82.png)
Из системы
![$s$ $s$](https://dxdy-03.korotkov.co.uk/f/6/f/9/6f9bad7347b91ceebebd3ad7e6f6f2d182.png)
имеем те самые 64 уравнения, о которых говорилось выше. То есть при сложении каждого
![$p_i$ $p_i$](https://dxdy-01.korotkov.co.uk/f/0/d/1/0d19b0a4827a28ecffa01dfedf5f5f2c82.png)
имеем сумму произведений трёх коэффициентов - a_i_j, b_k_l, k_m_n. После сложения группируем суммы произведений троек коэффициентов и приравниваем их к нулю в 12 случая и к единице в 4-х случаях (но если
![$r_i$ $r_i$](https://dxdy-04.korotkov.co.uk/f/3/c/f/3cf87ea38a615ed99e0232f8ed9431fe82.png)
решено тоже перебирать, то получаем ещё четыре переменных).
Вот и всё. Если система имеет решения, то гипотеза Штрассена доказана. Если система решений не имеет, то остаются варианты с пятью и шестью умножениями, а так же с использованием всех возможных элементов в суммах, для получения перебираемых произведений. Все эти варианты выглядят аналогично, но имеют гораздо большее количество уравнений.