Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Литература / Дискретная математика (пособие ЛЭТИ) / Дискретная математика (пособие ЛЭТИ)

.pdf
Скачиваний:
705
Добавлен:
16.04.2013
Размер:
527.71 Кб
Скачать

Ñ.Покупатель:

получает подписанную банком купюру:

z= yd = (f(x) re)d = fd(x) red ≡ fd(x) r (m)

èснимает затемняющий множитель делит на r;

посылает продавцу подписанную банком купюру x; fd(x) .

D.Продавец:

проверяет подлинность полученной купюры (x; y) следующим обра зом: ye ≡ f(x) (m);

проверяет, не была ли купюра потрачена покупателем ранее, для чего посылает ее на проверку в банк.

Å.Áàíê:

сравнивает купюру (x; y) с выданными ранее; если купюра не исполь зовалась, то продавцу посылается подтверждение, а купюра заносит ся в список использованных (заметим, что благодаря затемняющему множителю банк не знает, кому была выдана, точнее, подписана, эта купюра);

на счет продавца начисляется денежная единица.

4.Многочлены

4.1.Арифметика многочленов

Определение 4.1. Алгебраическое выражение с переменной x назы вается многочленом над полем K, если оно может быть представлено в

âèäå

p(x) = anxn + an−1xn−1 + · · · + a1x + a0, ãäå ai K, an 6= 0.

При этом используются следующие обозначения:

def

K[x] = множество многочленов от переменной x над полем K,

def

l(p) = старший коэффициент многочлена, l(p) = an,

def

deg p = степень многочлена, deg p = n.

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

40

Многочлен степени n определяется упорядоченным набором своих n + 1 коэффициентов: {anan−1 · · · a0}.

Замечание 4.1. Между многочленами и позиционными записями натуральных чисел есть очевидная аналогия, которая распространяется

и на алгоритмы выполнения арифметических операций над многочлена ми.

Замечание 4.2. В дальнейшем, когда это не вызывает разночтений, вместо p(x) будем писать p.

Сложение и умножение многочлена на число осуществляется как сложение-вычитание векторов.

Алгоритм сложения двух многочленов :

pn(x) = anxn + · · · + a0 è qm(x) = bmxm + · · · + b0, n > m

i : = 0;

 

 

ÖÈÊË ÏÎ i ÎÒ 0 ÄÎ m

ci : = ai + bi

ÊÖ

ÖÈÊË ÏÎ i ÎÒ m + 1 ÄÎ n

ci : = ai

ÊÖ

Умножение многочленов. Произведение многочленов pn степени n è qm степени m вычисляется по формуле

n+m

XX

pn qm = aibj xk.

k=0 i+j=k

Алгоритм умножения многочленов. Считаем, что изначально

все коэффициенты ci результирующего многочлена pnqm равны 0.

ÖÈÊË ÏÎ i ÎÒ 0 ÄÎ n + m

ÖÈÊË ÏÎ j ÎÒ 0 ÄÎ i ci : = ci + aj · bi−j ÊÖ

ÊÖ

Заметим, что l(pq) = l(p) l(q) è deg(pq) = deg(p) + deg(q).

Деление многочленов.

Определение 4.2. Пусть m, n K [x] и m = n q + r, причем

deg r < deg n. Тогда q называется частным от деления m на n, а r остатком.

Существование m и r можно обосновать конструктивно. Построим для этого алгоритм, аналогичный делению чисел уголком.

41

Алгоритм деления многочленов.

r : = m, q : = 0;

ÖÈÊË ÏÎÊÀ deg r > deg n

t : = l(r) · xdeg r−deg n; q : = q + t; r : = r − t · n; l(n)

ÊÖ

После каждого шага цикла степень r уменьшается, но равенство

m = nq + r сохраняется. Когда степень r станет меньше степени n, алго ритм свою работу заканчивает.

Замечание 4.3. Деление в алгоритме производится один раз в

1

начале работы нужно вычислить l(n) .

Для многочленов в K[x] справедливо представление, аналогичное (1.1) для чисел из Z.

Теорема 4.1. Пусть m, n K[x], тогда если n 6= const, то существу ют и единственны многочлены q и r, такие, что справедливо представ ление m = nq + r, причем deg r < deg n.

Доказательство. Существование доказано ранее. Единственность докажем от противного. Пусть m = n q1 + r1, m = n q2 + r2. Тогда, после

вычитания равенств, получим n(q1 − q2) = r1 − r2. Степень левой части не меньше deg n, если только q1 не совпадает с q2; степень же правой части меньше deg n, òàê êàê deg r1 < deg n è deg r2 < deg n. Итак, равенство будет справедливо только при q1 = q2 и, следовательно, r1 = r2.

4.2.Схема Горнера

Рассмотрим результат деления многочлена p(x) K[x] на многочлен

g(x) = x − a K[x]:

p(x) = (x − a)q(x) + r(x), ãäå deg r(x) < deg(x − a) = 1,

ò. å. deg r(x) = 0 è r(x) = const = r.

Замечание 4.4. deg q(x) = deg p(x) − 1.

Теорема 4.2 (Безу). Остаток от деления многочлена p(x) на x −a равен значению многочлена p(a).

Доказательство. p(x) = (x − a)q(x) + r, следовательно, p(a) = r.

42

Следствие 4.1. Многочлен x − a является делителем многочлена p(x) тогда и только тогда, когда p(a) = 0.

Замечание 4.5. Теорема Безу связывает 2 разных взгляда на много члены алгебраический (деление многочленов, остаток) и аналитический

(вычисление значений многочлена как функции r).

На основании теоремы Безу в основу вычисления многочлена может быть положен алгоритм деления многочлена на двучлен. Этот алгоритм называется схемой Горнера. Рассмотрим его подробнее, положив

p(x) = anxn + an−1xn−1 + · · · + akxk + a1x + a0, q(x) = bn−1xn−1 + bn−2xn−2 + · · · + bkxk + b1x + b0.

Тогда из равенства p(x) = (x − a)q(a) + r получаем:

anxn+an−1xn−1+· · ·+a1x+a0 = (x−a)(bn−1xn−1+bn−2xn−2+· · ·+b1x+b0)+r.

Раскрыв скобки и приведя подобные, имеем:

anxn + an−1xn−1 + · · · + akxk + a1x + a0 =

bn−1xn +(bn−2 −abn−1)xn−1 +· · ·+(bk−1 −abk)xk +· · ·+(b0 −ab1)x+(r−ab0).

В силу единственности канонического представления многочлена полу

÷àåì:

 

 

abn−1,

 

 

 

 

 

 

bn−2

= an−1 + abn−1,

an−1 = bn−2

 

 

 

 

 

 

 

an = bn−1

,

 

 

 

 

 

 

 

bn−1

= an,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

· · · · · · · · · · · · · · ·

выражая

 

 

находим

 

· · · · · · · · · · · · · · ·

ak = bk 1

 

abk,

 

 

 

b

,

 

bk 1 = ak + abk,

 

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a· ·1·=· ·b·0· ·· ·ab· ·1·,· ·

 

 

 

 

 

 

b·0· ·=· ·a·1· ·+· ·ab· ·1·,· ·

a0 = r ab0,

 

 

 

 

 

 

r = a0 + ab0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

Нетрудно видеть, что первые

 

равенств позволяют последовательно (от

старших к младшим) находить коэффициенты многочлена q(x) частно го от деления p(x) на x − a. Последнее равенство формула вычисления

остатка r.

Эту последовательность вычисления описывает следующая рекуррент ная формула: bn−1 = an; bk−1 = ak + abk, где k меняется от n − 1 до 0,

ïðè ýòîì b−1 обозначает остаток r.

Замечание 4.6. При ручных вычислениях промежуточные вычисле ния схемы Горнера удобно помещать в следующей таблице:

43

an

an−1

an−2

· · ·

a1

a0

bn−1

bn−2

bn−3

· · ·

b0

b−1 = r

Каждое следующее вычисление использует только значение a и числа, помещенные в соседних (левой и верхней) клетках.

· · ·

ak

· · ·

bk

bk−1 = ak + abk

· · ·

Следствие 4.2. Схему Горнера можно применять многократно: к частному q(x) от деления p(x) на x − a, затем к получившемуся част

íîìó q1(x) è ò. ä.

В результате получаются коэффициенты разложения многочлена p(x) по степеням x − a (от младших степеней к старшим):

p(x) = (x − a)q(x) + r0 = (x − a)[(x − a)q1(x) + r1] + r0 = (x − a)2q1(x)+ + r1(x − a) + r0 = · · · = rn(x − a)n + rn−1(x − a)n−1 + · · · + r1(x − a) + r0.

Замечание 4.7. При выполнении вычислений вручную протокол вы числений удобно вести в следующей треугольной таблице:

an

an−1

an−2

. . .

a1

a0

bn−1

bn−2

. . .

. . .

b0

b−1 = r0

cn−2

. . .

. . .

. . .

c−1 = r1

 

. . .

. . .

. . .

 

 

 

 

 

 

 

 

 

. . .

. . .

 

 

 

 

 

 

 

 

 

 

. . .

 

 

 

 

 

 

 

 

 

 

 

rn

 

 

 

 

 

Таблица заполняется слева направо и сверху вниз по правилу, указан ному ранее.

Упражнение 4.1. Написать алгоритм генерации коэффициентов многочлена r(x) : r0, r1, . . . , rn, полученного из многочлена p(x) с коэф

фициентами an, an−1, . . . , a0 разложением по степеням x − a.

4.3.Алгоритм Евклида для многочленов. Линейное представление НОД

1.Алгоритм Евклида для многочленов не отличается от алгоритма деления чисел при соответствующей интерпретации входящих в него пере менных и операций.

44

Сравним определения деления нацело, лежащие в основе алгоритма Евклида, для чисел и многочленов.

n = m q + r

p(x) = g(x) q(x) + r(x)

 

 

0 6 r < |m|

0 6 deg r(x) < deg g(x)

q частное, r остаток

q(x) частное, r(x) остаток

 

 

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

Несмотря на то что частное и остаток при делении как целых чисел, так и многочленов, определяются однозначно, выбор наибольшего общего делителя многочленов неоднозначен. Это связано с тем, что НОД опре деляется как общий делитель наибольшей степени, а таких многочленов

бесконечно много (если d(x) ÍÎÄ p(x) è g(x), òî cd(x) ïðè c 6= 0 также будет наибольшим общим делителем этих многочленов). Можно было бы среди всех наибольших общих делителей выбрать многочлен с единичным старшим коэффициентом, тогда НОД будет определен единственным обра зом. Однако для вычислений это не всегда удобно. Например, можно рас смотреть модификацию стандартного алгоритма Евклида с домножением промежуточных результатов на ненулевую константу, что позволит, находя НОД целочисленных многочленов, избежать дробных коэффициентов.

Пример 4.1. Найдем D(2x2 + x − 1, 3x2 + 2x − 1).

1)D(2x2 + x − 1, 3x2 + 2x − 1) = D(6x2 + 3x + 3, 3x2 + 2x − 1).

2)D(6x2 + 3x − 3, 3x2 + 2x − 1) = D(−x − 1, 3x2 + 2x − 1).

3)D(−x − 1, 3x2 + 2x − 1) = D(−x − 1, 0).

4)D(−x − 1, 0) = −x − 1.

Определение 4.3. Многочлены p и g называют взаимно простыми,

если они не имеют отличных от константы общих делителей.

2. Линейное представление наибольшего общего делителя многочленов находится по расширенному алгоритму Евклида:

p a + g b = d, ãäå d = D(p, g), à a è b многочлены, получаемые в результате работы расширенного алгоритма Евклида.

Упражнение 4.2. Доказать, что deg a < deg g и deg b < deg p.

Замечание 4.8. Если p и g взаимно просты, то в результате рабо

ты расширенного алгоритма Евклида может получиться разложение, в котором d = const 6= 1.

45

попарно взаимно просты, то

Пример 4.2. Найдем линейное представление D(x3 − 1; x2 + 1).

 

 

 

x

3

− 1

2

+ 1

 

(1 ; 0)

 

(0 ; 1)

 

 

 

 

 

x2

 

 

 

 

 

 

 

 

 

 

(1 ; −x)

 

(0 ; 1)

 

 

 

 

−x − 1

x + 1

 

 

 

(x

3

 

−x − 1

 

22

 

(1 ; 2−x)

 

x − 1 ;. −x2 + x + 1

 

 

 

 

 

 

 

− 1)(x − 1) + (x

+ 1)(−x + x + 1) = 2

4.4.Китайская теорема об остатках для многочленов. Интерполяционная формула Лагранжа

Аналогично алгоритму Евклида, на многочлены переносится и китай ская теорема об остатках.

Теорема 4.3. Рассмотрим систему сравнений

p ≡ r1(m1), p ≡ r2(m2), . . . , p ≡ rn(mn).

Если многочлены m1, m2, . . . , mn

n

 

m

Xi

 

p ≡ cidiri

(mod m), ãäå m = m1 · · · mn, ci =

 

, dici ≡ 1 (mod mi).

mi

=1

 

 

 

Замечание 4.9. Доказательство теоремы полностью идентично до казательству аналогичной теоремы для чисел (см. теорему 3.13).

Замечание 4.10. Решение сравнения dici ≡ 1 (mod mi) осуществля ется применением расширенного алгоритма Евклида к взаимно простым многочленам ci, mi :

a a

cia + mib = const 6= 0, тогда ci const ≡ 1 (mi), откуда di const (mi).

Теорема 4.4 (интерполяционная формула Лагранжа). Пусть

deg p = n и известны значения многочлена p в n + 1 различных точках:

p(x0) = y0, p(x1) = y1, . . . , p(xn) = yn,

тогда

n

(x − x0) · · · (x − xi−1)(x − xi+1) · · · (x − xn)

 

 

 

 

 

 

p(x) =

 

yi .

 

 

 

Xi

(xi

x0)

· · ·

(xi

1)(xi

xi+1)

· · ·

(xi

xn)

 

 

=0

 

 

 

xi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Доказательство. Интерпретируем задачу в терминах арифметики многочленов. По теореме Безу: p(xi) = yi тогда и только тогда, когда

46

делится на

p(x) ≡yi (mod (x−xi)). Многочлены mi = x−xi попарно взаимно просты, è p можно найти применением китайской теоремы об остатках:

n

n

m

 

Y

Y

Y

 

ri = yi; m =

mi = (x − xk); ci =

 

= (x − xk),

mi

k=0

k=0

 

k6=i

тогда di удовлетворяет уравнению

cidi + mib = 1, ãäå deg di < deg mi = deg(x − xi) = 1,

(4.1)

откуда deg di = 0, ò. å. di (x) = const. Подставив в (4.1) x = xi, получим

 

 

 

 

 

 

 

 

 

1

.

ci(xi)di +mi(xi)b(xi) = 1, íî mi(xi) = xi −xi = 0, следовательно, di =

 

ci(xi)

Отсюда по китайской теореме об остатках

 

Q(xi

 

xk)yi.

p ≡ cidiri =

 

ci(xi) yi =

 

 

n

n

c

i

n

k=i

(x

− xi)

X

Xi

 

X

6

 

 

 

 

 

 

 

 

 

k=i

 

 

 

 

 

i=0

=0

 

 

 

i=0

Q

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

4.5.Интерполяционный метод Ньютона

При добавлении узлов интерполяции метод Лагранжа, описанный в 4.4, требует заново строить интерполяционный многочлен. Рассмотрим дру гой подход, позволяющий существенно сократить вычисления при добавле нии узлов интерполяции.

Пусть задано n точек интерполяции. Будем последовательно строить

интерполяционные полиномы S1(x), S2(x), . . . , Sn(x) äëÿ m = 1, 2, . . . , n точек.

Очевидно, что S1(x) = y1. Пусть уже построены интерполяционные полиномы для m = 1, 2, . . . , k − 1 точек. Проведем построение для m = k.

Заметим, что полином Sk(x) − Sk−1(x) по условию обращается в нуль при x = x1, x2, . . . , xk−1. Следовательно, Sk(x) − Sk−1(x)

(x − x1)(x − x2) · · · (x − xk−1). Íî deg(Sk(x) − Sk−1(x)) < k, поэтому

Sk(x) − Sk−1(x) = Ak(x − x1)(x − x2) · · · (x − xk−1).

Полагая x = xk, получаем формулу для вычисления Ak:

yk − Sk−1(xk)

Ak = (x − x1)(x − x2) · · · (x − xk−1) .

Для последнего полинома Sn(x) справедливо представление

Sn(x) = A1 + A2(x − x1) + · · · + An(x − x1)(x − x2) · · · (x − xn−1).

47

Пример 4.3.

x

−1

0

1

S3(x) = A1 + A2(x + 1) + A3(x + 1)x.

y

−1

2

3

 

1)x1 = −1 → A1 = 3.

2)x2 = 0 → A1 + A2 = −1 → A2 = −4.

3)x3 = 1 → A1 + 2A2 + 2A3 = 2 → A3 = 7/2.

7

7

1

S3(x) = 3 − 4(x + 1) +

 

(x + 1)x =

 

x2

 

x − 1.

2

2

2

Добавим еще один узел интерполяции {x4 = 3, y4 = 0}. Тогда

S4(x) = S3(x) + A4(x + 1)x(x − 1).

4) x4 = 3 → A1 + 4A2 + 12A3 + 24A4 = 0 → A4 = −29/24.

 

29

 

7

17

S4(x) = −

 

x3

+

 

x2

+

 

x − 1.

24

2

24

4.6.Разложение многочлена на свободные

от квадратов множители

Определение 4.4. Представление многочлена p K[x] в виде

 

p = p1 · p22 · p33 · · · pnn, p1p2 · · · pn K[x],

ãäå pi

произведение различных неприводимых над K многочленов, при

÷åì pi

взаимно прост с pj (j 6= i), называется разложением многочлена

p на свободные от квадратов множители p1, p2, . . . , pn.

Если для разложения многочлена на неприводимые множители эф фективного алгоритма, по-видимому, нет, то для разложения на свободные от квадратов множители такой алгоритм существует и основан на исполь зовании алгоритма Евклида.

В дальнейшем будем рассматривать многочлены над полем веществен ных чисел.

Лемма 4.1. Åñëè p = qk m, где p, q, m R[x], а q неприводимый в R[x] многочлен и взаимно простой с m, то производная p 0 может быть записана в виде qk−1 n, где q и n взаимно просты.

Доказательство.

p0 = qk m 0 = k qk−1 q0 m + qk m0 = qk−1 (kmq0 + qm0).

Пусть n = kmq0 + qm0. Докажем, что q q неприводим в R [x], то взаимная простота

è n взаимно просты. Так как q è n равносильна тому, что

48

n не делится на q. Íî n = kmq0 + qm0. Åñëè áû n делилось на q, òî íà q

делилось бы и mq0. Íî q0

íà q не делится, так как deg q0

< deg q, поэтому

íà q должно делиться m, что противоречит условию.

 

 

 

Следствие 4.3. Åñëè p = q1k1 · · · qnkn , ãäå q1, . . . , qn

неприводимы в

R[x], òî p 0 = q1k1−1 · · · qnkn−1 q, где q взаимно прост с q1, . . . , qn.

Алгоритм разложения на свободные от квадратов множи

òåëè.

 

 

 

 

 

j := 1

 

 

 

 

 

ÖÈÊË-ÏÎÊÀ p 6= const {p = q1k1 · · · qnkn }

 

 

 

 

k : = D(p, p0);

(k = q1k1−1q2k2−1 · · · qnkn−1 = Yi

qiki−1)

l : = p/k

(l = q1q2 · · · qn = Yi

qi)

 

 

m : = D(l, p0);

 

kYi

 

 

 

(m =

qi)

 

 

 

 

 

>1

 

 

 

 

 

kYi

 

 

 

pj : = l/m; j : = j + 1;

(pj =

qi)

 

 

 

 

 

=1

 

 

 

p : = k

(повторение алгоритма для многочлена,

 

у которого степени неприводимых

ÊÖ

множителей уменьшены на 1)

5.Теория множеств и комбинаторика

5.1.Кодирование с исправлением ошибок. Граница

Хемминга

Определение 5.1. Неотрицательная функция d(a, b) : M Ч M →

R+ называется функцией расстояния (или метрикой) на множестве M, если выполнены следующие условия (аксиомы метрики):

1) d(a, b) > 0, d(a, b) = 0 тогда и только тогда, когда a = b;

2)d(a, b) = d(b, a);

3)d(a, b) + d(b, c) > d(a, c).

Определение 5.2. Кодируем каждый символ a = (a1, a2, . . . , am) m двоичными разрядами, ai = 0, 1, i 1 : m. Определим бинарную операцию на множестве кодовых символов:

def

a b = c = (c1, c2, . . . , cm), ãäå ci =< ai + bi >2 .

49