У меня есть двоичные логические функции в качестве входных строк, и мне нужен эффективный способ найти «основной» или «корневой» оператор. Некоторые ограничения на форму формулы заключаются в том, что есть только операторы «и» и «или» и нет отрицания. Входные строки обозначают операторы «и» как одиночные «а», а операторы «или» — как одиночные «о». Элементарные переменные представлены заглавными буквами. Я работаю в питоне. Например,
s = "( ( A o B ) a C ) a D" ==> корень = второй 'a'
s = "( A o B ) a ( C o D )" ==> root = 'a'
Вместо создания бинарного дерева для обхода я решил работать непосредственно с формулой для простоты в других областях программы. Кроме того, я хотел бы избежать необходимости создавать целое дерево для формулы, поскольку ее единственная цель - найти корень. Мне было интересно, есть ли у кого-нибудь эффективный способ найти корень?
Спасибо за вашу помощь!