当我减少布尔语句时,是否有特定的顺序?我怎么知道何时停止?

时间:2018-04-03 19:04:46

标签: java boolean logic

当减少这样的陈述时:

!(n || p)|| p &&(n || q)

我先看看NOT符号,然后使用De Morgan定律减少。

!n && !p || p &&(n || q)

此时,看起来这样可以减少。

我不能在p &&(n || q)部分使用任何法律。

我无法在!n && !p部分使用更多法律。

因为AND出现在OR之前,我认为我无法开始将其他部分无序地减少,例如!p || p为True。

可以减少更多,我只是没有看到什么?

1 个答案:

答案 0 :(得分:0)

我不确定一般减少的特定算法,但在这种情况下还有其他属性可用于进一步减少:

  1. 此步骤只是按优先顺序分组:

    (!n && !p) || (p && (n || q))
    
  2. 使用分配:

    (!n && !p) || ((p && n) || (p && q))
    
  3. 使用关联性和可交换性:

    ((!n && !p) || (n && p)) || (p && q)
    
  4. 我不知道是否有特定的名称,但(!n && !p) || (n && p)相当于n == p

    (n == p) || (p && q)
    
  5. 我只是首先注意到p可以分发,这开辟了其他可能性,我解决了这个问题。第4步是一个共同的身份mentioned here, for example,但我不知道它是否有名称。

    这是一个小程序,它表明真值表真的是相同的:

    class Example {
        static boolean f(boolean n, boolean p, boolean q) {
            return !(n || p) || p && (n || q);
        }
        static boolean g(boolean n, boolean p, boolean q) {
            return (n == p) || (p && q);
        }
        public static void main(String[] args) {
            System.out.println("+---+---+---+-----+-----+");
            System.out.println("| n | p | q | f() | g() |");
            System.out.println("+---+---+---+-----+-----+");
            for (int i = 0b000; i <= 0b111; ++i) {
                boolean n = (i & 0b100) != 0;
                boolean p = (i & 0b010) != 0;
                boolean q = (i & 0b001) != 0;
                boolean f = f(n, p, q);
                boolean g = g(n, p, q);
                System.out.printf("| %s | %s | %s |  %s  |  %s  |%n",
                                  ch(n), ch(p), ch(q), ch(f), ch(g));
            }
            System.out.println("+---+---+---+-----+-----+");
        }
        static char ch(boolean b) { return b ? 'T' : 'F'; }
    }
    

    真相表:

    +---+---+---+-----+-----+
    | n | p | q | f() | g() |
    +---+---+---+-----+-----+
    | F | F | F |  T  |  T  |
    | F | F | T |  T  |  T  |
    | F | T | F |  F  |  F  |
    | F | T | T |  T  |  T  |
    | T | F | F |  F  |  F  |
    | T | F | T |  F  |  F  |
    | T | T | F |  T  |  T  |
    | T | T | T |  T  |  T  |
    +---+---+---+-----+-----+