Как уменьшить логическое утверждение? - PullRequest
7 голосов
/ 20 марта 2009

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

Дано утверждение: (ИЛИ b ИЛИ d) И (ИЛИ c)

Я почти уверен, что это можно уменьшить до: (ИЛИ b ИЛИ ИЛИ c)

Но я не могу вспомнить, как мне это доказать.

Может быть, это была серия логических таблиц?

Ответы [ 9 ]

10 голосов
/ 20 марта 2009

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

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

8 голосов
/ 20 марта 2009

Карты Карно ? Сокращение логического выражения?

4 голосов
/ 20 марта 2009

Карта Карно - ваш друг здесь:

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

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

3 голосов
/ 20 марта 2009

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

2 голосов
/ 20 марта 2009

(ИЛИ b ИЛИ d) И (ИЛИ c)

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

=> a ИЛИ {(b ИЛИ d) И (с)}

=> a ИЛИ (b И C) ИЛИ (d и С)

Я думаю, что результат (или ИЛИ ИЛИ ИЛИ ИЛИ) неверен, но помогите мне, если он неправильный

1 голос
/ 07 мая 2012

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

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

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

y = (a|c)&(a|b|d);
1 голос
/ 20 марта 2009

Использование карт Карно :

Это ИЛИ b ИЛИ 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|
   +-----------+

Это ИЛИ c:

 \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, в зависимости от того, как мы хотим приблизиться к нему. Мы будем использовать ИЛИ в этом примере, поскольку оно дает более простое выражение.

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

Таким образом, окончательное выражение будет ИЛИ ((c И d) ИЛИ (b И d)) или a + cd + bd . Гораздо приятнее, не правда ли?

1 голос
/ 20 марта 2009

a или {(b ИЛИ d) И c}

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

0 голосов
/ 20 марта 2009

Да, вы можете доказать это. Вы не можете уменьшить его до (ИЛИ b ИЛИ d ИЛИ 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

Пока у меня есть (ИЛИ (???)): (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...