Автор: Пользователь скрыл имя, 24 Ноября 2011 в 18:35, курсовая работа
ЦЕЛЬ РАБОТЫ: изучение информационного поиска при различных способах организации массивов, различных поисковых стратегиях, различных критериях выдачи.
В адресной части записываются отсылаемые адреса к элементам информации и коды (или адреса) связи, объединяющие элементы в ассоциативные группы. В каждой ячейке памяти размещаются адрес отсылки А0 и код связи Ксв (рис.4). Адресная часть делится на участки А и Б, к которым обращаются соответственно с помощью кодов свертки и кодов связи. По кодам свертки выбираются отсылочные адреса начальных элементов ассоциативных групп, а по кодам связи - место записи адресов остальных элементов.
Код свертки интерпретируется как адрес участка А поискового массива и с его помощью выбирается ячейка с отсылочным адресом А0 и кодом связи Ксв. По отсылочному адресу из участка В выбирается код элемента и сравнивается с кодом, поступившим на вход системы. Если коды совпадают, то поиск считается законченным, если нет, то производится обращение по коду связи к одной из ячеек участка Б, содержащей отсылочный адрес к следующему элементу ассоциативной группы и код связи.
Процесс
поиска продолжается до тех пор, пока
в одной из ячеек адресной части
поискового массива вместо кода связи
не окажется признак конца ассоциативной
цепочки. В качестве признака конца
может служить кодовая
В
рассмотренном примере деление
поискового массива на адресную часть
и массив элементов информации является
функциональным. В действительности,
поле памяти ЭВМ не расчленяется. Благодаря
наличию отсылочных адресов и
кодов связи элементы участков Б
и В могут располагаться в произвольном
порядке. Выделение отдельного поля памяти
необходимо только для участка А адресной
части поискового массива.
2.1.3.
Узловой способ организации
массивов
Применяется для записи в память ЭВМ информационных сведений сложной структуры. Связи между элементами одного информационного массива фиксируются позиционно, т.е. путем совместного расположения кодов этих элементов или их адресов в одном узле. В узловом способе сочетаются свойства гнездового и цепного способов. На рис.5 приведен пример использования узлового способа массива сообщений, каждое из которых состоит из трех элементов: А - адресная часть, Б - массив сообщений. Для записи одного сообщения отводится 1 ячейка памяти. Ячейка делится на три участка. Каждый участок представляет один элемент сообщения, участки ячеек, обозначающие одинаковые элементы сообщения, соединяются между собой цепочками адресных отсылок - эти цепочки условно изображены линиями со стрелками. Адресные отсылки к участкам, являющиеся первыми элементами цепочек, указываются в части А, а отсылки к остальным элементам цепочек - в части Б.
При
этом отсылки элементов к элементам
ассоциативных цепочек с
Поиск в массиве сообщений ведется по окончании поиска в адресной части. Если в качестве поискового признака указывается код одного элемента сообщения, то из массива Б выбираются все сообщения, содержащие этот элемент, и все сообщения, включающие элементы ассоциативной цепочки с начальным адресом А0.
Если
задается несколько кодов сообщений,
то прослеживаются все соответствующие
этим кодам ассоциативные цепочки
и выбираются сообщения, включающие все
заданные элементы.
Рисунок 4- Цепной способ поиска
Рисунок
5 -Узловой способ поиска
2.2. Способ последовательного
просмотра или способ
перебора
Для
заданного числа Х
X>X1, Х>Х2,..., x>xl (1).
Одновременно
ведется подсчет числа
Х=ХK (2),
К - порядковый номер сравниваемого числа списка.
Выполнение этого равенства означает, что искомое число содержится в списке х и его адрес может быть вычислен по формуле:
k=k1+k-1 ,
K1 - адрес первого числа.
При
выполнении (2) поиск прекращается. Способ
последовательного просмотра
2.3. Способ последовательного
деления на части.
Метод аналогичен предыдущему, но элементы множества просматриваются не последовательно, а с заданным шагом L. В данном случае массив делится на К отдельных частей.
К - целая часть от деления количества элементов в массиве на шаг l.
В каждой части анализируется значение последнего элемента. В результате выделяется подобласть множества X, в которой может находиться искомый элемент. Выделенная подобласть снова делится на К частей и процесс повторяется.
В общем случае при использовании данного метода, количество выполняемых сравнений можно приближенно оценить:
n - количество элементов в массиве X.
Метод деления массива на части при К=2 называют дихотомическим или двоичным поиском. Он является более эффективным по сравнению с методом деления на части при K 2.
2.4. Способ разделителей.
Перечень кодов чисел разбивается по какому-либо признаку на участки, которые могут быть разной длины. Результаты разбиения отражаются в таблице разделителей, где для каждого признака указывается начальный адрес соответствующего ему участка (разделительный адрес).
В качестве признаков, по которым группируются элементы списка, могут использоваться длина кодов чисел, начальная часть этих кодов и т.д. При поиске сначала по заданному коду числа определяется значение соответствующего ему признака. Затем полученное значение сравнивается последовательно со значениями, записанными в таблице разделителей. В случае их совпадения из таблицы выбирается начальный адрес участка. Далее адрес искомого числа находится последовательным просмотром списка кодов искомого числа на выделенном участке.
Особый интерес представляет такая структура таблицы разделителей, когда по коду искомого можно достаточно просто определить записи, т.е. адрес соответствующего ему разделителя. В этом случае отпадает необходимость хранить коды признаков в таблице разделителей. Достаточно иметь таблицу начальных адресов участков массива чисел, соответствующих этим кодам.
2.4.1.
Разновидностью способа разделителей
является метод "свертки
кодов".
Свертка имеет значительно меньшую длину,
чем длина исходного кода. Свертки могут
быть использованы в качестве адресов
для обращения к таблице разделителей.
Правила образования кодов рассмотрим на примерах (таблица 1).
Исходный код | Способ получения свертки | Код свертки | |
1 | 12516273 | Выделение трех начальных цифр | 125 |
2 | 12516273 | Выделение трех конечных цифр | 273 |
3 | 12516273 | Выделение цифр, стоящих в первой, третьей и седьмой позициях | 157 |
4 | 12516273 | Деление кода на две части по четыре цифры и сложение этих частей | 7524 |
5 | слово "формирование" | Выделение четырех начальных букв | форм |
6 | "формирование" | Выделение четырех начальных согласных |
фрмр |
7 | "формирование" | Выделение начальной буквы и подсчет количества букв в слове | ф12 |
8 | "формирование" | Выделение первой начальной и трех конечных букв | фние |
Приближенно длина свертки может быть определена по формуле:
где l - объем массива кодов, в котором производится поиск;
n - среднее количество кодов в участке.
2.5. Способ линейной
интерполяции.
Дана монотонно возрастающая функция
k=f(x) (4)
Заменим ее линейной функцией
k=Ax+B (5)
с коэффициентами:
Подставляя в формулу (5) В и учитывая, что адрес k должен быть целым числом, получим для него следующее выражение:
(6)
Действительный адрес числа х при х1 х xL заключен либо в интервале (k1, k), либо в интервале (k, kL.) в зависимости от того, выполняется или не выполняется условие х хS, в котором хS означает число X1, имеющее адрес k.
2.6. Серийный упорядоченный
поиск (способ скользящего
канала)
Искомые числа предварительно упорядочиваются по возрастанию их величины Первое число ищется последовательным просмотром списка чисел, хранящихся в машине, а поиск каждого нового числа производится на участке, левой границей которого является адрес последнего найденного числа Правая граница списка чисел остается неизменной, а левая постепенно приближается к правой.
Среднее количество циклов поиска одного числа определяется величиной:
l - объем списка чисел, находящихся в ОЗУ;
n - количество
искомых чисел.
2.7 Прохождение бинарных
деревьев
Это способ методического исследования вершин дерева, при котором каждая вершина проходится только один раз
В результате обхода дерева получаем линейную расстановку всех вершин, т.е. фактически вводим отношение предшествования на множестве вершин дерева. На рис.6 изображен обход дерева. Мы обходим дерево вдоль пунктирной линии в направлении стрелок, начиная и заканчивая обход в корне. На каждое прохождение мы попадаем в вершину по меньшей мере один раз, а вообще говоря, три раза. Обходя дерево, мы можем систематически делать что-то с каждой вершиной, например, печатать номер вершины. Если мы будем печатать номер вершины только при первой встрече с ней, то получим последовательность 6, 4, 3, 5, 7. Если печатать номер при второй встрече, то получим 3, 4, 5, 6,7, а если при третьей - 3, 5, 4, 7, 6. Эти три способа обхода вершин называются соответственно обходом: сверху, слева направо, снизу.
Информация о работе Информационное обеспечение социально экономических процессов