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.*