КОМПЬЮТЕРНАЯ ПОМОЩЬ ПРЕПОДАВАТЕЛЮ ДИСКРЕТНОЙ МАТЕМАТИКИ В ПОИСКЕ БУЛЕВЫХ ФУНКЦИЙ, ИНТЕРЕСНЫХ ДЛЯ МИНИМИЗАЦИИ Быкова С.В., Вараксина А.В. Томский государственный университет e-mail: [email protected] Введение Одной из проблем, возникающих у каждого преподавателя при подготовке к практическим занятиям и контрольным работам, является проблема подбора примеров для решения задач по заданной теме, Конечно, по некоторым предметам имеются неплохие, проверенные временем, задачники, и тогда ситуация несколько упрощается, но, к сожалению, не решается полностью, Именно поэтому каждый преподаватель год от года накапливает особо удачные примеры по различным темам и в конце концов имеет в своем архиве богатый дидактический материал. Проблема подготовки примеров возникает также при создании автоматизированных обучающих систем, точнее, при наполнении их конкретным материалом. Описание системы В данной работе предлагается система программ для IBM PC, автоматизирующая подбор примеров для решения задач по теме: “Минимизация булевых функций”, входящей в курс: “Дискретная математика” [1], который читается по обязательной программе на факультетах прикладной математики, а также на других факультетах университетов. Предлагаемая нами система программ, которую по назначению можно отнести к типу “электронных задачников” и которую мы назвали системой ПиФ (Поиск Подходящих Примеров Функций, их Показ и Представление Формулами), состоит из трех частей. Первая программа называется “Поиск Функций”. Она генерирует все булевы функции небольшого числа переменных и выбирает из них только те функции, чьи параметры в процессе минимизации удовлетворяют определенным ограничениям. Набор ограничений гарантирует выбор только тех булевых функций, которые, с одной стороны, являются не очень сложными для алгоритма минимизации, выполняемого вручную, а с другой стороны, демонстрируют самые ответственные моменты в изучаемом алгоритме, — именно такие булевы функции мы условно назвали интересными для минимизации. Не вдаваясь в подробности алгоритма минимизации булевых функций (это классический алгоритм Квайна [1]), скажем лишь, что он связан с построением определенных списков, число которых и их длины могут сильно варьироваться, и с обходом дерева поиска решений, число ветвлений в котором также может значительно изменяться от функции к функции. Манипулируя ограничениями (снизу и сверху) на значения этих и некоторых других числовых параметров, подаваемыми на вход программы “Поиск функций”, мы можем настроить программу на выбор только тех булевых функций, которые интересны как для всего процесса минимизации, так и для отдельных его этапов. Следует отметить, что количество булевых функций быстро растет с ростом числа аргументов, но среди них есть функции, равные с точностью до перестановки и инверсии аргументов (и таких функций не мало), поэтому уже на ранних этапах работы программы из всех эквивалентных в этом смысле функций, существенно зависящих от заданного числа переменных, выбирается по одной функции и, если эта функция интересна для минимизации, она отправляется в выходной файл вместе со значениями параметров, полученных при минимизации. Программа “Поиск Функций” работает с внутренним представлением, т.е. практически с номерами булевых функций, заданными в двоичном виде (такой способ задания булевых функций называется векторным), и с двоичными наборами значений аргументов; длины тех и других двоичных векторов не превышают стандартной длины слов памяти (при числе аргументов, не превышающем пяти), и это обеспечивает высокое быстродействие программы. Вторая программа системы ПиФ, названная нами “Показ Функций”, позволяет выводить на экран (а при желании и на печатать) процесс минимизации любой из выбранных булевых функций, но конечно, не в векторной форме, а в том виде, в котором студенты вручную решают задачу минимизации на занятиях (для ручного решения используется очень наглядное представление функций — матричное, известное в литературе под разными названиями: карты Карно или матрицы Грея). Дерево перебора вариантов при решении задачи минимизации изображается программой “Показ Функций” непосредственно в виде рисунка с надписями, делающими процесс решения более наглядным. Использование предлагаемой программы существенно ускоряет подготовку преподавателя к практическим занятиям и к контрольным работам по минимизации, облегчает их проведение и повышает качество обучения, т.к. позволяет преподавателю проверять даже индивидуальные контрольные задания здесь же, на занятиях (известно, что такой подход положительно влияет на обучение). Третья программа системы ПиФ, названная нами “Построение Формул”, предназначена для поиска несложных формул, представляющих булевы функции. Формула являются самым распространенным и привычным способом задания функций, в том числе и булевых. И, несмотря на то, что сам алгоритм минимизации, выполняемый вручную, ориентирован не на формульное, а на матричное представление функций, постановку задачи можно расширить, дополнив ее преобразованием заданной формулы в матрицу. Предлагаемая программа “Построение Формул” может также найти применение при подготовке занятий и по другим темам, не связанным с минимизацией. В общем случае поиск несложных формул для представления булевых функций — это довольно трудная задача, известная в теории синтеза дискретных устройств, как задача “синтеза схем в произвольном базисе”, но в случае небольшого числа аргументов и при значительных ограничениях на базис (мы рассматриваем в качестве базиса лишь булевы функции двух аргументов и называем их операциями), а также при ограничениях на длину формулы, принятыми в нашем случае, задача существенно упрощается и поэтому может быть решена перебором декомпозиций булевой функции по заданному базису. Программа “Построение Формул” перебирает всевозможные декомпозиции заданной булевой функции (напомним, что она задана векторно) по очередной операции на две булевы функции и для каждой из них либо пытается отыскать несложную формулу в специально подготовленной для этого библиотеке, либо выполняет дальнейшую декомпозицию функции. При этом организуется дерево перебора вариантов декомпозиций. Если длина получаемой формулы превышает наперед заданное пороговое значение, то изменяется операция, по которой выполнялось последнее разложение и декомпозиция повторяется, Если же декомпозиция прошла успешно, т.е. нашлась несложная формула для заданной функции, то формула запоминается в выходном файле, но перебор декомпозиций продолжается; таким образом, результатом работы программы оказывается множество формул, представляющих булеву функцию. Заключение Первая версия предлагаемой системы “ПиФ” прошла опытную эксплуатацию: она использовалась при подготовке занятий по минимизации булевых функций одним из авторов системы на факультете прикладной математики и кибернетики и на радиофизическом факультетах Томского госуниверситета. Литература 1. Яблонский С.В. Введение в дискретную математику. М.: ”Наука”, 1986. - 272 с.