Я ищу решение булевых выражений для очень большой (но не сложной) алгебры, такой как:
Boolsche Ausdrücke vereinfachen (Аксиома)
Я хотел бы иметь некоторый код (c ++ или java [или библиотеки]), чтобы упростить огромное логическое выражение. Я не нашел что-то. Я просто хочу сделать «простое» преобразование, например:
a && ~a -> 0
a || a && (b || c) -> a
Но намного дольше. И я хочу использовать символику (a, b, c1, d1 ..), а не TRUE, FALSE, 0 или 1 в данный момент.
Заранее спасибо.
Редактировать:
Если я напишу это сам, я мог бы использовать Javaluator и оценить.
Когда у меня есть: (adb+c) && d
Я хотел бы начать с умножения. Есть идеи?
Мой любимый инструмент для таких задач Logic Friday 1
,
Это бесплатно для некоммерческого использования.
Логическая пятница 1 принимает логические выражения в качестве формулы и таблицы истинности. Включает в себя скомпилированные двоичные файлы инструментов Беркли Эспрессо и misII. Последний используется для многоуровневых функций.
Еще один инструмент bc2cnf. Он читает логическое выражение (или набор выражений) как «схему» и переводит его в конъюнктивная нормальная форма (CNF), в основном продукт OR-выражений. bc2cnf применяет некоторые правила упрощения во время этого перевода. Для выражений скромного размера будет возможность преобразовать CNF в дизъюнктивная нормальная форма (DNF) и используйте эспрессо, чтобы получить минимизированную форму.
Других решений пока нет …