Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

4.4. Упражнения 191

который известен как метод Хорнера. Используя большое о примечание, charac-terize число арифметических операций этот метод выполняет.

C-4.17 Рассмотрите функцию Фибоначчи, F (n) (см. Суждение 4.20). Шоу

индукция, что F (n) являетсяW ((3/2) n).

C-4.18 Учитывая набор =a1, a2..., n целых чисел, опишите в псевдокодексе,

эффективный метод для вычисления каждой из частичных сумм sk =åki=1 ай, для k = 1, 2..., n. Какова продолжительность этого метода?

C-4.19 Потяните визуальное оправдание Суждения 4,3 аналогичных той из Фиги -

ure 4.1 (b) для случая, когда n странный.

C-4.20 Множество A содержит n- 1 уникальное целое число в диапазоне [0, n- 1], то есть,

есть одно число из этого диапазона, который не находится в A. Проектируйте O (n) -

алгоритм времени для нахождения того числа. Вам только разрешают использовать O (1) дополнительное пространство помимо множества самого.

C-4.21 Позвольте S быть рядом n линии в самолете, таким образом, что никакие два не параллельны и

никакие три не встречаются в том же самом пункте. Покажите индукцией, что линии в S определяютQ (n2) пункты пересечения.

C-4.22 Покажите, что суммированиеån=1log2 я, ⌉ - O (n регистрируют n). я

C-4.23 У злого короля есть n бутылки вина, и шпион только что отравил один из

их. К сожалению, они не знают, какой это. Яд очень смертелен; всего одно снижение растворило даже миллиард, каждый все еще убьет. Несмотря на это, требуется целый месяц для яда, чтобы вступить в силу. Проектируйте схему определения точно, которое из винных бутылок была отравлена всего за один месяц, расходуя O (зарегистрируйте n), испытайте тестеров.

C-4.24 Множество A содержит n целые числа, взятые от интервала [0, 4n], с repeti-

tions позволен. Опишите эффективный алгоритм для определения целочисленного значения k, который происходит чаще всего в A. Какова продолжительность Вашего алгоритма?

C-4.25 Опишите, в псевдокодексе, методе для умножения n m матрица A

и m p матрица B. Вспомните, что продукт C = AB определен так, чтобы C [я] [j] =åm=1 [я] [k] B [k] [j]. Какова продолжительность Вашего метода? k

C-4.26 предположим каждый ряд n n выстраивает A, состоит из 1's и 0, таким образом что, в

любой ряд i A, весь 1's прибывают перед любым 0. Также предположите что цифра -

частота ошибок по битам 1's последовательно я - по крайней мере, число последовательно я + 1, поскольку я = 0, 1..., n- 2.

Принятие A уже находится в памяти, опишите метод, бегущий в O (n)

время (не O (n2)) для подсчета числа 1's в A.

C-4.27 Опишите рекурсивную функцию для вычисления энного Гармонического числа,

Hn =ån=1 1/i. я

192 Глава 4. Аналитические инструменты

Проекты

P-4.1 Осуществите prefixAverages1 и prefixAverages2 от Раздела 4.2.5, и

выполните экспериментальный анализ их продолжительности. Визуализируйте их продолжительность как функцию входного размера с диаграммой регистрации регистрации.

P-4.2 Выполните тщательный экспериментальный анализ, который сравнивает относительное управление

времена функций, показанных в Кодовых Фрагментах 4.6.

P-4.3 Выполните экспериментальный анализ, чтобы проверить гипотезу что STL func-

tion, вид, пробеги в O (n регистрируют n), время в среднем.

P-4.4 Выполните экспериментальный анализ, чтобы определить самую большую ценность n для

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

Примечания к главе

Большое о примечание вызвало несколько комментариев о своем надлежащем использовании [15, 43, 58]. Knuth [59, 58] определяет его, используя примечание f (n) = O (g (n)), но говорит, что это «равенство» - только «один путь». Мы приняли решение получить более стандартное представление равенства и рассмотреть большое - О, примечание как набор, после Нарукавной повязки [15]. Читатель заинтересовал изучением среднего числа - анализ случая отнесен в книжную главу Vitter и Flajolet [101]. Мы нашли историю об Архимеде в [78]. Для некоторых дополнительных математических инструментов, пожалуйста, обратитесь к Приложению A.

Глава

5

Стеки, очереди и Deques

Содержание

5.1

Стеки........................... 5.1.1 Тип данных Резюме Стека............ 5.1.2 Стек STL.................... 5.1.3 C ++ Интерфейс Стека................ 5.1.4 Простое Основанное на множестве Внедрение Стека.... 5.1.5 Осуществление Стека с Универсальным Связанным Списком.. 5.1.6 Изменение Вектора Используя Стек........... 5.1.7 Соответствие Круглым скобкам и HTML-ТЭГАМ.......

194 195 196 196 198 202 203 204

5.2 Очереди..........................

5.2.1 Тип данных Резюме Очереди........... 5.2.2 Очередь STL.................... 5.2.3 C ++ Интерфейс Очереди................ 5.2.4 Простое Основанное на множестве Внедрение........ 5.2.5 Осуществление Очереди с Циркулярным Связанным Списком.

5.3 Симметричные очереди..................

5.3.1 Абстрактный тип данных Deque........... 5.3.2 STL Deque.................... 5.3.3 Осуществление Deque с вдвойне связанным списком.. 5.3.4 Адаптеры и шаблон адаптера......

5.4 Упражнения.........................

208 208 209 210 211 2 13 217 217 218 218 220 223