Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Белоногов Г.Г. Автоматизированные информационные системы

.pdf
Скачиваний:
9
Добавлен:
25.10.2023
Размер:
14.28 Mб
Скачать

системой скобок и назначением приоритета для одного из видов логической связи (дизъюнктивной или конъ­ юнктивной) .

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

Fi(x, а ь а 2, . . .,am) & F 2(x, bit b2>. ■ -,bn) & . . .

 

. . ,&Fq(x, Щ, Uz,. . .jUs).

'(4.8)

Из истинности высказывания (4.8) следует истин­ ность каждого элементарного высказывания и всех дизъюнкций и конъюнкций элементарных высказываний с количеством членов от 2 до q — 1 (здесь нижние индек­ сы символа F обозначают порядковые номера высказы­ ваний; при этом некоторые символы с различными по­ рядковыми номерами могут обозначать одинаковые от­ ношения) .

Процесс поиска по простому запросу выполняется в массиве элементарных высказываний согласно прави­ лам, изложенным в пп. 3, 4, 5. Поиск по сложному за­ просу, состоящему из высказываний, соединенных зна­ ком дизъюнкции, выполняется также в массиве элемен­ тарных сообщений. При этом результаты поиска, полу­ ченные для всех простых высказываний, объединяются.

В случае конъюнктивной связи между высказыва­ ниями в запросе поиск производится в массиве конъюн­ кций элементарных высказываний, являющихся следст­ вием высказываний вида (4.8). В качестве ответа выда­ ются такие конъюнкции, которые содержат число чле­ нов, равное числу простых высказываний в запросе, а составляющие их высказывания являются видовыми по отношению к родовым высказываниям запроса.

Сложный запрос, содержащий одновременно конъ­ юнктивные и дизъюнктивные логические связи между высказываниями, может быть представлен в дизъюнк­ тивной или конъюнктивной нормальной форме. Если за­ прос представляется в дизъюнктивной нормальной фор-

70

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

9. Иногда при записи последовательности сообщений вида (4.8) коды объектов выносятся в начало этих по­ следовательностей и указываются только один раз. Этот прием используется при некоторых способах записи ин­ формационных таблиц и поисковых образов докумен­ тов. Такая форма записи сообщений не меняет существа логических отношений между их элементами, и на нее распространяются все положения, изложенные в п. 8.

10. Во всех предыдущих рассуждениях мы исключи­ ли из рассмотрения сложные высказывания со знаками отрицания. Дело в том, что в сообщениях обычно ука­ зываются далеко не все, а лишь наиболее существенные признаки объектов и четко не оговаривается, какие при­ знаки у них отсутствуют. Поэтому применение знаков отрицания в запросах часто бывает лишено смысла.

Основной мыслью настоящей главы является утвер­ ждение о том, что процесс поиска информации можно рассматривать как процесс логического вывода. Цен­ тральное место здесь занимают способы установления смысловых связей между понятиями, которые подробно излагаются в гл. 7—10. Но процесс поиска можно рас­ сматривать и с иных позиций — с точки зрения общих технических приемов выборки кодов из массивов закоди­ рованных сообщений. Эта сторона вопроса представлена в гл. 5, 6.

Г л а в а 5 СПОСОБЫ АВТОМАТИЧЕСКОГО ПОИСКА В МАССИВАХ КОДОВ

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

71

признакам. При этом выбираются коды или последова­

тельности кодов,

которые мы

назовем э л е м е н т а м и

и н ф о р м а ц и и .

И признаки,

и элементы информации

могут иметь различную структуру. Это могут быть сло­ ва, числа или любые буквенно-цифровые обозначения. Слова и буквенно-цифровые обозначения можно рас­ сматривать как целые числа, записанные в позиционной

системе счисления с

основанием,

равным количеству

букв и цифр в алфавите.

 

Пусть Х{хи Х2 , . . ., Хт}—конечное множество попарно­

различных поисковых

признаков, а

У{уі, у2>. . ,,уп} — ко­

нечное множество элементов информации, и пусть зада­ но некоторое отображение множества X на множество У

так, что каждому элементу Хі

множества X ставится

в соответствие один из элементов у^ множества

У, т. е.

имеет место функциональная зависимость

 

y = f(x).

.

(5.1)

Тогда функция (5.1) может быть представлена в виде перечня пар элементов Xiyj, а процесс поиска элемента Уі множества У по элементу Хі множества X можно свести к процессу идентификации заданного кода Хі с од­ ним из кодов левой части перечня и к выборке соответ­ ствующего ему кода Уі в правой части перечня.

В ЭВМ относительное положение чисел х и у, входя­ щих в пары ху, всегда может быть строго фиксировано, и при известном адресе числа х выборка числа у не пред­ ставляет никаких затруднений. Основная трудность при поиске и выборке информации состоит в определении места записи (адреса) числа х в запоминающем устрой­ стве ЭВМ. Для облегчения поиска адресов чисел х целе­ сообразно расположить эти числа в порядке возраста­ ния их величины. Тогда можно применить ряд эффек­ тивных приемов.

Пусть числа х записаны в отдельных ячейках запо­ минающего устройства ЭВМ. Тогда имеет место взаим­ но-однозначное соответствие между этими числами и их адресами К в ЗУ. Если, кроме того, числа х расположе­

ны в порядке возрастания их величины, то

функция

K = f( x )

(5.2)

будет монотонно возрастающей.

(5.2) мож4ет

Иногда функциональная зависимость

быть представлена достаточно простым аналитическим

72

выражением. В этом случае адрес Кі числа х,-, а следо­ вательно, и адрес числа г/j, может быть вычислен на ЭВМ но самому числу Хі, и в ЗУ машины достаточно хранить только числа у.

Особенно просто определяется адрес числа по его величине, когда функциональная зависимость (5.2) ли­ нейна (например, при равноотстоящих значениях чисел х). Однако в информационно-поисковых системах она обычно нелинейна, и здесь приходится применять дру­ гие способы поиска адреса числа х.

Рассмотрим некоторые способы поиска адреса числа X по заданному значению этого числа, полагая при этом, что функциональная зависимость (5.2) не может быть представлена достаточно простым аналитическим выра­ жением.

Способ последовательного просмотра (способ перебора)

Существо этого способа заключается в следующем. Для заданного числа х последовательно проверяется вы­ полнение неравенств

х > х і, х> х2). . х>хі,

(5.3)

начиная с первого. Одновременно ведется подсчет числа проверок. Этот процесс продолжается до тех пор, пока одно из неравенств (5.3) окажется невыполненным. Тог­ да проверяется равенство

x — Xh,

(5.4)

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

K = K i + k— \,

(5.5)

в которой Кі обозначает адрес первого числа, а k имеет тот же смысл, что и в формуле (5.4). При выполнении равенства (5.4) поиск прекращается.

Способ последовательного просмотра — самый невы­ годный в смысле затрат машинного времени. Если веро­ ятность обращения к любому из I чисел списка одинако­

ва и равна \/1,

то в

среднем требуется просмотреть

(/ +1)/2 чисел,

чтобы

найти адрес интересующего нас

числа.

 

 

73

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

а в порядке убывания вероятностей их поиска. Однако

вЗУ с произвольным обращением к ячейкам способы поиска, основанные на упорядоченном расположении чи­ сел по их величине, оказываются, как правило, более эффективными, чем способы, учитывающие неравномер­ ность распределения вероятностей их поиска.

Способ последовательного деления на части

Расположение чисел х в ЗУ машины в порядке воз­ растания их величины позволяет избежать последова­ тельного просмотра всего списка чисел при определении адреса искомого числа. Вместо последовательного сплошного просмотра этого списка можно просматри­

вать его

вначале выборочно,

продвигаясь

от

начала

к концу шагами,

равными величине, АК~ Цп,

где

I — ко­

личество

чисел в

списке,

а

п — целое число частей, на

которое делится

список.

В

этом

случае ячейки

памяти,

к которым производится обращение, будут иметь адреса, определяемые формулой

К = К і + ЕЦІ/п\.

(5.6)

Здесь К1 — начальный адрес списка; Е — оператор вы­ деления целой части числа, а g— номер шага просмотра (£ принимает последовательно значения 1, 2 —1).

Просмотр ячеек с адресами, определяемыми по фор­ муле (5.6), продолжается до тех пор, пока не окажется невыполненным одно из неравенств типа

х > х ^

(5.7)

или пока не будут просмотрены все такие ячейки. При невыполнении одного из неравенств (5.7) описанная проце­ дура просмотра применяется к участку списка (х\-\, Х\). Если все неравенства оказываются выполненными, то делению на п частей и просмотру подвергается участок списка (Хп-і, Хі).

74

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

Е[1'/п} = 0,

(5.8)

где / ' — количество чисел в области поиска. После вы­ полнения условия (5.8) поиск осуществляется способом последовательного просмотра.

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

^MaKc^ffl—l)lognX

(5.9)

а среднее количество циклов поиска в случае равномер­ ного распределения вероятностей поиска чисел списка— формулой

 

/cp~rt/21ogJ.

(5.10)

При фиксированном объеме списка

чисел / величина

/ макс в формуле

(5.9)

является

монотонно возрастающей

функцией от п.

Для

п = 2 она

принимает минимальное

значение, так как способ деления на части приобретает

реальный

смысл только при целочисленных

значениях

п ^ 2 .

поиска путем последовательного

деления

Способ

списка чисел на части при п = 2 носит название «способа

деления пополам» [69]. Для п = 2

формулы (5.9)

и (5.10)

дают одинаковые результаты:

 

 

 

Діакс = Д р ^ log2 ^-

 

 

(5.1 1)

Разновидностью

способа последовательного

деления

на части является

способ поиска

 

путем д в у х с т е п е н ­

ног о п е р е б о р а

[69]. По этому

способу деление спи­

ска чисел на части выполняется только один раз, а затем производится последовательный просмотр чисел выделен­

75

ного участка. Максимальное число циклов поиска по способу двухстепенного перебора определяется выраже­ нием

/маис

(5 .1 2 )

При п = У1 величина /макс

принимает

минимальное

значение

7,

 

/м акс = 2 /

(5.13)

а количество просматриваемых чисел на первом и вто­ ром этапах поиска совпадает.

Среднее число циклов поиска при двухстепенном переборе может быть приближенно определено по фор­ муле

/ ср= (п2+2п +1) /2п,

(5.14)

а минимальное время поиска здесь обеспечивается при том же условии, что и в формуле (5.12).

Способ разделителей

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

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

76

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

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

Разновидностью способа разделителей является «ме­

тод с в е р т ы в а н и я к одов »

(другое его название —

м е т о д с ж а т и я кодов [83]).

Существо этого спосо­

ба состоит в том, что здесь в качестве разделительных признаков используются так называемые «свертки» ко­ дов. Свертки могут быть получены с помощью различ­ ных операций над исходными кодами: путем выделения какой-либо части кода (начальной, средней или конеч­ ной) ; путем выделения и объединения элементов кода, стоящих на определенных позициях; путем деления кода на части фиксированной длины и последующего арифме­ тического сложения этих частей с предварительным сдвигом их относительно друг друга или без сдвига и т. п. Обычно свертка имеет значительно меньшую длину, чем длина исходного кода (отсюда название «свертка»). Свертки могут быть использованы в качестве адресов для обращения к таблице разделителей. Примеры свер­ ток приведены в табл. 5.1.

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

г=Е[\о&1/п]+\,

Т а б л и ц а

5. 1

П р и м е р ы сверт ок кодов

№ п/п.

Исходный код

Способ получения свертки

1

12516273

Выделе ние

трех

начальных

 

12516273

цифр

трех

конечных

 

Выделение

 

 

цифр

 

 

ч12516273 Выделение цифр, стоящих на

4

12516273

1-й, 3-й и 7-й позициях

части

 

Деление кода

на

две

 

 

 

по 4 цифры

и

сложение

этих

5

Слово

„формиро­

частей

 

 

 

 

 

Выделение четырех начальных

6

вание“

букв

 

 

 

 

Слово

„формиро­

Выделение четырех начальных

7

вание“ '

согласных

начальной

буквы

Слово

„формиро­

Выделение

 

вание“

и подсчет количества букв в

8

Слово

„формиро­

слове

одной

начальной

 

Выделение

 

вание“

и трех конечных букв слова

Код

свертки

125

273

157

7524

форм

фрмр

ф 12

фние

где / — объем массива кодов, в котором производится поиск; п — среднее количество кодов в участке. Величину п выбирают, исходя из практических соображений.

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

Способ линейной интерполяции

Заменим произвольную монотонно возрастающую функцию (5.2) линейной функцией

К ^ А х + В

(5.15)

с коэффициентами А = (КіKi)/(xtх\) и ß = —Ахi. Подставляя выражение для В в формулу (5.15) и учи­ тывая, что адрес К, должен быть целым числом;, цолучщ

те

для него следующее выражение:

 

 

 

 

К = Е[А{х—хі)] + Кі.

(5.16)

Действительный адрес числа х

при х^х^Г Х /

заключен

либо в интервале (Ки К), либо в интервале (К,

Кі) в за­

висимости

от того,

выполняется

или не выполняется

неравенство

х^Дц-

в котором

Лц

обозначает

число х,

имеющее адрес К.

Поиск способом линейной интерполяции производится следующим образом. Сначала по формуле (5.16) вычис­ ляется величина адреса К. Затем определяется величина и знак разности х— Дд. Если эта разность равна нулю, то поиск окончен. Если она не равна нулю и положи­ тельна, то дальнейший поиск ведется способом последо­ вательного просмотра в направлении от меньших значе­ ний X к большим. Если разность отрицательна, то после­ довательный просмотр ведется в направлении от больших значений х к меньшим.

Серийный упорядоченный поиск

Этот способ поиска известен также под названием

«способа скользящего начала» (69]. При поиске по спо­ собу скользящего начала искомые числа предвари­ тельно упорядочиваются по возрастанию их величины. Первое число ищется последовательным просмотром списка чисел, хранящихся в машине, а поиск каждого нового числа производится на участке, левой границей которого является адрес последнего найденного числа. Правая граница списка чисел остается неизменной. Такой порядок поиска монотонно возрастающих чисел приводит к постепенному сужению области поиска.

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

1Сф—І/П;

где I — объем списка чисел, хранящихся в ЗУ; л — коли­ чество искомых чисел.

79

Соседние файлы в папке книги из ГПНТБ