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


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




[194]

Дальнейшее обсуждение сетей и связанных с ними алгоритмов см. в Ивен [65], Лоулер [132], Пападимитриу и Стайглиц [154], Тарьян [188]. Хороший обзор сетевых алгоритмов написали Гольд-берг, Тардос и Тарьян [83].

Метод Форда-Фалкерсона изобрели Форд и Фалкерсон [71]. Они же рассмотрели многие задачи, связанные с сетями, в том числе задачу о максимальном потоке и о максимальном паросочетании. Во многих ранних реализациях метода Форда-Фалкерсона дополняющий путь находили с помощью поиска в ширину; Эдмондс и Карп [63] доказали, что в этом случае алгоритм полиномиален. Идею предпотока предложил Карзанов [119]. Метод проталкивания предпотока предложил Гольдберг [82]. Наиболее быстрый (время работы 0(VE\og (V2E)) из известных алгоритмов проталкивания предпотока принадлежит Гольдбергу и Тарьяну [85]. Наилучший известный (время работы 0(\/VE)) алгоритм для задачи о максимальном паросочетании предложили Хопкрофт и Карп [101].


Сортирующие сети

Во второй части книги изучались сортирующие алгоритмы, реализованные на машинах произвольного доступа (RAM). В этой главе рассматриваются сортирующие алгоритмы, в основу которых положена совершенно иная вычислительная модель - сеть компараторов.

Есть два существенных отличия между RAM-машинами и сетями компараторов. Во-первых, в процессе работы компараторы могут выполнять только операции сравнения. Следовательно, реализовать на них алгоритмы, подобные сортировке подсчётом (см. раздел 9.2), невозможно. Во-вторых, RAM-машины работают последовательно, выполняя одну операцию за один такт работы. Сеть компараторов может работать параллельно, т.е. выполнять одновременно несколько операций. Благодаря этому удаётся отсортировать п чисел за время, существенно меньшее п.

В разделе 28.1 вводятся понятия сети компараторов, сортирующей сети, времени работы сети. В разделе 28.2 мы докажем правило «нуля и единицы», которое упрощает проверку правильности работы сортирующей сети.

Быстрая сортирующая сеть, которую мы построим, представляет собой параллельную реализацию сортировки слиянием (раздел 1.3.1). Сначала (раздел 28.3) строится битонический сортировщик затем (28.4) он слегка модифицируется и получается сливающая сеть, которая соединяет два упорядоченных набора в один. Наконец (28.5) мы соединяем сливающие сети в сортирующую сеть, которая позволяет отсортировать п объектов за время 0(lg2 п).

Рис. 28.1 28.1 (а) Компаратор со входами i, р выходами х, у. (Ь) Тот же компаратор в виде вертикальной линии. Показаны входы х = 7, у = 3 и выходы х = 3, у = 7.


Рис. 28.2 28.2 (а) Сеть компараторов с 4 входами и 4 выходами, которая является сортирующей. Показаны входные значения в момент 0. (Ь) Значения на выходах компараторов А ш В в момент времени 1. (с) В момент 2 появляются выходные значения компараторов С и В; выходные значения bi и Ъ$ (но не 62,63) определены, (d) Наконец, оставшие два выходных значения появляются на выходах компаратора Е.

28.1. Сети компараторов

Сортирующие сети строятся из компараторов, соединённых проводами. Компаратор (comparator) (рис. 28.1(a)) имеет два входа ж, у и два выхода ж, у. Компаратор получает на вход два числа и переставляет их, если они идут в неправильном порядке. Другими словами,

ж = тгп(х,у), у = тах(х,у).

Договоримся схематично изображать компаратор в виде вертикального отрезка, как на рисунке 28.1(b). Входы рсположены слева, а выходы - справа, при этом верхний выход соответствует минимальному числу, а нижний - максимальному.

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

С помощью проводов (wires) выходы одних компараторов соединяют со входами других. Кроме того, сеть имеет входные и выходные провода. Рассмотрим сеть компараторов с п входными проводами (input wires) 0,1,0,2,... ,апъ п выходными проводами (output wires) Ь\, 62, • • • , Ьп. На вход поступает последовательность п чисел (которые мы будем обозначать (а,\, 02, , ап), как и сами провода); результатом работы будет последовательность (bi, 62, • • • , bn).

На рисунке 28.2 приводится пример сети компараторов (comparison network). Сеть с п входами и п выходами изображается п горизонтальными прямыми, которые в некоторых местах соединены вертикальными отрезками - компараторами. Прямая - это не один провод, а несколько - проводом является участок между компараторами. Например, верхняя прямая на рисунке 28.2 состоит из трёх проводов: входного провода ai соединенного со входом компаратора А; провода, соединяющего верхний выход компаратора А со входом компаратора С, а также выходного провода Ь\, соединенного с верхним выходом компаратора С.

Каждый вход любого из компараторов соединён либо с одним из входных проводов ai,a2, ,ап, либо с выходом другого компаратора. Каждый выход любого из компараторов соединён либо с входом другого (ровно одного), либо с одним из выходных прово-



[стр.Начало] [стр.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]