Я написал программу на Java для вычисления квадратного корня из заданного пользователем числа с использованием метода Ньютона. Основные операции алгоритма выглядят так:
answer = guess - ((guess * guess - inputNumber) / (2 * guess));
while (Math.abs(answer * answer - inputNumber) > leniency) {
guess = answer;
answer = guess - ((guess * guess - inputNumber) / (2 * guess));
}
Теперь я пытаюсь найти сложность алгоритма (да, это домашнее задание) и прочитал здесь, что временная сложность метода Ньютона равна O(log(n) * F(x)).
Однако из приведенного выше фрагмента кода я интерпретировал временную сложность как:
O(1+ ∑(1 to n) (1) ) = O(1+n) = O(n)
Не уверен, что я здесь ошибаюсь, но я не могу понять несоответствие в больших ОС даже после прочтения объяснения вики.
Кроме того, я предполагаю, что «сложность алгоритма» является синонимом «временной сложности». Правильно ли это сделать?
Был бы очень признателен за помощь в объяснении этого парадокса, так как я новичок с несколькими программными модулями «нажми и работай».
Заранее спасибо :)
leniency
, увеличивается, но нелинейно. - person Wug   schedule 04.11.2012