2016-08-04 16 views
0

У меня есть булево выражение в префиксной нотации. Скажем, это or and A B or or C D E. Когда я конвертирую его в инфиксную нотацию, я получаю ((A and B) or ((C or D) or E)). Я хочу уменьшить его до (A and B) or C or D or E. Должен ли я уменьшить нотацию инфикса, или на самом деле проще получить сокращенное уравнение из префиксной нотации. Какие алгоритмы я должен использовать?Алгоритм для удаления избыточных круглых скобок из логического выражения

ответ

1

Paranthesis можно удалить в выражении X % (X1 ? X2 ? .. ? Xn) % X(n+1), где Xi является выражением в скобках или логическим значением "?" и «%» являются операторами тогда и только тогда, когда каждый «?» оператор имеет приоритет выше или равен оператору «%».

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^