2015-07-12 6 views
0

Я хочу, чтобы узнать временную сложность этой функции с помощью индукции п (п) = 0, если п = 0Используя индукцию, чтобы доказать временную сложность функций

е (п) = е (п - 1) + 2n - 1, если n ≥ 1 Im, используя повторную замену метода, поэтому я нашел близкую форму для f (n)

f (n) = f (n - 1) + 2n - 1 = f (n-2) + 4n-4 = f (n-3) + 6n-8 .... = f (ni) + 2^in-d

, а затем, взяв i = ni, вышел с f (n) = f (0) + 2^(n + 1) -d и может заключить, что имеет временную сложность O (2^n), так как f (0) и d - все константы.

однако я нашел ответ должен быть O (N^2) и где я сделал не так

ответ

1

Вашей математика была неправа.

f(n) = f(n - 1) + 2n - 1 
f(n) = f(n - 2) + 4n - 4 
f(n) = f(n - 3) + 6n - 9 
... 
f(n) = f(n - i) + 2i n - i^2 

Когда я = п вас есть:

f(n) = f(n - n) + 2n n - n^2 
    = f(0) + (2 - 1) n^2 
    = n^2 

Следовательно, ф (п) О (п^2)

Однако вы ошибаетесь. Это не сложность времени функции, которая является O (n), так как это количество рекурсий, которое она имеет, это порядок функции, что означает, что «быстро он расходится». O (n^2) означает, что функция расходится с квадратичной скоростью.

+0

спасибо, я знаю, где я сделал неправильно, но для константы 1, 4, 8 он не поднимается i^2, следующий член на самом деле 13,19,26 идет на 1 + 3, + 4 + 5 + 6 ... я знаю, что это не имело бы значения с окончательным ответом, но как я могу доказать, что f (n + 1) выполняется с учетом этого –

+0

@dddsuman, который, безусловно, отличается от того, что вы изначально разместили, который был 1, 4, 9,. .. –

+0

@PatrickRoberts Привет .. У меня есть одно сомнение в том, чтобы прописать ваше утверждение как ** Это не сложность времени функции, которая является O (n), так как это количество рекурсий, которое она имеет, это функция порядок, что означает, что «быстро он расходится» ** при чтении другого сообщения [ссылка] (http://stackoverflow.com/questions/13467674/determining-complexity-for-recursive-functions-big-o-notation#) В упомянутой ссылке говорится, что временная сложность «n^2» или «n» и т. д. Можете ли вы прояснить, как найти временную сложность для рекурсивного? Спасибо заранее – pulse

0

Я не совсем понял вопрос. Сложность вычисления значения О (п), потому что вы можете просто сделать расчет, начиная с 0:

f(0) = 0 
f(1) = 0 + 2*1 - 1 = 1 
f(2) = 1 + 2*2 - 1 = 4 
f(3) = 4 + 2*3 - 1 = 9 

На самом деле, вы, вероятно, получите идею. , , n-е значение n^2. Я угадываю в контексте проблемы, что это то, на что они хотят получить ответ. Однако, чтобы вычислить это, кажется, O (n).

+0

Да, вы правы, это не сложность во времени, это просто порядок функции –

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