Я дал этот алгоритм (псевдо-код, а не в каком-либо конкретном языке):Определения большого-O данного алгоритма
foo1(l,m,n){
for (i = 1; i < l, i++){
for(j = 1; j < m ; j++){
for (k = 1; k < n; k++){
//Constant time inner loop
}
}
}
}
Я пытаюсь найти количество раз он внутреннего цикл бежит в относительно l, m, и n и придумать для этого функцию. Я также пытаюсь вычислить нотацию Big-O для алгоритма.
Глядя на алгоритм, я думал, что внутренний цикл будет работать l * m * n раз. Я придумал это, потому что, например, если l, m, n были 3, 6, 9 соответственно, тогда внутренний цикл будет работать (9 * 6 * 3) раз. Таким образом, функция, которая будет возвращать количество раз пробегов внутреннего цикла будет что-то вроде:
f = l*m*n
Теперь большой-O, где я борюсь с (не обязательно с этой проблемой), но я хотел бы получить некоторые более глубокое понимание того, как решать проблемы большого О, чтобы лучше определить правильный большой-O для алгоритма.
Для этого конкретного случая я думал, что big-O будет n^3, но это просто основано на предположении действительно. Как мне разобраться, что такое big-O для этой проблемы, и в целом для других алгоритмов, с которыми я могу столкнуться?
Это будет O (l * m * n). Если бы были ограничения на значения 'l' и' m', которые делали их асимптотически равными «n», тогда было бы возможно упростить его до O (n^3). –
Поскольку кажется, что вы хотите знать все о нотации 'big-o', а не о какой-либо конкретной проблеме, я думаю, что этот вопрос слишком велик, чтобы соответствовать SO. Голосование закрывается. – axiom