Есть ли какие-нибудь хорошие упрощители логических выражений? [закрыто]

110

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

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

((A ИЛИ B) И (! B И C) ИЛИ C)

И дайте мне упрощенный вариант выражения, если таковой имеется.

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

Спасибо.

мохаррас
источник
1
WolframAlpha также поступает на C . Никаких лишних ворот ...
Axel Kemper
1
Есть хороший онлайн-инструмент - tma.main.jp/logic/index_en.html
Роман Хок,
Другой инструмент - boolean-algebra.com - покажет, как решить эту проблему. Например, ваш может быть решен только с помощью закона поглощения A + AB = A. Он не слишком продвинутый, поэтому, если вам нужно что-то другое, кроме минимальной формы, вам лучше использовать другой сайт.
Джон Смит

Ответы:

93

Вы можете попробовать Wolfram Alpha, как в этом примере, на основе ваших данных:

http://www.wolframalpha.com/input/?i=((A%20OR%20B)%20AND%20(NOT%20B%20AND%20C)%20OR%20C)&t=crmtb01&f=rc

внутренняя ошибка сервера 500
источник
3
Веб-сайт кажется не очень подходящим для упрощения логических формул, когда они становятся немного сложнее. Попробуйте это: (((НЕ C) И (НЕ A)) ИЛИ ((НЕ B) И (НЕ C) И (НЕ D) И (НЕ A)) ИЛИ ((НЕ B) И (НЕ C) И D AND A) OR (B AND C И (НЕ D) И (НЕ A)) OR (B, C, D и A))
Альберт Хендрикс,
1
На самом деле. Странный. Он даже не подходит для упрощенной версии NOT C AND NOT A OR NOT B AND NOT C AND NOT D AND NOT A OR NOT B AND NOT C AND D AND A OR B AND C AND NOT D AND NOT A OR B AND C AND D AND A.
500 - Внутренняя ошибка сервера
2
Обратите внимание , что если вы хотите таблицу истинности, которая не всегда outputed для некоторых выражений, а затем запустить запрос со словами «таблица истинности» , а затем выражение
белги
16

Try Logic Friday 1It включает инструменты Калифорнийского университета (Espresso и misII) и позволяет использовать их с графическим интерфейсом пользователя. При желании вы можете вводить логические уравнения и таблицы истинности. Он также имеет графическую схему ввода и вывода.

Минимизация может быть двухуровневой или многоуровневой. Двухуровневая форма дает минимальную сумму продуктов. Многоуровневая форма создает схему, состоящую из логических вентилей. Типы ворот могут быть ограничены пользователем.

Ваше выражение лица упрощается до C.

Аксель Кемпер
источник
2
Это действительно полезно для быстрого онлайн-инструмента: tma.main.jp/logic/index_en.html
Ленар Хойт,
6

Я обнаружил, что The Boolean Expression Reducer намного проще в использовании, чем Logic Friday. Кроме того, он не требует установки и является мультиплатформенным (Java).

Также в Logic Friday выражение A | Bпросто возвращает 3 записи в таблице истинности; Я ожидал 4.

Павел Дубель
источник
3
Активируйте опцию «Таблица истинности / Показать все строки» в Logic Friday 1. В противном случае вы получите только все строки с выходным значением 1.
Аксель Кемпер
1
Внутри bexpred использует простые алгоритмы для объединения минтермов. Это может быть полезно для небольших выражений, но определенно не является современным.
Axel Kemper
2
Для ввода «A * B * (! A * B +! A *! B)» этот jar возвращает SOP False, но POS True. Не совсем надежный сценарий ...
Evil
ссылка битая, у кого есть рабочая ссылка?
HJLebbink