Задать вопрос
@qooke

Как правильно минимизировать булеву функцию?

С помощью карты карно я минимизировал функцию.

Введённая функция: A∧(B∨C∨D)∨B∧(C∨D)∨C∧D
Вектор функции: 0001011101111111

И получил результат:

Минимизированная ДНФ:
AB∨AC∨AD∨BC∨BD∨CD

Но в этом варианте функции 11 операций вместо моих 8!

Вопрос - почему именно второй вариант называется "минимизированным" , и какая функция будет быстрее выполнятся?
  • Вопрос задан
  • 280 просмотров
Подписаться 1 Средний 12 комментариев
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Исходная функция у вас не в одной из нормальных форм. Минимальная форма же определена именно для ДНФ и КНФ.
ДНФ - значит, что выражение записано в виде множественной дизъюнкции, каждый член которой - конъюнкция переменных или их инверсий.
МДНФ - это такая запись ДНФ, в которой количество членов в дизъюнкции минимально.
Для КНФ всё аналогично.
Об минимальном количестве общего числа операций тут речи не идёт.
А для программы надо составлять выражение таким образом, чтобы при вычислении получать результат как можно раньше. Например, если у вас A = false, то (B∨C∨D) вообще не будет вычисляться.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы