Вопрос:
4-2 Затраты на передачу параметров
На протяжении всей этой книги мы предполагаем, что передача параметров во время вызовов процедур занимает постоянное время, даже если передается массив из N элементов. Это предположение справедливо в большинстве систем, поскольку передается указатель на массив, а не сам массив. Эта проблема исследует последствия трех стратегий передачи параметров:
- Массив передается по указателю. Тета времени(1)
<сильный>2. Массив передается путем копирования. Время Theta(N), где N — размер массива.
- Массив передается путем копирования только того поддиапазона, к которому может получить доступ вызываемая процедура. Время Theta(q-p+1), если передан подмассив A[p..q].
а. Рассмотрим алгоритм рекурсивного бинарного поиска для нахождения числа в отсортированном массиве (см. упражнение 2.3-5). Дайте повторения для наихудшего времени выполнения бинарного поиска, когда массивы передаются с использованием каждого из трех вышеперечисленных методов, и дайте хорошие верхние границы для решений повторений. Пусть N — размер исходной задачи, а n — размер подзадачи.
б. Повторите часть (a) для алгоритма MERGE-SORT из раздела 2.3.1.
У меня проблемы с пониманием того, как решить повторение случая 2, когда массивы передаются путем копирования для обоих алгоритмов.
Возьмем, к примеру, алгоритм бинарного поиска из случая 2. Большинство ответов дают следующее число: T(n)=T(n / 2)+Theta(N). У меня нет проблем с этим.
Вот ответ, который я нашел в Интернете, который выглядит правильно:
T(n)
= T(n/2) + cN
= 2cN + T(n/4)
= 3cN + T(n/8)
= Sigma (i = 0 до lgn - 1) (2 ^ i cN / (2 ^ i))
= cNlgn
= Тета (nlgn)
Мне трудно понять, как вторая последняя строка может привести к ответу последней строки. Почему бы не представить это в тета (Nlgn)? И как N может стать n в тета-обозначении?
N и n кажутся чем-то связанным. У меня проблемы с пониманием их связи и того, как это применяется в решении.