Давайте посмотрим на количество элементов, которые мы перебираем в симметричном 2-мерном массиве, это n^2/2
, так как размер равен n
, и есть 2
размеры, поэтому мы возводим в степень 2 и делим на 2чтобы получить только половину элементов.Итак, O(n^2)
.
Теперь давайте посмотрим, сколько элементов мы перебираем в симметричном трехмерном массиве.Это n^3/6
.Вы можете сделать вывод, что таким же образом вы вычисляете объем трехмерного треугольника , так как все числа находятся в этой треугольной области.Даже после того, как мы поделили на 3, временная сложность составляет O(n^3)
.
Для четырехмерного это будет n^4/(4*3*2)
, что составляет O(n^4)
.Но для m
измерений это будет n^m/m!
, и поскольку измерение является параметром, в настоящее время сложность времени будет O(n^m/m!)
в соответствии с этим методом.
Другой метод вычисления заключается в том, что при удаленииПо диагонали этого измерения индексы элементов, которые вы перебираете, совпадают с комбинациями, если у вас нет повторяющихся элементов и все элементы различны.Мы знаем, что количество комбинаций для этого составляет n!/m!(n-m)!
или n choose m
, так что это также может быть сложностью по времени.
В соответствии с большинством факторных приближений наибольший элемент равен n^n
поэтому при использовании этих приближений и игнорировании относительно небольших факторов сложность времени остается той же, поскольку:
n!/m!(n-m)! ≈ n^n/m!(n-m)^(n-m) > n^n/m!n^(n-m) = n^m/m!
.
Таким образом, со временем сложность времени будет O(n^m/m!)
.