最小项表达式和最大项表达式的转换
一:通过公式推导
**我们设 i 表示一个集合, m i m_i mi 在这个集合中取 1, M i M_i Mi 在这个集合中取 0 **
并且约定将 i 的补集表示为 ¬ i \lnot{i} ¬i
下表中的 val 为集合 i 取 1 时对应的最小项和最大项的值
input | min term | min designation | val | max term | max designation | val |
---|---|---|---|---|---|---|
0 0 0 | a’b’c’ | m 0 m_0 m0 | 0 | a+b+c | M 0 M_0 M0 | 1 |
0 0 1 | a’b’c | m 1 m_1 m1 | 1 | a+b+c’ | M 1 M_1 M1 | 0 |
0 1 0 | a’bc’ | m 2 m_2 m2 | 0 | a+b’+c | M 2 M_2 M2 | 1 |
0 1 1 | a’bc | m 3 m_3 m3 | 0 | a+b’+c’ | M 3 M_3 M3 | 1 |
1 0 0 | ab’c’ | m 4 m_4 m4 | 0 | a’+b+c | M 4 M_4 M4 | 1 |
1 0 1 | ab’c | m 5 m_5 m5 | 0 | a’+b+c’ | M 5 M_5 M5 | 1 |
1 1 0 | abc’ | m 6 m_6 m6 | 0 | a’+b+c | M 6 M_6 M6 | 1 |
1 1 1 | abc | m 7 m_7 m7 | 0 | a’+b’+c’ | M 7 M_7 M7 | 1 |
∑ i m i = 1 − ∑ i = ¬ i m i = ∏ i = ¬ i M i ∏ i M i = 1 − ∑ i m i = ∑ i = ¬ i m i \sum_i{m_i}=1-\sum_{i=\lnot{i}}{m_i}=\prod_{i=\lnot{i}}{M_i}\\ \prod_i{M_i}=1-\sum_{i}{m_i}=\sum_{i=\lnot{i}}{m_i} i∑mi=1−i=¬i∑mi=i=¬i∏Mii∏Mi=1−i∑mi=i=¬i∑mi
由此表也可以看出,公式的左右两端计算出的值都是 1 ,而且不遗漏
二:如何理解
我们设 i 表示一个集合, m i m_i mi 在这个集合中取 1 , M i M_i Mi 在这个集合中取 0
并且约定将 i 的补集表示为 ¬ i \lnot{i} ¬i
1. ∑ i m i = ∏ ¬ i M i \sum_i{mi}=\prod_{\lnot{i}}{M_i} ∑imi=∏¬iMi
对于 ∑ i m i \sum_i{m_i} ∑imi 来说,它表达的意思是表达式取 1,而我们知道 ∏ i M i = ¬ ∑ i m i \prod_i{Mi}=\lnot{\sum_i{m_i}} ∏iMi=¬∑imi (德摩根定律),观察 ∏ ¬ i M i \prod_{\lnot{i}}{M_i} ∏¬iMi ,我们发现要使 ¬ i \lnot i ¬i 上的 M i M_i Mi 同时发生(与的含义),只有 ∑ i m i \sum_i{m_i} ∑imi 这一种情况满足。
举例来说:
当集合 i = 1 时, ∏ ¬ i = 1 , 2 , 3 , 4 , 5 , 6 , 7 M i = 1 \prod_{\lnot{i}=1,2,3,4,5,6,7}{M_i}=1 ∏¬i=1,2,3,4,5,6,7Mi=1 只有在取 m 1 = 1 m_1=1 m1=1 时成立,因为只有 a’b’c 这个输入组合才能让 ∏ ¬ i = 0 , 2 , 3 , 4 , 5 , 6 , 7 M i = 1 \prod_{\lnot{i}=0,2,3,4,5,6,7}{M_i}=1 ∏¬i=0,2,3,4,5,6,7Mi=1 的每一个最大项取到一个成立的值。
具体来说,i = 0, 2 可以取 c , i = 3 可以取 b’ , i = 4, 5, 6, 7 可以取 a’ 。
而如果我们取 m 2 = 1 m_2=1 m2=1 我们会发现 M 2 = 1 M_2=1 M2=1 无法成立,因此 ∏ ¬ i = 0 , 2 , 3 , 4 , 5 , 6 , 7 M i = 1 \prod_{\lnot{i}=0,2,3,4,5,6,7}{M_i}=1 ∏¬i=0,2,3,4,5,6,7Mi=1 无法成立。
2. ∏ i M i = ∑ ¬ i m i \prod_i{M_i}=\sum_{\lnot{i}}{m_i} ∏iMi=∑¬imi
与上面的例子说明类似,这里就不重复了