这是作业。我必须将语句集转换为CNF并实现它们。我知道我需要先将前缀表示法中的输入转换为中缀,然后重复应用De Morgans的法则。但是,在将其转换为中缀表示法之后,我不知道如何继续执行。
谢谢!
答案 0 :(得分:2)
无需将其转换为中缀 - 您希望尽快离开字符串域,例如
public abstract class Expression
public abstract class BinaryExpression extends Expression {
private Expression expr1;
private Expression expr2;
public Expression getExpr1() { return expr1; }
public void setExpr1(Expression expr) { expr1 = expr; }
}
public abstract class UnaryExpression extends Expression
public class Or extends BinaryExpression
public class Not extends UnaryExpression
等等。要将输入解析为Expressions
,您可能会发现使用Recursive Descent Parser很有用,尽管这肯定不是解析输入的唯一方法。将输入转换为符号Expression
格式后,应用布尔定律将其转换为CNF会更容易。