Я связываюсь с вами, потому что в настоящее время мне необходимо проанализировать (что можно записать как) логическое выражение, чтобы сказать, какие члены должны быть 1 или нет.
Чтобы прояснить тему, вот пример. У меня есть это уравнение:
equ = ((((SIPROT:1 INTERACT (((((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr) NOT ((COPY (NWELL_drawing OR NWELL_hd)) AND (((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr))) NOT ((COPY (PPLUS_drawing OR PPLUS_hd)) OR (COPY ((NPLUS_drawing OR NPLUS_dm) OR NPLUS_hd))))) INSIDE RHDMY_drawing) INTERACT ((((COPY ((NPLUS_drawing OR NPLUS_dm) OR NPLUS_hd)) AND (((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr)) INTERACT (N(((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr) INTERACT ((COPY (PPLUS_drawing OR PPLUS_hd)) AND (((((ACTIVE_drawing OR ACTIVE_hd) OR ACTIVE_dm) OR PDIFF_drawing) OR NDIFF_drawing) NOT polyact_sign_mkr)))) NOT NLDEMOS_FINAL)) OUTSIDE (COPY GO2_25_drawing))
Это описание уравнения формы, включающее рисунок нескольких других, нарисованных разными «цветами».
Итак, входными данными моего уравнения являются «цвета», например, ACTIVE_drawing
. Моя цель состоит в том, чтобы сказать, имея это уравнение, какие цвета являются обязательными, запрещенными или необязательными, чтобы иметь equ=1
. Вот почему я говорю о таблице истинности.
Уравнение на самом деле не является логическим, но его можно обработать. INTERACT
можно заменить на AND
, COPY
можно удалить и, возможно, потребуются другие операции.
Итак, мой вопрос заключается не в том, чтобы заменить мое уравнение, чтобы иметь «настоящее логическое», а в алгоритме, который нужно реализовать, чтобы правильно проанализировать логическое выражение и получить соответствующую таблицу истинности.
У вас есть какие-нибудь намеки на это? Я работаю в Perl над созданием уравнения, поэтому я хотел бы сохранить его, но если вы знаете другой инструмент, который мог бы использовать мой ввод для его обработки, почему бы и нет.
((X AND B) NOT C)
; есть ли там подразумеваемоеAND
? Как в((X AND B) AND NOT C)
? - person Kaz   schedule 15.12.2015