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

Методическое указание к выполнению курсовой работы

.pdf
Скачиваний:
34
Добавлен:
02.05.2014
Размер:
685.02 Кб
Скачать

множество 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 подразумевают разряд двоичного числа, соответствующего набору логических переменных.

Функция, определенная на наборах xn1 , 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 (xn1 ,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 (xn1 ,K, x1 , x0 ) =

f

(

xn1

, 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

x1x0

[ … ]

 

 

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