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

12.6. Упражнения 591

C-12.25 Позвольте трем множествам целого числа, A, B, и C, будьте даны, каждый размер n. Данный

произвольное целое число x, проектируйте O (n2, регистрируют n), разовый алгоритм, чтобы определить, существуют ли там числа, в A, b в B и главнокомандующем, таком что x = + b + c.

C-12.26 Дайте O (n2) разовый алгоритм для предыдущей проблемы.

Проекты

P-12.1 Осуществите алгоритм LCS и используйте его, чтобы вычислить лучшую последовательность

выравнивание между некоторыми последовательностями ДНК, что Вы можете стать онлайн от Генерала - Банк.

P-12.2 Выполните экспериментальный анализ, используя документы, найденные на меж -

чистый, эффективности (число выполненных сравнений характера) алгоритмов соответствия образца KMP и «в лоб» для кусочка переменной длины - крачки.

P-12.3 Выполните экспериментальный анализ, используя документы, найденные на меж -

чистый, эффективности (число выполненных сравнений характера) «в лоб» и алгоритмов соответствия образца BM для кусочка переменной длины - крачки.

P-12.4 Выполните экспериментальное сравнение относительных скоростей скота -

сила, KMP и алгоритмы соответствия образца BM. Зарегистрируйте время, потраченное для кодирования каждого из этих алгоритмов, а также их относительного пробега - ning времена на документах, найденных в Интернете, которые тогда обысканы, используя образцы переменной длины.

P-12.5 Осуществите схему сжатия и декомпрессии, которая основана на

Хафман, кодирующий.

P-12.6 Создайте класс, который осуществляет стандарт trie для ряда последовательностей ASCII.

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

P-12.7 Создайте класс, который осуществляет сжатый trie для ряда последовательностей ASCII.

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

P-12.8 Создайте класс, который осуществляет префикс trie для последовательности ASCII. Класс

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

P-12.9 Осуществите упрощенную поисковую систему, описанную в Разделе 12.5.4 для

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

592

Глава 12. Последовательности и Динамическое Программное p-12.10 Орудие поисковая система для страниц небольшого веб-сайта, добавляя

оценивающая страницу особенность к упрощенной поисковой системе, описанной в Секунду - tion 12.5.4. Ваша оценивающая страницу особенность должна возвратить самые соответствующие страницы сначала. Используйте все слова на страницах места как индексные термины, экс-cluding слова остановки, такие как статьи, предлоги и местоимения.

P-12.11 Напишите программу, которая берет две строки символов (который мог быть, для экс-

вполне достаточный, представления нитей ДНК), и вычисляет их редактировать расстояние, показывая соответствующие части. (См. Упражнение C-12.20.)

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

Алгоритм KMP описан Knuth, Моррисом и Праттом в их статье в журнале [61], и Бойер и Мур описывают их алгоритм в статье в журнале, издал тот же самый [14] год. В их статье, однако, Knuth и др. [61] также доказывают, что алгоритм BM бежит в линейное время. Позже, Капуста [22] шоу, которые алгоритм BM делает самое большее 3n сравнения характера в худшем случае, и это связало, трудно. Все алгоритмы, обсужденные выше, также обсуждены в книжной главе Aho [3], хотя в больше - oretical структура, включая методы для соответствия регулярного характера экспрессии. Читатель, заинтересованный дальнейшим исследованием алгоритмов соответствия образца последовательности, отнесен в книгу Стивена [90] и книжные главы Aho [3] и Crochemore и Lecroq [26].

trie был изобретен Моррисоном [79] и обсужден экстенсивно в классике, Сортирующем и Ищущем книгу Knuth [60]. Имя «Патрисия» коротко для «Практического Алгоритма, чтобы Восстановить информацию, Закодированную в Алфавитно-цифровом» [79]. Маккрит [69] шоу, как построить попытки суффикса в линейное время. Введение в область информационного поиска, который включает обсуждение поисковых систем для Сети, обеспечено в книге Баэсы-Yates и Рибейру-Нето [7].

Глава

13

Алгоритмы графа

Содержание

13.1 Графы......................

.

.

.

.

594

13.1.1 Граф ADT...............

.

.

.

..

599

13.2 Структуры данных для графов...........

.

.

.

.

600

13.2.1 Структура списка края...........

.

.

.

..

600

13.2.2 Структура списка смежности........

.

.

.

..

603

13.2.3 Структура матрицы смежности......

.

.

.

..

605

13.3 Пересечения графа.................

.

.

.

.

607

13.3.1 Глубина сначала ищет.............

.

.

.

..

607

13.3.2 Осуществление глубины сначала ищет......

.

.

.

..

611

13.3.3 Универсальное внедрение DFS в C ++...

.

.

.

..

613

13.3.4 Полиморфные объекты и декоратор оценивают . . .. 621

13.3.5 Поиск типа «сначала вширь»............

.

.

.

..

623

13.4 Направленные графы.................

.

.

.

.

626

13.4.1 Пересечение диграфа............

.

.

.

..

628

13.4.2 Переходное закрытие..............

.

.

.

..

630

13.4.3 Направленные нециклические графы...........

.

.

.

..

633

13.5 Кратчайшие пути..................

.

.

.

.

637

13.5.1 Взвешенные графы..............

.

.

.

..

637

13.5.2 Алгоритм Дейкстры.............

.

.

.

..

639

13.6 Минимальные деревья охвата............

.

.

.

.

645

13.6.1 Алгоритм Краскэла.............

.

.

.

..

647

13.6.2 Чопорный-Jarn'k алгоритм......... ı

.

.

.

..

651

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

.

.

.

.

654