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


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




[250]

33-1 Двоичный алгоритм вычисления наибольшего общего делителя.

Современные компьютеры выполняют операции сложения и вычитания, а также проверяют чётность числа быстрее, чем выполняют деление с остатком. Поэтому интересен двоичный алгоритм вычисления наибольшего общего делителя (binary gcd algorithm), избегающий деления с остатком.

a.Докажите, что gcd(a,6) = 2gcd(a/2,6/2) для чётных целых чисел а и Ь.

b.Докажите, что если а четно, а Ь нечётно, то gcd(a,6) = gcd(a,6/2).

c.Докажите, что если оба числа а и Ь нечётны, то gcd(a,6) =

d. Постройте алгоритм, вычисляющий gcd(a,6) с использованием указанных соотношений за время 0(lg(max(a, Ъ))) (считая, что вычитание, проверка на чётность, удвоение и и деление пополам выполняются за единицу времени).

33-2 Оценка числа битовых операций в алгоритме Евклида.

a.Покажите, что обычный способ деления уголком числа а на число Ь требует 0((1 + lg q) lg 6) битовых операций операций (q - частное).

b.Положим p(a,b) = (1 + lga)(l + lg6). Докажите, что число битовых операций в процедуре Euclid, требуемых для сведения задачи вычисления gcd(a,6) к задаче вычисления gcd(6, a mod b), не превосходит с(р(а,Ь) - ц(b, a mod b), если с > 0 - достаточно большая константа. (Используйте оценку предыдущего пункта.)

c.Докажите, что процедура Euclid (а, Ъ) выполняет не более 0(р(а,Ь)) битовых операций. Докажите, что процедура Euclid, применённая к двум /3-битовым числам, выполняет не более 0([32) битовых операций.

33-3 Три алгоритма вычисления чисел Фибоначчи.

В этой задачи мы сравниваем три способа вычисления га-го числа Фибоначчи Fn при заданном га. (Для простоты мы считаем, что операции сложения, вычитания или умножения выполняются за единичное время независимо от размера чисел.)

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

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

c.Покажите, как вычислить Fn за время О (lgra), используя только операции (сложение и умножение) с целыми числами. (Указание. Рассмотрите матрицу

gcd((a-6)/2,6).


и её степени.)

d. Оцените время работы трёх описанных алгоритмов, исходя из более реалистичных оценок времени сложения и умножения: считайте, что сложение двух /3-битовых чисел требует времени 0(/3), а умножение - 0(/32).

33-4 Квадратичные вычеты.

Пусть р - нечётное простое число. Элемент а £ Z* называется квадратичным вычетом (quadratic residue), если существует х £ Z*, для которого х2 = a (mod р).

a.Докажите, что в группе Z* имеется в точности (р - 1)/2 квадратичных вычетов.

b.Пусть р - простое и а £ Z*. Символ Лежандра (Legendre

>ol), обозначаемый (-), определяется так: (-) = 1, если а

является квадратичным вычетом в Z*, и yj = -1 в противном случае. Докажите, что

Предложите эффективный алгоритм, определяющий, является ли заданный элемент а £ Z* квадратичным вычетом. Оцените время его работы.

c.Пусть простое число р имеет вид Ак + 3, а число а £ Z* является квадратичным вычетом. Докажите, что ak+1 mod р является квадратным корнем из а по модулю р. За какое время можно вычислить квадратный корень по модулю р из квадратичного вычета а £ Z*, если р имеет вид Ак + 3?

d.Предложите эффективный вероятностный алгоритм поиска (для любого простого р) элементов а £ Z*, не являющихся квадратичными вычетами. Сколько арифметических операций будет выполнять в среднем этот алгоритм?

Замечания.

Книга Нивена и Цукермана [191] - превосходный учебник по элементарной теории чисел. В книге Кнута [122] детально рассматриваются алгоритмы нахождения наибольшего общего делителя и другие базовые алгоритмы теории чисел. Из книг Ризеля [168] и Баха [16] можно узнать о современном состоянии вычислительной теории чисел. Задачи разложения на множители и проверки на простоту рассматриваются в книге Диксона [56]. В сборнике под редакцией Померанца [159] можно найти несколько хороших обзоров статей.

Кнут в [122] обсуждает просхождение алгоритма Евклида. Он содержится в седьмой книге знаменитых «Начал» Евклида (предложения 1 и 2), написанной около 300 г. до Р.Х. Возможно, идея алгоритма восходит к трудам Евдокса (около 375 г. до Р.Х.). Ал-


горитм Евклида претендует на роль древнейшего нетривиального алгоритма - соперничать с ним может только так наываемый «русский народный алгоритм умножения чсиел» (глава 29), который был известен ещё древним египтянам.

Кнут отмечает, что частный случай «китайской теоремы об остатках» был известен китайскому математику Сун-Цу, жившему где-то между 200 г. до Р.Х. и 200 г. от Р.Х. Тот же самый частный случай был разобран древнегреческим математиком Ни-комахом около 100 г. от Р.Х. Более общую форму теореме придал Чин Чью-Шао в 1247 году. В полной общности теорема была сформулирована и доказана Леонардом Эйлером в 1734 году.

Вероятностный алгоритм проверки чисел на простоту, рассмотренный нами, предложен Миллером [147] и Рабином [166]; он является (с точностью до постоянного множителя) самым быстрым из известных, Доказательство Теоремы 33.39, приведённое нами, следует идее Баха [15]. Более сильный результат о тесте Миллера - Рабина доказан Монье [148,149]. Использование случайности тут существенно - наилучший известный детерминированный (не использующий датчика случайных чисел) алгоритм проверки на простоту известен как версия Коэна - Ленстры [45] теста Адлемана, Померанца и Румели [3]. На проверку простоты числа п он тратит время (lgn)°(lglglgn) (чуть больше полиномиального).

Задача поиска большого «случайного» простого числа подробно обсуждют Бошемин, Брассар, Крепо, Готье и Померанц [20].

Идея криптосистемы с открытым ключом принадлежит Диффи и Хеллману [54]. Криптосистему RSA предложили в 1977 году Ривест, Шамир и Адлеман. С тех пор криптография стала быстро развивающейся областью со множеством интересных результатов. Например, Гольдвассер и Микэли [86], показали, как можно использовать рандомизацию (датчик случайных чисел) для построения криптосистем с открытым ключом вероятностные алгоритмы. Гольдвассер, Микэли и Ривест [87] предложили схему электронной подписи, взлом которой по трудности равносилен разложению чисел на множители. Гольдвассер, Микэли и Раков [87] ввели класс так называемых систем с нулевым разглашением, про которые можно доказать (при некоторых естественных допущениях), что ни одна из сторон не узнаёт больше, чем ей положено.

Метод разложения чисел, называемый /-эвристикой, впервые был предложен Поллардом [156]. Вариант, излагаемый нами, предложил Брент [35].

Время работы наилучшего известного алгоритма разложения числа п на множители возрастает с ростом п как экспонента, показателем которой является корень из длины п. В общем случае, возможно, наиболее эффективным является алгоритм «квадратичного решета», предложенный Померанцем в [158]. При некоторых естественных предположениях время работы этого алгоритма можно



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