Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лр+Структуры и алгоритмы с АТД.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
463.87 Кб
Скачать

Методические указания по выполнению задания

1. Для АТД "Внешняя структура поиска" разрабатываются формат АТД и шаблонный класс - контейнер.

2. Для тестирования разработанного класса - контейнера разрабатываются две программы: программа тестирования операций через меню, и программа тестирования трудоёмкости операций поиска, вставки и удаления.

3. Тестирование операций через меню выполняется для структуры небольшого размера (размер страницы - 4 индекса). Тип данных задаётся с клавиатуры перед началом тестирования. После выполнения операций необходимо вывести на экран содержимое структуры файла с индексами и файла с данными.

4. Перед тестированием эффективности операций задаются тип данных, количество данных и размер страницы в файле индекса и в файле данных. Размер структуры варьируется в пределах от 100 до 100 000 элементов. После тестирования на экран выводятся количество страниц в файлах с индексами и с данными до и после тестирования, размер файлов в байтах до и после тестирования, средняя трудоёмкость операций поиска, вставки и удаления (среднее число обращений к диску).

5. Для построения таблиц и графиков трудоёмкости операций при тестировании параметры структуры варьируются в следующих пределах:

N - число записей в файле данных, N=102, 103, 104, 105.

M - размер страницы, M=10, 100, 1000.

6. Число обращений к блокам файла индексов в процессе выполнения операций должно соответствовать:

 1) для хешированного файла - N/(M*K), где K - число сегментов хеш - таблицы,

 2) для плотного индексного файла - 2+log2(N/M),

 3) для разреженного индексного файла - 2+log2(N/M2),

 4) для B - дерева файла - 2+logt(N/M), где t - степень В - дерева.

Литература

1. Альфред Ахо, Джон Э. Хопкрофт, Д. Ульман Структуры данных и алгоритмы. - М. - СПб - Киев: "Вильямс", 2000 г. - 384 с.

2. Н. Вирт Алгоритмы + структуры данных = программы. - М.: "Мир", 1985 г. - 406 с.

3. Фрэнк М. Каррано, Джанет Дж. Причард. Абстракция данных и решение задач на С++. Стены и зеркала. - М. - СПб - Киев: "Вильямс", 2003 г. - 848 с.

4. Д. Кнут. Искусство программирования для ЭВМ. Т.1. Основные алгоритмы. - М: "Мир", 1976 г. (переиздание - М., Изд. "Вильямс", 2000 г.) - 735 с.

5. Д. Кнут. Искусство программирования для ЭВМ. Т.3. Сортировка и поиск. - М: "Мир", 1978 г. (переиздание - М., Изд. Изд. Вильямс", 2000 г.) - 844 с.

6. Т. Кормен, Ч. Лейзерсон, Р. Ривест Алгоритмы. Анализ и построение. - М: "БИНОМ", 2000 г. - 960 с.

7. Дж. Макконелл. Анализ алгоритмов. Вводный курс. - М: "Техносфера", 2002 г. - 304 с.

8. Роберт Сэджвик. Фундаментальные алгоритмы на С++. Части 1-4. - М: "DiaSoft", 2001 г. - 688 с.

9. Уильям Топп, Уильям Форд. Структуры данных в С++. - М: "Бином", 2000 г. - 816 с.

10. Хезфилд Р., Кирби Л. Искусство программирования на С. Фундаментальные алгоритмы, структуры данных и примеры приложений. - Киев: "ДиаСофт", 2001г. - 736 с.

Хранение данных в файлах

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

Рассматривая операции с файлами, в первом приближении можно считать, что файлы - это просто совокупности записей, над которыми можно выполнять некоторые операции. Однако имеются два важных отличия. Во-первых, когда говорят о файлах, хранящихся на устройствах внешней памяти, то при оценивании тех или иных стратегий организации файлов нужно использовать меру затрат. Другими словами, предполагается, что файлы хранятся в виде некоторого количества физических блоков, а затраты на выполнение операции пропорциональны количеству блоков, которые нужно считать в основную память или записать из основной памяти на устройство внешней памяти.

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

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

Простой способ представления указателей на записи заключается в следующем. У каждого блока есть определённый физический адрес, т.е. место начала этого блока на устройстве внешней памяти. Отслеживание физических адресов является задачей файловой системы. Одним из способов представления адресов записей является использование физического адреса блока, содержащего интересующую нас запись, со смещением, указывающим количество байт в блоке, предшествующих началу этой записи. Такие пары "физический адрес-смещение" можно хранить в полях "указатель на запись".