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

книги из ГПНТБ / Папернов А.А. Методы упорядочения информации в цифровых системах

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

20 ГЛ. 1. ПОИСК ИНФОРМАЦИИ В ЗУ ЦИФРОВЫХ МАШИН

После выявления выполнения условия поиска в какомлибо объекте дальнейший поиск прекращается. Блоксхема рис. 1.2 составлена не в самом общем виде, как блок-схема рис. 1.1, а для случая массива с конкретной

Выдача

 

 

информации

 

 

а шормуляре

 

 

 

 

нет

Переход

©

 

к следиющеми

 

 

рормі/мр:/

 

Поиск закончен

 

 

нет

 

ы п

 

 

 

 

нет

да

 

Поиск закончен; объекты,

•I

 

в которых Выполняется

 

условие поиска,

Поискзакончен

 

отсутствуют

 

 

Рис. 1.1. Одноступенчатый пе-

Рис. 1.2. Одноступенчатый пере-

ребор (вариант №

1).

бор (вариант № 2).

расшифровкой способа реализации каждого блока. Идентичные блоки в блок-схемах рис. 1.1 и 1.2 прону­ мерованы одинаково.

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

§ 1.4. МЕТОДЫ

ПОИСКА ФОРМУЛЯРОВ В СПИСКАХ

21

Допустим, что

все множество объектов, информация

о которых хранится в ЗУ, разбито на ряд подмножеств (возможно пересекающихся друг с другом), каждое из которых отличается от другого подмножества некото­ рыми особенностями. Такими особенностями могут быть либо более узкие пределы изменения признака, интер­ претируемого как число, чем для всего множества объ­ ектов, либо — в случае поиска по совокупности несколь­

ких признаков — постоянное значение

какого-либо одно­

го или большего числа признаков.

 

Разделение множества объектов

на подмножества

дает возможность составить и записать в ЗУ вспомога­ тельную таблицу, объектами которой являются не непо­

средственные объекты поиска, а выделенные

подмноже­

ства объектов.

Каждому из

выделенных

подмножеств

придается информация, которая содержит,

во-первых,

характеристику

подмножества

(пределы изменения чис­

лового признака или постоянное значение какого-либо признака из совокупности признаков) и, во-вторых, дан­ ные о размещении в памяти объектов, входящих в со­ став этого подмножества.

Поиск требуемого объекта выполняется в два этапа: сначала по вспомогательной таблице перебором отыски­

вается соответствующее подмножество

объектов, а за­

тем перебором в пределах

этого

подмножества — тре­

буемый объект.

 

 

 

Можно в пределах всех или некоторых из выделен­

ных подмножеств выполнить

еще

одно распределение

объектов по новым подмножествам,

характеризуемым

либо еще более узкими пределами изменения числовых

признаков,

либо — в случае

поиска по совокупности не­

скольких

признаков — другими

значениями

кодовых

признаков.

 

 

 

 

 

В результате

поиск становится

многоступенчатым.

Блок-схема

алгоритма

двухступенчатого

перебора

изображена на рис. 1.3. Пусть значение признака раз­ делено на две части: группу старших разрядов К1 и группу младших разрядов К2. Значения К1 определяют разбиение множества объектов на отдельные непересе­ кающиеся подмножества, информация о которых содер­ жится во вспомогательном массиве AI. В этом массиве для каждого значения К1 указаны граничные значения

22

ГЛ.

1. ПОИСК ИНФОРМАЦИИ В ЗУ ЦИФРОВЫХ МАШИН

индексов

(і2тч

и п2) позиций основного массива А2, на

которых располагается подмножество элементов с соот­ ветствующим значением К.1 старших разрядов признака. Текущие индексы вспомогательного и основного масси­ вов обозначены il и і2.

Формиродание © І2тц,п2

І2: =

Выдача

информации'оЬЩ/2]

І2:= '2*1

Объекты, в которых аыполняется услабое поиска,

отсутстдуют

Поиск закончен

Рис. 1.3. Двухступенчатый перебор.

Первая ступень перебора осуществляется блоками 1—4. Естественным является предположение, что харак­

теристики каждого из выделенных

подмножеств отли­

чаются от характеристик любого другого

подмножества,

и поэтому после нахождения требуемого

подмножества

осуществляется переход ко

второй

ступени

перебора,

выполняемой блоками 5—10.

В то же время

количество

объектов, удовлетворяющих

условию

поиска,

в каждом

§ 1.4. МЕТОДЫ ПОИСКА ФОРМУЛЯРОВ В С П И С К А Х

23

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

Многоступенчатый перебор, позволяя проверять ус­

ловие

поиска

не

во всех объектах, значительно повы­

шает

тем самым

производительность процедуры поиска

по сравнению

со

случаем одноступенчатого перебора

внеорганизованном массиве или цепочке.

1.4.3.Вычисление адреса. Вычислением адреса назы­ вается определение его в виде некоторой однозначной функции от заданного условия поиска (рис. 1.4). Если признак, по которому осуществляется поиск, в свою оче­ редь является однозначной функцией адреса информа­ ции, то он в явном виде может и не фигурировать в со­ ставе хранящейся в ЗУ информации.

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

заться

излишними,

а

в других случаях — недостаточны­

ми, что

приводит

к

неэффективному использованию

памяти.

 

 

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

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

24

ГЛ. 1.

ПОИСК

ИНФОРМАЦИИ В ЗУ

ЦИФРОВЫХ

МАШИН

 

Для повышения

эффективности

используется

двух­

ступенчатый

поиск

с вычислением

адресов

на

первой

ступени и перебором на второй ступени. Это объясняет­

ся тем, что количество и

характеристики

подмножеств,

на которые распадается

множество объектов

поиска,

 

 

 

 

 

 

 

®

 

 

 

©

 

Формиробание

 

 

 

 

 

 

по ключу

 

 

 

 

 

 

адреса

 

 

 

по ключу

 

управляющего слоаа

 

 

адреса

 

 

 

 

 

 

 

информации

 

 

 

 

 

 

 

 

 

 

 

 

 

©

 

 

 

 

 

Обращение

 

 

 

 

 

 

н информации

 

 

 

Выдача

 

пи адресу,

 

 

 

 

дописанному

 

 

 

информации

 

в упрадлянщем слоое

 

 

 

 

 

 

Рис. 1.4. Поиск путем вы-

 

Рис. 1.5.

Поиск

путем

числения

адреса.

 

вычисления

 

адреса

с не­

 

 

 

 

прямой

адресацией.

 

являются,

как

правило, более

стабильными, чем

коли­

чество и

характеристики

непосредственных

объектов

поиска.

 

 

 

 

 

 

 

 

Информация

о размещении

в памяти

каждого

под­

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

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

Блок-схема алгоритма двухступенчатого поиска с вы­ числением адреса на первой ступени и перебором на второй ступени изображена на рис. 1.6. В качестве при­ знака подмножества, выделяемого на первом этапе поиска, используется значение группы старших разрядов признака, заданное в условии поиска. Таким образом,

§ 1.4. М Е Т О Д Ы П О И С К А Ф О Р М У Л Я Р О В В С П И С К А Х

25

группа старших разрядов признака К1 используется на первой ступени поиска для вычисления адреса управ­ ляющего слова, а группа младших разрядов К2 — для перебора на второй ступени в пределах подмножества, размещение которого в

памяти выявлено на пер­ вой ступени поиска.

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

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

Кроме того, задается некоторая функция номе­ ра позиции А от призна­ ка Пр

Л = /(Пр),

(1.2)

Формирование ' по HI

адреса группы І:=1(К1)

Выдача информации о6А[і\

да

Поиск закончен

Рис. 1.6. Двухступенчатый поискг

 

 

1-я

ступень

вычисление

адреса,

преобразующая вероятно

2-я ступень — перебор.

стный закон

распределе­

 

 

 

 

 

ния

признака

в равномерный

в пределах m выделен

ных

позиций

памяти вероятностный

закон

распреде

ления номера

позиции.

 

 

 

 

 

Характерными примерами

функции

(1.2)

являются:

1. А равно

остатку от целочисленного

деления

много

разрядного двоичного числа, изображаемого кодом при знака Пр, на т.

26

ГЛ.

1. ПОИСК

ИНФОРМАЦИИ В ЗУ ЦИФРОВЫХ МАШИН

А

2. При

m = 2k

(k — положительное целое

число)

равно поразрядной сумме по модулю 2

А-разряд-

ных кодов, на которые можно разбить полный код при­ знака Пр.

Функция (1.2) однозначно преобразует признак Пр в номер позиции. Однако обратная функция не является однозначной: различным значениям признака может со­ ответствовать один и тот же номер позиции. Отсюда сле­ дует, что при записи в память информации о новых объектах может оказаться, что позиция ЗУ с номером, вычисленным по признаку объекта, занята информацией о другом объекте.

Записи, у которых вычисленный номер позиции ока­ зался совпадающим с одним из ранее вычисленных но­

меров,

будем называть

переполняющими

записями.

Возможность появления переполняющих записей

должна

быть учтена как

в алгоритме записи нового объ­

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

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

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

§ 1.4. МЕТОДЫ ПОИСКА ФОРМУЛЯРОВ

В СПИСКАХ

27

І. Размещение

переполняющих

записей в выделенной

области памяти.

Количество позиций

в выделенной обла­

сти памяти m превышает количество объектов п. Пози­

ция

АСЛ

, следующая

за

позицией с номером

А,

опреде­

ляется

по формуле

 

 

 

 

 

 

 

Лс л

=

(Л 4- S) mod m,

 

 

(1.3)

где

S

и m — взаимно

простые целые

цисла

(это

нужно

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

Частным, но

достаточно

удобным

случаем

формула

(1.3) является

Лс л = ( І 4 +

l)modm.

 

(1.4)

 

 

Недостатком

описываемого

способа, выявляющимся

особенно резко

в случае, если

п по

величине

близко

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

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

Неравномерность распределения записей по выде­ ленной области памяти увеличивает среднее время по­ иска по сравнению со случаем равномерного распреде­ ления.

2. Размещение

переполняющих

записей

в резервной

области памяти.

Количество позиций m

в выделенной

области памяти несколько меньше, чем количество объ­ ектов п. Для переполняющих объектов выделяются пози­ ции в резервной области памяти за пределами заранее выделенной области. Адрес назначенной позиции вводит­ ся в состав ранее занятой позиции. Тем самым все пози-

28 Г Л . 1, ПОИСК ИНФОРМАЦИИ В ЗУ ЦИФРОВЫХ МАШИН

ции с одинаковым значением вычисленного адреса объ­ единяются в цепочку.

Признаком окончания цепочки является незаполнен­ ный адрес связи к следующей позиции.

Недостатком описываемого способа является необхо­ димость выделения дополнительных разрядов для записи адресов связи.

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

1.4.4. Дихотомический поиск. Любая проверка, осу­

ществленная в процессе

поиска,

 

уменьшает

неопреде­

ленность информации

о

выполнении условий

поиска

в заданном множестве

объектов

и

разбивает множество

объектов, относительно

которых

к

началу проверки нам

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

полнении или

невыполнении

в них условия поиска.

Поиск должен

быть продолжен

в пределах именно этого

подмножества.

 

 

§ 1.4. МЕТОДЫ ПОИСКА ФОРМУЛЯРОВ В СПИСКАХ

29

Первое из упомянутых выше подмножеств назовем

подмножеством определенности, а второе — подмноже­ ством поиска (подмножеством неопределенности).

Вслучае перебора после каждой проверки размер подмножества определенности увеличивается на один объект, а размер подмножества поиска уменьшается на один объект.

Вслучае вычисления адреса размер подмножества поиска после первой же проверки уменьшается до нуля, что позволяет ограничить поиск единственной проверкой.

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

примерно в два раза, носит название

дихотомического.

Для

возможности

осуществления

дихотомического

поиска

существенно,

чтобы, кроме понятия выполнения

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

нения — объекты с

еще большими по абсолютной вели­

чине отрицательными отклонениями.

 

Если

множество

объектов организовано в памяти

в

виде

массива, то

дихотомический поиск используется

в

случае, если массив предварительно упорядочен, т. е.

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