Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СТА (лекции+лабы) / СТА Лаба 3.docx
Скачиваний:
48
Добавлен:
16.03.2016
Размер:
66.08 Кб
Скачать

11

Ста: Лабораторная работа №3 - Хэш-таблицы и деревья

Версия 2.0, 13 октября 2013г.

(С) 2012-2013, Зайченко Сергей Александрович, к.т.н, ХНУРЭ, доцент кафедры АПВТ

Правила выполнения лабораторной работы

  1. Лабораторная работа выполняется либо бригадой из 2 человек, либо индивидуально. Если студент претендует на оценку “отлично”, работа должна выполняться полностью индивидуально.

  1. В работе на выбор студента предлагаются варианты трех уровней сложности:

  • Базовый уровень - оценка в интервале 15-20 баллов.

  • Углубленный уровень - оценка в интервале 21-25 баллов.

  • Амбициозный уровень - оценка не менее 25 баллов + бонусные баллы на усмотрение преподавателя.

  1. Реализовывать задачи необходимо исключительно на языке программирования С++.

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

  1. Поскольку одной из основных целей данного курса является изучение способов построения классических структур данных, при реализации задач запрещается использовать готовые библиотечные реализации этих структур.

  1. Защита работы:

  • устная и короткая без отчета в случае защиты в день лабораторной работы;

  • с полноценным печатным отчетом и ответами на теоретические вопросы в случае защиты в другие дни.

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

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

Литература к лабораторной работе

  1. Р. Седжвик “Алгоритмы на С++”:

  • Глава 5 “Рекурсия и деревья”.

  • Глава 12 “Таблицы символов и деревья бинарного поиска” (подразделы 12.5-12.9).

  • Глава 14 “Хэширование”.

  • Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн “Алгоритмы. Построение и анализ”, 2 издание:

    • Глава 11 “Элементарные структуры данных (подраздел 11.4).

    • Глава 12 “Хэш-таблицы”.

    • Глава 13 “Двоичные деревья поиска”.

  • А. Ахо, Д. Хопкрофт, Д. Ульман “Структуры данных и алгоритмы”:

    • Глава 3 “Деревья”.

    • Глава 4 “Основные операторы множеств” (подразделы 4.7-4.9)

    • Глава 5 “Специальные методы представления множеств” (подразделы 5.1-5.3).

  • Д. Кнут “Искусство программирования”:

    • Том 1, глава 2, раздел 2.3 “Деревья”.

    • Том 3, глава 6, раздел 6.2 “Поиск путем сравнения ключей”.

    • Том 3, глава 6, раздел 6.4 “Хэширование”

    Исходные данные

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

    • Хэш-таблицы (hash_table.hpp,hash_table_open_impl.cpp,hash_table_closed_impl.cpp).

    • N-арные деревья с фиксированным количеством узлов (tree_static.hpp,tree_parent_indices.cpp,tree_child_index_lists.cpp).

    • N-арные деревья с динамическим количеством узлов (tree_dynamic.hpp,tree_dynamic.cpp)

    • Классические бинарные деревья поиска (bstree.hpp,bstree.cpp).

    • Красно-черные деревья (rbtree.hpp,rbtree.cpp).

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

    Выдавать данные файлы за собственные решения настоятельно не рекомендуется :)

  • Соседние файлы в папке СТА (лекции+лабы)