Таким образом минимальная оценка такова. Если справочник содержит один блок нужен один доступ – для получения указателя. Еще один доступ – для получения блока с записью (предполагается, что записи находятся в одном блоке).
Еще один доступ нужен при операциях удаления и модификации. Итак для хеш – функции Кф ≥ 3.
6.4.2. Индексные файлы
Индексные файлы, это файлы, состоящие из основного файла, в котором размещаются записи индекса – файла, в котором размещаются в сортированные первичные ключи основного файла и ссылки на место расположения записей основного файла.
В зависимости от организации индексной и основной областей различают 2 типа файлов, с плотным индексом и неплотным индексом.
У этих файлов есть еще дополнительные названия:
Файлы с плотным индексом называются также индексно – прямыми файлами, а файлы с неплотным индексом – индексно – последовательными файлами смысл этого наименования мы уточним позже.
Неплотные индексы
Файлы с неплотным индексом имеют сортированные записи основного файла расположенные в основной области памяти блоках.
Идея неплотного индекса взята из телефонной книги, у которой вынесены алфавитные буквы. По ним мы осуществляем быстрый просмотр и выход на нужную букву . Затем поиск продолжается уже внутри записей на эту букву.
|
|
Значение ключей 1 записи каждого заполненного блока основной записи размещаются в сортированном виде в блоках индексной области памяти I1÷Im . В этих записях размещаются ссылки на основную запись.
Быстродействие индексных файлов определяется стратегиями поиска. Рассмотрим стратегии поиска и их скоростные характеристики.
Стратегии поиска
1. Линейный поиск
При поиске в индексных файлах с неплотным индексом необходимо ввести условие обработки блока индексного файла.
Пусть заданы блоки индексного файла в следующем виде:
Ключ Адрес ссылки
Нам необходимо найти запись с ключом V2. В этом случае в оперативную память загружается тот блок, для которого
V1< V2 <V3
И для ключа V1используют термин «ключ V1 покрывает V2».
При линейной стратегии поиска просматриваются все записи индексного файла до тех пор, пока не будет найдена запись покрывающая искомую запись.
Линейный поиск в индексном файле гораздо эффективнее линейного поиска в основном файле. Рассмотрим это: Пусть в основном файле содержится всего записей - m2 в блоке основного файла - Сгл – записей а в блоке индексного файла содержится - Син записей.
В этом случае в основном файле будет
Mгл/ Сгл – блоков
А в индексном файле.
Будет (Mгл/ Сгл)/ Син– блоков
т.к. Mгл/ Сгл – это количество записей в индексном файле.
Пусть поиск у нас будет равновероятностный т.е. для нахождения требуемой записи необходимо просмотреть половину общего количества блоков.
Сравним скоростные характеристики поиска при линейной стратегии в простом файле и индексном файле с неплотным индексом.
Если поиск равновероятностный, если у нас нет индексного файла то там необходимо иметь:
Кg = ½ * m2/c2
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.