Методическое указание к выполнению курсовой работы
.pdfмножество P. Метка начальной вершины (вершины v1) неизменна и равна нулю (D1 = 0).
Алгоритм работает следующим образом.
Вначале P = {1}, Dj = d1j для всех j ≠1.
Шаг 1 – Поиск следующего ближайшей вершины. Необходимо найти такую вершину i P, что
Di = min [Dj ] ,
j P
после чего включить найденную вершину в множество Р:
P:= P {i}.
Если множество P содержит все вершины графа, то работа алгоритма закончена.
Шаг 2 – Обновление меток. Для всех j P принять:
D j = min [Dj , Di +dij ] .
После этого следует вернуться к шагу 1.
В качестве примера рассмотрим отыскание кратчайших путей из вершины v1 во все остальные вершины графа G, приведенного на рис. 5.3.
41
Рис. 5.3
4)Задача о максимальном потоке.
5.2Синтез логических схем.
Рекомендации к выполнению второй части и варианты функций алгебры логики изложены также в «Методичних вказівках до виконання курсової роботи з дисципліни “Спеціальні розділи вищої математики”./ В.С. Димов, Г.О. Димова. – Херсон: ХДТУ, 2000. – 42с.». А именно:
5.2.1 Таблица истинности функции алгебры логики.
Логической называют переменную, которая может принимать одно из двух возможных значений – «1» или «0» (истина или ложь, “да” или “нет”). Логические переменные будем обозначать xi. Чаще всего под индексом i подразумевают разряд двоичного числа, соответствующего набору логических переменных.
Функция, определенная на наборах xn−1 , K, xi ,K, x2 , x1 , x0 и
принимающая на этих наборах значение 0 или 1, называется функцией алгебры логики (ФАЛ, логической функцией, булевой функцией). Так как
42
число наборов для n переменных равно 2n, то любую ФАЛ можно задать конечной таблицей с 2n строками. При этом переменные xi являются
аргументами ФАЛ. Всего для n переменных можно записать 22n различных ФАЛ.
Для одной логической переменной x0 можно записать два набора x0 = 0 и x0 = 1 и получить четыре ФАЛ:
•f0 = 0 – константа нуль;
•f1 = x0 (функция равна значению переменной x0);
•f2 = x0 (функция равна отрицанию переменной x0);
•f3 = 1 – константа единица.
Втаблицах 5.1 и 5.2 показано, что для двух логических переменных можно составить 4 различных набора x1 , x0 и записать 16 логических
функций (эти функции называют элементарными ФАЛ).
Таблица 5.1
x1 |
|
x0 |
|
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 |
|
Таблица 5.2 |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
x1 |
|
x0 |
|
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 |
Существуют различные способы задания или представления ФАЛ:
• Словесное представление – отражает словесную взаимосвязь аргументов со значениями ФАЛ (например, функция трех аргументов принимает
43
значения единицы, если два или более ее аргументов равны единице, а во всех остальных случаях функция равна нулю).
• Задавая значения ФАЛ на всех возможных наборах логических переменных (обычно в порядке возрастания их номеров) можно построить таблицу истинности ФАЛ. В этом состоит табличный способ задания логической функции. В таблице 5.3 представлена функция, словесно описанная в предыдущем примере.
Таблица 5.3
№ набора |
x2 |
x1 |
x0 |
f (x2, x1, x0) |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
1 |
0 |
0 |
1 |
0 |
2 |
0 |
1 |
0 |
0 |
3 |
0 |
1 |
1 |
1 |
|
|
|
|
|
4 |
1 |
0 |
0 |
0 |
5 |
1 |
0 |
1 |
1 |
|
|
|
|
|
6 |
1 |
1 |
0 |
1 |
7 |
1 |
1 |
1 |
1 |
|
|
|
|
|
• Аналитический способ задания ФАЛ заключается в том, что функция f задается в виде алгебраического уравнения, в котором переменные xi связаны между собой знаками логических операций. В предыдущем примере
f (x2 , x1 , x0 ) = |
x2 |
x1 x0 x2 |
x1 |
x0 x2 x1 |
x0 |
x2 x1 x0 . |
(5.1) |
• Числовой способ задания ФАЛ используется для сокращения ее записи. При этом функция записывается в виде логической суммы десятичных номеров двоичных наборов, на которых функция равна единице. Например, для рассмотренной выше функции
44
f (x2 , x1, x0 ) =∑ (3, 5, 6, 7) . |
(5.2) |
Рассматривая каждую из функций (см. табл. 5.1 и 5.2) совместно с наборами переменных получаем таблицы истинности для всех элементарных ФАЛ. Каждая из элементарных функций имеет свое название:
•f0 – константа нуль;
•f1 = x0 & x1 = x0 x1 = x0x1 – функция конъюнкции (логическое умножение, И);
•f2 = x1 → x0 = x1 a x0 - отрицание импликации x1 в x0 (ЗАПРЕТ по x0);
•f3 = x1 (функция несущественно зависит от x0);
•f4 = x0 → x1 = x0 a x1 - отрицание импликации x0 в x1 (ЗАПРЕТ по x1);
•f5= x0 (функция несущественно зависит от x1);
•f6 = x0 x1 – функция сложения по модулю 2 (неравнозначность, исключающее ИЛИ);
•f7 = x0 x1 = x0 + x1 - функция дизъюнкции (логическое сложение, ИЛИ);
•f8 = x0 x1 = x0 o x1 = x0 + x1 – отрицание дизъюнкции (функция Вебба,
ИЛИ-НЕ);
•f9 = x0 ≡ x1 = x0 x1 = x0 ↔ x1 – функция равнозначности (функция эквивалентности);
•f10 = x0 (функция несущественно зависит от x1);
•f11 = x0 → x1 – функция импликации x0 в x1;
•f12 = x1 (функция несущественно зависит от x0);
•f13 = x1 → x0 – функция импликации x1 в x0;
•f14 = x0 & x1 = x0 | x1 = x0 x1 – отрицание конъюнкции (функция Шеффера,
И-НЕ);
•f15 – константа единица.
45
Функции двух переменных занимают в алгебре логики особое место, поскольку, имея набор функций двух переменных, на основании принципа суперпозиции можно образовать ФАЛ любого числа переменных.
Используя таблицы истинности, определяющие элементарные функции, можно задать в виде таблицы истинности любую ФАЛ, являющуюся суперпозицией этих функций. При этом следует учитывать приоритеты логических функций. Наивысшим приоритетом обладает функция логического отрицания, затем в порядке понижения приоритета следуют: конъюнкция, дизъюнкция, импликация, сложение по модулю 2, эквивалентность. При необходимости изменить порядок вычислений можно при помощи скобок.
Пример: построить таблицу истинности для логической функции
f (x2 , x1 , x0 ) ={[( |
|
x1 )→ x2 ]& ( |
|
|
)}→ x1 . |
(5.3) |
|
|
| x0 x1 |
||||
x0 |
x2 |
Таблицу истинности целесообразно строить последовательно выполняя логические операции с учетом их приоритета (см. табл. 5.4):
Таблица 5.4
x2 |
x1 |
x0 |
|
x0 |
x1 |
[…] |
|
x2 |
| x0 |
(…) |
|
|
|
{…} |
f |
( ... ) |
|||||||||||||||
0 |
0 |
0 |
|
1 |
0 |
|
1 |
1 |
0 |
|
0 |
1 |
|||
0 |
0 |
1 |
|
0 |
1 |
|
0 |
0 |
1 |
|
1 |
0 |
|||
0 |
1 |
0 |
|
1 |
0 |
|
1 |
0 |
1 |
|
0 |
1 |
|||
0 |
1 |
1 |
|
1 |
0 |
|
0 |
1 |
0 |
|
0 |
1 |
|||
1 |
0 |
0 |
|
1 |
1 |
|
1 |
1 |
0 |
|
0 |
1 |
|||
1 |
0 |
1 |
|
0 |
1 |
|
1 |
1 |
0 |
|
0 |
1 |
|||
1 |
1 |
0 |
|
1 |
1 |
|
1 |
0 |
1 |
|
1 |
1 |
|||
1 |
1 |
1 |
|
1 |
1 |
|
1 |
0 |
1 |
|
1 |
1 |
|||
Логические функции для удобства записи выражают в виде суммы произведений логических переменных или в виде произведений их сумм. Первая запись называется дизъюнктивной нормальной формой (ДНФ), а
46
вторая – конъюнктивной нормальной формой (КНФ). Для каждой логической функции может существовать несколько равносильных дизъюнктивных и конъюнктивных форм, однако существует только один вид ДНФ или КНФ, в котором функция может быть записана единственным образом (совершенные нормальные формы СДНФ и СКНФ). В СДНФ функция записывается в виде логической суммы конститутиент единицы (минтермов), а в СКНФ – в виде логического произведения конститутинет нуля (макстермов). Конститутиенты единицы и нуля – это комбинации переменных, при которых функция соответственно обращается в единицу или нуль.
Набор элементарных логических функций, позволяющий строить на их базе ФАЛ любой сложности, называется базисом. Например, базис образуют функции логического умножения, сложения и отрицания (И, ИЛИ, НЕ). Именно эти функции (и реализующие их логические элементы) играют основную роль при синтезе электронных схем. Кроме того, довольно часто используются элементы, реализующие функции И-НЕ, ИЛИ-НЕ, исключающее ИЛИ.
Аналитическая форма записи ФАЛ позволяет сформулировать основные законы алгебры логики, доказательство справедливости которых получают путем подстановки всех возможных комбинаций переменных xi (при этом левая и правая части уравнений должны быть тождественны).
1) |
Переместительные законы: x0 x1 = x1 x0 ; x0 x1 = x1 x0 ; |
2) |
Сочетательные законы: |
(x0 x1 )x2 = x0 (x1 x2 ); (x0 x1 ) x2 = x0 (x1 x2 ) ; |
|
3) |
Распределительные законы: |
(x0 x1 )x2 = x0 x2 x1 x2 ; x0 (x1 x2 )=(x0 x1 )(x0 x2 ) ;
4) |
Законы повторения: |
xx = x ; x x = x ; |
||||||||
5) |
Законы поглощения: |
x0 (x0 |
x1 )= x0 ; x0 x0 x1 = x0 ; |
|||||||
6) |
Законы дополнительности: |
x |
|
|
|
=0 ; x |
|
=1; |
||
|
x |
x |
||||||||
7) |
Закон двойного отрицания: |
|
|
|
= x ; |
|||||
|
|
|
|
|||||||
|
x |
|||||||||
47
8) |
Законы универсального множества: x 1 = x ; x 1=1; |
||||||||||||||||||
9) |
Законы нулевого множества: x 0 =0 ; x 0 = x ; |
||||||||||||||||||
10) |
Законы склеивания: |
x0 x1 x0 |
|
|
= x0 ; |
(x0 x1 ) (x0 |
|
)= x0 ; |
|||||||||||
x1 |
x1 |
||||||||||||||||||
11) |
Правило де Моргана: |
|
|
= |
|
|
|
; |
|
= |
|
|
|
. |
|||||
|
x0 x1 |
x0 |
x1 |
x0 x1 |
x0 |
x1 |
|||||||||||||
Применение приведенных законов позволяет упрощать логические функции и выражения.
5.2.2 Анализ функции алгебры логики на принадлежность к классам. Среди всего множества логических функций можно выделить пять классов. При анализе ФАЛ можно определить ее принадлежность (или не
принадлежность) к каждому из этих классов.
Логическая функция f (xn-1, …, x1, x0) принадлежит к классу ФАЛ, сохраняющих константу нуля K0, если при всех xi = 0, где i = 0, 1, …, (n-1), выполняется равенство f = 0.
Логическая функция f (xn-1, …, x1, x0) принадлежит к классу ФАЛ, сохраняющих константу единицы K1, если при всех xi = 1, где i = 0, 1, …, (n- 1), выполняется равенство f = 1.
Логическая функция f (xn-1, …, x1, x0) принадлежит к классу линейных
ФАЛ KЛ в том случае, когда ее можно описать выражением |
|
f (xn−1 ,K, x1 , x0 ) =C ∑2 Ci xi ; C, Ci = { 0,1}; i =0, (n -1) , |
(5.4) |
где , Σ2 – знаки операции сложения по модулю 2.
Логическая функция f (xn-1, …, x1, x0) принадлежит к классу самодвойственных ФАЛ KС, если для нее справедливо выражение
f (xn−1 ,K, x1 , x0 ) = |
f |
( |
xn−1 |
, K |
x1 |
, |
x0 |
) . |
(5.5) |
48
Логическая функция f (xn-1, …,x1, x0) принадлежит к классу монотонных ФАЛ KМ, если при увеличении (или сохранении) значения каждой из переменных xi, значение функции не убывает.
Пример: Задана функция трех переменных:
f (x2 , x1 , x0 ) = [(x1 → x0 ) | x2 ]& (x1 x0 ).
Необходимо проанализировать эту функцию на принадлежность к классам ФАЛ.
Решение примера будем вести поэтапно:
1) Строим таблицу истинности для заданной функции (табл. 5.5)
|
Таблица 5.5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x2 |
x1 |
x0 |
x1→x0 |
[ … ] |
|
|
x0 |
f |
|
x1 |
||||||||
|
0 |
0 |
0 |
1 |
1 |
|
1 |
1 |
|
|
0 |
0 |
1 |
1 |
1 |
|
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
0 |
1 |
|
0 |
0 |
|
|
0 |
1 |
1 |
1 |
1 |
|
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
0 |
1 |
0 |
|
1 |
0 |
|
|
1 |
0 |
1 |
1 |
0 |
|
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
0 |
0 |
1 |
|
0 |
0 |
|
|
1 |
1 |
1 |
1 |
0 |
|
1 |
0 |
|
2) |
Анализируем функцию на принадлежность к классу К0. |
|
|||||||
|
Так как f (0, 0, 0) = 1, то можно сделать вывод, что f (x2, x1, x0) К0. |
||||||||
3) |
Анализируем функцию на принадлежность к классу К1. |
|
|||||||
|
Так как f (1, 1, 1) = 0, то можно сделать вывод, что f (x2, x1, x0) К1. |
||||||||
4) Анализируем функцию на принадлежность к классу КЛ. Предположим, что заданная функция линейна, тогда в соответствии с (5.4) найдем неизвестные коэффициенты С и Сi. Коэффициент С находится на наборе
0, 0, 0 :
f (0, 0, 0) = C C2 0 C1 0 C0 0 = C = 1.
49
Коэффициент С0 находится на наборе 0, 0,1 :
f (0, 0, 1) = C C2 0 C1 0 C0 1 = C C0 = 1.
Следовательно C0 = 0.
Коэффициент С1 находится на наборе 0,1, 0 :
f (0, 1, 0) = C C2 0 C1 1 C0 0 = C C1= 0.
Следовательно C1 = 1.
Коэффициент С2 находится на наборе 1, 0, 0 :
f (1, 0, 0) = C C2 1 C1 0 C0 0 = C C2= 0.
Следовательно C2 = 1.
Если предположение о линейности анализируемой функции верно, то ее значения должны совпадать со значениями линейной функции, которую с учетом коэффициентов можно записать в виде fЛ (x2, x1, x0) = 1 x0.
Проверим это на оставшихся четырех наборах: |
|
|
|
|||
− |
набор 0,1, |
1 : |
f (0, 1, 1) = 1; |
fЛ (0, 1, 1) = 0; |
f |
≠ |
fЛ; |
|
|
|
|
|
|
− |
набор 1, 0, |
1 : |
f (1, 0, 1) = 0; |
fЛ (1, 0, 1) = 0; |
f |
= |
fЛ; |
|
|
|
|
|
|
− |
набор 1,1, |
0 : |
f (1, 1, 0) = 0; |
fЛ (1, 1, 0) = 1; |
f |
≠ |
fЛ; |
|
|
|
|
|
|
− |
набор 1,1,1 : |
f (1, 1, 1) = 0; |
fЛ (1, 1, 1) = 0; |
f |
= |
|
fЛ. |
|
|
|
|
|
|
|
Поскольку есть наборы, на которых |
f ≠ fЛ, то |
сделанное |
|||
предположение о линейности функции неверно, следовательно |
f (x2, x1, x0) |
|||||
50
