2010-12-15 2 views
3

Как вычислить пространственную и временную сложность алгоритмов в java.Как рассчитать сложность времени и пространства алгоритмов

Общее время выполнения [Using System.nanoTime()] равна временной сложности любого алгоритма или функции?

Пример: оценка пространства и времени Сложность энного количества в серии Фибоначчи

+3

1) Звучит как домашнее задание ... 2) Вам нужно дать нам немного больше информации. Вы вычисляете сложность так же, как и для C++ * (это примерно так же неопределенно, как ваш вопрос) *. – 2010-12-15 11:35:58

+0

@Nico, Просто энтузиаст ИИ и программирование. – 2010-12-15 11:36:44

+0

@ Ratna Dinakar - Это был весь вопрос? – 2010-12-15 11:38:09

ответ

5

Сложность времени является теоретическим признаком масштабируемости на идеализированной машине. (его об алгоритме, а не о машине)

System.nanoTime() расскажет вам, как долго что-то заняло конкретный компьютер в определенном состоянии для конкретных входов данных.

Сложность времени лучше для разработки наихудших значений, измерение более полезно, если у вас есть конкретный вариант использования, который вы хотите рассмотреть.

1

Сложность алгоритма не имеет абсолютно ничего общего с временем, которое требуется, чтобы запустить его в вашей системе, в текущем контексте. Вы можете получить его в результате математического изучения алгоритма, ни один тест не выполнит.

Однако вы можете иметь эмпирическое приближение, если вы запустите его, скажем, 500 раз с разными записями, скопируйте результаты, а затем найдите подходящую кривую.

И это все, что вы получаете. Пойдите учиться, человек.

2

Общее время выполнения [Использование System.nanoTime()] равно сложности по времени любого алографита или функции?

Количество При расчете порядка сложности программы, это обычно делается в Большой-O нотации. Here - это все, что вам нужно знать об этом. С примерами.

0

Во-первых, вы должны определить основную работу алгоритма. Поместите счетчик, чтобы рассчитать, сколько раз основная операция работает, пока ваш алгоритм не завершит работу. Попробуйте обозначить этот счетчик как n. В серии fibonacci основная операция - добавление (добавление последних двух элементов дает вам следующий) Для вычисления n-го числа необходимо добавить n-1. Таким образом, сложность ряда фибоначчи реализуется как O (n)

Смежные вопросы