Рассмотрим следующую функцию C.
|
Рассмотрим следующие вопросы для кода выше, игнорируя оптимизацию компилятора.
а) Что делает приведенный выше код?
б) Какова временная сложность вышеуказанного кода?
в) Можно ли уменьшить временную сложность вышеуказанной функции?
Что делает fun (n)?
В приведенном выше коде fun (n) равно 2 * fun (n-1). Таким образом, вышеприведенная функция возвращает 2 n . Например, для n = 3 он возвращает 8, для n = 4 он возвращает 16.
Какова временная сложность веселья (n)?
Временная сложность вышеуказанной функции экспоненциальная. Пусть сложность Времени будет T (n). T (n) можно записать следующим образом. Здесь C — машинно-зависимая константа.
T(n) = T(n-1) + T(n-1) + C = 2T(n-1) + C
Указанная рекуррентность имеет решение как Θ (2 n ). Мы можем решить это методом рекуррентного дерева. Дерево повторения будет двоичным деревом с высотой n, и каждый уровень будет полностью заполнен, за исключением, возможно, последнего уровня.
C / \ C C / \ / \ C C C C / \ / \ / \ / \ . . . . . . . . . . . . . . . . Height of Tree is Θ(n)
Можно ли уменьшить временную сложность веселья (n)?
Простой способ уменьшить сложность времени — сделать один звонок вместо двух.
|
Временная сложность приведенного решения равна Θ (n). T Пусть сложность Времени будет T (n). T (n) можно записать следующим образом. Здесь C — машинно-зависимая константа.
T(n) = T(n-1) + C
Мы можем решить это методом рекуррентного дерева. Дерево рекуррентности будет перекошенным двоичным деревом (у каждого внутреннего узла есть только один дочерний элемент) с высотой n.
C / C / C / . . Height of Tree is Θ(n)
Вышеприведенная функция может быть дополнительно оптимизирована с использованием метода «разделяй и властвуй» для расчета мощностей.
|
Временная сложность приведенного решения is (Logn). Пусть сложность Времени будет T (n). T (n) можно приблизительно записать в виде следующего повторения. Здесь C — машинно-зависимая константа.
T(n) = T(n/2) + C
Мы можем решить это методом рекуррентного дерева. Дерево рекуррентности будет перекошенным двоичным деревом (у каждого внутреннего узла есть только один дочерний элемент) с высотой Log (n).
C / C / C / . . Height of Tree is Θ(Logn)
Мы также можем напрямую вычислять fun (n), используя битовый оператор сдвига влево '
|
Эта статья предоставлена Картиком . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Вопрос о сложности времени
- Анализ алгоритма | Набор 4 (решение повторений)
- Анализ алгоритма | Набор 5 (Амортизированный анализ Введение)
- Интересный вопрос сложности времени
- Анализ алгоритмов | Комплект 5 (Практические задачи)
- Выполнение циклов (вопрос кеширования)
- Алгоритм прыжкового указателя
- Интернет алгоритм
- Практические вопросы по анализу сложности времени
- Набор практики для рекуррентных отношений
- Алгоритм на месте
- Минимизируйте сумму цифр A и B так, чтобы A + B = N
- Умножение на массиве: запрос на обновление диапазона в O (1)
- Оптимальная стратегия для игры | Специальная золотая монета
0.00 (0%) 0 votes