Материал: LS-Sb89586

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

МИНОБРНАУКИ РОССИИ

–––––––––––––––––––––––––––––––––––

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

–––––––––––––––––––––––––––––––––––

ДИСКРЕТНАЯ МАТЕМАТИКА

Методические указания по решению задач

Санкт-Петербург Издательство СПбГЭТУ «ЛЭТИ»

2013

УДК 519.1 (077)

Дискретная математика: Методические указания по решению задач / сост.: С. Г. Иванов, Н. Н. Сосновский. СПб.: Изд-во СПбГЭТУ «ЛЭТИ», 2013. 32 с.

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

Предназначены для студентов очного и заочного отделений, изучающих курс дискретной математики, и соответствуют стандартной программе этого курса.

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

вкачестве методических указаний

©СПбГЭТУ «ЛЭТИ», 2013

2

1. ОСНОВЫ ТЕОРИИ ЦЕЛЫХ ЧИСЕЛ

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

Определение: a, b Z, b > 0.

Разделить a на b с остатком – значит найти такие числа p и q, чтобы a = bq + r, при этом 0 ≤ r < b.

Примеры:

1.25 = 4 6 + 1.

2.–25 = (–5) 6 + 5.

Докажем единственность деления с остатком.

В самом деле, если a bq1 r1 bq2 r2, тогда b q1 q2 r2 r1.

Если левая часть не равна 0, то ее модуль не меньше b, поскольку умножаем b на ненулевое целое число. С другой стороны, оба остатка меньше b, поэтому модуль разности в правой части меньше b.

Противоречие!

Поэтому левая часть равна 0, и два представления совпали.

1.2. Делимость

Говорят, что a b (a делится на b) или b | a (b делит a), если существует q такое, что a = bq.

Свойства делимости:

1.a | b и b | c a | c.

2.a | b и a | c a | (b c).

3.a | b и a | c a | (b kc), k Z.

1.3.Наибольший общий делитель и наименьшее общее кратное

Определение. Пусть a1, ...,an – набор целых чисел. Тогда:

d – наибольший общий делитель набора a1, ...,an , если d – наибольшее натуральное число, на которое делятся все a1, ...,an ;

m – наименьшее общее кратное набора a1, ...,an , если m – наименьшее натуральное число, которое делится на все a1, ...,an .

3

1.4. Алгоритм Евклида

Пример. НОД (72, 96) = НОД (72, 96 – 72) = НОД (72, 24) = 24.

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

Приведем более строгое описание работы алгоритма.

Теорема. Множество общих делителей не меняется при элементарных преобразованиях набора a1, ...,an , то есть при замене ai числом ai qak .

Всамом деле, если некоторое число d было общим делителем набора

a1, ...,an , то все линейные комбинации этих чисел, в том числе ai qak , де-

лятся на d.

Аналогично, если число d1 является общим делителем для набора, в котором провели замену, то оно является делителем qak , а следовательно, и делителем ai . Значит, это число является делителем исходного набора.

Пример:

276 = 84 3 + 24;

84 = 24 3 + 12;

24 = 12 2; НОД (276, 84) = НОД (84, 24) = НОД (12, 24) = НОД (12, 0) = 12.

Общая формула алгоритма для двух чисел: a bq1 r1;

b r1q2 r2 ; r1 r2q3 r3 ;

r2 r3q4 r4 ;

В конце концов остаток при делении окажется равен нулю, поскольку остатки уменьшаются с каждым шагом, и все они положительные:

rk 1 rk qk 1 rk 1; rk rk 1qk 2.

Тогда НОД (a, b) = rk 1 (то есть наибольший общий делитель равен по-

следнему ненулевому остатку).

Алгоритм Евклида относится к так называемым быстрым алгоритмам, поскольку на каждом шаге остаток уменьшается по крайней мере в 2 раза,

4

поэтому за сравнительно небольшое количество шагов алгоритм заканчивает работу.

Для трех чисел вычисление наибольшего общего делителя может быть, например, таким:

НОД (65, 182, 130) = НОД (65, 182, 0) = НОД (65, 52, 0) = НОД (13, 0, 0) = 13.

1.5. Обобщенный алгоритм Евклида

Линейное представление наибольшего общего делителя

Если d = НОД (a, b), то существуют такие целые числа x и y, что d = ax + by. Выведем общий метод вычисления линейного представления НОД.

a bq1 r1; b r1q2 r2 ; r1 r2q3 r3 ;

r2 r3q4 r4 ;

rk 2 rk 1qk rk ; rk 1 rk qk 1 rk 1;

rk rk 1qk 2.

Отсюда получаем:

rk 1 rk 1 rk qk 1.

 

То есть rk 1 = НОД (a, b) выражен через два предыдущих остатка: rk и

rk 1.

Далее, воспользовавшись тем, что rk rk 2 rk 1qk , выразим rk 1

в виде

rk 1 rk 1 rk qk 1 rk 1 rk 2 rk 1qk qk 1.

(1.1)

В этом случае получим линейное представление rk 1 = НОД (a, b) через

остатки rk 1 и rk 2 .

Затем выразим rk 1 через остатки rk 2 и rk 3 , и, подставив полученное представление в формулу (1.1), получим представление НОД (a, b) через остатки rk 2 и rk 3 . Продолжим процесс до тех пор, пока не получим линейное

представление НОД (a, b) через a и b.

Для трѐх и более чисел вычисление наибольшего общего делителя осуществляется последовательной заменой пар чисел исходного набора их НОД:

НОД (65, 182, 130) = НОД (НОД(65, 182), 130) = НОД (13, 130) = 13.

5