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

Учебное пособие 800647

.pdf
Скачиваний:
4
Добавлен:
01.05.2022
Размер:
12.84 Mб
Скачать

ФГБОУ ВО «Воронежский государственный технический университет»

Кафедра автоматизированных и вычислительных систем

АЛГОРИТМИЗАЦИЯ ПАРАЛЛЕЛЬНОГО ПОЛИНОМИАЛЬНОГО ПРЕОБРАЗОВАНИЯ БУЛЕВЫХ ФУНКЦИЙ

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

к выполнению лабораторных работ № 1-6 по дисциплине «Вычислительные системы» по направлению 09.04.01 «Информатика и вычислительная техника» (магистерская программа

«Распределенные автоматизированные системы»)

Воронеж 2017

Составители: канд. техн. наук Ю.С. Акинина, канд. техн. наук С.В. Тюрин

УДК 519.713(075) ББК 32.97 – 04

Алгоритмизация параллельного полиномиального преобразования булевых функций: методические указания к выполнению лабораторных работ № 1-6 по дисциплине «Вычислительные системы» по направлению 09.04.01 «Информатика и вычислительная техника» / ФГБОУ ВО «Воронежский государственный технический университет»; сост. Ю.С. Акинина, С.В. Тюрин. Воронеж, 2017. 50 с.

Методические указания содержат краткие теоретические сведения и задания для изучения методов организации и планирования решения задач и обмена данными при параллельных вычислениях.

Предназначены для студентов второго курса магистра-

туры.

Методические указания подготовлены в электронном виде и содержатся в файле Выч. системы_маг.pdf.

Табл. 22. Ил. 4. Библиогр.: 17 назв.

Рецензент канд. техн. наук, доц. А.М. Нужный

Ответственный за выпуск зав. кафедрой д-р техн. наук, проф. С.Л. Подвальный

Издается по решению учебно-методического совета Воронежского государственного технического университета

ФГБОУ ВО «Воронежский государственный технический университет», 2017

Лабораторная работа №1

ПРОСТЕЙШИЕ АНАЛИТИЧЕСКИЕ МЕТОДЫ ПРЕОБРАЗОВАНИЯ БУЛЕВЫХ ФУНКЦИЙ В ПОЛИНОМИАЛЬНУЮ ФОРМУ

ЦЕЛЬ: изучение простейших аналитических методов преобразования булевых функций в полиномиальную нормальную форму и получение теоретических и практических навыков по разработке и освоению вычислительных систем (ВС) на основе параллельных вычислений.

Вычислительные машины за свою полувековую историю прошли стремительный и впечатляющий путь, отмеченный частыми сменами поколений ЭВМ [1]. В этом процессе развития можно выявить целый ряд закономерностей:

весь период развития средств электронной вычислительной техники отмечен доминирующей ролью классической структуры ЭВМ (структуры фон Неймана), основанной на методах последовательных вычислений;

основным направлением совершенствования ЭВМ является неуклонный рост производительности (быстродействия) и интеллектуальности вычислительных средств;

совершенствование ЭВМ осуществлялось в комплексе (элементно-конструкторская база, структурноаппаратные решения, системно-программный и пользовательский, алгоритмический уровни);

в настоящее время наметился кризис классической структуры ЭВМ, связанный с исчерпанием всех основных идей последовательного счета.

Возможности микроэлектроники также не безграничны, давление пределов ощутимо и здесь.

Дальнейшее поступательное развитие вычислительной техники напрямую связано с переходом к параллельным вычислениям, с идеями построения многопроцессорных систем и

сетей, объединяющих большое количество отдельных процессоров и (или) ЭВМ. Здесь появляются огромные возможности совершенствования средств вычислительной техники. Но следует отметить, что при несомненных практических достижениях в области параллельных вычислений до настоящего времени отсутствует их единая теоретическая база.

Термин вычислительная система появился в начале — середине 60-х гг. при создании ЭВМ третьего поколения. Это время знаменовалось переходом на новую элементную базу — интегральные микросхемы. Следствием этого явилось появление новых технических решений: разделение процессов обработки информации и ее ввода-вывода, множественный доступ и коллективное использование вычислительных ресурсов в пространстве и во времени. Появились сложные режимы работы ЭВМ — многопользовательская и многопрограммная обработка.

Отражая эти новшества, и появился термин «вычислительная система». Он не имеет единого толкования в литературе, его иногда даже используют применительно к однопроцессорным ЭВМ. Однако общим здесь является подчеркивание возможности построения параллельных ветвей в вычислениях, что не предусматривалось классической структурой ЭВМ.

Под вычислительной системой (ВС) будем понимать совокупность взаимосвязанных и взаимодействующих процессоров или ЭВМ, периферийного оборудования и программного обеспечения, предназначенную для сбора, хранения, обработки и распределения информации. Отличительной особенностью ВС по отношению к ЭВМ является наличие в них нескольких вычислителей, реализующих параллельную обработку. Создание ВС преследует следующие основные цели: повышение производительности системы за счет ускорения процессов обработки данных, повышение надежности и достоверности вычислений, предоставление пользователям дополнительных сервисных услуг и т.д.

2

Существует класс дискретных задач, который в теории алгоритмов называется классом труднорешаемых или NPтрудных задач. Для NP-трудных задач характерно то, что время, требуемое для их решения, растет экспоненциально с ростом их размерности. Нахождение полиномиальной нормальной формы (ПНФ) булевой функции (БФ) относят к NPтрудным задачам, в связи с чем вычислительная сложность

алгоритмов их решения имеет оценку O(2n ), где n – количе-

ство аргументов преобразуемой булевой функции. Оценка

O(2n ) отражает тот факт, что при решении NP-трудных задач

обязательно реализуется перебор всех возможных вариантов решений (табл. 1) и отбор действительных решений задачи.

Таблица 1

n

O(2n )

n=1

2

n=2

4

n=3

8

 

n=10

1024

 

n=15

32768

Оценка вычислительной сложности характеризует также весь класс алгоритмов полиномиального преобразования БФ, подчеркивая то, что любой алгоритм из данного класса не может быть реализован однопроцессорной ЭВМ быстрее чем за 2n шагов алгоритма, при этом потребуется более чем 2n бит (слов) памяти. Сложность данной задачи наглядно демонстрирует тот факт, что, для того, чтобы расширить функциональные возможности алгоритма решения задачи преобразования

3

БФ на одну переменную, быстродействие однопроцессорной ЭВМ должно быть увеличено в 10 раз.

Если же решать задачу нахождения минимизированных полиномов Рида-Маллера (RM) булевой функции, то у этой задачи вычислительная сложность алгоритма имеет оценку порядка О(22n).

При решении NP-трудных задач на однопроцессорной ЭВМ общее время решения задачи существенно зависит и от способа представления исходной информации в памяти машины.

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

Идея распараллеливания вычислений основана на том, что большинство задач может быть разделено на набор меньших задач, которые могут быть решены одновременно. Обычно параллельные вычисления требуют координации действий.

Основная идея подхода, основанного на параллелизме данных, заключается в том, что одна операция выполняется сразу над всеми элементами массива данных. Различные фрагменты такого массива обрабатываются на векторном процессоре или на разных процессорах параллельной машины. Распределением данных между процессорами занимается программа. Векторизация или распараллеливание в этом случае чаще всего выполняется уже на этапе компиляции — перевода исходного текста программы в машинные команды. Роль программиста в этом случае обычно сводится к заданию настроек векторной или параллельной оптимизации компилятору, директив параллельной компиляции, использованию специализированных языков для параллельных вычислений.

Стиль программирования, основанный на параллелизме задач, подразумевает, что вычислительная задача разбива-

4

ется на несколько относительно самостоятельных подзадач и каждый процессор загружается своей собственной подзадачей.

Рассмотрим возможность использования данного подхода для решения задачи преобразования булевых функций в ПНФ.

Вспомним основные аксиомы алгебры логики:

x 0,если x 1

 

(1)

x 1,

если x 0

Аксиома (1) утверждает, что значения логических переменных и функций могут принимать всего два взаимоисключающих значения. Данную аксиому иногда называют "закон исключенного третьего". Следует помнить, что "1" и "0" – это не количественные характеристики, а качественные. Однако принимается, что 1 › 0.

0 0 0

0 1 1

c a b max(a,b) (2)

1 0 1

1 1 1

Аксиома (2) определяет операцию дизъюнкции (логического сложения). Аксиома справедлива для любого числа слагаемых.

0*0 0

0*1 0

c a*b min(a,b) (3)1*0 0

1*1 1

Аксиома (3) определяет операцию конъюнкции (логического умножения). Аксиома справедлива для любого числа сомножителей.

5

0, при a 1;

c a ` (4)1, при a 0.

Аксиома (4) определяет операцию логического отрицания (инверсию).

Теоремы алгебры логики

x 0 x

(5)

x*0 0

(10)

x 1 1

(6)

x*1 x

(11)

x x x

(7)

x*x x

(12)

x

x

1

(8)

x*

x

0

(13)

 

x

(9)

 

 

 

 

 

(14)

 

 

 

x

x

x

Теоремы (5-14) легко доказываются с помощью аксиом (1-4) и метода подстановки возможных значений аргументов x. Вспомним основные определения.

Логическая (двоичная) переменная характеризует про-

стое высказывание, которое содержит одну законченную мысль. Она обозначается буквой, например, х и может принимать значения 0 или 1.

Логическая функция — это сложное высказывание, состоящее из нескольких простых, связанных между собой соединительными союзами. Она записывается аналитически в виде Y = f(x1,x2, ..., xn), где хiдвоичная переменная,

хi { 0,1};Y {0,1 }.

Входной набор — это определенная комбинация значений двоичных переменных в логической функции. Максимальное число входных наборов определяется выражением m = 2n, где n число переменных. Максимальное чис-

ло логических функций n переменных определяется выражением N = 2 m = 22ⁿ.

Совершенной дизъюнктивной нормальной формой ло-

гической (СДНФ) функции f (x1,..., xn ) называется дизъ-

юнкция элементарных конъюнкций максимального ранга (n),

6

соответствующих наборам всех входных переменных, на которых значение логической функции равно 1.

Кроме широко используемых дизъюнктивных нормальных форм (ДНФ) булевых функций, все чаще стали использовать их полиномиальные нормальные формы [2, 3] в виде полинома Жегалкина (ПЖ) или поляризованных полиномов Рида – Маллера (ПРМ).

Полиномиальное представление булевых функций в некоторых случаях обеспечивает более экономичную их реализацию на элементах «И» (AND) и элементах «исключающее ИЛИ» (EXOR). В то же время, базис AND/EXOR открывает возможность практической реализации сложных логических структур со свойством тестопригодности [4, 5, 6].

Логическая функция F(x1,…xn), зависящая от n- переменных, называется полиномом Жегалкина, если она представима в виде:

G(x1,...,xn ) ai1...is xi1

...xis

i1,...,is

 

 

n

aij

(15)

a0 ai xi

xi xj ... a1...n x1 ... xn,

i 1

1 i j n

 

где ai1...is 0,1

Полином Жегалкина определяется как многоместная сумма по модулю 2 попарно различных положительных (монотонных) элементарных конъюнкций, число которых для функции n-аргументов равно2n .

Полином Жегалкина можно получить из СДНФ путем последовательных эквивалентных преобразований. Для этого, многоместную дизъюнкцию, связывающую члены СДНФ, можно заменить многоместной суммой по модулю два. После этого остается освободиться от операторов отрицания переменных, для чего используют соотношение a a 1.

7

Известно, что любую булеву функцию можно представить полиномом Жегалкина (полиномом по модулю 2), и это представление с точностью до перестановки слагаемых единственно.

Приведем некоторые наиболее известные способы построения такого полинома [7].

Аналитическое преобразование произвольной формулы алгебры логики

Продемонстрируем данный метод построения полинома Жегалкина на примере, пусть булева функция имеет вид

f (x, y,z) (x y)(y xz).

(16)

Преобразуем логическую формулу (x y)(y xz) .

Метод преобразования произвольной формулы алгебры логики состоит в следующем: сначала строим ДНФ или КНФ БФ, а затем формируем полином Жегалкина, используя известные соотношения

xx 1,

xy x y xy (x 1)(y 1) 1 xy x y .

Тогда

(x y)(y xz) (xy x y)((y 1)xz (y 1) xz)

(xy x y)(yxz xz y 1 xz)

(xy x y)(xyz y 1)

xyxyz xyy xy xxyz xy x yxyz yy y

xyz xy x

Таким образом, полином Жегалкина P(x, y,z) для данной функции имеет вид P(x, y,z) xyz xy x.

8