Студопедия — Лабораторная работа № 5. Программирование алгоритмов ускоренного поиска информации
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Лабораторная работа № 5. Программирование алгоритмов ускоренного поиска информации






 

Цель работы: Приобретение навыков реализации алгоритмов программного поиска в информационных массивах.

 

Краткие теоретические сведения

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

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

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

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

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

Метод последовательного перебора. Заключается в последовательном просмотре информационного массива и сравнении каждого элемента массива с элементом поиска. Среднее число обращений для информационного массива длины N – N/2, в худшем случае будет осуществлено N обращений. Может применяться для неупорядоченных массивов данных.

Двоичный поиск. Текущий элемент сравнивается с аргументом поиска. Если значение аргумента поиска меньше текущего элемента, исходной считается последовательность от первого элемента до элемента с номером N/2, иначе если значение аргумента поиска больше текущего элемента – последовательность от элемента с номером N/2 до N. В целом, осуществляется последовательное деление пополам интервала поиска до тех пор, пока не будет найден искомый элемент или длина последовательности не станет равной единице.

Блочный поиск. Исходная последовательность разбивается на блоки. Поиск осуществляется за два просмотра. Во время первого просмотра аргумент поиска сравнивается со значениями последних записей блоков. Если не будет получено значение, превосходящее аргумент поиска, результат поиска – отрицательный, иначе осуществляется второй просмотр, который проводится в найденном блоке в направлении от последней к первой записи в блоке. Практика показывает, что Ö N является лучшим количеством блоков для N записей. В среднем требуется Ö N сравнений, в худшем случае – 2Ö N сравнений.

 

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

Хеширование. По значению аргумента поиска вычисляется адрес требуемой записи в информационном массиве. Это соответствует вычислению значения некоторой заранее выбранной функции (которая называется хеш-функцией), аргументом которой является ключ поиска. Например, если в некотором массиве хранятся фамилии студентов и рейтинговые оценки, и фамилия является ключевым полем, к ней может быть применена хеш-функция, вычисляемая как сумма кодов составляющих ее символов. Для реализации одного из способов (первого способа) хеширования вначале по исходному массиву следует создать хеш-таблицу. Записи размещаются в соответствии с адресами (индексами), получаемыми при преобразовании соответствующих ключевых полей посредством хеш-функции. Если в результате применения хеш-функции к различным ключам получились одинаковые адреса (индексы) записей, ко второму и последующим ключам следует применять процедуру повторного хеширования. Другой способ хеширования состоит в том, что записи массива организуются в виде набора односвязных списков. Адрес каждого списка является результатом применения функции хеширования к одному или нескольким ключам. В каждом списке последовательно хранятся записи, имеющие одинаковые значения результатов преобразования ключей в адреса.

 

Многоаспектный поиск с использованием инверсных массивов. Данные хранятся во внешней памяти. Среди записей выделяют поля, по которым может быть осуществлен запрос на многоаспектный поиск. Пусть имеется m таких полей. Создается m копий информационного массива, каждая из которых сортируется по одному из m ключевых полей и называется инверсным массивом. Для осуществления поиска по аргументу, состоящему из m ключей, в каждой из копий информационного массива проводится поиск по соответствующему ключевому полю. Над полученными m множествами записей проводится операция теоретико-множественного пересечения.

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

Ускоренный поиск, основанный на использовании единого
справочника.
Информационный массив упорядочивается, делится на блоки. Каждый блок содержит заданное количество записей. Каждому блоку в едином справочнике соответствует статья, содержащая поле ключа и поле указателя. Поле указателя содержит адрес первой записи в блоке. Поле ключа – значение ключа последней записи этого блока. Поиск осуществляется в два этапа, аналогично описанному выше блочному поиску, за исключением того, что просмотр блока начинается с его первой записи. При большом объеме информационного массива единый справочник может оказаться настолько велик, что потребуется также разбить его на блоки, создав справочник следующего, второго уровня. Создание справочников выше третьего уровня не является целесообразным. Оптимальный размер блока одноуровневого справочника равен квадратному корню из количества записей массива.

 

Задание

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

Таблица6







Дата добавления: 2014-11-10; просмотров: 1726. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Решение Постоянные издержки (FC) не зависят от изменения объёма производства, существуют постоянно...

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

ПУНКЦИЯ И КАТЕТЕРИЗАЦИЯ ПОДКЛЮЧИЧНОЙ ВЕНЫ   Пункцию и катетеризацию подключичной вены обычно производит хирург или анестезиолог, иногда — специально обученный терапевт...

Ситуация 26. ПРОВЕРЕНО МИНЗДРАВОМ   Станислав Свердлов закончил российско-американский факультет менеджмента Томского государственного университета...

Различия в философии античности, средневековья и Возрождения ♦Венцом античной философии было: Единое Благо, Мировой Ум, Мировая Душа, Космос...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия