O(n³) — кубічна складність

← O(n³) — кубічна складність

Ashterix

docs: English JsonRpcBundle docs, REST and MCP Bundle sections, package cards

uk/articles/from-tg/series/algorithm-complexity/o-n3.md новий файл +36 −0

1 + # O(n³) — кубічна складність
2 +
3 + Тут вже все дуже серйозно. Алгоритми з O(n³) використовують три вкладені цикли. Це означає, що при зростанні розміру даних час виконання збільшується в кубі.
4 +
5 + ## Приклад: множення двох матриць
6 +
7 + ```php
8 + function matrixMultiplication($matrixA, $matrixB) {
9 + $rowsA = count($matrixA);
10 + $colsA = count($matrixA[0]);
11 + $colsB = count($matrixB[0]);
12 +
13 + $result = [];
14 + for ($i = 0; $i < $rowsA; $i++) {
15 + for ($j = 0; $j < $colsB; $j++) {
16 + $result[$i][$j] = 0;
17 + for ($k = 0; $k < $colsA; $k++) {
18 + $result[$i][$j] += $matrixA[$i][$k] * $matrixB[$k][$j];
19 + }
20 + }
21 + }
22 + return $result;
23 + }
24 + ```
25 +
26 + Звучить академічно, але трапляється частіше, ніж здається: в обчисленнях, побудові графів, пошуку комбінацій. Усе, що потребує порівняння трійок даних або тривимірних структур, — кандидати на O(n³).
27 +
28 + :::warning
29 + Це вже критична точка. Якщо можете уникнути такого коду — уникайте. Часто можна знайти способи звести це до O(n²) або навіть O(n log n).
30 + :::
31 +
32 + ← [Попередня: O(n²) — квадратична складність](/articles/from-tg/series/algorithm-complexity/o-n2) · [Уся серія](/articles/from-tg/series/algorithm-complexity) · [Наступна: O(2ⁿ) — експоненціальна складність →](/articles/from-tg/series/algorithm-complexity/o-2n)
33 +
34 + ---
35 +
36 + *Вперше опубліковано в Telegram-каналі [«Створений щоб помирати»](https://t.me/php_while_true/45) 25.06.2025.*