книги из ГПНТБ / Папернов А.А. Методы упорядочения информации в цифровых системах
.pdf30 ГЛ. 1. ПОИСК ИНФОРМАЦИИ В ЗУ ЦИФРОВЫХ МАШИН
объекты записаны в памяти в таком порядке, чтобы их адреса представляли собой монотонную функцию от признака, по которому осуществляется поиск. Алгоритм дихотомического поиска в массиве описан в § 1.5.
Множество объектов, организованное в памяти в ви де цепочки, не приспособлено для дихотомического по иска. Структура же двоичного дерева с двумя адресами связи, исходящими от каждого объекта, весьма удобна
для |
организации |
дихотомического поиска. Через один |
из |
этих адресов |
связи каждый объект связывается с |
группой объектов, признак которых больше (или по край ней мере не меньше), чем у этого объекта, а через дру
гой |
адрес связи — с группой объектов, |
у которых при |
знак |
меньше (или по крайней мере не |
больше), чем у |
исходного объекта. В результате проверки знака откло нения от условия поиска одна из групп исключается из подмножества неопределенности и, следовательно, из дальнейшего поиска. Организация множества объектов в виде двоичного дерева и поиск в нем будут более под робно описаны в главе 8.
§ 1.5. Алгоритмы дихотомического поиска в массивах
1.5.1. Дихотомический поиск по совпадению или ин тервалу (вариант № 1). Задачей поиска по совпадению или интервалу является выделение из множества фор муляров, хранящихся в памяти, подмножества форму ляров, удовлетворяющих условию поиска. Если множе ство формуляров хранится в памяти в виде упорядочен ного массива, то подмножество формуляров, удовлетво ряющих условию поиска, представляет собой некоторый подмассив.
Поиск сводится к определению верхней границы ВГ и нижней границы НГ этого подмассива. В дальнейшем для определенности будем рассматривать поиск в мас сиве, элементы которого упорядочены в порядке возра стания признака.
Выполнение условия поиска эквивалентно одновре менному выполнению двух условий:
1. Отклонение от условия поиска не больше нуля. Формуляры, удовлетворяющие этому условию, имеют номера, не превышающие ВГ.
§ .1.5. Д И Х О Т О М И Ч Е С К И Й П О И С К В М А С С И В А Х |
31 |
2. Отклонение от условия поиска не меньше, нуля. Формуляры, удовлетворяющие этому условию, имеют номера, не меньшие, чем НГ.
Блок-схема алгоритма дихотомического поиска |
по |
|||||||
совпадению |
или |
интервалу |
изображена |
на |
рис. |
1.7. |
||
Программа состоит из двух участков: |
|
|
|
|||||
участка |
поиска |
ВГ |
путем |
проверки |
1-го |
условия |
||
(блоки |
/—7) ; |
НГ |
|
|
|
|
|
|
участка |
поиска |
путем |
проверки |
2-го |
условия |
|||
(блоки |
8—13). |
|
|
|
|
|
|
32 |
ГЛ. 1. ПОИСК |
ИНФОРМАЦИИ В |
ЗУ ЦИФРОВЫХ |
МАШИН |
|||
Программа |
поиска |
верхней |
границы |
подмассива |
|||
имеет |
циклический |
характер, причем |
в каждом цикле |
||||
корректируются границы зоны поиска |
ВГ. |
|
|||||
Саму зону |
поиска |
ВГ определим |
таким |
образом, |
чтобы в верхней ее границе отклонение от условия по
иска было больше нуля, а в нижней |
ее |
границе — не |
||||||
больше нуля. Это значит, что формуляр, |
расположенный |
|||||||
в верхней границе зоны поиска, не |
может |
оказаться |
||||||
верхней |
границей |
подмассива |
и |
поэтому лишь |
при |
|||
мыкает |
к зоне поиска ВГ, но непосредственно |
не входит |
||||||
в нее. Формуляр, |
расположенный |
в |
нижней |
границе |
||||
зоны поиска, может оказаться |
верхней |
|
границей |
под |
массива и поэтому непосредственно входит в зону поис
ка |
ВГ. |
|
ка |
После того |
как в результате сужения зоны 0 поис |
ВГ оба ее |
граничных формуляра окажутся соседни |
ми, т. е. размер зоны поиска сократится до одного формуляра, нижняя граница зоны поиска ВГ окажется совпадающей с отыскиваемой верхней границей подмас
сива |
(ВГ). |
По этой причине |
удобно |
нижнюю |
границу |
||||
зоны поиска обозначить |
ВГ. |
|
|
|
|
||||
Блок |
J |
присваивает |
нижней границе зоны |
поиска |
|||||
(ВГ) |
и |
верхней |
границе Ь |
исходные |
значения, |
равные |
|||
НГ0—1 |
|
и ВГо + |
1, где |
HГа |
и |
ВГо — номера граничных |
элементов массива. Тем самым выполняются такие дей
ствия, как |
будто |
существуют фиктивные формуляры |
с номерами |
5 Г 0 + |
1 и Я Г 0 — 1, в первом из которых от |
клонение от условия поиска больше нуля, а во втором — не больше нуля. Блок 2 проверяет, не оказались ли формуляры b и ВГ соседними. Если они еще не оказа лись соседними, то блок 3 путем целочисленного деле ния определяет номер формуляра в середине зоны по иска, обозначенный буквой а. Блоки 4, 5, 6 проверяют знак отклонения от условия поиска в середине зоны по иска и в зависимости от результатов проверки заменя ют верхнюю или нижнюю границу зоны поиска ВГ фор
муляром с номером а. |
Действительно, если в формуляре |
||
с номером а |
отклонение от условия поиска больше ну |
||
ля, то во всех |
формулярах с номерами, |
превышающими |
|
а, оно в силу |
упорядоченности массива |
заведомо боль |
|
ше нуля, и их поэтому |
можно исключить из зоны поиска |
||
ВГ. Если в формуляре |
с номером а отклонение от уело- |
§ 1.5. ДИХОТОМИЧЕСКИЙ ПОИСК В МАССИВАХ
вия поиска не больше Нуля, то во всех формулярах с номерами, меньшими чем а, оно заведомо не больше нуля, и поэтому ни один из этих формуляров не может оказаться верхней границей подмассива.
Если блок 2 выявит, что формуляры Ь и ВГ сосед ние, то проверяется, не совпадает ли нижняя граница зоны поиска с ее исходным значением НГ0— 1 (блок 7). Совпадение означает, что в массиве отсутствуют форму ляры, удовлетворяющие условию поиска. Отсутствие совпадения означает, что подмассив формуляров, удов летворяющих условию поиска, не является пустым, и верхняя граница подмассива имеет значение ВГ, совпа дающее с нижней границей зоны поиска.
2-й участок программы, определяющий НГ, начина ется с блока 8, присваивающего исходные значения гра ницам зоны поиска НГ'. Верхней границе зоны поиска, которая после сужения зоны поиска до размера, равно го одному формуляру, должна совпасть с нижней гра
ницей подмассива, |
присваивается обозначение |
НГ. |
В исходном состоянии |
верхняя граница зоны поиска |
НГ |
совмещается с верхней границей подмассива, найденной
на 1-м участке программы, т. е. ей присваивается |
зна |
||
чение ВГ. |
Нижней границе зоны поиска H Г |
(Ь) |
при |
сваивается |
исходное значение, равное НГо—1. |
В исход- |
пом состоянии, так же как и в процессе последующей корректировки, в формуляре, расположенном в верхней границе зоны поиска НГ, отклонение от условия поиска должно быть не меньше нуля, а в формуляре, располо женном в нижней границе зоны поиска НГ,— меньше нуля. Зона поиска НГ включает в себя, таким образом, свою верхнюю границу и все формуляры с меньшими номерами вплоть до формуляра, непосредственно при мыкающего к нижней границе зоны поиска НГ. Форму ляр же, расположенный на нижней границе зоны поис ка, не входит в зону поиска.
Блоки 9—13 определяют НГ. Функции, выполняемые
этими блоками, аналогичны |
функциям, |
выполняемым |
||
блоками 2—6, |
определяющими |
ВГ. |
|
|
Самый факт наличия НГ не нуждается в |
проверке, |
|||
так как установленное блоком 7 наличие |
ВГ |
предопре |
||
деляет наличие и НГ (в частном случае, |
НГ может |
|||
совпадать с |
ВГ). |
|
|
|
2 А. А. Папернов, В. Я. Подымов
34 |
гл. |
î. поиск |
И Н Ф О Р М А Ц И И В З У Ц И Ф Р О В Ы Х |
М А Ш И Н |
|
|
После |
того |
как |
блок 9 установит, что |
формуляры |
с номерами НГ |
и Ъ оказались соседними, т. е. |
формуляр |
|||
с номером НГ совпадает с нижней границей |
подмасси- |
||||
ва, работа |
программы заканчивается. |
|
Определим количество циклов, требуемых для отыс кания обеих границ. Если массив содержит п формуля ров, то в исходном состоянии имеется п + 1 вариант ре зультата поиска ВГ: ею может оказаться любой из п формуляров, и ее может вообще не оказаться. Каждая проверка уменьшает количество возможных вариантов вдвое (с точностью до ближайшего большего или бли жайшего меньшего целого числа), и поэтому для того,
чтобы |
определить |
ВГ, |
требуется |
выполнить |
Ei(log2(tt+l)) |
циклов |
проверки (£і — функция округ |
ления до ближайшего целого числа, не меньшего задан ного). Если ВГ оказался формуляр с номером і, то количество возможных исходов поиска НГ равно і. Для того чтобы определить НГ, требуется выполнить
£і (log2 і) циклов проверки.
Вхудшем случае, когда ВГ совпадает с п-м форму ляром, общее количество циклов проверки при опреде
лении положения |
обеих |
границ приблизительно |
равно |
2 £ i ( l o g 2 n ) . Если |
любое |
положение верхней |
границы |
подмассива равновероятно, то среднее количестве цик
лов проверки |
равно |
|
|
|
|
||
log2 (п + |
1) + |
— |
У log, / = |
log2 |
(n + |
1) + — log2 |
(n!). (1.5) |
|
|
n |
(=1 |
|
|
n |
|
Используя |
приближенную |
формулу |
Стирлинга |
[44] |
|||
|
|
|
п і ^ і п |
/ е у |
. у ^ |
|
(1.6) |
нетрудно привести выражение для среднего количества циклов к виду
log, (п + |
1) + log, п — log, е + у |
п ( 1 + |
log, (* л)) |
« |
|
ж |
2 log, n — 1,37. |
(1.7) |
|
Среднее |
количество циклов проверки |
мало отличается |
||
от максимального. |
|
|
|
§ 1.5. ДИХОТОМИЧЕСКИЙ ПОИСК В МАССИВАХ |
35 |
Рис. 1.8. Блок-схема алгоритма дихотомического поиска по совпа дению или интервалу (вариант № 2).
36 |
Г Л . I . П О И С К И Н Ф О Р М А Ц И И Б З У Ц И Ф Р О В Ы Х М А Ш И Н |
1.5.2. Дихотомический поиск по совпадению или ин тервалу (вариант № 2). На рис. 1.8 изображена блоксхема еще одного варианта дихотомического поиска по совпадению или интервалу. Программа поиска состоит из трех основных участков:
1)участка поиска какого-либо из формуляров, удов летворяющих условию поиска, («попадания в подмассив») (блоки /—8) ;
2)участка поиска ВГ (блоки 9—13);
3)участка поиска НГ (блоки 14—18).
При выполнении 1-го участка |
программы в каждом |
||
из выделенных для проверки формуляров |
предусматри |
||
ваются проверки обоих |
условий |
(см. п. |
1.5.1), в сово |
купности эквивалентных |
условию |
поиска |
(блоки 4 и 6). |
Невыполнение условия поиска может выявиться либо после первой, либо после второй проверки. Оба указан ных случая можно считать равновероятными, и поэтому среднее количество проверок в одном цикле равно 1,5.
После того как в некотором формуляре впервые вы полнятся оба условия поиска, формируются зоны поис ка обеих границ подмассива. Формуляр, удовлетворяю щий условию поиска, в принципе может оказаться как
ВГ, так и НГ. Поэтому |
в зону поиска ВГ он включает |
|
ся в качестве ее нижней границы, а в зону |
поиска НГ — |
|
в качестве ее верхней |
границы. Верхняя |
граница зоны |
поиска ВГ и нижняя граница зоны поиска НГ в исход ном состоянии совмещаются соответственно с верхней и нижней границами зоны поиска формуляра, получен
ными к концу 1-го участка |
программы. Как уже пояс |
||||||||
нялось в п. 1.5.1, оба эти |
формуляра |
не входят |
непо |
||||||
средственно в соответствующие |
зоны |
поиска, |
а |
лишь |
|||||
примыкают к ним. |
|
|
|
|
|
|
|
||
|
В программе поиска ВГ блоком 11 проверяется |
одно |
|||||||
из условий п. 1.5.1, так как в зоне поиска ВГ |
второе |
||||||||
условие заведомо выполняется, а в программе |
поиска |
||||||||
НГ |
блоком 16 проверяется |
другое условие |
поиска. |
||||||
|
2-й и 3-й участки программы циклически |
повторяют |
|||||||
ся |
некоторое количество раз, |
зависящее |
от исходного |
||||||
размера зон поиска границ. Можно ожидать, |
что эти |
||||||||
зоны в среднем |
окажутся |
малой долей |
всего |
массива, |
|||||
и, |
следовательно, |
количество |
повторений |
2-го и 3-го |
участков программы будет небольшим.
§ 1.5. Д И Х О Т О М И Ч Е С К И Й П О И С К В М А С С И В А Х |
37 |
Программа поиска, организованного по блок-схеме рис. 1.8, несколько сложнее программы, выполненной по блок-схеме рис. 1.7. Но в связи с тем, что ряд проверок на 1-м участке программы выпадает, а количество по вторений 2-го и 3-го участков программы невелико, производительность программы, выполненной по блоксхеме рис. 1.8, в среднем несколько выше, чем програм мы, выполненной по блок-схеме рис. 1.7.
1.5.3. Дихотомический поиск по близости. Блок-схе
ма программы дихотомического поиска по близости изображена на рис. 1.9. В каждом цикле поиск осуще ствляется в зоне с верхней границей с, в которой от клонение от условия поиска больше нуля, и нижней
нет
Выаача bue
Рис. 1.9. Блок-схема алгоритма дихотомического поиска по близости.
границей Ь, в которой отклонение |
не |
больше |
нуля. Ис |
ходными границами зоны поиска |
являются |
фиктивные |
|
формуляры с номерами НГ0—1 |
и |
ВГ0 + 1. |
Сужение |
38 |
Г Л . 1. П О И С К И Н Ф О Р М А Ц И И В З У Ц И Ф Р О В Ы Х М А Ш И Н |
зоны |
поиска осуществляется блоками 2—6, выполняе |
мыми циклически, так же, как и в программах дихото мического поиска по совпадению или интервалу. Коли чество возможных исходов поиска по близости в мас сиве, содержащем п элементов, равно п, и поэтому ко
личество циклов проверки равно |
E^{\ogin). |
|
||
После того |
как |
блок 2 обнаружит, что |
формуляры |
|
с номерами b |
и с |
оказались соседними, |
выполняется |
анализ этих двух формуляров. Содержание этого ана
лиза зависит от того, какое отклонение |
минимизирует |
|||
ся при поиске — положительное, |
отрицательное |
или |
аб |
|
солютное. На блок-схеме рис. 1.9 |
эти различия |
не |
от |
|
ражены. |
|
|
|
|
Блок 7 проверяет совпадение нижней границы зоны |
||||
поиска с ее исходным значением |
НГ0—1. |
Совпадение |
означает, что все формуляры в массиве имеют отклоне
ние от условия |
поиска, |
большее нуля, и поэтому форму |
|
ляр |
с номером |
с = НГ0 |
имеет минимальное положитель |
ное |
(и минимальное по |
абсолютной величине) отклоне |
|
ние от условия |
поиска. |
|
Блок 8 проверяет равенство нулю отклонения от ус ловия поиска в формуляре с номером Ъ, не равным ис ходному значению НГ0—1. Равенство нулю означает, что формуляр с номером b имеет минимальное отклоне
ние от условия поиска, независимо |
от |
заданного харак |
тера отклонения. |
|
% |
В случае неравенства нулю отклонения от условия |
||
поиска в формуляре с номером |
b |
блок 9 проверяет |
совпадение верхней границы зоны поиска с ее исходным значением ВГ0 + 1. Совпадение означает, что все фор муляры в массиве имеют отрицательное отклонение от
условия поиска, и поэтому формуляр с номером |
b = ВГ0 |
||||||||
имеет |
минимальное |
отрицательное (и |
минимальное |
||||||
по абсолютной |
|
величине) |
отклонение |
от |
условия |
||||
поиска. |
|
|
|
|
с |
|
|
|
|
Отсутствие |
совпадения |
с |
исходным |
значением |
|||||
ВГ0+\ |
означает, |
что |
формуляр |
b |
имеет |
минимальное |
|||
отрицательное, |
а |
формуляр |
с — минимальное |
положи |
тельное отклонение. Для того чтобы определить форму ляр с минимальным отклонением по абсолютной вели чине, требуется еще одна проверка (на рис. 1.9 она не показана).
|
§ |
1.6. ПРИМЕРЫ ПОИСКОВЫХ СИСТЕМ. СЛОВАРИ |
âô |
||
§ |
1.6. |
Примеры поисковых систем. Словари |
|
||
Словарем |
мы будем |
называть список, любой |
элемент |
||
которого |
представляет |
собой некоторую информацию |
|||
типа |
текста, |
связанную |
с заголовком. Поиск |
в сло |
варе осуществляется по совпадению с заданным заго ловком.
1.6.1. Организация словаря в виде многоступенчатого цепного списка. Слово, стоящее в заголовке любого тек ста, являющегося элементом словаря, задается в виде цепи составляющих его букв, связанных друг с другом адресами связи.
Буквы, входящие в заголовки, объединяются в списки различных иерархических уровней. В список высшего или первого иерархического уровня входят возможные за главные буквы. Те буквы, которые не могут быть заглав ными, например Ь и Ъ, естественно, не входят в список 1-го иерархического уровня. Каждая буква, входящая в список 1-го иерархического уровня, является заголовком некоторого списка 2-го иерархического уровня, связан ного адресом связи с соответствующей буквой списка 1-го уровня. Каждый список 2-го уровня содержит возмож ные вторые буквы слов, сочетающиеся с соответствую щей первой буквой. Например, в список 2-го уровня, оза главленный буквой Б, не входят буквы Б, В, Г, Ш, Щ и
другие, несовместимые с первой буквой Б. |
|
|||
Каждая |
буква, входящая в список і-го иерархического |
|||
уровня, |
связана |
адресом связи с некоторым |
списком |
|
( і + 1 )-го |
уровня |
и является заголовком этого |
списка. |
|
Для того чтобы |
от списка 1-го уровня дойти до |
некото |
||
рого списка |
(і+1) - го уровня, нужно пройти через списки |
всех уровней, начиная со 2-го и кончая і-м. Буквы, запи санные в списках 1-т-і-го уровней, образуют в соответ
ствующем порядке начальную часть заголовка. |
Список |
||
+ 1 ) -го уровня, связанный |
с і-й буквой этой |
начальной |
|
части, содержит возможные |
(і+1 ) - е буквы |
этих слов, |
|
сочетающиеся с соответствующим /-буквенным |
началь |
ным участком. Кроме букв, в список любого иерархиче ского уровня, кроме 1-го, могут входить знаки, интер претируемые как точки и используемые как знаки окон чания заголовков. Точка позволяет отличить закончен ное слово от начальной группы букв другого слова.