Дискретная математика в программировании. Практикум. Учебное пособие
.pdf2)ассоциативность: X1 (X2 X3)=(X1 X2) X3;
X1ʌ(X2ʌX3)=(X1ʌX2)ʌX3;
3)дистрибутивность: X1ʌ(X2 X3)=(X1ʌX2) (X1ʌX3);
4)свойства констант: Xʌ1=X; Xʌ0=0; X 0=X;
5)X X=0; XʌX=X.
Утверждение. Через операции алгебры Жегалкина можно выразить все другие булевы функции:
¬X=1 X; XvY=X Y XY; X Y=1 X Y;
X→Y=1 X XY; (XÚY) =X↓Y=1 X Y XY;
Ø(XÙY)= X|Y=1 XY.
31
Построить полином Жегалкина можно с помощью метода |
|
||||||
трецгольника. Этот метод позволяет преобразовать таблицу |
|
||||||
истинности |
в |
полином |
Жегалкина |
путём |
построен |
||
вспомогательной |
|
треугольной |
таблицы |
в |
соответствии |
со |
|
следующими правилами. |
|
|
|
|
|
||
1. Строится |
полная |
таблица истинности, в которой |
|
|
|||
строки идут в порядке возрастания двоичных |
кодов от000...00 |
|
|
||||
до 111...11. |
|
|
|
|
|
|
|
2.Строится вспомогательная треугольная таблица, в
которой |
первый |
столбец |
совпадает |
со |
столбцом значений |
|
функции в таблице истинности. |
|
|
|
|
||
3. |
Ячейка в |
каждом |
последующем |
столбце |
получается |
|
путём сложения по модулю 2 двух ячеек предыдущего столбца — |
||||||
стоящей в той же строке и строкой ниже. |
|
|
|
|||
4. |
Столбцы |
вспомогательной |
таблицы |
нумеруются |
||
двоичными кодами в том же порядке, что и строки таблицы |
||||||
истинности. |
|
|
|
|
|
|
5. |
Каждому |
двоичному коду ставится |
в |
соответствие |
||
один из членов полинома Жегалкина в зависимости от позиций кода, в которых стоят единицы. Например, ячейке 111 соответствует член ABC, ячейке 101 — член AC, ячейке 010 — член B, ячейке 000 — член 1 и т.д.
6. Если в верхней строке какого-либо столбца стоит единица, то соответствующий член присутствует в полиноме Жегалкина.
Пример преобразования таблицы истинности в полином Жегалкина для функции трёх переменныхP(A,B,C) показан ниже.
32
Задания
1. Минимизировать булеву функцию, заданную таблично в соответствии с вариантом.
1.
x1 |
x2 |
x3 |
x4 |
F |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
2.
|
x1 |
|
x2 |
|
x3 |
x4 |
F |
0 |
|
0 |
|
0 |
|
0 |
1 |
0 |
|
0 |
|
0 |
|
1 |
1 |
0 |
|
0 |
|
1 |
|
0 |
0 |
0 |
|
0 |
|
1 |
|
1 |
0 |
0 |
|
1 |
|
0 |
|
0 |
0 |
0 |
|
1 |
|
0 |
|
1 |
1 |
0 |
|
1 |
|
1 |
|
0 |
1 |
0 |
|
1 |
|
1 |
|
1 |
0 |
1 |
|
0 |
|
0 |
|
0 |
0 |
1 |
|
0 |
|
0 |
|
1 |
0 |
1 |
|
0 |
|
1 |
|
0 |
1 |
1 |
|
0 |
|
1 |
|
1 |
1 |
1 |
|
1 |
|
0 |
|
0 |
0 |
1 |
|
1 |
|
0 |
|
1 |
0 |
1 |
|
1 |
|
1 |
|
0 |
0 |
1 |
|
1 |
|
1 |
|
1 |
1 |
33
3.
x1 |
x2 |
x3 |
x4 |
F |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
4.
x1 |
x2 |
x3 |
x4 |
F |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
|
|
|
|
|
5.
|
x1 |
|
x2 |
x3 |
x4 |
F |
0 |
|
0 |
|
0 |
0 |
1 |
0 |
|
0 |
|
0 |
1 |
0 |
0 |
|
0 |
|
1 |
0 |
0 |
0 |
|
0 |
|
1 |
1 |
0 |
0 |
|
1 |
|
0 |
0 |
1 |
0 |
|
1 |
|
0 |
1 |
1 |
0 |
|
1 |
|
1 |
0 |
0 |
0 |
|
1 |
|
1 |
1 |
0 |
1 |
|
0 |
|
0 |
0 |
0 |
1 |
|
0 |
|
0 |
1 |
1 |
1 |
|
0 |
|
1 |
0 |
1 |
1 |
|
0 |
|
1 |
1 |
0 |
1 |
|
1 |
|
0 |
0 |
0 |
1 |
|
1 |
|
0 |
1 |
0 |
1 |
|
1 |
|
1 |
0 |
1 |
1 |
|
1 |
|
1 |
1 |
1 |
6.
|
x1 |
|
x2 |
x3 |
x4 |
F |
0 |
|
0 |
|
0 |
0 |
1 |
0 |
|
0 |
|
0 |
1 |
0 |
0 |
|
0 |
|
1 |
0 |
1 |
0 |
|
0 |
|
1 |
1 |
0 |
0 |
|
1 |
|
0 |
0 |
1 |
0 |
|
1 |
|
0 |
1 |
1 |
0 |
|
1 |
|
1 |
0 |
0 |
0 |
|
1 |
|
1 |
1 |
1 |
1 |
|
0 |
|
0 |
0 |
0 |
1 |
|
0 |
|
0 |
1 |
1 |
1 |
|
0 |
|
1 |
0 |
1 |
1 |
|
0 |
|
1 |
1 |
0 |
1 |
|
1 |
|
0 |
0 |
1 |
1 |
|
1 |
|
0 |
1 |
0 |
1 |
|
1 |
|
1 |
0 |
1 |
1 |
|
1 |
|
1 |
1 |
1 |
|
|
|
|
|
|
|
34
7.
x1 |
x2 |
x3 |
x4 |
F |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
8.
x1 |
x2 |
x3 |
x4 |
F |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
9.
|
x1 |
|
x2 |
x3 |
x4 |
F |
0 |
|
0 |
|
0 |
0 |
0 |
0 |
|
0 |
|
0 |
1 |
1 |
0 |
|
0 |
|
1 |
0 |
0 |
0 |
|
0 |
|
1 |
1 |
1 |
0 |
|
1 |
|
0 |
0 |
0 |
0 |
|
1 |
|
0 |
1 |
0 |
0 |
|
1 |
|
1 |
0 |
1 |
0 |
|
1 |
|
1 |
1 |
0 |
1 |
|
0 |
|
0 |
0 |
1 |
1 |
|
0 |
|
0 |
1 |
0 |
1 |
|
0 |
|
1 |
0 |
0 |
1 |
|
0 |
|
1 |
1 |
1 |
1 |
|
1 |
|
0 |
0 |
0 |
1 |
|
1 |
|
0 |
1 |
1 |
1 |
|
1 |
|
1 |
0 |
0 |
1 |
|
1 |
|
1 |
1 |
0 |
10.
|
x1 |
|
x2 |
x3 |
x4 |
F |
0 |
|
0 |
|
0 |
0 |
0 |
0 |
|
0 |
|
0 |
1 |
0 |
0 |
|
0 |
|
1 |
0 |
1 |
0 |
|
0 |
|
1 |
1 |
1 |
0 |
|
1 |
|
0 |
0 |
0 |
0 |
|
1 |
|
0 |
1 |
0 |
0 |
|
1 |
|
1 |
0 |
0 |
0 |
|
1 |
|
1 |
1 |
1 |
1 |
|
0 |
|
0 |
0 |
1 |
1 |
|
0 |
|
0 |
1 |
0 |
1 |
|
0 |
|
1 |
0 |
0 |
1 |
|
0 |
|
1 |
1 |
0 |
1 |
|
1 |
|
0 |
0 |
1 |
1 |
|
1 |
|
0 |
1 |
1 |
1 |
|
1 |
|
1 |
0 |
0 |
1 |
|
1 |
|
1 |
1 |
0 |
35
|
2. |
|
Построить |
|
полином |
|
Жегалкина |
методом |
||||||||
|
|
треугольника. |
|
|
|
|
|
|
|
|
|
|
|
|
||
А |
B |
C |
|
|
|
|
|
Варианты |
|
|
|
|
|
|
||
1 |
2 |
3 |
4 |
|
5 |
6 |
|
7 |
|
8 |
9 |
10 |
|
|||
|
|
|
|
|
|
|
||||||||||
1 |
1 |
1 |
1 |
1 |
0 |
0 |
|
1 |
1 |
|
0 |
|
1 |
0 |
0 |
|
1 |
1 |
0 |
0 |
0 |
1 |
0 |
|
0 |
1 |
|
0 |
|
1 |
0 |
1 |
|
1 |
0 |
1 |
0 |
1 |
1 |
0 |
|
1 |
1 |
|
0 |
|
1 |
1 |
1 |
|
1 |
0 |
0 |
1 |
1 |
1 |
1 |
|
0 |
0 |
|
0 |
|
1 |
0 |
0 |
|
0 |
1 |
1 |
1 |
0 |
0 |
0 |
|
1 |
1 |
|
1 |
|
0 |
0 |
0 |
|
0 |
1 |
0 |
0 |
1 |
1 |
0 |
|
1 |
1 |
|
0 |
|
0 |
1 |
1 |
|
0 |
0 |
1 |
1 |
1 |
0 |
1 |
|
1 |
0 |
|
1 |
|
1 |
0 |
1 |
|
0 |
0 |
0 |
0 |
1 |
0 |
1 |
|
1 |
1 |
|
1 |
|
1 |
1 |
1 |
|
Практическая работа № 7.
Способы задания графов: матрица инциденций, матрица смежности, таблица ребер, список инцидентности
Цель работы: приобрести навыки задания графов в ЭВМ различными способами и работы с ними.
Теоретические сведения
Существуют следующие способы представления графа в памяти ЭВМ. Рассмотрим конечный граф G = (V, E), где |V | = n,
|E| = m.
Матрица инциденций. Ориентированный граф задается прямоугольной матрицей B(n´m), элементы которой определяются по правилу:
ì-1, |
если vi является начальной вершиной дуги e j; |
||
ï |
1, |
если vi |
является конечной вершиной дуги e j; |
ï |
|||
bi j = í |
0, |
если vi не инцидентна дуге e j; |
|
ï |
|||
ï |
a, если |
e j = (vi , vi ), |
|
î |
|||
где a – любое |
натуральное |
число, отличное |
от 1. |
У |
|
неориентированного |
графа |
оба |
элемента |
, |
ма |
соответствующие вершинам, инцидентным ребру ej, равны 1. |
|
|
|||
36
Это представление графа является самым неудобным, т. к. объем занимаемой памяти равенn×m единиц, причем в каждом столбце только две ненулевые ячейки. Кроме нерационального использования памяти, недостатком этого способа представления является неудобный доступ к информации. Например, для ответа на вопросы:
а) существует ли ребро (дуга) (vi, vj);
б) к каким вершинам ведут ребра (дуги) из вершины vi требуется, в худшем случае, перебор n×m элементов, т.е. порядка n×m шагов
алгоритма. От этого недостатка свободен следующий способ представления графа.
Матрица смежности. Элементы квадратной матрицы A(n´n) определяются следующим образом:
|
ì1, |
если (v |
, v |
) ÎE; |
|
aij |
ï |
|
i |
j |
|
= í |
0, |
если (v |
, v |
) ÏE. |
|
|
ï |
||||
|
|
i |
j |
|
|
|
î |
|
|
|
|
Число строк матрицы смежности равно числу столбцов и соответствует количеству вершин графа:
0 – соответствует отсутствию ребра,
1 – соответствует наличию ребра.
Такая форма эквивалентна матричному представлению бинарного отношения (см. с. 14). Проверка существования ребра (дуги) (vi, vj) осуществляется за один шаг, в отличие от матрицы инциденций, однако проверка свойств графа на основе такого представления требует, в худшем случае, порядка n2 шагов
37
алгоритма. При этом способе объем неиспользованной памяти по-прежнему велик.
При работе со взвешенными графами для хранения весов ребер (дуг) требуются дополнительные одномерные массивы размера m (для случая матрицы инциденций) или матрицы размера n´n (для случая матрицы смежности). Это обстоятельство делает неприемлемым использование матрицы смежности для взвешенных графов, т. к. количество неиспользованных единиц памяти увеличивается в k раз, где k – число весов ребер (дуг).
Таблица ребер. Она представляет собой матрицу размером m´2, каждая строка которой содержит вершины инцидентные i-му ребру (i-й дуге). Для работы со взвешенными графами нужно добавить к матрице столбцы, соответствующие весам ребер (дуг). Такая форма эквивалентна табличному представлению бинарного отношения.
Однако этому способу представления графа присущ тот же |
|
||||||
недостаток, что и матрице инциденций, – неудобство доступа к |
|
||||||
информации, |
хотя |
число |
шагов |
при |
поиске |
ребра |
здес |
значительно меньше (порядка m). |
|
|
|
|
|||
Списки |
инцидентности. |
Для каждой |
вершины |
viÎV |
|
||
создается |
список |
записей, характеризующих |
ребра (дуги), |
|
|||
инцидентные этой вершине. Таким образом, это представление |
|
||||||
использует объем памяти порядка n + m, поиск вершины смежной |
|
||||||
с данной требует порядка n + m шагов, проверка свойств графа |
|
||||||
осуществляется за |
число |
шагов |
порядкаn. Такая |
форма |
|
||
эквивалентна представлению бинарного отношения в виде верхних срезов.
38
Задания
Написать программу в соответствии с заданием варианта.
1.По таблице смежности построить списки инцидентности неориентированного графа.
2.По таблице рёбер построить списки инцидентности ориентированного графа.
3. |
По |
таблице |
смежности |
построить |
инцидентности ориентированного графа. |
|
|||
4. |
По таблице рёбер построить списки инцидентности |
|||
неориентированного графа. |
|
|
||
5. |
По |
таблице |
смежности |
построить |
инцидентности ориентированного графа, записи в каждом списке |
||||
упорядочить по возрастанию номеров вершин. |
|
|||
6. |
По таблице рёбер построить списки инцидентности |
|||
ориентированного графа, записи в каждом списке упорядочить по |
||||
убыванию номеров вершин. |
|
|
||
7. |
По |
таблице |
смежности |
построить |
инцидентности ориентированного графа, записи в каждом списке |
||||
упорядочить по убыванию номеров вершин. |
|
|||
8. |
По таблице рёбер построить списки инцидентности |
|||
ориентированного графа, записи в каждом списке упорядочить по |
||||
возрастанию номеров вершин. |
|
|
||
9. |
По |
таблице |
смежности |
построить |
инцидентности неориентированного графа, удалить из графа все рёбра, начинающиеся и заканчивающиеся в вершинах n1, n2.
10. По таблице рёбер построить списки инцидентности ориентированного графа, добавить рёбра с началом в вершинах, кратных 2, и концом в вершинах, кратных 5.
39
Практическая работа № 8. Представление графа и определение его характеристик.
Алгоритмы поиска
Цель работы: приобрести навыки определения характеристик графа и применения алгоритмов поиска на графах.
Теоретические сведения
Существуют следующие характеристики ориентированного графа:
Г(хi) - множество вершин, в которые отображается вершина хi; Г-1(хi) - множество вершин, которые отображаются в
вершину°хi;
Г2(хi) - множество вершин, в которые отображаются вершины хi, отображенные в хi;
Г-2(хi) - множество вершин, которые отображаются в вершины, отображенные в хi;
ρs(хi) – полустепень исхода, т.е. количество дуг, выходящих из вершины хi;
ρt(хi) – полустепень захода, т.е. количество дуг, входящих в вершину хi.
Например, для приведенного графа перечисленные ранее характеристики будут иметь следующие значения.
Г(х1) |
х2, х5 |
Г(х2) |
х3 |
Г(х3) |
х4 |
Г(х4) |
х2 |
Г(х5) |
х2, х4 |
Г2(х1) |
х2, х3, х4 |
Г2(х2) |
х4 |
Г2(х3) |
х2 |
Г2(х4) |
х3 |
Г2(х5) |
х2, х3 |
40
