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

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

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

Министерство образования РФ

Санкт-Петербургский государственный электротехнический университет ½ЛЭТИ

С.В.МАЛОВ С.Н.ПОЗДНЯКОВ С.В.РЫБИН

ОСНОВЫ ДИСКРЕТНОЙ МАТЕМАТИКИ

Учебное пособие

Санкт-Петербург

Издательство СПбГЭТУ ½ЛЭТИ2002

Министерство образования РФ

Санкт-Петербургский государственный электротехнический университет ½ЛЭТИ

С.В.МАЛОВ С.Н.ПОЗДНЯКОВ С.В.РЫБИН

ОСНОВЫ ДИСКРЕТНОЙ МАТЕМАТИКИ

Санкт-Петербург

Издательство СПбГЭТУ ½ЛЭТИ2002

ÓÄÊ 512 ÁÁÊ Â174 ÿ7 Ì19

Малов С. В., Поздняков С. Н., Рыбин С. В. Основы дискретной матема тики: Учеб. пособие. СПб.: Изд-во СПбГЭТУ ½ЛЭТИ, 2002. 72 ñ.

Охватывает как традиционные разделы дискретной математики, так и ряд тем, интерес к которым вырос благодаря новым приложениям, по явившимся за последнее десятилетие в связи с развитием информационных технологий.

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

Рецензенты: кафедра математического анализа СПбГУ; доц. М.В.Дмитриева (кафедра информатики СПбГУ).

Утверждено редакционно-издательским советом университета

в качестве учебного пособия

ISBN 5-7629-0456-3

c СПбГЭТУ ½ЛЭТИ, 2002

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

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

ны без доказательств (они отмечены знаком ) или в форме упражнений.

1.Арифметика целых чисел

1.1.Деление с остатком

Теорема 1.1 (о делимости с остатком). Для любых a, b Z,

b 6= 0 существуют, и притом единственные q, r Z, такие, что имеет место представление

a = bq + r,

0 6 r < |b|.

(1.1)

Доказательство. Установим единственность представления (1.1).

Пусть

0 6 r < |b|,

0 6 r1 < |b|.

a = bq + r = bq1 + r1,

Тогда b(q − q1) = r1 − r. Íî |r1 − r| < |b|, à |b(q − q1)| > |b|. Противоречие,

таким образом, q = q1, r = r1.

, b

 

Число q в (1.1) называется целой частью дроби b

= 1q.

 

 

a

 

a

def

 

Определение 1.1. Будем говорить, что a делится на b (и обозна

чать как a k b), если в представлении (1.1) для

a, b остаток r равен

íóëþ.

 

 

 

 

 

 

 

 

 

1

def

 

 

 

 

Знаком = будут начинаться обозначения

 

 

 

3

называются взаимно просты
Определение 1.3.

Сформулируем простейшие свойства делимости, вытекающие непосредственно из определения.

Теорема 1.2. Справедливы следующие утверждения:

1)

a k b,

b k c, тогда a k c (транзитивность деления);

k Z

 

2)

a1, a2

,

. . .

, a

k

c, тогда для любого набора λ

, λ

, . . . , λ

ñïðà

3)

 

kk

 

b

1

2

 

 

a b,

P

 

a

 

 

 

 

 

 

ведливо

i=1 ai

λi k c;

 

 

 

 

 

k

 

тогда

±

 

k ±

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Замечание 1.1. Последнее свойство позволяет в вопросах делимо сти ограничиться рассмотрением только натуральных чисел.

1.2.Наибольший общий делитель, наименьшее общее кратное и их свойства

Определение 1.2. Пусть a1, . . . , ak, c Z. Åñëè c k a1, . . . , c k ak,

то говорят, что c есть общее кратное a1, a2, . . . , ak. Наименьшее среди всех кратных называется наименьшим общим кратным и обозначается

M(a1, a2, . . . , ak) èëè {a1, a2, . . . , ak}. Заметим, что

max{a1, a2, . . . , ak} 6 M(a1, a2, . . . , ak) 6 a1a2 · · · ak.

Очевидно, что любое кратное делится на наименьшее общее кратное.

Пусть a1, . . . , ak, d Z. Åñëè a1 k d, . . . , ak k d,

то говорят, что d есть общий делитель a1, a2, . . . , ak. Наибольший среди всех делителей называется наибольшим общим делителем и обозначается

D(a1, a2, . . . , ak) èëè (a1, a2, . . . , ak). Заметим, что

1 6 D(a1, a2, . . . , ak) 6 min{a1, a2, . . . , ak}.

Очевидно, что если d1, d2, . . . , dn общие делители a1, a2, . . . , ak, òî

D(a1, a2, . . . , ak) = M(d1, d2, . . . , dn). Последнее утверждение можно использовать в качестве другого определения наибольшего общего делителя.

Введем одно из важнейших понятий теории делимости.

Определение 1.4. Числа a1, a2, . . . , ak

ìè, åñëè D(a1, a2, . . . , ak) = 1.

Установим некоторые свойства наибольшего общего делителя и наи меньшего общего кратного.

4

Доказать следующие утверждения:
Справедливо равенство

Теорема 1.3. Справедливы следующие утверждения:

1)d = D(a1, a2, . . . , ak) D ad1 , ad2 , . . . , adk = 1;

2)d = D(a1, a2, . . . , ak), тогда D(a1b, a2b, . . . , akb) = db;

3)если c общий делитель a1, a2, . . . , ak, òî D ac1 , ac2 , . . . , ack = dc ;

4) ab = D(a, b)M(a, b).

 

Вопрос о нахождении D(a, b) будет решен далее (см. 2.1). Предполо жим, что имеется эффективный алгоритм его вычисления. Поставим во

прос о вычислении D(a1, a2, . . . , ak). Ответ на этот вопрос дает следующая теорема.

Теорема 1.4.

D(a1, a2, a3) = D(D(a1, a2), a3)).

Доказательство. Введем обозначения: D(a1, a2) = e, D(e, a3) = d. То гда в силу транзитивности делимости (теорема 1.2) имеем a1, a2 k d, íî è a3 k d, следовательно, d общий делитель a1, a2, a3. Пусть d1 произ вольный общий делитель a1, a2, a3. Тогда e k d1, следовательно, d1 общий делитель e, a3. Тогда d k d1 и, следовательно, d = D(a1, a2, a3).

Упражнение 1.1.

1)ab k c и D(a, c) = 1, тогда b k c;

2)eñëè D(a, c) = 1, òî D(ab, c) = D(b, c).

1.3.Простые числа

Определение 1.5. Число a называется простым, если делится толь ко на |a| и на ±1.

Теорема 1.5. Пусть p простое число. Справедливы утверждения:

1)любое число a Z делится на p или на число, взаимно простое с p;

2)ab k p тогда и только тогда, когда a k p или b k p.

Доказательство теоремы провести самостоятельно в качестве упраж нения.

5

простые числа.

Лемма 1.1. Любое a Z, a 6= 1 имеет по крайней мере один простой делитель.

Доказательство. Пусть d1, d2, . . . , dn все делители числа a, кроме 1. Положим p = min{d1, d2, . . . , dn}. Åñëè áû p было составным, то его делитель (меньший, чем само p) был бы делителем a. Противоречие с опре

делением p. Лемма доказана.

Теорема 1.6 (oсновная теоремa теории делимости). Любое чис

ло a Z раскладывается и только одним способом на простые сомножи

тели. Соединив одинаковые множители в степени, получаем канониче ское разложение

a = pαqβrγ · · · , где p, q, r − простые числа, α, β, γ > 1.

(1.2)

Доказательство. По лемме 1.1 любое число a имеет простой делитель p. Представим его в виде pa1. Åñëè a1 составное, то воспользуемся лем мой 1.1 для a1. Заметим, что a1 < a, поэтому на некоторoм шаге получим ak простое. Таким образом, имеем представление

a = p1p2p3 · · · pk, ãäå p1, p2, p3 · · · pk простые.

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

a = p1p2p3 · · · pk = q1q2q3 · · · qn.

(1.3)

Тогда p1p2p3 · · · pk k q1. По теореме 1.5 один из сомножителей слева делится на q1. Пусть, для определенности, p1 k q1. Íî p1 è q1

Поэтому p1 = q1. Тогда (1.3) можно переписать в виде

p2p3 · · · pk = q2q3 · · · qn.

Повторяя эту процедуру приходим к единственности представления (1.2).

1.4.Решето Эратосфена. Разложение числа на простые

Âсвязи с полученным представлением (1.2) возникает необходимость построить эффективные алгоритмы для решения следующих задач:

1.Найти все простые числа в данном интервале.

2.Для произвольного числа a Z получить его разложение в виде (1.2).

6

Øàã 1. Øàã 2.
÷àòü èõ
(из пробной последова
пробных делителей
Øàã k+1.

Для решения первой задачи рассмотрим алгоритм, носящий название Ре шето Эратосфена. Он позволяет найти все простые числа в интервале

[1, N].

Øàã 1. Вычеркиваем все числа, кратные 2 (каждое второе, кроме 2). По лагаем p1 = 2, k = 1.

Полагаем k = k + 1 è pk первое невычеркнутое число после pk−1. Вычеркиваем все числа, стоящие на местах, кратных pk, кроме него самого. Повторяем этот шаг, пока pk < N.

Замечание 1.2. Достаточно работать только с нечетными числа

ми, при этом p = 3. Алгоритм заканчивает работу, как только

1 pk > N.

Пример 1.1 (на решето Эратосфена). Пусть N = 50. Тогда по

сле работы алгоритма получаем следующую картину (на месте вычерк нутых чисел стоит знак ):

2 3 5 7 9 11 13 17 19 23 29 31 37 41 43 47 49.

Возникает вопрос: сколько же простых чисел? Ответ был получен еще Ев клидом:

Теорема 1.7 (Евклид). Множество простых чисел бесконечно.

Доказательство. Допустим конечность множества простых чисел: {p1, p2, p3, . . . , pk}. Положим p = p1p2p3 · · · pk + 1. Очевидно, что таким

образом построенное число p не делится ни на одно из pi. Таким образом,

ëèáî p простое, либо имеет простой делитель, больший любого из pi. Полученное противоречие и доказывает теорему.

Перейдем к решению второй поставленной задачи: разложению числа

a на простые сомножители в виде (1.2). Начнем с простейшего алгоритма, носящего название метод пробных делителей. Используем последова

тельность простых чисел 2 = p0 < p1 < p2 < · · · <

< pk 6 a. Введем следующие обозначения:

k = 0, 1, 2, . . . номер текущего делителя pk тельности),

i = 0, 1, 2, . . . номера найденных делителей числа a (будем обозна di).

k = 0, i = 0.

(Проверка окончания) Если a = 1, то алгоритм заканчивает работу.

7

и переходим на
Øàã 3.
q. Возвращаемся

Øàã 3. a = pkq + r.

Øàã 4: Åñëè r 6= 0 (ò. å. a не делится на pk), то переходим на Øàã 6.

Øàã 5. (a делится на pk) Полагаем di = pk, i = i + 1, a =

íà Øàã 2.

Øàã 6. Åñëè q > pk, то полагаем k = k + 1

Øàã 7. a простое число. Полагаем di = a. Алгоритм заканчивает работу.

Пример 1.2 (на метод пробных делителей ). Положим a =

= 6930. Возьмем последовательность пробных делителей {2, 3, 5, 7, 11,

13, 17, 19, 23, 29, 31}:

1)a = 2 · 3465, d0 = 2, i = 1, a = 3465;

2)a = 2 · 1732 + 1, k = 1;

3)a = 3 · 1155, d1 = 3, i = 2, a = 1155;

4)a = 3 · 385, d2 = 3, i = 3, a = 385;

5)a = 3 · 128 + 1, k = 2;

6)a = 5 · 77, d3 = 5, i = 4, a = 77;

7)a = 5 · 15 + 2, k = 3;

8)a = 7 · 11, d4 = 7, i = 5, a = 11;

9)a = 7 · 1 + 4, d5 = 11.

Имеем: a = 6930 = 2 · 3 · 3 · 5 · 7 · 11 = 2 · 32 · 5 · 7 · 11.

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

Алгоритм Ферма

Не умаляя общности, можно считать, что исходное число a является нечетным 2. Выделить степени двойки достаточно легко (сдвигами вправо

двоичного представления числа). Будем искать представление a â âèäå

a = x2 − y2 = (x − y)(x + y).

2Метод не работает для четных чисел, содержащих в разложении 2 в первой степени. Например, 26 = 2 · 13 èëè 50 = 2 · 52.

8

Определение 1.6.

Введем обoзначения: R(x, y) = x2 −y2 −a. Требуется, поочередно увеличи вая x è y íà 1, добиться равенства R(x, y) = 0. Заметим, что

R(x + 1, y) = (x − y + 1)(x + y + 1) = R(x, y) + 2x + 1,

R(x, y + 1) = (x − y − 1)(x + y + 1) = R(x, y) − (2y + 1).

Чтобы лишний раз не умножать на 2, введем обозначения: Rx = 2x + 1, Ry = 2y + 1. Заметим, что при увеличении x èëè y íà 1 Rx èëè Ry óâå

личиваются соответственно на 2. Для простоты изложения считаем, что известна приблизительная оценка целой части

a обозначим ее через .

Øàã 1. (Инициализация) Rx = 2¯a + 1, Ry = 1, R(x, y) = a¯2 − a.

Øàã 2. Åñëè R(x, y) 6 0, то перейти на Øàã 4.

Øàã 3. R(x, y) = R(x, y) − Ry, Ry = Ry + 2. Возвращаемся на Øàã 2.

Øàã 4. (Проверка окончания) Если R(x, y) = 0, то алгоритм заканчивает

работу. При этом

 

2

 

2

a =

Rx − Ry

 

Rx + Ry

 

1 .

 

 

 

 

Øàã 5. R(x, y) = R(x, y) + Rx, Rx = Rx + 2. Возвращаемся на Øàã 2.

Пример 1.3 (на метод Ферма). Пусть a = 221, тогда a¯ = 14.

1)

Rx = 29

Ry = 1

R(x, y) = −25.

2)

Rx = 31

Ry = 1

R(x, y) = 4.

3)

Rx = 31

Ry = 3

R(x, y) = 3.

4)

Rx = 31

Ry = 5

R(x, y) = 0.

Имеем: a = 221 = 17 · 13.

Комбинируя методы Ферма и пробных делителей можно построить

достаточно эффективный алгоритм для разложения любого числа a на простые сомножители в виде (1.2).

1.5.Позиционная запись натуральных чисел

Упорядоченный набор (anan−1...a1a0)p называется p-ичной записью натурального числа s (представлением числа s в p-ичной

системе счисления или просто p-ичным числом), если

S = pnan + pn−1an−1 + · · · + pa1 + a0,

где p натуральное число, большее 1, 0 6 ak < p è an 6= 0.

9