
книги из ГПНТБ / Папернов А.А. Методы упорядочения информации в цифровых системах
.pdf50 |
|
Г Л . |
2. О С Н О В Н Ы Е |
понятия Т Е О Р И И |
У П О Р Я Д О Ч Е Н И Я |
||||||
« Я І |
находится в порядке |
по отношению к я2 » |
и |
«я2 на |
|||||||
ходится в порядке по отношению к яз» следует |
истин |
||||||||||
ность отношения «яі находится |
в порядке по |
отношению |
|||||||||
к Яз». |
|
|
|
|
|
|
|
|
|
|
|
|
4°. Для любых двух возможных значений |
признака |
|||||||||
(яі |
и |
Яг) |
непременно |
должно |
выполняться |
либо отно |
|||||
шение |
«яі |
находится |
в |
порядке |
по |
отношению |
к я2 », |
||||
либо |
отношение «я2 |
находится |
в |
порядке |
по |
отноше |
|||||
нию К Яі». |
|
|
|
|
|
|
|
|
|||
|
Всем необходимым требованиям к отношению поряд |
||||||||||
ка или следования отвечают отношения ~>- и |
•< для |
||||||||||
числовых |
значений признака и отношения ^= |
|
и |
для |
порядка следования двух слов в лексикографическом смысле. Отношения > и < для чисел являются отрица ниями отношений < и ^ соответственно и не имеют поэтому самостоятельного значения. Действительно, из справедливости отрицания отношения я і > - я 2 следует, что Я і < я 2 и, наоборот, из справедливости отрицания от
ношения |
я і < я г следует, что |
Л]~>- |
я 2 . Аналогичное |
поло |
жение и для другой пары отношений. |
|
|||
При выполнении указанных условий множество воз |
||||
можных |
значений признака |
может |
быть линейно |
упоря |
дочено. |
Это значит, что множество |
возможных значений |
признака можно выстроить в такую последовательность, в которой для любой пары возможных значений призна ка порядок расположения их в последовательности соот ветствует действующему на множестве отношению по рядка.
Для упорядочения объектов (элементов) по задан ному признаку используется рассмотренное выше отно шение порядка между значениями признака, приписанны ми различным элементам. Бели считать это отношение распространенным на сами объекты (элементы), то в этом случае не выполнено 'свойство 2° для линейного упорядочения, так как из равенства значений признаков элементов отнюдь не следует равенство самих элементов. Это приводит к тому, что в множестве объектов линейное упорядочение возможно не среди всех элементов этого множества, а только между группами элементов, где в
группу объединены все объекты, обладающие |
одним и |
тем же значением признака и не различаемые |
заданным |
отношением порядка, причем объекты с различными зна-
§ 2.1. ХАРАКТЕРИСТИКИ ПРОЦЕДУРЫ УПОРЯДОЧЕНИЯ |
51 |
чениями признаков обязательно находятся в различных группах. Схематически эта ситуация изображена на рис. 2.1, где пунктирными стрелками показано соответ ствие между элементами, и приписанными им значениями признака. В этом случае говорят, что на множестве объектов заданное отношение порядка создает линейное предупорядочение.
Возможные значения признана
Объекты
Рис. 2.1. Упорядочение объектов по значению признака.
Данное множество объектов (элементов) совместно с приписанными им признаками располагается в некото ром известном количестве ячеек памяти цифровой вычи слительной машины. Будем предполагать, что выделен ный объем памяти достаточен для размещения всего множества объектов. Каждый объект в зависимости от объема своей информации требует определенного числа двоичных разрядов в памяти машины. В некоторых слу чаях для плотной упаковки в одну ячейку памяти маши ны может быть помещено 'сразу несколько объектов. В других случаях для размещения только одного объек та может потребоваться неоколько ячеек. В вычислитель ной машине все ячейки памяти занумерованы и адрес ячейки является ее машинным наименованием. Для вы полнения операций с объектами позиция каждого из них также должна иметь свое машинное наименование.
Когда объект совместно с приписанным ему значением
признака занимает одну ячейку, машинное |
наименова |
ние позиции этого объекта будет просто |
совпадать с |
адресом соответствующей ячейки памяти. В случае, когда для каждого объекта отводится несколько расположен ных подряд ячеек памяти, можно условиться считать
52 |
Г Л . 2. |
О С Н О В Н Ы Е П О Н Я Т И Я Т Е О Р И И У П О Р Я Д О Ч Е Н И Я |
машинным |
наименованием его позиции адрес первой |
ячейки памяти из группы ячеек, выделенной для разме щения информации о данном объекте. При этом число ячеек в каждой из групп должно быть определено зара нее, так как в процессе упорядочения информация об объекте может помещаться на произвольные позиции. В тех случаях, когда нельзя заранее определить объем памяти для размещения произвольного объекта, поло жение каждого объекта в памяти фиксируется, а
упорядочению |
подвергают не множество самих объектов, |
|
а множество |
ссылок на |
объекты (оглавление). Ссылка |
является в этом случае |
полноправным представителем |
объекта, и машинное наименование объекта может быть заменено на машинное наименование ссылки на объект.
Сама |
ссылка должна иметь |
при |
этом |
стандартную |
|
форму |
и допускать |
размещение |
на |
произвольных пози |
|
циях оглавления. |
|
|
|
|
|
При |
размещении |
нескольких |
объектов |
(или ссылок |
на объект) в одной ячейке памяти машинное наименова ние позиции каждого объекта должно содержать как указание об адресе ячейки с нужной позицией, так и указание о положении позиции в ячейке. Выборка и за пись нужного объекта обеспечиваются при этом програм мными методами, если только обращение к части ячейки не предусмотрено системой команд вычислительной ма шины.
В дальнейшем для простоты будем предполагать, что все позиции, выделенные в памяти машины для разме щения объектов, имеют определенные машинные наиме нования, совпадающие, как правило, с адресами неко торых ячеек памяти из выделенного объема. Эти машин ные наименования будем называть адресом позиции.
Как правило, для размещения всего множества объек тов выделяется совокупность последовательно располо женных ячеек памяти. Однако лишь в простейшем слу чае, когда объект совместно с приписанным ему призна ком занимает не более одной ячейки памяти, машинные наименования позиций образуют простую последователь ность номеров, соответствующую адресам выделенной со вокупности ячеек. В общем случае будем считать, чго позиции некоторым образом пронумерованы. Номер по зиции будем называть ее индексом. Индексы образуют
§ 2.І. ХАРАКТЕРИСТИКИ ПРОЦЕДУРЫ |
УПОРЯДОЧЕНИЯ |
53 |
последовательность натуральных |
чисел г = 1 , 2, 3,..., |
N |
для N позиций. Будем предполагать, что задана некото рая функциональная зависимость, ставящая в однознач ное соответствие индексу позиции ее машинное наимено вание. Такой подход позволяет учесть не только объем памяти, занимаемый каждым из объектов, но и с единой точки зрения осуществить (некоторые обобщения задачи
упорядочения. Действительно, |
считая, что машинные на |
||
именования позиций а связаны |
с индексами |
функцио |
|
нальной зависимостью |
|
|
|
«М = А , - 1 - К |
' S |
{1,2,3,..., Л/}, |
(2-1) |
где машинные наименования позиций совпадают с адре сами ячеек памяти и Ло —адрес первой ячейки из выде ленного объема, получаем простейший случай, когда каждому объекту отведена одна ячейка и позиции объектов располагаются в естественном порядке в груп пе ячеек с адресами от Л 0 до Л 0 — h+N (рис. 2.2). Счи тая, что машинные наименования позиций связаны с ин дексами другой функциональной зависимостью:
а[/] = Ao — h + hi, /<={ 1,2,3, . . . , # } , |
С2 -2 ) |
можно получить случаи, когда либо каждый объект за нимает но h ячеек, либо каждый объект занимает только одну ячейку, но из общего множества позиций данная функциональная зависимость выделяет подмножество позиций, расположенных в естественной последователь ности с шагом h.
Используя в качестве функциональной зависимости
машинного наименования позиции от индекса |
выражение |
|
*[<•] = ! |
К * < л , |
( 2 - 3 ) |
I В0 |
— k + / при k < і < N, |
|
ІЕЕ\1, |
2, 3,..., N), |
|
можно рассмотреть также и случаи объединения в еди ную последовательность групп позиций, расположенных в различных частях поля памяти (рис. 2.2).
Естественно, возможны и более сложные функцио нальные зависимости.
На множестве индексов, присвоенных выделенным позициям, определено отношение порядка > или •<
54 |
Г Л . 2. О С Н О В Н Ы Е П О Н Я Т И Я Т Е О Р И И У П О Р Я Д О Ч Е Н И Я |
как на множестве 'натуральных чисел со всеми условия ми, необходимыми для линейного упорядочения этого множества. Следовательно, каждая функция, связываю щая адрес позиции с индексом, не только выделяет не которую совокупность позиций, но и упорядочивает их.
Ап |
|
А+1 |
A+Z А+3 |
A-1+N |
|
|
о |
о |
о |
|
аШ |
о) |
|
|
|
|
|
|
|
|
|
|
N |
|
|
|
a |
[L] |
|
|
|
|
A0+h |
A0+2h |
AQ-h+Hh |
|
|
• • • О—О — О |
• • • |
• » • O — О — О * » » О — О — < ) * • • * • |
В)
N
а [I] = А - fy + hi
В0 Bf1B+2...B0-k+NA0 |
AftA+2 |
А£2+к |
^ |
1=fAf1+L |
при |
і^-к |
|
\ Bf |
k + L при I |
|
|
Рис. 2.2. Различные виды сьязи |
машинного |
наименования позиции |
|
с |
индексом. |
|
Следует заметить, что для единого множества пози ций может быть задано несколько функций, связываю щих адреса 'Позиций с индексами. Тем самым выделяется несколько упорядоченных последовательностей позиций с .различными индексами. При этом возможен случай, когда одна и та же позиция будет иметь различное зна-
§ 2.1. ХАРАКТЕРИСТИКИ ПРОЦЕДУРЫ УПОРЯДОЧЕНИЯ |
55 |
чение индекса в разных последовательностях. Это зна чит, что в различных упорядоченных последовательно стях одна и та же позиция объекта будет занимать раз
личное место. Один простой пример подобной |
ситуации |
|||
приведен на рис. 2.3. |
|
|
|
|
О п р е д е л е н и е . Множество из п |
объектов |
будем |
||
называть упорядоченным |
по заданному |
признаку |
я |
в по |
следовательности позиций |
с адресами |
а[і], і |
GE |
{ 1 , 2, |
3,..., n } , если для любой пары индексов /, / ЕЕ { 1,2,3,...,«}
из отношения следования |
между индексами ( г < 7 или |
|
\ Ао+> A t z |
Ао+3 |
A;1 + N |
|
|
•ce |
N-!\N
N N-1 N-2 N-3
Рис. 2.3. Пример использования двух систем индексации одного множества позиций.
/ однозначно вытекает отношение следования между признаками объектов, расположенных в позициях с адре
сами |
<х[і] |
и |
а [ / ] , причем, |
если |
из / |
< / |
следует |
||||||
я { а [/]} =^ іг {а [/]}, |
a из / |
< / |
следует |
я { а [/]}=< я а j[t]}, |
|||||||||
то |
такое |
|
упорядочение |
будем |
|
называть |
упоря |
||||||
дочением |
множества объектов |
в порядке |
возрастания |
||||||||||
значения |
признака |
(или просто |
в порядке |
возрастания), |
|||||||||
а |
если |
из i |
f |
следует |
ъ[а Щ) ^=я{а[/]} , |
а из |
/ • < / |
||||||
следует |
я{а[/]) |
{ |
|
, |
то |
такое |
упорядочение |
||||||
будем называть упорядочением |
множества |
объектов в по |
|||||||||||
рядке |
убывания |
значения |
признака |
(или просто в поряд |
|||||||||
ке убывания) |
(рис. 2.4). |
|
|
|
|
|
|
|
2.1.2. Формулировка задачи упорядочения. Пусть в запоминающем устройстве вычислительной машины вы делена область памяти, содержащая ѵ позиций для раз мещения объектов заданного типа Q. В некоторых извест ных позициях с адресами а[і], iŒ { 1, 2,..., n} размеще-
56 ГЛ. 2. ОСНОВНЫЕ ПОНЯТИЯ ТЕОРИИ УПОРЯДОЧЕНИЯ
ны п объектов. При этом, естественно, предполагается, что п не превосходит ѵ. Объект, размещенный на пози ции с адресом а[і], будем обозначать Qx[i] (или Q[i], если это не будет вызывать недоразумений). Каждому объекту приписано значение некоторого признака тс. Зна чение признака объекта, помещенного на позицию с адресом а[і], будем обозначать тса [і] или просто тс[і]. Предполагается, что исходное размещение объектов по
Ось признаков *Ъ >а > о —
3 |
Ось индексов позиции |
|
|
Рис. 2.4. Упорядоченное множество объектов. |
позициям не связано со значениями признака тс. Задача упорядочения состоит в таком перераспределении объек тов по позициям из выделенного множества ѵ, чтобы в некоторой окончательной последовательности позиций с
адресами са[і], і ЕЕ [ 1, 2, 3,...,п } , |
объекты были |
упоря |
дочены по признаку тс в заданном |
отношении (в |
поряд |
ке возрастания или в порядке убывания). |
|
|
Задачи упорядочения в различных отношениях |
(в по |
рядке возрастания или в порядке убыванкя)| эквивалент ны друг другу, так как тривиальной заменой переменной і = п+1—/ в окончательной последовательности адресов позиций <а[і] легко преобразовать один тип упорядочения в другой без изменения позиций отдельных объектов. При этом новая последовательность позиций будет иметь адреса
о / [ / ] = ü>[n + 1 _ / ] , jŒ{ 1,2,3, ... ,«} . (2.4)
Поэтому в дальнейшем, если это не будет оговорено осо бо, под упорядочением будем понимать расположение объектов по позициям в порядке возрастания значения признака,
$ 2.1. ХАРАКТЕРИСТИКИ ПРОЦЕДУРЫ УПОРЯДОЧЕНИЯ |
57 |
Д ля перераспределения объектов по позициям необ ходимо учитывать соотношение между значениями припи санных им признаков. Учет этого соотношения опирается, как правило, на использование двуместной операции сравнения в системе команд современных цифровых вы числительных машин. В каждом таком сравнении могут участвовать либо значения признаков двух объектов, либо значение признака одного объекта и некоторое за данное число, называемое в дальнейшем «опорным» значением признака или эталоном, и в результате вы полнения сравнения выясняется, удовлетворяют ли эти значения заданному отношению порядка. По результатам сравнения производится выбор того или иного действия.
Сравнение признаков двух объектов, расположенных в общем случае на позициях из различных последователь
ностей с адресами а[і] и |
ß[y] |
соответственно, |
требует |
|||
выполнения |
следующей |
последовательности |
действий: |
|||
1. Выделение признака |
ѵа [і] объекта, расположенно |
|||||
го на позиции с адресом а[і], |
по заданному |
значению і. |
||||
2. Выделение признака |
тер [/] |
объекта, |
расположен |
|||
ного на позиции с адресом ß [ / ] , по заданному значению /. |
||||||
3. Сравнение признаков тса [і] |
и Kß [/] |
в |
заданном |
|||
отношении |
порядка. |
|
|
|
|
|
Выполнение указанной |
последовательности |
действий |
||||
требует некоторых затрат |
времени |
цифровой |
вычисли |
тельной машины. Эти затраты времени определяются сложностью вычисления адресов позиций объектов по заданным значениям индексов і и /, сложностью выделе ния признаков у объектов, а также сложностью выпол нения операции сравнения признаков, особенно если при знаки сравниваются в лексикографическом смысле или если значение признака занимает несколько ячеек памя ти. Указанная сложность определяется конкретной фор мой организации информации об объекте, формой пред ставления признака, а также трудоемкостью выполнения указанных выше действий в системе команд конкретной машины. Детальный анализ всех возможных здесь си туаций выходит за рамки тематики данной работы.
Будем считать, что выбрана форма организации ин формации об объекте, форма представления признака и известна система команд машины. В этих условиях мож но оценить трудоемкость выполнения каждого из пере-
58 ГЛ. 2. ОСНОВНЫЕ ПОНЯТИЯ ТЕОРИИ УПОРЯДОЧЕНИЯ
численных выше трех действий либо прямо по времени их выполнения, либо по математическому ожиданию это го времени, если оно точно не определено и зависит от операндов, участвующих в операции. Оценка времени вы полнения может быть дана в секундах, в числе элемен тарных тактов вычислительной машины или еще какимлибо способом — это принципиального значения не имеет.
Обозначим: |
Тжа |
—время выборки значения признака |
я |
||||
у объекта, |
расположенного |
в позиции по |
адресу |
а[і], |
|||
7\tß —время выборки значения признака |
-г. |
у объекта, |
|||||
расположенного |
по адресу |
ß [ / ] , при заданных |
значениях |
||||
индексов і и /; Г т е — время |
сравнения двух |
признаков it |
|||||
и Т% — общее время выполнения операции |
сравнения, |
||||||
причем |
|
|
|
|
|
|
|
|
|
Тк — Т%а |
+ |
Trf -\-Тта. |
|
(2.5) |
В дальнейшем описанную операцию сравнения значений признака двух объектов, расположенных в позициях с адресами а[і] и ß [ / ] , будем обозначать 5Л {a[i], ß[/°]}.
По результатам сравнения признаков должны прово диться те или иные перемещения объектов по позициям. Рассмотрим две операции такого типа.
Первой операцией будет пересылка объекта, располо
женного на позиции с адресом а[і], |
на позицию с |
адре |
сом ß [ / ] . Позиция с адресом ß[/] |
предполагается |
при |
этом свободной, так как имевшаяся там информация в результате пересылки будет утеряна. Операцию пересыл
ки можно записать в виде |
оператора присваивания |
|
ß № = |
«[/]. |
(2.6) |
Трудоемкость операции пересылки зависит от сложно |
||
сти вычисления адресов позиций по заданным |
значениям |
индексов і и /, а также от трудоемкости самого переме щения объекта с одной позиции на другую, зависящей от
организации |
информации |
в позиции |
и |
от |
ее объема. |
В дальнейшем будем считать время |
одной |
пересылки |
|||
известным |
и обозначать |
его Тп [а[і], |
ß[/]} |
или про |
|
сто Тп . |
|
|
|
|
|
Второй операцией будет перестановка или обмен объектов между позициями с адресами а[і] и ß[/] соот ветственно. Такой обмен может быть осуществлен с по мощью трех операций пересылки при наличии одной
§ 2.1. ХАРАКТЕРИСТИКИ ПРОЦЕДУРЫ УПОРЯДОЧЕНИЯ |
59 |
свободной позиции с известным адресом р. Действитель но, при выполнении цепочки пересылок
р: = я № *[»']: = РІЛ; ß [ / ] : = Р |
(2-7) |
объект, размещавшийся на позиции с адресом а[і], пе реходит на позицию с адресом ß[/] и, наоборот, объект с позиции ß[/] перемещается на позицию а[і]. Трудоем кость обмена в этом случае можно оценить по суммар ному времени выполнения трех пересылок
То6 {а [і], ß [/], р} = Г п (а [і], ?} + Та {ß [/], а [/]) + Тп {р, ß [/]}. (2.8)
Для выполнения операции обмена в общем случае необходимо иметь некоторый свободный резерв памяти.
При наличии в цифровой вычислительной машине операции поразрядного логического суммирования по модулю 2 ( ф ) обмен информации в двух ячейках мо жет быть осуществлен без использования свободного ре зерва памяти. Для этого последовательно осуществляют ся три операции
а [/]: = a [і] 0 ß [/]; |
ß [/]: = а [/] ф ß [/]; |
а [/]: = а [і] ф ß [/]. |
||
|
|
|
|
(2.9) |
Если |
обозначить |
первоначальные |
значения |
величин |
а[і] |
и ß[/] через а0 |
и ß0 , то в результате второй |
опера |
|
ции |
получаем |
|
|
|
|
|
* o 0 ß o e ß o = « o . |
|
(2.10) |
а третьей — |
|
|
|
|
|
|
Ч Ѳ ßo Ѳ Ч = Po. |
|
(2.11) |
иобмен осуществлен.
Вдальнейшем будем считать, что существует одна или несколько свободных позиций с известными адреса ми, являющиеся резервными. Объем каждой из свобод ных позиций должен быть достаточен для размещения объектов рассматриваемого типа. В некоторых особых случаях выделенное для выполнения операции обмена свободное место в памяти может оказаться недостаточ-