DEV//UNIT

Порядок умножения матриц

Где ставить скобки: порядок умножений меняет стоимость в разы.

время O(n³)память O(n²)уровень: средний
Что происходит сейчас0/0
Нажмите Play, чтобы запустить сценарий
TypeScript — активная строка подсвечена шагом
1function matrixChainOrder(dims: number[]): number {
2 const n = dims.length - 1 // число матриц
3 // d[i][j] = минимальная стоимость Ai × ... × Aj
4 const d: number[][] = Array.from({ length: n + 1 }, () =>
5 new Array(n + 1).fill(0))
6
7 for (let len = 2; len <= n; len++) {
8 for (let i = 1; i + len - 1 <= n; i++) {
9 const j = i + len - 1
10 d[i][j] = Infinity
11 for (let k = i; k < j; k++) {
12 // разрез k: (Ai..Ak)(Ak+1..Aj)
13 const cost = d[i][k]! + d[k + 1][j]! +
14 dims[i - 1]! * dims[k]! * dims[j]!
15 if (cost < d[i][j]!) d[i][j] = cost
16 }
17 }
18 }
19
20 return d[1][n]!
21}
22// (A1×A2)×A3 = 1500+3000 = 4500; A1×(A2×A3) = 9000+2700 = 11700

Проблема

Где ставить скобки: порядок умножений меняет стоимость в разы.

Что вы видите

d[i][j] — оптимум для отрезка; перебор разрезов k.

Как это работает

Интервальная DP: короткие отрезки собираются в длинные. A1×(A2×A3) против (A1×A2)×A3 — в примере в 2.6 раза разница.

Пошаговый разбор

  1. 01

    Диагональ

    len = 2.

  2. 02

    Разрезы

    k = i..j−1.

  3. 03

    Оптимум

    Минимум по k.

Complexity и ограничения

time
O(n³)
space
O(n²)

Сложность см. в шапке страницы.

Edge cases

  • Пустой вход

    Корректная тривиальная обработка.

  • Вырожденный случай

    Минимум работы — сразу ответ.

Где встречается в реальности

СУБД

Join-порядок.

Тензоры

Порядок свёрток.

CAS

Символьная алгебра.

Связанные алгоритмы

Shorts

«Скобки решают всё»

Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.

Shorts 9:16

Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.

Скобки решают всё
Нажмите Play
Бит 1/6 · 0–2 с
Hook
script-setup.ru/algorithms/matrix-chain