Можно ли представить конъюнктивную/дизъюнктивную нормальную форму в двоичном дереве?

Я мог бы найти этот относительный вопрос Распространение И над ИЛИ в бинарном дереве (конъюнктивная нормальная форма)

Я не совсем уверен, что будет результатом представления двоичного дерева CNF для этого выражения. А и В и С

AND
|- A
|- AND
   |-B
   |-C

Это правильно? Мой основной вопрос: может ли двоичное представление CNF иметь несколько узлов AND в дереве, а не только один узел AND в качестве корня. Насколько я понимаю, у нас могут быть некорневые узлы И, если его родителем является узел И.

Сопутствующий вопрос? Является ли это представление оптимальным? или выгодно представлять их в n-арном дереве только с одним корнем И узлом? Оптимальность, которую я здесь ищу, - это построение и обход дерева.

// Редактировать на основе комментария. Для простоты предположим, что оператор not (~) является частью листовых узлов A, B или C. Это означает, что вам нужно беспокоиться о том, что оператор ~ является частью нелистовых узлов, которые могут изменить структуру дерева при расширении в соответствии с Деморганом. закон.


person Adi GuN    schedule 21.05.2015    source источник
comment
Это зависит от того, что вы хотите сделать с деревом. Двоичные деревья имеют смысл для деревьев поиска, потому что в каждом узле ваш ключ либо меньше (рекурсия влево), либо равен (стоп), либо больше (рекурсия вправо) ключа в текущем узле. Это упрощает реализацию деревьев, но другие типы деревьев поиска (например, B-деревья) используют более высокую степень ветвления для оптимизации таких вещей, как использование кэша. Здесь, по-видимому, нет ничего бинарного по своей сути в CNF, поэтому я бы использовал n-арное дерево, если оно не вызывает заметных проблем.   -  person chepner    schedule 22.05.2015
comment
@Adi GuN CNF/DNF не может быть выражено через бинарные деревья, так как включает Not, который является унарным оператором. Кроме того, любое выражение, состоящее из бинарных операторов, включая, помимо прочего, CNF/DNF, может быть выражено через бинарные деревья. Это вопрос арности операторов, а вовсе не вопрос формы.   -  person Ami Tavory    schedule 22.05.2015
comment
@AmiTavory Я обновил описание. Для простоты не детализированы до листовых узлов.   -  person Adi GuN    schedule 22.05.2015
comment
@Ami CNF/DNF можно представить в виде двоичных диаграмм принятия решений, поскольку BDD могут пересылать как 0, так и 1.   -  person Axel Kemper    schedule 22.05.2015
comment
@Alex Kemper Это может быть правдой, но вопрос, похоже, касается деревьев выражений с внутренними узлами оператора, а не BDD (где переменные также могут быть внутренними узлами).   -  person Ami Tavory    schedule 22.05.2015


Ответы (1)


Минимальный BDD для вашего соединения:

введите здесь описание изображения

BDD был создан с использованием этого онлайн-инструмент.

Для простого AND с тремя входами оптимизировать нечего. Узлы BDD образуют цепочку.

person Axel Kemper    schedule 21.05.2015
comment
Хотя это интересно, я бы очень хотел, чтобы операторы проходили через дерево. - person Adi GuN; 22.05.2015
comment
BDD можно рассматривать как дерево мультиплексора 2-к-1. - person Axel Kemper; 22.05.2015