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

Лабораторная работа 1. Минимизация булевых функций

Лабораторное задание: реализовать Алгоритм Блэка-Порецкого построения сокращенного покрытия области единичных значений функции алгебры логики по имеющемуся произвольному покрытию:

  1. Поместить грани исходного покрытия в список L.

  2. Для граней i , i=1,2,… списка L

а) если грань i поглощается хотя бы одной из граней списка, исключить ее из списка и повторить исполнение п.2 алгоритма;

б) исключить из списка грани j, поглощаемые данной гранью (то есть такие, что ij =j);

в) если для некоторой грани j , j>i, списка грань =i*j, получаемая сопряжением по некоторой компоненте с гранью i не пуста и не поглощается ни одной гранью списка, поместить ее в начало списка текущего покрытия и повторить исполнение п.2 алгоритма.

Указание. Программа должна работать с покрытиями подмножеств n-мерного куба, , состоящими из произвольного числа граней, например,

10xx01001xxxx101

0x11x1xx1x00xx01

xxxxxxxxxxxxx01x

Рекомендации

Реализовать и использовать следующие функции:

  1. сопряжение двух граней (применяется к двум граням 1 и 2 и возвращает их сопряжение =1*2, если имеется точно одна позиция, в которой компоненты граней 1 и 2 имеют разные значения 0 и 1 (иначе сопряжение этих двух граней не существует); в этой позиции грань  имеет значение x, в остальных позициях она имеет значение x, если в этих позициях значение x имеют обе грани 1 и 2 , или она имеет значение 0 или 1, если такое значение имеется в соответствующей позиции хотя бы одной из граней 1 и 2). Например, если 1 =(x01x), a 2 =(1xxx), то =1*2=(101x).

Примечание. Удобно представлять компоненты граней двумя битами: 0  10;1 01; x11. Тогда в позиции, где компоненты граней 1 и 2 имеют разные значения 0 и 1 компонента грани  есть поразрядная дизъюнкция этих компонент: 11=0110, а остальные компоненты образуются как поразрядные конъюнкции:

10&10=10; 10&11=10; 11&10=10;

01&01=01; 01&11=01; 11&01=01;

11&11=11.

В случае 01&10=00 сопряжение не существует.

  1. свойство “первая грань 1 поглощает вторую 2 (возвращает 1 в этом случае, то есть когда позициям со значением 0 или 1 первой грани соответствуют позиции с такими же значениями второй грани, 0 в противном случае): 1 2= 1, где & покомпонетная конъюнкция. Например, грань (x10x) поглощает грань (x100): 11 01 10 11& 11 01 10 11= 11 01 10 11.

  2. исключение грани из списка;

  3. включение грани в начало списка.

3

Соседние файлы в папке Лаб.работы