2012-07-15 404 views
3

说我有一个布尔公式 一个或(b和c)如何将布尔公式转化为CNF或DNF

我会希望将其转换为CNF 即 (a和b)或(一和c)

是否有任何现有的库可以实现这一目标?

+0

我假设你的“公式”是某种形式,这不是你的标准C#if(a ||(b && c))'条件? – 2012-07-15 12:08:30

+1

你如何表示公式(由一个字符串让我们说吧?) – Shai 2012-07-15 12:10:04

+0

我在想,如果有一个库支持这一点,将应该一种方式来编码公式..如 lib.or(a,lib.and (公元前)) – william007 2012-07-15 12:44:01

回答

1

如果你想自己实现它,这里是一个如何玩Linq表达式公式的例子。 sample program派生和简化公式,这不完全是你想要做的,但是足够接近有用。

P.S ..:如果我正确记住我的逻辑,有多种方法可以用CNF或DNF表达同一公式,并给出一个起始公式。您可能需要将其归一化,以获得始终如一的内容。