Минимизация частично определённых булевых функций

Форум пользователей пакета Mathematica

Модератор: Admin

_Alexander_
Сообщения: 3
Зарегистрирован: Ср ноя 03, 2010 12:10 am

Минимизация частично определённых булевых функций

Сообщение _Alexander_ » Ср ноя 03, 2010 12:38 am

Доброго времени суток!

Столкнулся с проблемой при создании частично определённой булевой функции с использованием стандартной функции BooleanFunction.

Задаю следующую последовательность команд:

Код: Выделить всё

t:= {1, _, _, 1, 0, _, _, 0, 0, _, _, 0, _, _, _, 1};
Boole[BooleanTable[BooleanFunction[t]]]


В результате получаю:

Код: Выделить всё

{1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}
.

Этот результат приводит к неминимальной форме:

Код: Выделить всё

BooleanMinimize[BooleanFunction[t]]
(#1 && #2) || (! #1 && ! #2 && ! #3) &


Однако, если задать вместо одной неопределённости единицу, то получается правильный ответ:

Код: Выделить всё

t := {1, _, _, 1, 0, _, _, 0, 0, _, _, 0, 1, _, _, 1};
Boole[BooleanTable[BooleanFunction[t]]]

{1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1}

BooleanMinimize[BooleanFunction[t]]
(#1 && #2) || (! #1 && ! #2) &


Это причуды "лицензионной" версии или "задумка" разработчиков?