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

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

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

Ассоциативно-адресные способы поиска

Существо ассоциативно-адресных способов поиска (другое их название — программно-ассоциативные спо­ собы) состоит в том, что информационные сведения, обладающие общими признаками, объединяются с по­ мощью системы адресных отсылок в ассоциативные группы (или списки). Это позволяет производить быст­ рый поиск в массивах неупорядоченных сведений и соз­ дает удобства при обновлении информации. В настоя­ щей главе мы рассмотрим лишь основные принципы применения ассоциативно-адресных способов поиска. Более подробные сведения по этому вопросу можно найти в монографии А. И. Китова [68].

Различают три основных способа объединения инфор­ мационных сведений в ассоциативные группы: 1) «гнездо­ вой, 2) цепной, 3) узловой. Согласно первому способу адресные отсылки к элементам информации, обладаю­ щим одинаковыми признаками, располагаются рядом,

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

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

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

Если необходимо дополнить ассоциативные группы новыми элементами информации, коды этих элементов размещаются на свободном поле памяти, а для записи отсылочных адресов к ним создаются новые «гнезда». Переход от старых «гнезд» к новым осуществляется через адреса связи.

8 0

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

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

Рассмотрим важный в практическом отношении при­ мер организации поисковых массивов, когда в качестве признаков для формирования цепочек ассоциированных элементов принимаются свертки кодов этих элементов.

6—310

81

Здесь область памяти ЭВМ, отводимая для записи ин­ формационных сведений, делится на две части (рис. 5.1):

1)

адресную

часть; 2) массив элементов информации.

В

адресной

части записываются

отсылочные

адреса

к

элементам

информации и коды

связи (или

адреса

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

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

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

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

82

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

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

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

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

элементов или их

адресов в одном «узле» (в одной ячей­

ке памяти или в

группе

рядом

расположенных ячеек),

а связи между

однородными

элементами

различных

сообщений — с помощью

цепочек адресных

отсылок.

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

На рис. 6.2 приведен пример использования узлового способа для организации массива сообщений, каждое из которых состоит из трех элементов. Здесь, как и при цепном способе организации массивов, поле памяти ЭВМ делится на две части: А — адресную часть, Б — массив сообщений. Для записи одного сообщения отводится одна ячейка памяти (см. часть Б на рис. 5.2).

Ячейка делится на три участка. Каждый участок представляет один элемент сообщения. Участки ячеек, обозначающие одинаковые элементы сообщений, соеди­ няются между собой цепочками адресных отсылок (эти цепочки на рис. 5.2 условно изображены сплошными линиями со стрелками). Адресные отсылки к участкам, являющимся первыми элементами цепочек, указываются в части А поля памяти, а отсылки к остальным элемен­ там цепочек — в части Б. При этом отсылки к элементам ассоциативных цепочек с порядковым номером і записы­ ваются на участках, являющихся элементами этих цепо­ чек с порядковым номером і —1. На участках, отведен­ ных для последних элементов цепочек, записывается признак конца (на рис. 5.2 такие участки заштрихо­ ваны) .

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

щаться

по

сверткам,

а к остальным элементам — по

кодам

связи

Ксв. Соответственно в

ячейках

адресной

части будут

храниться

тройки кодов

/СЛоАсв

(рис. 5.2).

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

заданный

код элемента сообщения совпадает с одним

из кодов

Ка и для

него выбирается соответствующий

адрес А0.

 

 

Поиск

в массиве

сообщений ведется по окончании

поиска в адресной части. Если в качестве поискового признака уңазьрңается КОД одного элемента сообщения, то

84

 

 

/

и

 

 

ш

 

 

 

,

М

 

 

Кet

 

 

 

 

A l

 

 

Kh

 

 

 

к§

A l

 

:

ffев

А. Адресная

 

 

* • •

• •

• •

часть

 

 

т-1

A

t 1

 

кe i-’

 

 

 

кэ

 

 

 

 

К ?

А ?

 

V m

 

 

 

 

Ксв

 

 

 

___

\ А І

 

\ A 0k

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

/

 

 

 

 

 

 

/

/ 41

 

 

 

 

 

 

/

/

 

 

 

 

 

% t А

 

 

 

 

 

 

^

/

 

 

 

 

 

Б. Массив

Ct-

— — — f—>

 

 

 

 

 

 

 

 

сообщений

5C4

 

 

 

 

 

 

 

 

 

 

 

Д

\ \

-

 

 

 

 

 

■§

\

 

 

 

 

 

<5

\

v

 

 

 

 

 

 

\

\ N

 

 

 

 

 

 

 

 

 

 

 

 

\ r

ч

Рис. 5.2. Узловой способ поиска.

из массива Б выбираются все сообщения, содержащие этот элемент (все сообщения, включающие элементы ассоциативной цепочки с начальным адресом Л0). Если задается несколько кодов элементов сообщений, то про­ слеживаются все соответствующие этим «одам ассоциа­ тивные цепочки и выбираются сообщения, включающие все заданное элементы,

85

При дополнении поискового массива новыми сообще­ ниями выполняются следующие операции. Сначала для элементов нового сообщения в массиве А ищутся адреса Ап. Если сообщение не содержит новых элементов, то найденные адреса записываются в первую свободную ячейку массива Б, а адреса участков этой ячейки зано­ сятся на прежние места хранения адресов Ао. Если со­ общение имеет в своем составе новые элементы, то для них вместо адресов До в свободную ячейку массива Б заносятся признаки конца ассоциативных цепочек, а ад­ реса участков этой ячейки и коды новых элементов за­ носятся в свободные ячейки массива А. Ячейки массива А подключаются к ассоциативным цепочкам, соответст­ вующим сверткам кодов новых элементов. Сообщения исключаются из поискового массива путем затирания содержимого ячеек, представляющих эти сообщения, и переноса хранившихся в них отсылочных адресов на такие участки ячеек массива Б, где ранее были записа­ ны адреса участков освобождаемых ячеек.

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

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

8 5

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

Г л а в а 6 МАШИННЫЕ СЛОВАРИ

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

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

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

* Словоформа — последовательность букв между двумя сосед­ ними пробелами.

8 7

шіях, о сочетаемости данного слова с другими словами или классами слов и т. п.

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

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

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

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

8 8

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

Буквенные коды слов имеют различную длину и в зависимости от типа используемой ЭВМ могут быть записаны в одной или нескольких ячейках памяти. Учи­ тывая это обстоятельство, можно объединить слова в группы с одинаковой «ячеечностыо» і, а в пределах каждой группы расположить по алфавиту. Границы групп кодов слов можно отобразить в специальной т а б ­

л и ц е р а з д е л и т е л е й , указав

в ней для каждого і

соответствующие ему начальный

адрес До* группы и на­

чальный номер АѴ слова в группе.

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

A n= A 0i

+ ( N - N 0i)i,

(6.1)

где N— номер слова, а

величина і определяется

с по­

мощью таблицы разделителей, так чтобы выполнялось условие N0i^ ;N < N o i+1. Поиск в словаре ведется на раз­ личных участках по разным подпрограммам, так как слова, записанные в двух, трех и большем числе ячеек, необходимо сравнивать по всей длине их буквенных кодов.

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

89

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