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

Основы дискретной математики

.pdf
Скачиваний:
443
Добавлен:
05.06.2015
Размер:
1.93 Mб
Скачать

б) Сколькими способами на одной полке можно разместить 6 книг по физике и 6 книг по математике так, чтобы книги по физике чередовались с книгами по математике?

Упражнение 1.12. а) Сколькими способами Маша может выбрать 2 предмета из 8 для сдачи экзамена по выбору?

б) Маша должна сдать 2 экзамена за 8 дней. Сколькими способами она может составить расписание экзаменов, если нельзя сдавать больше одного экзамена в день?

Упражнение 1.13. В киоске продаются 10 видов рождественских поздравительных открыток. Тане нужно купить 8 открыток. Сколькими способами Таня сможет это сделать, если:

а) она решила купить открытки только разных видов; б) она решила купить по две открытки четырех видов; в) Тане все равно, какие открытки покупать;

г) одна из открыток понравилась Тане больше других, и она решила купить хотя бы одну такую открытку?

Упражнение 1.14. Собрание из 50 человек выбирает председателя, секретаря и трех членов счетной комиссии. Сколькими способами это можно сделать?

3. Некоторые комбинаторные соотношения. Числа Cnk называются также

биномиальными коэффициентами, поскольку они фигурируют в функциональном тождестве, называемом формулой бинома Ньютона:

(1 + x)n = Cn0 + Cn1 x + ... + Cnk xk + ... + Cnn xn .

Доказательство формулы приведено во второй части параграфа.

Для чисел Cnk выполняется тождество Cnk = Cnk−1 + Cnk11 . Действительно,

 

Cnk−1 + Cnk11 =

 

(n -1)!

 

 

 

+

 

 

 

(n -1)!

 

 

=

 

 

 

k!(n

- k -

1)!

 

(k -1)!(n - k)!

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

(n -1)!

 

 

 

+

 

 

 

 

 

 

 

(n -1)!

 

 

 

 

 

=

 

(k -1)!k(n - k -1)!

(k -1)!(n - k -1)!(n - k)

 

 

 

=

 

 

(n -1)!

 

æ 1

+

1

ö

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ç

 

 

 

 

 

÷

 

 

 

 

 

 

 

 

(k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-1)!(n - k -1)!è k

 

 

 

n - k ø

 

 

 

 

 

 

=

(n -1)!

 

 

 

×

 

n

 

 

=

 

 

n!

 

 

= Cnk .

(k -1)!(n

- k -1)!

k(n

- k)

k!(n - k)!

 

 

 

 

 

 

 

 

 

 

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

треугольника Паскаля:

PDF created with pdfFactory Pro trial version www.pdffactory.com

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

1

 

1

 

 

 

 

 

 

 

 

 

1

 

2

 

1

 

 

 

 

 

 

 

1

 

3

 

3

 

1

 

 

 

 

 

1

 

4

 

6

 

4

 

1

 

 

 

1

 

5

 

10

 

10

 

5

 

1

 

.

.

.

.

.

.

.

.

.

.

.

.

.

В (n +1) -й строке этого треугольника стоят числа Cn0 , Cn1 ,…,Cnk ,…,Cnn и каждое из них

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

Упражнение 1.15. Доказать тождества

 

 

а) Ak

+ k × Ak−1

= Ak ;

 

 

б) Ak = Ak−1

× (n - k +1) ;

n−1

 

n−1

 

n

 

 

n

n

 

 

в) Ck−1

−1

+ Ck

=

n

Ck

;

г) Ck

× Cmk

= Ck

× Cm .

n - k

nk

nk

 

nk

 

n

nk

m

n

Теоретические обоснования

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

Пусть P(n) - некоторое утверждение, зависящее от натурального параметра n .

Это утверждение считается справедливым для всех значений n , начиная с некоторого значения N0 , если выполняются следующие условия:

1) утверждение P(n) справедливо для n = N0 ;

2) из предположения, что P(n) справедливо при n = n0 ( n0 - любое натуральное число, большее или равное N0 ) следует, что оно справедливо и при n = n0 + 1 .

Доказательство справедливости утверждения P(n) методом математической индукции включает два этапа.

1) базис индукции, состоящий в проверке справедливости утверждения P(n) для некоторого начального значения N0 (обычно N0 =1, но это не обязательно);

PDF created with pdfFactory Pro trial version www.pdffactory.com

2) индуктивный переход, состоящий в том, что, полагая справедливым утверждение P(n0 ) ( n0 ³ N0 ), доказывают справедливость утверждения P(n0 + 1) .

Пример 10. Доказать методом математической индукции формулу бинома Ньютона

 

 

 

 

 

(1 + x)n = Cn0 + Cn1 x + ... + Cnn xn .

 

 

 

 

 

1. Базис индукции. При n =1

имеем (1 + x)1 = C0 + C1x . Поскольку

C0

= C1

=1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

n

1

 

формула верна.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Индуктивный переход.

Докажем, что из предположения о том,

что верно

равенство

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(1 + x)n0

= C

0

 

+ C1

x + ... + Cn0 −1xn0 −1 + Cn0 xn0 ,

 

 

 

 

 

 

 

 

 

n0

 

 

n0

 

n

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

0

 

 

 

 

следует, что верно равенство

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(1 + x)n0 +1 = C

0

 

 

+ C1

+1

x + ... + Cn0

+

xn0 + Cn0

+1xn0 +1 ,

 

 

 

 

 

 

 

 

 

n0 +1

 

 

n0

n0

 

n0

+1

 

 

 

 

полученное из формулы бинома Ньютона заменой n на n0 + 1.

 

 

 

 

 

В самом деле, имеем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(1+ x)n0 +1 = (1+ x)n0 (1+ x) =

 

 

 

 

 

 

= (Cn00

+ Cn10 x + Cn20 x2 + ... + Cnn0 −1xn0 −1 + Cnn0 xn0 )(1+ x) =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

0

 

 

 

 

 

 

 

 

= C0 + C1

x + C2 x2 + ... + Cn0 −1xn0

−1 + Cn0 xn0

+

 

 

 

 

 

 

 

n0

n0

 

 

 

 

n0

 

 

n

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

0

 

 

 

 

 

 

 

 

+ C0 x + C1

x2

+ C2

x3 + ... + Cn0 −1xn0 + Cn0 xn0 +1 =

 

 

 

 

 

 

 

n0

n0

 

 

 

 

n0

 

n0

 

 

n0

 

 

 

 

 

 

= Cn00

+ (Cn00

+ Cn10

)x + ... + (Cnn0 −1 + Cnn0

 

 

 

 

 

 

 

 

 

)xn0 + Cnn0 xn0 +1 =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

 

0

 

 

 

 

 

 

 

 

+1 + Cn1 +1x + Cn2

+1x2 + ... + Cn0

 

 

xn0 −1 + Cn0

+1xn0

 

 

 

 

 

= Cn0

 

 

 

 

 

 

 

 

0

 

0

 

 

 

 

0

 

 

n0 +1

 

n0

+1

 

 

 

(при переходе, помеченном ( ),

 

были

использованы тождество Cnk = Cnk−1 + Cnk11

и

равенства C0

=1, C0

+1

=1, Cn0

=1, Cn0

+1

=1 ).

 

 

 

 

 

 

 

 

n0

n0

 

n0

 

 

 

 

n0

+1

 

 

 

 

 

 

 

 

 

 

 

Таким образом, формула бинома Ньютона справедлива для любого n ³1 .

Приведенная формулировка принципа математической индукции допускает равносильные варианты. В некоторых случаях мы будем использовать вариант, в котором индуктивный переход состоит в предположении справедливости утверждения P(n) для n £ n0 и доказательстве его справедливости для n = n0 + 1 .

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

Пример 11. Доказать, что при любом натуральном n выполняется равенство

PDF created with pdfFactory Pro trial version www.pdffactory.com

C2nn

C2nn = (Cn0 )2 + (Cn1 )2 + (Cn2 )2 + ... + (Cnn )2 .

◄ Воспользуемся тем, что при всех действительных значениях x выполняется

равенство (1 + x)2n = (1 + x)n × (1 + x)n . Заменим (1 + x)2n и (1 + x)n их биномиальными разложениями:

C20n + ... + C2nn xn + ... + C22nn x2n =

= (Cn0 + Cn1 x + ...+ Cnn xn )(Cn0 + Cn1 x +... + Cnn xn ) .

Поскольку мы имеем тождество относительно x , коэффициенты при одинаковых степенях x в обеих его частях должны быть одинаковыми. Рассмотрим коэффициенты

при xn . В левой части интересующий нас коэффициент равен . Чтобы понять, чему

равен коэффициент при xn в правой части, перепишем ее, изменив порядок слагаемых во втором множителе:

(Cn0 + C1n x + Cn2 x2 + ... + Cnn−1xn−1 + Cnn xn )´

´(Cnn xn + Cnn−1xn−1 + Cnn−2 xn−2 + ... + C1n x1 + Cn0 ).

Теперь видно, что слагаемые, содержащие xn , получаются при перемножении друг на друга первых, вторых, третьих и т.д. слагаемых, стоящих в скобках. Следовательно,

верно равенство

C2nn = Cn0 × Cnn + Cn1 × Cnn−1 + Cn2 × Cnn−2 + ... + Cnn × Cn0 .

Учитывая, что Cnk = Cnnk , окончательно получаем:

C2nn = (Cn0 )2 + (Cn1 )2 + (Cn2 )2 + ... + (Cnn )2 .

Задачи повышенной сложности

1.11.Сколько имеется четных четырехзначных чисел, в десятичной записи которых все числа различны?

1.12.Сколько имеется четырехзначных чисел, в десятичной записи которых встречается цифра 5?

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

PDF created with pdfFactory Pro trial version www.pdffactory.com

1.14.а) Сколько разных шестибуквенных слов можно получить, переставляя буквы в слове «физика»?

б) Сколько разных восьмибуквенных слов можно получить, переставляя буквы в слове «черчение»?

1.15.Сколькими способами можно разложить по 8 занумерованным коробкам трех синих и пяти красных шаров так, чтобы в каждой коробке оказалось ровно по одному шару?

1.16.Доказать, что число упорядоченных разбиений n -элементного множества на k подмножеств, первое из которых содержит n1 элемент, второе - n2 элемента, …, k -е - nk

n!

элементов, равно n1 !n2 !...nk ! .

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

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

1.18.В студенческой группе учатся 9 девушек и 11 юношей. Сколькими способами можно сформировать команду из 7 человек для участия в соревнованиях, если в нее должно войти не менее 3 юношей?

1.19.а) В классе учатся 18 человек. Сколькими способами можно составить график дежурств по классу на 6 дней так, чтобы каждый день дежурили по 3 человека, причем никто не дежурил дважды?

б) В классе учатся 18 человек. Сколькими способами можно разбить его учеников на 6 групп?

1.20.а) Сколькими способами можно разложить 8 одинаковых шаров по 3 занумерованным коробкам так, чтобы ни одна из коробок не осталась пустой?

б) Сколькими способами можно разложить 8 одинаковых шаров по 3 занумерованным коробкам?

1.21.а) Сколькими способами можно представить число k в виде упорядоченной суммы n положительных целых чисел?

б) Сколькими способами можно представить число k в виде упорядоченной суммы n неотрицательных целых чисел?

1.22. Вывести формулу

%k

k

для числа сочетаний с повторениями из n

Cn

= Cn+k−1

элементов по k .

 

 

 

1.23. а) Сколько существует рефлексивных бинарных соотношений на множестве из n элементов?

PDF created with pdfFactory Pro trial version www.pdffactory.com

б) Сколько существует симметричных бинарных соотношений на множестве из n элементов?

в) Сколько существует антисимметричных бинарных соотношений на множестве из n элементов?

1.24. Используя бином Ньютона, доказать тождества:

а) 1 + Cn1 + Cn2 + .. + Cnk = 2n ;

б) 1 - Cn1 + Cn2 - .. + (-1)n × Cnk = 0 ;

в) Cn0 + Cn2 + ... + Cnn = 2n−1 ( n - четно);

г) Cn1 + Cn3 + ... + Cnn−1 = 2n−1 ( n - четно);

д) Cn0 + Cn2 + ... + Cnn−1 = 2n−1 ( n - нечетно);

е) C1n + Cn3 + ... + Cnn = 2n−1 ( n - нечетно).

1.25. Найти такое число k , при котором число сочетаний из n элементов по k наибольшее, при условии, что:

а) n - четное число;

б) n - нечетное число.

PDF created with pdfFactory Pro trial version www.pdffactory.com

Глава 2. Функции алгебры логики

§ 2.1. Булевы функции и способы их задания

Булев вектор. Функции алгебры логики (булевы функции). Задание булевых функций таблицей истинности и вектором значений. Элементарные булевы функции одной и двух переменных. Формулы над множеством функций, задание функций формулами, равносильные формулы. Доказательство равносильности формул с использованием таблиц истинности. Основные равносильности над множеством {Ú, Ù.Ø,0,1} . Упрощение формул методом равносильных преобразований. Фиктивные и существенные переменные, равные функции, алгоритм удаления и введения фиктивных переменных.

Базовые понятия и утверждения

 

1. Булевы векторы и булевы функции от n переменных.

Булевым вектором

называется упорядоченный набор (a1,a2 ,...,an ) , где αi принимают значения 0 или 1.

Числа αi называют координатами вектора, число n - его длиной.

Для краткого обозначения вектора (a1,a2 ,...,an ) используют символ α% .

Например, (0,0), (0,1), (1,0), (1,1) - булевы векторы длины 2; (0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0), (1,1,1) - булевы векторы длины 3.

Число булевых векторов длины n равно 2n . Действительно, с точки зрения комбинаторики булев вектор длины n - упорядоченная выборка элементов множества

{0,1} , которую можно построить за n шагов (на первом шаге выбрать первую координату, на втором - вторую и т.д.). Для выбора каждой координаты есть два варианта (0 или 1). Следовательно, согласно правилу произведения (см. § 1.2),

последовательный выбор n координат можно сделать 21424× 2 ×...3× 2 = 2n способами.

n

Множество булевых векторов обозначают Bn и называют единичным n -мерным кубом.

Пример 1. Найти число булевых векторов длины 16, у которых

α1 = α2 , α3 = α4 ,..., α15 = α16 .

◄ Для подсчета используем правило произведения. Чтобы составить требуемый вектор, нам достаточно последовательно выбрать восемь координат α1 , α3 , α5 ,..., α15 . В

PDF created with pdfFactory Pro trial version www.pdffactory.com

качестве каждой из них можно взять одно из двух чисел: 0 или 1. Таким образом, общее

число векторов требуемого вида равно 21424× 2 ×...3× 2 = 28 = 256 .

8

Упражнение 2.1. Сколько существует булевых векторов длины 8, которые одинаково читаются слева направо и справа налево?

Число v (a% ) = a1 × 2n−1 + a2 × 2n−2 + ... + ak × 2nk + .. + an × 20 называют номером булева вектора a% = (a1,a2 ,...,an ) .

Пример 2. Вектор α% = (1,1,1,0,1) имеет номер

v (a% ) =1× 24 +1× 23 +1× 22 + 0 × 21 +1× 20 = 29 .

В дальнейшем нам часто придется перечислять булевы векторы от фиксированного числа переменных в порядке возрастания их номеров. Например, для булевых векторов длины 2 этот порядок таков: (0,0), (0,1), (1,0), (1,1). В этом легко убедиться, вычислив номера векторов:

v(0,0) = 0 × 21 + 0 × 20 = 0 ,

v(0,1) = 0 × 21 + 1× 20 =1,

v(1,0) =1× 21 + 0 × 20 = 2 ,

v(1,1) =1× 21 + 1× 20 = 3 .

Упражнение 2.2. Перечислить в порядке возрастания номеров булевы векторы длины 3.

Введем понятие функции алгебры логики или, что то же, булевой функции.

Определение. Функция, определенная на Bn и принимающая значение 0 или 1, называется булевой функцией от n переменных.

Для обозначения булевых функций используют символы f , g, h , а для обозначения аргументов - символы x, y, z,t (часто с индексами). Таким образом, запись

f (x1, x2 ,..., xn ) воспринимается как обозначение функции от n переменных

(аргументов).

Чтобы задать булеву функцию f от n переменных, достаточно указать ее значение (0

или 1) на каждом наборе (a1,a2 ,...,an ) значений аргументов x1, x2 ,..., xn . Для задания булевой функции удобно использовать таблицу истинности (табл. 2.1). В каждой строке такой таблицы вначале идет набор (a1,a2 ,...,an ) значений переменных

PDF created with pdfFactory Pro trial version www.pdffactory.com

x1, x2 ,..., xn , а затем значение функции на этом наборе. Булевы векторы перечисляются сверху вниз в порядке возрастания номеров.

Таблица 2.1

x1

x2

 

xn−1

xn

0

0

 

0

0

 

 

 

 

 

0

0

 

0

1

 

 

 

 

 

0

0

 

1

0

 

 

 

 

 

 

 

 

 

 

1

1

 

1

1

 

 

 

 

 

f (x1, x2 ,..., xn−1, xn )

f (0,0,...,0,0)

f (0,0,...,0,1)

f (0,0,...,1,0)

f (1,1,...,1,1 )

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

В частности, чтобы задать какую-нибудь булеву функцию от двух переменных, нужно каждому элементу множества B2 = {(0,0),(0,1),(1,0),(1,1)} поставить в соответствие либо

0, либо 1.

 

Таблица 2.2

Пример 3. Рассмотрим функцию f (x, y) такую, что f (0,0) =1,

 

 

 

f (0,1) =1, f (1,0) =1, f (1,1) = 0 . Эту же функцию зададим таблицей

x

y

f

 

 

 

истинности (табл. 2.2).

0

0

1

 

 

 

 

По последнему столбцу таблицы выпишем вектор значений

0

1

1

функции f (x, y) = (1,1,1,0) .

 

 

 

1

0

1

Множество булевых функций от n переменных обозначают P2 (n) ,

 

 

 

1

1

0

а множество всех булевых функций - P2 .

 

 

 

PDF created with pdfFactory Pro trial version www.pdffactory.com

Число булевых функций от n переменных P2 (n) = 22n . Действительно, каждая булева

функция от n переменных однозначно определяется вектором значений длины 2n , поэтому булевых функций от n переменных столько, сколько булевых векторов длины

2n , т.е. 22n .

В частности, число булевых функций от одной переменной равно 2, от двух переменных - 4, от трех переменных - 16.

2. Элементарные булевы функции. В табл. 2.3, 2.4 представлены все булевы функции от одной и двух переменных.

Таблица 2.3

x

g0

g1

g2

g3

 

 

 

 

 

0

0

0

1

1

 

 

 

 

 

1

0

1

0

1

 

 

 

 

 

Таблица 2.4

x

y

f0

f1

f2

f3

f4

f5

f6

f7

 

 

 

 

 

 

 

 

 

 

0

0

0

0

0

0

0

0

0

0

 

 

 

 

 

 

 

 

 

 

0

1

0

0

0

0

1

1

1

1

 

 

 

 

 

 

 

 

 

 

1

0

0

0

1

1

0

0

1

1

 

 

 

 

 

 

 

 

 

 

1

1

0

1

0

1

0

1

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

y

f8

f9

f10

f11

f12

f13

f14

f15

0

0

1

1

1

1

1

1

1

1

 

 

 

 

 

 

 

 

 

 

0

1

0

0

0

0

1

1

1

1

 

 

 

 

 

 

 

 

 

 

1

0

0

0

1

1

0

0

1

1

 

 

 

 

 

 

 

 

 

 

1

1

0

1

0

1

0

1

0

1

 

 

 

 

 

 

 

 

 

 

PDF created with pdfFactory Pro trial version www.pdffactory.com