2009-03-20 10 views
7

Я вполне уверен, что я помню, как я делал что-то подобное на одном из курсов моего уровня в колледже, и что для этого существует какая-то формула, но мой ум не дает мне этого.Как уменьшить логическое утверждение?

Учитывая заявление: (а или б OR d) и (или С)

Я уверен, что это может быть сведено к: (а или б OR d ИЛИ с)

Но я не помню, как бы я это доказывал.

Возможно, это была серия логических таблиц?

ответ

10

Вы не можете уменьшить "(a ИЛИ b ИЛИ d) И (a ИЛИ c)" to "(a ИЛИ b ИЛИ d ИЛИ c)", поскольку первое не удовлетворено с "c = true, a, b, d = false ", тогда как последнее. Таким образом, вы не можете доказать правильность сокращения либо:

В общем, существует множество способов уменьшить булевы формулы по размеру, и это также вопрос того, что вы хотите оптимизировать (общий размер среднего значения условия оценки?). Карты Карно работают только для небольшого числа переменных. Уменьшение больших булевых формул на более мелкие - это расширенная тема, которая является ключом, например, автоматическая логическая схема.

+0

приятно! +1 – Learning

+0

так их программы доступны для этого? – Dave

+0

Оформить заказ, например. http://babbage.cs.qc.edu/courses/Minimize/ –

3

Карты Карно, ключ должен «нарисовать» все возможные входы и указать их выходы. Затем вы можете начать отфильтровывать входы, которые не влияют на выход, тем самым уменьшая карту. Как только он будет оптимизирован, вы сможете получить от него свою логику.

4

Карта Карно является вашим другом здесь:

http://en.wikipedia.org/wiki/Karnaugh_map

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

2

(а или б OR d) и (или С)

Это значит, когда это верно, все это правда!

=> а или {(б или г) и (с)}

=> а ИЛИ (В и С) или (г и С)

я считаю, что результат (а или б ИЛИ d ИЛИ c) неверно, но дайте мне руку, когда это неправильно.

0

Да, вы можете это доказать. Вы не можете уменьшить его до (a OR b OR d OR c)

Посмотрите на 3-ю строку ниже. Ваше сокращение не даст правильного ответа.

Просто запустить его через:

A B C D
0 0 0 0 = 0
0 0 0 1 = 0
0 0 1 0 0 =
.
.
.
1 0 0 0 = 1
1 0 0 1 = 1

До сих пор я получил (А ИЛИ (???)) :(

1

а или {(б ИЛИ д) и с}

Рассуждения:. Если «а», то утверждение верно еще, вам нужно б или d (для удовлетворения первой части заявления) и с (удовлетворяет второй половины для случаев, когда! a

1

Использование Karnaugh maps:

Это является ИЛИ б OR d:

 
\ab 
cd\ 00 01 11 10 
---+-----------+ 
00 | | X| X| X| 
01 | X| X| X| X| 
11 | X| X| X| X| 
10 | | X| X| X| 
    +-----------+ 

Это OR с:

 
\ab 
cd\ 00 01 11 10 
---+-----------+ 
00 | | | X| X| 
01 | | | X| X| 
11 | X| X| X| X| 
10 | X| X| X| X| 
    +-----------+ 

Пересекающиеся их, мы получаем:

 
\ab 
cd\ 00 01 11 10 
---+-----------+ 
00 | | | X| X| 
01 | | | X| X| 
11 | X| X| X| X| 
10 | | X| X| X| 
    +-----------+ 

Очевидно, что это ИЛИ (что-то), где (что-то) есть:

 
    00 01 
11 | X| X| 
10 | | X|

Поскольку (что-то) не является прямоугольником, для этого требуются два выражения, которые могут быть как AND, так и OR'ed вместе, в зависимости от того, как мы хотим приближаться к нему. Мы будем использовать OR в этом примере, поскольку он дает более простое выражение.

В этом случае мы можем сгруппировать два X друг с другом с еще двумя, чтобы заполнить всю строку cd, поэтому cd может быть одним из выражений. Мы также можем сгруппировать эти два друг на друга с двумя вправо, чтобы сформировать квадрат. Этот квадрат представляет собой выражение bc, так как a и d изменяются внутри квадрата.

Таким образом, окончательное выражение является А или ((С и D) ИЛИ (б, г)) или а + CD + шд. Гораздо приятнее, не так ли?

1

SOP минимальная форма:

y = a | b&c | c&d; 

POS имеют одинаковую стоимость (количество логических элементов для реализации логической схемы):

y = (a|c)&(a|b|d);