Главная » Просмотр файлов » Структуры данных и алгоритмы

Структуры данных и алгоритмы (1021739), страница 36

Файл №1021739 Структуры данных и алгоритмы (Структуры данных и алгоритмы) 36 страницаСтруктуры данных и алгоритмы (1021739) страница 362017-07-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 36)

Отметим, что влистинге 4.3 используется специфическая реализация АТД списков.4.5.Повторите упражнение 4.4 для следующих реализаций множеств:а) открытая хеш-таблица (используйте обобщенные операторы списков, работающие с сегментами);б) закрытая хеш-таблица с линейной методикой разрешения коллизий;в) несортированный список (используйте обобщенные операторы списков);г) массив фиксированной длины и указатель на последнюю занятую позициюв массиве.4.6. Для каждой реализации и каждого оператора из упражнений 4.4 и 4.5 найдите порядок времени выполнения операторов над множествами размера п.4.7. Предположим, что для хеширования целых чисел в 7-сегментную хеш-таблицуиспользуется хеш-функция h(i) = i mod 7.а) приведите результирующую хеш-таблицу, если в нее вставляются точныекубы 1, 8, 27, 64, 125, 216, 343;б) повторите предыдущий пункт для закрытой хеш-таблицы с линейной методикой разрешения коллизий.4.8.

Предположим, что есть закрытая хеш-таблица с 5 сегментами, хешфункцией A(i) = i mod 5 и линейной методикой разрешения коллизий. Покажите результат вставки в первоначально пустую хеш-таблицу последовательности чисел 23, 48, 35, 4, 10.4.9. Приведите реализацию операторов АТД отображений с использованием открытой и закрытой хеш-таблиц.4.10. Чтобы увеличить скорость выполнения операторов, мы хотим заменить открытую хеш-таблицу с Вг сегментами, содержащую значительно больше чем Вгэлементов, на другую хеш-таблицу с В2 сегментами.

Напишите процедуру преобразования старой хеш-таблицы в новую, используя операторы АТД списковдля заполнения каждого сегмента.4.11. В разделе 4.8 мы обсуждали "случайные" хеш-функции, когда для проверки сегментов после возникновения i-й коллизии применяется функцияht(x) = (h(x) + dt) mod В с использованием некоторой последовательности d 1?dz,...,dB-i.

Мы также показали один способ вычисления этой последовательности, когда задается некоторая константа k, первое значение последовательности, обычно di > 0, и применяется формула_144i_ltесли 2^_! < В,[(2d,_t - В) Ф ft, если 2d,_! > В,ГЛАВА 4. ОСНОВНЫЕ ОПЕРАТОРЫ МНОЖЕСТВ4.12.4.13.4.14.4.15.4.16.4.17.4.18.где i > 1, В является степенью 2, а знак Ф обозначает сложение по модулю 2.Для случая В = 16 найдите такое значение k, чтобы последовательность dlt d2, ...,die включала все целые числа 1, 2, ..., 15.Нарисуйте частично упорядоченное дерево, полученное в результате вставки впустое дерево целых чисел 5, 6, 4, 9, 3, 1 и 7. Каков будет результат последовательного применения к этому дереву трех операторов DELETEMIN?Предположим, что множество учебных курсов (см. пример из раздела 4.12)представлено в видеа) связанного списка;б) хеш-таблицы;в) дерева двоичного поиска.Измените объявление типов в листинге 4.14 для каждой из этих структур.Измените структуру данных в листинге 4.14 так, чтобы каждая регистрационная запись непосредственно указывала на своих собственников среди записей остудентах и учебных курсах.

Перепишите процедуру printstudents излистинга 4.14 для этой структуры данных.Предположим, что есть 20 000 студентов, 1 000 учебных курсов и что каждыйстудент записан в среднем на три учебных курса. Сравните структуру данныхиз листинга 4.14 с измененной структурой упражнения 4.14 по следующимпоказателям:а) по требуемому пространству памяти;б) по среднему времени выполнения процедуры printstudents;в) по среднему времени выполнения процедуры печати названий курсов, аналогичной процедуре printstudents.Для структуры данных из листинга 4.14 напишите процедуры вставки и удаления отношения "студент s посещает курс с".Каковы различия (если они есть) между структурой данных, представленной влистинге 4.14, и структурой, в которой множества С, и Sc представлены списками указателей на соответствующие записи студентов и курсов.Работники некой компании представлены в базе данных этой компании своими именами (предполагается, что все они уникальны), табельными номерами иномерами социального страхования.

Основываясь на этих предположениях,предложите структуру данных, позволяющую найти повторяющиеся записиодного и того же работника. Как быстро (в среднем) можно выполнить такуюоперацию?Библиографические примечанияМонография [67] является прекрасным источником дополнительной информациио хешировании. Методы хеширования начали развиваться с середины 50-х годов, истатья [85] — фундаментальная ранняя работа в этой области. Работы [73] и [77] содержат хорошие обзоры методов хеширования.Мультисписки, как основная структура данных для сетевых распределенных базданных, предложены в [22]. В работе [112] имеется дополнительная информация оприменении таких структур в системах баз данных.Реализация частично упорядоченных деревьев посредством куч — основная идеяработы [119].

Очереди с приоритетами ранее рассматривались в книге [65].В [89] обсуждается вычислительная сложность основных операторов множеств.Техника анализа потоков данных, основанных на множествах, подробно рассмотренав работах [5] и [18].УПРАЖНЕНИЯ145ГЛАВА 5СпециальныеметодыпредставлениямножествВ этой главе мы рассмотрим структуры данных для представления множеств, которые позволяют более эффективно реализовать общий набор операторов, выполняемыхнад множествами, чем это описано в предыдущих главах. Однако эти структуры значительно сложнее и чаще всего применяются только для больших множеств. Все ониоснованы на различного рода деревьях, таких как деревья двоичного поиска, нагруженные и сбалансированные деревья.5.1.

Деревья двоичного поискаНачнем с деревьев двоичного поиска — основной структуры данных для представления множеств, чьи элементы упорядочены посредством некоторого отношения линейного порядка, которые, как обычно, обозначим символом "<". Этиструктуры особенно полезны, когда исходное множество такое большое, что не рационально использовать его элементы непосредственно в качестве индексов массивов. Предполагается, что все элементы множеств являются элементами некоторогоуниверсального множества — универсума, примером которого служит множествовозможных идентификаторов в программе на языке Pascal. На деревьях двоичногопоиска можно реализовать операторы INSERT, DELETE, MEMBER и MIN, причемвремя их выполнения в среднем имеет порядок O(logn) для множеств, состоящихиз п элементов.Дерево двоичного поиска — это двоичное дерево, узлы которого помечены элементами множеств (мы также будем говорить, что узлы дерева содержат или хранятэлементы множества).

Определяющее свойство дерева двоичного поиска заключаетсяв том, что все элементы, хранящиеся в узлах левого поддерева любого узла ж, меньше элемента, содержащегося в узле х, а все элементы, хранящиеся в узлах правогоподдерева узла х, больше элемента, содержащегося в узле х. Это свойство называетсяхарактеристическим свойством дерева двоичного поиска и выполняется для любогоузла дерева двоичного поиска, включая его корень.На рис. 5.1 показаны два дерева двоичного поиска, представляющие одно и то жемножество целых чисел. Отметим интересное свойство деревьев двоичного поиска:если составить список узлов этого дерева, обходя его во внутреннем (симметричном)порядке, то полученный список будет отсортирован в порядке возрастания (в соответствии с заданным на множестве отношением линейного порядка).Пусть дерево двоичного поиска представляет некоторое множество элементов.

Характеристическое свойство дерева двоичного поиска позволяет легко проверить принадлежность любого элемента исходному множеству. Для того чтобы определить, принадлежитли элемент х исходному множеству, сначала сравним его с элементом г, находящимся вкорне дерева. Если х = г, то вопрос о принадлежности элемента х множеству решен положительно. В случае х < г по характеристическому свойству дерева двоичного поиска1элемент х может быть потомком только левого сына корня дерева . Аналогично, еслих > г, то элемент х может быть потомком только Правого сына корня дерева.1071218/15аРис.

5.1. Два дерева двоичного поискабНапишем простую рекурсивную функцию МЕМВЕЩ*, А), реализующую тест напринадлежность элемента множеству. Предположим, что элементы множества имеютпока не определенный тип данных, который назовем elementtype. Будем считать, чтодля этого типа данных определены отношения "<" и "=". Если это не так, то необходимо написать функции LT(a, Ь) и EQ(a, b) такие, что для любых элементов а и Ь типа elementtype функция LT(a, b) будет принимать значение true тогда и только тогда,когда а "меньше" Ъ, а функция EQ(a.

Ь) — когда а "равно или больше" Ь.Тип данных nodetype узлов дерева, содержащих поле element для элементов множества и два поля leftchild и rightchild указателей на левого и правого сыновей, определим с помощью следующего объявления:typenodetype = recordе!елгел t: elementtype ;leftchild, rightchild:end;tnodetypeДалее определим тип SET (Множество) как указатель на узел, который будет корнем дерева двоичного поиска при представлении множества:typeSET: tnodetype;Теперь можно написать полный код функции MEMBER (листинг 5.1).

Характеристики

Тип файла
PDF-файл
Размер
45,43 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее