Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[195]

дов &i, Ь2, , Ьп. При этом не может быть циклов: идя по проводам и проходя компараторы от входов к выходам, нельзя вернуться к исходному компаратору. Это требование позволяет рисовать сети компараторов в виде прямых, как на рисунке 28.2, располагая входы слева, а выходы справа: данные движутся по проводам слева направо.

Мы считаем, что каждый компаратор выдаёт выходные значения через единицу времени после того, как получит входные значения. Рассмотрим сеть рис. 28.2(a) и представим всебе, что в в момент времени 0 на вход поступают числа (9,5,2,6). В этот момент компараторы А и В (и только они) получают входные данные и начинают работать (параллельно). Поэтому в момент времени 1 на их выходах появятся числа (рис. 28.2(b)), которые позволят начать параллельную работу компараторам С и D (но не Е). Компаратору Е придётся дожидаться момента времени 2, когда С и D закончат работу (рис. 28.2(c)). Ещё через единицу времни выходная последовательность (2, 5, 6, 9) будет полностью готова (хотя два из четырёх значений были готовы раньше).

Как видно из этого примера, время работы сети (прошедшее с момента получения входной последовательности до выдачи выходной последовательности) определяется максимальным числом компараторов, стоящих на пути от входа к выходу. Более формально, мы определяем глубину (depth) провода в сети следующим образом: входные провода имеют нулевую глубину, глубина выходов компаратора (подключённых к нему проводов) равна max(dx, dy) + 1, где dx и dy - глубины его входов (подключённых к ним проводов). Это определение корректно, поскольку нет циклов. Назовем глубиной компаратора глубину выходящих из него проводов. Глубиной сети считаем максимальную глубину её выходных проводов (или, что то же самое, максимальную глубину её компараторов). Например, глубина сети на рисунке 28.2 равна 3 (компаратор Е имеет глубину 3). Глубина компаратора равна времени, которое пройдет от начала работы по появления ответов на его выходах, так что время работы сети в целом равно её глубине.

Размером (size) сети называют число компараторов в ней.

Любая сеть компараторов как-то переставляет числа, поданные на кё входы. Её называют сортирующей сетью (sorting network), если для любой входной последовательности получающаяся из неё выходная последовательность монотонно возрастает (h ь2 <С ••• <С Ьп).

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


Рис. 28.3 Сортирующая сеть, соответствующая сортировке вставками (упражнение 28.1-6).

pa D. Оставшиеся два числа упорядочиваются компаратором Е в момент времени 3.

Сети компараторов аналогичны алгоритмам сортировки, однако для каждого га мы должны строить свою сеть, в то время как один и тот жэе алгоритм сортировки может работать для последовательностей произвольной длины. В этой главе мы построим семейство Sorter эффективных сортирущих сетей - для каждого га в нём будет своя сеть, которую мы обозначаем SoRTER[ra].

Упражнения.

28.1-1

Каковы будут значения на проводах сети рис. 28.2, если на её вход подаются числа (9, 6, 5, 2)? 28.1-2

Пусть га - степень числа 2. Постройте сеть компараторов с га входами и га выходами глубины lg га, которая на находит наименьший и наибольший из входов (и выдаёт их на верхний и нижный провода соответственно).

28.1-3

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

28.1-4

Докажите, что любая сортирующая сеть с га входами имеет глубину не меньше, чем lgra. 28.1-5

Докажите, что любая сортирующая сеть содержит не менее fi(ralgra) компараторов. 28.1-6

Покажите, что сеть на рисунке 28.3 является сортирующей, установив её родство с алгоритмом сортировки вставками (см. раздел 1.1).

28.1-7

Сеть компараторов с га входами и с компараторами представима в виде упорядоченного списка, содержащего с пар натуральных чисел от 1 до га. Паре соответствует компаратор, соединяющий г-ую и j-ую прямые. Список перечисляет компараторы слева направо. Используя это представление, придумайте (последовательный) алгоритм, который находит глубину сети за время О (га + с).

28.1-8 *

В сети некоторые элементы являются перевёрнутыми компараторами, выдающими на верхний выход максимальный из входов, а


на нижний - минимальный. Как преобразовать её в сеть только из обычных компараторов, эквивалентную исходной?

28.2. Правило нуля и единицы

Правило нуля и единицы (zero-one principle) говорит, что если сеть компараторов упорядочивает любую последовательность нулей и единиц, то является сортирующей (и упорядочивает любую последовательность чисел (целых, вещественных, или вообще элементов произвольного линейно упорядоченного множества). Тем самым, желая доказать, что построенная нами сеть является сортирующей, можно ограничиться рассмотрением входов из нулей и единиц - иногда это упрощает дело.

Доказательство использует понятие монотонно возрастающей функции (см. раздел 2.2).

Лемма 28.1 Если сеть компараторов преобразует последовательность а = (ai, а2,... , ап) в последовательность Ь = (b\, Ь2, , Ьп), а / - монотонно возрастающая функция, то подав на вход сети последовательность f(a) = (f(ai), /(аг), • • • , f(an)), мы получим на выходе f(b) = (/(6i), f(b2),...J(bn)).

Доказательство. Проверим это сначала для одного компаратора, то есть покажем, что компаратор, получив на вход /(ж) и /(у), выдаст на выходы /(тш(ж,у)) и /(тах(ж,у)) (рис. 28.4).

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

min(f (х), f (у)) = f(min(x,y)), max(f(x),f(y)) = f(max(x,y)).

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

Это свойство верно не только для одного компаратора, но и для любой сети компараторов. Пусть на входы сети поданы значения ai, а2,... ,ап. Через некоторое время на всех проводах (в том числе выходных) установятся некоторые значения. Теперь заменим входы на f(ai), f(a2),... , f(an). Что случится со значениями на проводах схемы? Как мы только что видели, выходы компараторов глубины 1 также заменятся на результат примерения к ним функции /. Следовательно, с выходами компараторов глубины 2 произойдёт то же самое, и так далее. Рассуждая по индукции, мы выдим,

Рис. 28.4 Компаратор и монотонная функция / (лемма 28.1)



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98] [стр.99] [стр.100] [стр.101] [стр.102] [стр.103] [стр.104] [стр.105] [стр.106] [стр.107] [стр.108] [стр.109] [стр.110] [стр.111] [стр.112] [стр.113] [стр.114] [стр.115] [стр.116] [стр.117] [стр.118] [стр.119] [стр.120] [стр.121] [стр.122] [стр.123] [стр.124] [стр.125] [стр.126] [стр.127] [стр.128] [стр.129] [стр.130] [стр.131] [стр.132] [стр.133] [стр.134] [стр.135] [стр.136] [стр.137] [стр.138] [стр.139] [стр.140] [стр.141] [стр.142] [стр.143] [стр.144] [стр.145] [стр.146] [стр.147] [стр.148] [стр.149] [стр.150] [стр.151] [стр.152] [стр.153] [стр.154] [стр.155] [стр.156] [стр.157] [стр.158] [стр.159] [стр.160] [стр.161] [стр.162] [стр.163] [стр.164] [стр.165] [стр.166] [стр.167] [стр.168] [стр.169] [стр.170] [стр.171] [стр.172] [стр.173] [стр.174] [стр.175] [стр.176] [стр.177] [стр.178] [стр.179] [стр.180] [стр.181] [стр.182] [стр.183] [стр.184] [стр.185] [стр.186] [стр.187] [стр.188] [стр.189] [стр.190] [стр.191] [стр.192] [стр.193] [стр.194] [стр.195] [стр.196] [стр.197] [стр.198] [стр.199] [стр.200] [стр.201] [стр.202] [стр.203] [стр.204] [стр.205] [стр.206] [стр.207] [стр.208] [стр.209] [стр.210] [стр.211] [стр.212] [стр.213] [стр.214] [стр.215] [стр.216] [стр.217] [стр.218] [стр.219] [стр.220] [стр.221] [стр.222] [стр.223] [стр.224] [стр.225] [стр.226] [стр.227] [стр.228] [стр.229] [стр.230] [стр.231] [стр.232] [стр.233] [стр.234] [стр.235] [стр.236] [стр.237] [стр.238] [стр.239] [стр.240] [стр.241] [стр.242] [стр.243] [стр.244] [стр.245] [стр.246] [стр.247] [стр.248] [стр.249] [стр.250] [стр.251] [стр.252] [стр.253] [стр.254] [стр.255] [стр.256] [стр.257] [стр.258] [стр.259] [стр.260] [стр.261] [стр.262] [стр.263] [стр.264] [стр.265] [стр.266] [стр.267] [стр.268] [стр.269] [стр.270] [стр.271] [стр.272] [стр.273] [стр.274] [стр.275] [стр.276] [стр.277] [стр.278] [стр.279] [стр.280] [стр.281] [стр.282] [стр.283] [стр.284] [стр.285] [стр.286] [стр.287] [стр.288] [стр.289] [стр.290] [стр.291] [стр.292] [стр.293] [стр.294]