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

11.6. Упражнения 547

R-11.26 Покажите что продолжительность худшего случая быстро-избранных на n-элементе

последовательность -W (n2).

Креативность

C-11.1 Опишите эффективный алгоритм для преобразования словаря, D, осуществленный

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

C-11.2 Линда утверждает, что имела алгоритм, который берет входную последовательность S и

производит последовательность продукции T, который является сортировкой n элементов в S.

a. Дайте алгоритм, isSorted, для тестирования в O (n) время, если T сортирован. b. Объясните, почему алгоритм isSorted не достаточен, чтобы доказать паритет -

T продукции ticular алгоритма Линды - сортировка S.

c. Опишите, какой алгоритм Линды дополнительной информации мог -

помещенный так, чтобы правильность ее алгоритма могла быть установлена на любом данном S и T в O (n) время.

C-11.3 Учитывая два набора A и B, представленный как сортированные последовательности, опишите effi-

алгоритм cient для вычисления⊕ B, который является набором элементов, которые являются

в A или B, но не в обоих.

C-11.4 предположим, что мы представляем наборы с уравновешенными деревьями поиска. Опишите и

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

C-11.5 Опишите и проанализируйте эффективную функцию для удаления всех дубликатов

от коллекции n элементов.

C-11.6 Рассмотрите наборы, элементы которых - целые числа в диапазоне [0, N- 1]. Популярность -

схема ular представления набора этого типа посредством Булева

множество, B, где мы говорим, что x находится в если и только если B [x] = верен. Так как каждая клетка B может быть представлена с единственным битом, B иногда упоминается как немного вектора. Опишите и проанализируйте эффективные алгоритмы для выполнения функций набора ADT, принимающий это представление.

C-11.7 Рассмотрите версию детерминированного быстрого вида, где мы выбираем медиану

из d длятся элементы во входной последовательности n элементов как наш центр, для

фиксированное, постоянное нечетное число d³ 3. Что является асимптотическим худшим случаем

продолжительность быстрого вида в этом случае?

C-11.8 Другой способ проанализировать рандомизированный быстрый вид состоит в том, чтобы использовать повторение

уравнение. В этом случае мы позволяем T (n), обозначают ожидаемую продолжительность рандомизированного быстрого вида, и мы замечаем, что из-за разделения худшего случая для хороших и плохих разделений можем написать

T (n)1£ (T (3n/4) + T (n/4)) + 1 (T (n- 1)) + миллиард, 2 2

548

Глава 11. Сортировка, Наборы и Выбор, где миллиард является временем, должны были разделить список для данного центра и concate-nate подсписки результата после возвращения рекурсивных вызовов. Покажите индукцией, что T (n) является O (n, регистрируют n).

C-11.9 Измените inPlaceQuickSort (Кодовый Фрагмент 11.6), чтобы обращаться с генералом

окружите эффективно, когда входная последовательность, S, может иметь, делают дубликаты ключа. C-11.10 Опишите нерекурсивную, оперативную версию алгоритма быстрого вида.

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

C-11.11 Инвертированный файл - критическая структура данных для осуществления поиска en-

gine или индекс книги. Учитывая документ D, который может быть рассмотрен как незаказанный, пронумерованный список слов, инвертированный файл - заказанный список слов, L, такой, что для каждого w слова в L мы храним индексы мест в D, где w появляется. Проектируйте эффективный алгоритм для конструкции - луг Л от D.

C-11.12 Учитывая множество n записей с ключами, равными 0 или 1, опишите оперативное

функция для заказа так, чтобы весь 0 был перед каждым 1. C-11.13 предположим нам дают последовательность n-элемента S таким образом что каждый элемент

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

C-11.14 Рассмотрите голосующую проблему от Упражнения C-11.13, но теперь предположите это

мы знаем номер k <n кандидатов, бегущих. Опишите O (n, регистрируют k) - алгоритм времени для определения, кто побеждает на выборах.

C-11.15 Рассмотрите голосующую проблему от Упражнения C-11.13, но теперь предположите a

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

C-11.16 Покажите, что любой основанный на сравнении алгоритм сортировки может быть сделан быть

стабильный, не затрагивая его асимптотическую продолжительность. C-11.17 предположим нам дают две последовательности A и B n элементов, возможно

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

C-11.18 Учитывая множество n целых чисел в диапазоне [0, n2 - 1], описывают простое

функция для сортировки в O (n) время.

C-11.19 Позвольте S1, S2..., Sk быть k различными последовательностями, у элементов которых есть целое число

ключи в диапазоне [0, N- 1], для некоторого параметра N³ 2. Опишите al -

gorithm, бегущий в O (n + N) время для сортировки всех последовательностей (не как a

союз), где n обозначает полный размер всех последовательностей.