Автор: Пользователь скрыл имя, 04 Марта 2013 в 13:55, курсовая работа
Потребность в вычислениях возникла у людей на самых ранних стадиях развития человеческого общества. Причем с самого начала для облегчения счета люди использовали различные приспособления. Многие из них были весьма интересными и остроумными по принципу действия, но все они обязательно требовали, чтобы в процессе вычислений активно участвовал человек-оператор. Качественно новый этап развития вычислительной техники наступил с изобретением и созданием электронных вычислительных машин, которые работают автоматически, без участия человека, в соответствии с заранее заданной программой.
Сравнивая попарно все 0-кубы, получаем множество 1-кубов К1. Применяя таким же образом к множеству К1 операцию склеивания, находим множество 2-кубов К2 и т.д. Этот процесс продолжается до тех пор, пока полученное из множества КS очередное множество КS+1 не окажется пустым (или не будет получен n-куб, представляющий функцию – константу «1»). В результате получается комплекс кубов, состоящий из множеств КS:
К={К0, К1,..., КS}, где s£n-1.
Для выделения из К множества простых импликант ZÌK при каждой операции склеивания тем или иным способом отмечаются те кубы, которые объединяются в кубы высшей размерности. Очевидно, что неотмеченные кубы и образуют множество простых импликант Z, именуемое сокращенной ДНФ.
На следующем шаге при извлечении экстремалей используется таблица покрытий. Ее строки соответствуют простым импликантам, а столбцы - конституентам «1» (0-кубам) данной функции. В клетке таблицы ставится метка, если простая импликанта, соответствующая данной строке, покрывает вершину, соответствующую данному столбцу клетки. Экстремалям соответствуют те строки таблицы, которые содержат единственную метку в каком-либо столбце. Удаляя строки экстремалей и все столбцы, в которых данные строки имеют метки, получаем сокращенную таблицу покрытий.
Из сокращенной таблицы покрытий тем или иным способом выбираются простые импликанты, дополняющие выделенное множество экстремалей до тупиковых покрытий. Метод Квайна не формализует этот шаг в виде какой-либо процедуры. На множестве всех тупиковых покрытий определяется минимальные покрытия, которых может быть несколько.
Алгебраический метод получения минимального покрытия (алгоритм Петрика)Выбор минимального покрытия на заключительном этапе формализуется с помощью алгебраического метода, предложенного Петриком. Исходная форма для алгоритма – таблица покрытий. Простые импликанты обозначаются символами, например, буквами латинского алфавита. В каждом столбце таблицы записывается дизъюнкция простых импликант, покрывающих соответствующий 0-куб. Покрытию функции соответствует конъюнкция всех записанных дизъюнкций векторов. Упрощая полученное выражение с помощью тождеств булевой алгебры, получаем некоторую ДНФ, каждый член которой соответствует некоторому тупиковому покрытию. Выбирая те из них, которые содержат минимальное количество букв, находим минимальные покрытия.
Алгебраические преобразования упрощаются, если исходить из сокращенной таблицы покрытий, получаемой после выделения экстремалей. Тогда результатом таких преобразований являются множества простых импликант, дополняющих совокупность экстремалей до тупиковых покрытий. Минимальное из этих дополнений совместно с ядром образует минимальное покрытие булевой функции.
Метод Квайна-МакКласки
Недостатком метода Квайна является большое число сравнений, проводимое между импликантами каждого из кубов КS. Метод Квайна-МакКласки является модификацией метода Квайна, позволяющей уменьшить число сравнений. Для этого каждое множество КS разбивается на классы, в каждом из которых содержатся S-кубы с одинаковым числом единиц. Классы упорядочиваются, например, по возрастанию числа единиц. Так как, склеиваться могут только такие два S-куба, число единиц в которых отличается на одну единицу, то достаточно ограничиться по парным сравнением S-кубов некоторого класса с S-кубами соседнего класса. В остальном модификация работает, как и метод Квайна.
Найдем минимальную
K0= |
Х1 |
Х2 |
Х3 |
Х4 |
Х5 |
f |
0 |
0 |
0 |
0 |
0 |
0 |
X |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
4 |
0 |
0 |
1 |
0 |
0 |
1 |
5 |
0 |
0 |
1 |
0 |
1 |
1 |
6 |
0 |
0 |
1 |
1 |
0 |
1 |
7 |
0 |
0 |
1 |
1 |
1 |
X |
8 |
0 |
1 |
0 |
0 |
0 |
1 |
10 |
0 |
1 |
0 |
1 |
0 |
1 |
12 |
0 |
1 |
1 |
0 |
0 |
1 |
14 |
0 |
1 |
1 |
1 |
0 |
X |
15 |
0 |
1 |
1 |
1 |
1 |
X |
16 |
1 |
0 |
0 |
0 |
0 |
X |
17 |
1 |
0 |
0 |
0 |
1 |
X |
18 |
1 |
0 |
0 |
1 |
0 |
1 |
19 |
1 |
0 |
0 |
1 |
1 |
1 |
20 |
1 |
0 |
1 |
0 |
0 |
1 |
21 |
1 |
0 |
1 |
0 |
1 |
1 |
23 |
1 |
0 |
1 |
1 |
1 |
1 |
24 |
1 |
1 |
0 |
0 |
0 |
1 |
28 |
1 |
1 |
1 |
0 |
0 |
X |
29 |
1 |
1 |
1 |
0 |
1 |
X |
30 |
1 |
1 |
1 |
1 |
0 |
X |
31 |
1 |
1 |
1 |
1 |
1 |
X |
Находим сокращенную ДНФ.
K'0= |
K'1= |
K'2= |
K'3= |
K'4= |
Æ | ||||
~ |
00000 |
0000x |
00x0x |
x0x0x |
|||||
00001 |
00x00 |
x000x |
xxx00 |
||||||
00100 |
0x000 |
0xx00 |
|||||||
01000 |
x0000 |
x0x00 |
|||||||
~ |
10000 |
00x01 |
xx000 |
||||||
00101 |
x0001 |
x0x01 |
|||||||
00110 |
001x0 |
10x0x |
|||||||
01010 |
0x100 |
001xx |
|||||||
01100 |
x0100 |
0x1x0 |
|||||||
~ |
10001 |
010x0 |
xx100 |
||||||
10010 |
01x00 |
x010x |
|||||||
10100 |
x1000 |
01xx0 |
|||||||
11000 |
1000x |
100xx |
|||||||
~ |
00111 |
100x0 |
1xx00 |
||||||
~ |
01110 |
10x00 |
x01x1 |
||||||
10011 |
1x000 |
0x11x |
|||||||
10101 |
001x1 |
x11x0 |
|||||||
~ |
11100 |
x0101 |
10xx1 |
||||||
~ |
01111 |
0x110 |
1x10x |
||||||
10111 |
0011x |
xx111 |
|||||||
~ |
11101 |
01x10 |
x111x |
||||||
~ |
11110 |
011x0 |
1x1x1 |
||||||
~ |
11111 |
100x1 |
111xx |
||||||
10x01 |
|||||||||
1001x |
|||||||||
1010x |
|||||||||
1x100 |
|||||||||
11x00 |
|||||||||
0x111 |
|||||||||
x0111 |
|||||||||
0111x |
|||||||||
x1110 |
|||||||||
10x11 |
|||||||||
1x101 |
|||||||||
1110x |
|||||||||
111x0 |
|||||||||
x1111 |
|||||||||
1x111 |
|||||||||
111x1 |
|||||||||
1111x |
Строим таблицу покрытия (см. таблица 3.) и определяем ядро булевой функции.
00001 |
00100 |
01000 |
00101 |
00110 |
01010 |
01100 |
10010 |
10100 |
11000 |
10011 |
10101 |
10111 |
||
x0x0x |
~ |
~ |
~ |
~ |
~ |
A | ||||||||
xxx00 |
~ |
~ |
~ |
~ |
~ |
B | ||||||||
001xx |
~ |
~ |
~ |
C | ||||||||||
0x1x0 |
~ |
~ |
~ |
D | ||||||||||
01xx0 |
~ |
~ |
~ |
E | ||||||||||
100xx |
~ |
~ |
F | |||||||||||
x01x1 |
~ |
~ |
~ |
G | ||||||||||
0x11x |
~ |
H | ||||||||||||
x11x0 |
~ |
I | ||||||||||||
10xx1 |
~ |
~ |
~ |
J | ||||||||||
1x10x |
~ |
~ |
K | |||||||||||
xx111 |
~ |
L | ||||||||||||
x111x |
M | |||||||||||||
1x1x1 |
~ |
~ |
N | |||||||||||
111xx |
O | |||||||||||||
CDH |
E |
F |
FJ |
GJLN |
Строим сокращенную таблицу покрытия (см. таблица 4)
00110 |
01010 |
10010 |
10011 |
10111 |
||
001xx |
~ |
C | ||||
0x1x0 |
~ |
D | ||||
01xx0 |
~ |
E | ||||
100xx |
~ |
~ |
F | |||
x01x1 |
~ |
G | ||||
0x11x |
~ |
H | ||||
10xx1 |
~ |
~ |
J | |||
xx111 |
~ |
L | ||||
1x1x1 |
~ |
N | ||||
CDH |
E |
F |
FJ |
GJLN |
Существует две экстремали – х0х0х и ххх00. Из сокращенной таблицы покрытий, включающей 6, 7, 9, 12, 14 столбцы и 3-8, 10, 12, 14 строки, следует:
(CÚDÚH) (GÚJÚLÚN)(FÚJ)ÙFÙE = (CGÚCJÚCLÚCNÚDGÚDJÚDLÚDNÚHGÚHJ
Таким образом, существует двенадцать тупиковых покрытий:
ТДНФ1 |
= |
x0x0x |
ТДНФ2 |
= |
x0x0x |
ТДНФ3 |
= |
x0x0x |
ТДНФ4 |
= |
x0x0x | |||
xxx00 |
xxx00 |
xxx00 |
xxx00 | |||||||||||
01xx0 |
01xx0 |
01xx0 |
01xx0 | |||||||||||
100xx |
100xx |
100xx |
100xx | |||||||||||
001xx |
001xx |
001xx |
001xx | |||||||||||
x01x1 |
10xx1 |
xx111 |
1x1x1 | |||||||||||
ТДНФ5 |
= |
x0x0x |
ТДНФ6 |
= |
x0x0x |
ТДНФ7 |
= |
x0x0x |
ТДНФ8 |
= |
x0x0x | |||
xxx00 |
xxx00 |
xxx00 |
xxx00 | |||||||||||
01xx0 |
01xx0 |
01xx0 |
01xx0 | |||||||||||
100xx |
100xx |
100xx |
100xx | |||||||||||
0x1x0 |
0x1x0 |
0x1x0 |
0x1x0 | |||||||||||
x01x1 |
10xx1 |
xx111 |
1x1x1 | |||||||||||
ТДНФ9 |
= |
x0x0x |
ТДНФ10 |
= |
x0x0x |
ТДНФ11 |
= |
x0x0x |
ТДНФ12 |
= |
x0x0x | |||
xxx00 |
xxx00 |
xxx00 |
xxx00 | |||||||||||
01xx0 |
01xx0 |
01xx0 |
01xx0 | |||||||||||
100xx |
100xx |
100xx |
100xx | |||||||||||
0x11x |
0x11x |
0x11x |
0x11x | |||||||||||
x01x1 |
10xx1 |
xx111 |
1x1x1 |