Дискретная математика (лекции)

advertisement
ОСНОВНЫЕ ПОНЯТИЯ, ФОРМУЛЫ И АЛГОРИТМЫ
МНОЖЕСТВА
1. Алгебра множеств. Операции над множествами
Понятие множества является исходным не определяемым строго
понятием. Множества будем обозначать большими буквами латинского
алфавита, а их элементы – малыми, хотя иногда от этого соглашения
придется отступать, так как элементами некоторого множества могут быть
другие множества. Тот факт, что элемент a принадлежит множеству A,
записывается в виде a  A (символ  происходит от греческой буквы ε).
Отрицание обозначается  .
Множество, не содержащее ни одного элемента, называется пустым и
обозначается  .
Множество A является подмножеством множества B, обозначается
A  B , если любой элемент этого множества является элементом
множества B.
Два множества A и B равны, т. е. A  B , если они состоят из одних и
тех же элементов, т. е. A  B и B  A . Если множества не равны, то
применяется запись A  B .
Для описания множества A, состоящего из элементов a1, a2, …, an
обычно применяется запись A  {a1, a2 ,, an } , где порядок элементов в
фигурных скобках несущественен и определяется соображениями
наглядности. Другой способ задания множества состоит в описании
свойств, однозначно определяющих принадлежность элементов данному
множеству:
A  {a | a обладает свойством P(a)} .
При описании множества с помощью некоторого свойства
необходимо следить за тем, чтобы каждый элемент был четко определен,
чтобы избежать трудностей типа парадокса Б. Рассела: должен ли брить
себя парикмахер, определивший множество людей, которых он бреет, в
виде совокупности всех лиц некоторого населенного пункта, не
бреющихся самостоятельно? Принадлежит ли сам парикмахер этому
множеству?
Множество, содержащее конечное число элементов, называется
конечным. В противном случае непустое множество является
бесконечным.
Если каждому элементу бесконечного множества можно присвоить
номер и этот номер не повторяется, то такое множество называется
счетным. Если такого номера для каждого элемента не существует, то
такое множество называется несчетным. Бесконечное множество часто
называют континуумом (например: совокупность точек на плоскости).
Операции над множествами:
1.Объединение. Так называется множество C, которое строится по
заданным множествам A и B следующим образом: в него включаются все
элементы из A и все элементы из B:
C  A  B  {x | x  A или x  B}.
2. Пересечение. Так называется множество C, которое строится по
заданным множествам A и B следующим образом: в него включаются все
элементы, принадлежащие одновременно множеству A и множеству B:
C  A  B  {x | x  A и x  B}.
3. Разность. Так называется множество C, которое строится по заданным
множествам A и B следующим образом: в него включаются все элементы
из A, не принадлежащие множеству B:
C  A \ B  {x | x  A и x  B}.
4. Дополнение. Если все множества считать подмножествами одного
универсального множества U, то дополнением множества A называется
множество U \ A :
A  U \ A  {x | x  A} .
5. Симметрическая разность. Так называется множество C, которое
строится по заданным множествам A и B следующим образом: в него
входят все элементы из A, не принадлежащие множеству B, и все
элементы из B, не принадлежащие множеству A:
C=A  B  ( A \ B)  ( B \ A) .
3
Графическое представление операций (диаграммы Эйлера-Венна)
1.
2.
А
A B
В
А
A B
В
U
U
3.
4.
А
A\ B
В
A
A
U
U
5.
А
В
AB
U
2. Декартово произведение множеств
Декартовым или прямым произведением множеств X 1 , X 2 , …, X n
{( x1 , x2 ,, xn ) | x1  X 1 , x2  X 2 ,, xn  X n } ,
называется
множество
обозначаемое через X 1  X 2    X n . Если X 1  X 2    X n , то множество
X 1  X 2    X n называется n-ой декартовой степенью множества X и
обозначается X n . Положим по определению X 0  .
3. Отношения
N-местным отношением P или n-местным предикатом P на
множествах X 1 , X 2 , …, X n называется любое подмножество прямого
произведения X 1  X 2    X n . Элементы x1 , x 2 , …, xn (где x1  X 1 ,
x2  X 2 , …, xn  X n ) называются связанными соотношением P тогда и
только тогда, когда ( x1 , x2 ,, xn )  P .
При n  1 отношением P является подмножеством множества X 1 и
называется унарным отношением, или свойством, на множестве X 1 .
4
При n  2 отношением P называется бинарным отношением (в этом случае
вместо ( x1 , x 2 )  P иногда пишут x1 P x 2 ).
Отношение P  X n называется n-местным отношением (предикатом) на
множестве X.
Для любого множества X определим тождественное отношение
id X  {( x, x) | x  X } ( id X также называют диагональю) и универсальное
отношение u X  X 2 ( u X также называют полным отношением).
Отношение P называется
- рефлексивным, если ( x, x)  P для всех x  X .
- антирефлексивным, если ( x, x)  P для всех x  X .
- симметричным, если из того, что ( x, y )  P , следует, что ( y, x)  P .
- антисимметричным, если из того, что ( x, y )  P и ( y, x)  P , следует, что
x y.
- транзитивным, если из того, что ( x, y )  P и ( y, z )  P , следует, что
( x, z )  P .
Отношение P называется эквивалентностью,
рефлексивным, симметричным и транзитивным.
если
оно
является
Примеры. Пусть P  X 2 , где X  {1, 2, 3} . Тогда
1) P  {(1,1), (2,2), (3,3), (1,2), (2,1)} — рефлексивно, симметрично,
транзитивно.
2) P  {(1,2), (2,3), (1,3)} — антирефлексивно, антисимметрично,
транзитивно.
3) P  {(1,1), (2,3), (3,1)} — антисимметрично.
4) P  {(2,1), (1,2)} — антирефлексивно, симметрично.
5) P  X 2 — эквивалентность.
Если
отношение
обладает
свойствами
рефлексивности,
антисимметричности и транзитивности, то оно называется отношением
порядка (нестрогого порядка). Вместо ( x1 , x2 )  P часто пишут x1  x2 .
Если отношение обладает свойствами антирефлексивности,
антисимметричности и транзитивности, то оно называется отношением
строгого порядка. Вместо значка  используют значок  .
4. Функция как отношение
Отношение f, заданное на A B , называется функцией из A в B, если
из того, что ( x, y1 )  f и ( x, y 2 )  f , следует y1  y2 . Если f функция, то
5
вместо ( x, y )  f пишем y  f (x) и y называют значением функции f при
значении аргумента x.
Функция f называется инъекцией, если для всех x1 , x 2 из того, что
x1  x2 , следует f ( x1 )  f ( x2 ) .
Функция f называется сюръекцией, если для любого y  B
существует x  A , что ( x, y )  f .
Функция f называется
биекцией (взаимно однознач-
f1
1
ным соответствием между
f3
множествами A и B ), если
она инъективна и сюръективна.
Пример. f i : [0,1]  [0,1]
f2
f1 — сюръекция, не инъекция;
f 2 — инъекция, не сюръекция;
1
f 3 — биекция;
f4
f 4 — не сюръекция, не инъекция.
Два множества A и B имеют одну и ту же мощность (кардинальное
число), если существует взаимно однозначное соответствие между
элементами этих множеств. В этом случае говорят, что A и B
эквивалентны (обозначают A B). Очевидно, что A есть бесконечное
множество, если оно имеет ту же мощность, что и хотя бы одно из его
собственных подмножеств; в противном случае A — конечное множество.
Бесконечное множество A счетно, если можно установить взаимно
однозначное соответствие между ним и множеством натуральных чисел.
5. Композиция функций
Пусть f : X  Y ; g : Y  Z – функции, тогда их композицией
(произведением) называют функцию g  f  g ( f ( x)) : X  Z . В математике
такое отображение называют сложной функцией, y – промежуточный
аргумент.
Для композиции справедливо свойство ассоциативности:
h  f g   h f  g .
6
ГРАФЫ
Пусть V ={v1, v2, … , vn} – любое множество, а E = {e1, e2, … , em} –
множество пар его элементов: ek={vi, vj} (k=1…m; i,j=1…n).
Графом называется пара множеств Г = (V, E). Элементы из V
называются вершинами графа, а элементы из E – его ребрами. Таким
образом, задание графа равносильно заданию отношения на множестве V2.
Если изобразить вершины графа точками на плоскости, а ребра –
линиями, соединяющими соответствующие вершины, то полученный
рисунок называется геометрической интерпретацией графа.
Подграфом графа  называется граф 1 у которого все вершины и
ребра принадлежат .
Путь – это непустой граф P  (V , E ) вида V  {v 0 , v1 ,  , v n } ,
E  {{v 0 , v1 }, {v1 , v 2 },  , {v n 1 , v n }} . Если все v i различны, то P называется
простым путем. Путь замкнут, если v 0  v n . Циклом называется
замкнутый путь. Простым циклом – замкнутый простой путь.
Две вершины графа назовем эквивалентными, если они могут быть
соединены путем. Для любого графа данное отношение является
эквивалентностью, т. е. обладает свойствами рефлексивности, симметричности и транзитивности. Максимальные по включению подграфы графа ,
порожденные
классами
эквивалентных
вершин,
называются
компонентами связности графа . Любые две вершины из одной
компоненты связности соединены хотя бы одним путем, вершины же из
разных компонент не могут быть соединены путем. Граф называется
связным, если он состоит из одной компоненты связности.
Деревом называется связный граф без циклов.
Остовом графа называется подграф, являющийся деревом и содержащий
все вершины данного графа.
Если каждому ребру графа поставить в соответствие некоторое
неотрицательное число – вес ребра, то такой граф называется взвешанным.
Вес графа – это сумма весов его ребер.
Квадратная матрица C размера nn, элементы которой cij представляют
собой число различных ребер, соединяющих вершины vi и vj, называется
матрицей смежности графа Г. Для взвешанного графа элементы cij равны
весам соответствующих ребер.
БУЛЕВЫ ФУНКЦИИ
7
1. Определение и способы задания. Существенные и фиктивные
переменные
Функции f : E 2n  E 2 , где E 2  {0, 1} , называются функциями алгебры
логики или булевыми функциями. Множество всех булевых функций от n
переменных обозначается Pn .
Булеву функцию от n переменных можно задать таблицей истинности
(Табл.1.).
Таблица 1.
Принято двоичные векторы значений
x1
…
xn-1
xn
f
0
…
0
0
f1
переменных располагать в таблице по
0
…
0
1
f2
возрастанию. Поэтому, благодаря этому
0
…
1
0
f3
соглашению, функцию можно задать
…
…
…
…
…
вектором (f1, f2, …, f 2n ).
f 2n
1
…
1
1
Число булевых функций от n переn
менных равно 2 2 .
Булева функция f  Pn существенно зависит от переменной x i , если
существует такой набор значений a1 , a 2 ,  , a i 1 , a i 1 ,  , a n , что
f (a1 , a 2 ,  , a i 1 , 0, a i 1 ,  , a n )  f (a1 , a 2 ,  , a i 1 , 1, a i 1 ,  , a n ) .
В этом случае x i называется существенной переменной, в противном
случае x i называется фиктивной (несущественной) переменной.
По определению булевы функции равны, если одна из другой получается
введением или удалением фиктивных переменных.
Булевы функции одной переменной:
Значения переменной x
Название
Обозначение
Тождественный нуль
0
Тождественная
x
Отрицание
x, x
Тождественная единица 1
0
1
0
0
1
1
0
1
0
1
Булевы функции двух переменных:
Значения переменной x
Значения переменной y
Название
Конъюнкция
Сложение по модулю 2
Дизъюнкция
Стрелка Пирса
Обозначение
,  , &
+, 


8
0
0
0
1
1
0
1
1
0
0
0
1
0
1
1
0
0
1
1
0
1
0
1
0
Эквивалентность
Импликация
Штрих Шеффера
, , 

|
1
1
1
0
1
1
0
0
1
1
1
0
Для рассмотренных функций будем использовать инфиксную форму
записи (например, x  y ), установим приоритет (, &,  , ) и будем
опускать лишние скобки.
Пусть F – рассмотренное ранее множество булевых функций.
Формулой над F называется выражение вида f (t1 ,  , t m ) , где f  F и t i
либо переменная, либо формула над F.
Одна функция может иметь множество реализаций различными
формулами. Формулы, реализующие одну и ту же функцию, называются
равносильными.
Отношение
равносильности
формул
является
эквивалентностью. Имеют место следующие основные равносильности:
1)
2)
3)
7)
8)
x & x  x (идемпотентность конъюнкции);
x  x  x (идемпотентность дизъюнкции);
4) x  1  1 ;
5) x & 0  0 ;
x &1  x ;
x & x  0 (закон противоречия);
x  x  1 (закон исключенного третьего);
6) x  0  x ;
9) x  x (закон снятия двойного отрицания);
10) x & ( y  x)  x (первый закон поглощения);
11) x  ( y & x)  x (второй закон поглощения);
12) x  y  x  y  x & y ;
13) x & y  x  y ; x  y  x & y (законы де Моргана);
14) x & y  y & x (коммутативность конъюнкции);
15) x  y  y  x (коммутативность дизъюнкции);
16) x & ( y & z )  ( x & y) & z (ассоциативность конъюнкции);
17) x  ( y  z )  ( x  y)  z (ассоциативность дизъюнкции);
18) x & ( y  z )  ( x & y)  ( x & z ) (дистрибутивность конъюнкции относительно дизъюнкции);
19) x  ( y & z )  ( x  y) & ( x  z ) (дистрибутивность дизъюнкции относительно конъюнкции).
20) x | y= x & y ; x  y= x  y .
2. Нормальные формы
9
Элементарной конъюнкцией над множеством Xn = {x1, x2, …, xn}
называется формула вида x i1 1 & x i2 2 &…& x ik k , где xis  xit при s  t .
Элементарной дизъюнкцией над множеством Xn = {x1, x2, …, xn}
называется формула вида x i1 1 ˅ x i2 2 ˅…˅ x ik k , где xis  xit при s  t . Число
букв в элементарной конъюнкции (дизъюнкции) называется ее рангом.
Константа 1 считается по определению элементарной конъюнкцией
нулевого ранга, а константа 0 – элементарной дизъюнкцией нулевого
ранга. Формула вида K1˅K2˅…˅Ks, где Ki – попарно различные
элементарные конъюнкции и s  1 , называется дизъюнктивной нормальной
формой (сокращенно ДНФ). Формула вида D1&D2&…&Ds, где Di –
попарно различные элементарные конъюнкции и s  1 , называется
конъюнктивной нормальной формой (сокращенно КНФ). Число s в обеих
формулах называется соответственно длиной ДНФ и длиной КНФ.
ДНФ (КНФ) над множеством Xn = {x1, x2, …, xn} называется
совершенной, если она составлена из элементарных конъюнкций
(соответственно элементарных дизъюнкций) ранга n. Простейший (но
весьма громоздкий) способ построения ДНФ и КНФ для булевых функций
состоит в использовании эквивалентных преобразований.
Если булева функция задана некоторой ДНФ, то совершенную ДНФ
этой функции можно получить, используя преобразования вида
A  A & x  A & x и A  A  A . Аналогично, СКНФ булевой функции может
быть построена из какой-либо КНФ этой функции с помощью
преобразований вида A  ( A  x) & ( A  x) и A & A  A .
Дистрибутивный закон x & ( y  z )  ( x & y)  ( x & z ) совместно с
эквивалентностями x & x  x , x & x  0 , A & 0  0 , A  0  A и закон
поглощения A  A & B  A позволяет переходить от КНФ булевой
функции к некоторой ДНФ, задающей ту же функцию. Аналогично,
x  ( y & z )  ( x  y) & ( x  z ) ,
используя
дистрибутивный
закон
эквивалентности x  x  x , x  x  1 , A  1  1, A & 1  A и закон поглощения
A & ( A  B)  A , можно из ДНФ булевой функции построить некоторую
КНФ той же функции.
Получить СДНФ и СКНФ можно из табличного представления
булевой функции по следующим формулам:
для любой булевой функции f ( x1 , x 2 ,  , x n ) , отличной от тождественного
нуля, справедливо представление
f ( x1 , x 2 ,  , x n ) 
 x1 1 x 2 2  x n n
;
(11)
( 1 , 2 ,, n ): f ( 1 , 2 ,, n ) 1
для любой булевой функции f ( x1 , x 2 ,  , x n ) , отличной от тождественной
единицы, справедливо представление
10
f ( x1 , x 2 ,  , x n )  & ( x11  x 2 2    x n n .
( 1 , 2 ,, n ): f ( 1 , 2 ,, n )  0
(12)
3. Полином Жегалкина (полином по модулю 2)
Элементарная конъюнкция называется монотонной, если она не
содержит отрицаний переменных. Полиномом Жегалкина над множеством
Xn = {x1, x2, …, xn} называется выражение вида K 1  K 2    K l , где l  1
и все K j суть различные монотонные конъюнкции над X n , либо
константы. Любую булеву функцию можно единственным образом
представить в виде полинома Жегалкина над X n  {x1 , x 2 ,  , x n }.
4. Минимизация булевых функций
Допустимой конъюнкцией или импликантом функции f(x1, x2, …, xn)
называется такая элементарная конъюнкция K над множеством Xn = {x1, x2,
…, xn}, что K ˅ f(x1, x2, …, xn) = f(x1, x2, …, xn). Импликант K называется
простым, если после отбрасывания любой буквы из K получается
элементарная конъюнкция, не являющаяся простым импликантом
функции f(x1, x2, …, xn). Дизъюнкция всех простых импликантов функции f
называется сокращенной ДНФ функции f .
Метод Блейка получения сокращенной ДНФ: Применять правило обобщенного склеивания x K1˅ x K2= x K1˅ x K2˅ K1K2 до тех пор, пока
происходит
увеличение
длины
формулы
(с
точностью
до
идемпотентности дизъюнкции). На втором этапе применять правило
поглощения K1 ˅ K1K2 = K1 пока возможно.
Получение сокращенной ДНФ из КНФ: Раскрыть скобки, пользуясь законом дистрибутивности, затем вычеркнуть из получившейся ДНФ буквы и
слагаемые, используя правила 1, 2, 7 и поглощения.
ДНФ называется минимальной, если она имеет наименьшее число
букв среди всех эквивалентных ей ДНФ. Известно, что минимальные
ДНФ функции f содержатся среди тупиковых ДНФ этой функции – ДНФ
отбрасывание из которых любого слагаемого или буквы приводит к
неэквивалентной ДНФ.
Алгоритм построения тупиковых ДНФ.
1. Строим СДНФ для заданной функции f.
2. Получаем сокращенную ДНФ f = N1 ˅ N2 ˅ … ˅ Nm..
3. Пусть Nf = {P1, P2, … ,Ps} множество всех наборов значений переменных на которых функция принимает значение 1. Составим таблицу (см.
таблицу 2), положив
Таблица 2.
11
0, если N i ( Pj )  0,
1, если N i ( Pj )  1.
 ij  
Для каждого j найдем множество
Ej = {ej1, …, e jt j ejt} всех номеров
строк, в которых столбец Pj
содержит 1. Составим выражение
N1
…
Ni
…
Nm
P1
σ11
…
σi1
…
σm1
…
…
…
…
…
…
…
…
…
…
…
…
Pj
σ1j
…
σij
…
σmj
Ps
σ1s
…
σis
…
σms
s
& (e j1    e jt j ) .
j 1
4. Произведем преобразование &˅  ˅ &, рассматривая символы e как
булевы величины.
5. Совершим преобразования A&B ˅ A = A и A ˅ A = A. Каждое слагаемое
в полученной форме будет определять тупиковую ДНФ функции f.
5. Схемы из функциональных элементов
Представлению булевых функций формулами можно придать следующий
«инженерно-конструктивный» смысл. Каждой элементарной функции
поставим в соответствие логический элемент – прямоугольник, на входы
которого подаются сигналы, соответствующие значениям переменных, а
на выходе получается сигнал, соответствующий значению функции.
Приняты следующие изображения логических элементов.
x1
&
y
x1
&
y
x2
x2
y = x1  x2
x1
&
y
x2
y = x1  x 2 (элемент 2И-НЕ)
=1
y
x2
y = x1  x2
(элемент 2И)
x1
x1
&
y = x1  x2
(элемент 2ИЛИ)
y
x2
y = x1  x 2 (элемент 2ИЛИ-НЕ)
(элемент
«сумма по модулю 2))
x
1
y= x
y
(элемент НЕ или
инвертор)
Соединяя выходы одних элементов со входами других, можно
составить схему, реализующую сложную функцию. Входами этой схемы
будут являться переменные, а выходом – значение функции.
12
Download