DM@命题公式@主范式的性质和应用@数理逻辑解决数字电路全加器问题
文章目录
abstract
- 命题公式@
- 主范式的性质和应用
- @数理逻辑解决数字电路全加器问题
主合取范式与主析取范式间的关系👺
- 同一个
n
n
n元命题公式
A
A
A的主合取范式
A
1
A_1
A1与主析取范式
A
2
A_2
A2间的关系:
- 构造整数集合 S = { 0 , ⋯ , 2 n − 1 } S=\{0,\cdots,2^{n}-1\} S={0,⋯,2n−1},以及主析取式的所有最小项编号构成的集合 m = ( i 1 , ⋯ , i t ) m=(i_1,\cdots,i_t) m=(i1,⋯,it),其中 t t t是主取析范式包含的极小项数目
- 作整数下标集合 M = S − m M=S-m M=S−m= { j 1 , ⋯ , j s } \{j_1,\cdots,j_{s}\} {j1,⋯,js},其中 s = 2 n − t s=2^{n}-t s=2n−t,则主合取范式就是 M j 1 ∧ M j 2 ⋯ M j s M_{j_1}\wedge{M_{j_2}}\cdots{M_{j_{s}}} Mj1∧Mj2⋯Mjs
- 总之, A 1 , A 2 A_1,A_2 A1,A2的下标相对于 S S S集合是互补的
- 证明:参考主范式的性质一节(根据主析取范式直接得到主合取范式)
主范式存在及唯一性定理
- 任何命题公式都存在与之等值的主析取范式和主合取范式
- 存在性
- 按照命题公式主范式化一节给出的方法可以将所有析取范式(合取范式)主规范化
- 又因为任意命题都可以规范化为析取范式和合取范式
- 所以存在性成立
- 唯一性(以析取范式为例,用反证法证明)
- 即证明任意公式的主析取范式都式一致的,又即任意两个析取范式包含的最小项一致(最小项编号序列一致)
- 不妨设 B , C B,C B,C是 A A A的任意两个不同的主析取范式,则 B ⇔ C B\Leftrightarrow{C} B⇔C
- 设 m i m_i mi只出现在 B B B中而不出现在 C C C中;于是 i i i对应的二进制串 x 1 ⋯ x n x_1\cdots{x_n} x1⋯xn是 B B B的成真赋值,但不是 C C C的成真赋值,与 B ⇔ C B\Leftrightarrow{C} B⇔C矛盾
- 所以 B , C B,C B,C的包含的最小项相同,即 B , C B,C B,C是同一个主析取范式
- 所以唯一性成立
- 主合取发生范式的证明类似
例
-
(
p
→
q
)
→
r
(p\to{q})\to{r}
(p→q)→r
⇔
\Leftrightarrow
⇔
(
p
∧
¬
q
∧
¬
r
)
(p\wedge{\neg{q}}\wedge\neg{r})
(p∧¬q∧¬r)
∨
\vee
∨
(
¬
p
∧
r
)
{(\neg{p}\wedge{r}})
(¬p∧r)
∨
\vee
∨
(
q
∧
r
)
{(q\wedge{r})}
(q∧r)
- ( p ∧ ¬ q ∧ ¬ r ) (p\wedge{\neg{q}}\wedge\neg{r}) (p∧¬q∧¬r)是最小项,其成真赋值二进制串为100,记为 m ( 100 ) m_{(100)} m(100)十进制下表示为 m 4 m_4 m4
- ( ¬ p ∧ r ) {(\neg{p}\wedge{r}}) (¬p∧r) ⇔ \Leftrightarrow ⇔ m 1 ∨ m 3 m_1\vee{m_3} m1∨m3
- ( q ∧ r ) {(q\wedge{r})} (q∧r) ⇔ \Leftrightarrow ⇔ m 3 ∨ m 7 m_3\vee{m_7} m3∨m7
- 所以主析取式为 ( p → q ) → r (p\to{q})\to{r} (p→q)→r ⇔ \Leftrightarrow ⇔ m 1 ∨ m 3 ∨ m 4 ∨ m 7 m_1\vee{m_3}\vee{m_4}\vee{m_7} m1∨m3∨m4∨m7
-
p
∨
q
p\vee{q}
p∨q
- 容易看出它本身就是一个二元极大项,且是主合取范式,标号为 0 0 0,即 M 0 M_{0} M0
- 根据两种主范式关系,其主析取范式为 m 1 ∨ m 2 ∨ m 3 m_1\vee m_2\vee m_3 m1∨m2∨m3
- 如果要用基础方法计算主析取范式,过程如下
-
p
∨
q
p\vee{q}
p∨q
⇔
\Leftrightarrow
⇔
(
p
∧
(
q
∨
¬
q
)
)
∨
(
(
p
∨
¬
p
)
∧
q
)
(p\wedge{(q\vee{\neg{q}})})\vee{((p\vee{\neg{p}})\wedge{q})}
(p∧(q∨¬q))∨((p∨¬p)∧q)
- ⇔ \Leftrightarrow ⇔ ( ( p ∧ q ) ∨ ( p ∧ ¬ q ) ) ((p\wedge{q})\vee{(p\wedge{\neg{q})}}) ((p∧q)∨(p∧¬q)) ∨ \vee ∨ ( ( p ∧ q ) ∨ ( ¬ p ∧ q ) ) ((p\wedge{q})\vee{(\neg{p}\wedge{q})}) ((p∧q)∨(¬p∧q))
- ⇔ \Leftrightarrow ⇔ ( p ∧ q ) ∨ ( p ∧ ¬ q ) (p\wedge{q})\vee{(p\wedge{\neg{q})}} (p∧q)∨(p∧¬q) ∨ \vee ∨ ( ¬ p ∧ q ) {(\neg{p}\wedge{q})} (¬p∧q)
- ⇔ \Leftrightarrow ⇔ m 3 ∨ m 2 ∨ m 1 m_3\vee{m_2}\vee{m_1} m3∨m2∨m1
- ⇔ \Leftrightarrow ⇔ m 1 ∨ m 2 ∨ m 3 m_1\vee{m_2}\vee{m_3} m1∨m2∨m3
-
p
∨
q
p\vee{q}
p∨q
⇔
\Leftrightarrow
⇔
(
p
∧
(
q
∨
¬
q
)
)
∨
(
(
p
∨
¬
p
)
∧
q
)
(p\wedge{(q\vee{\neg{q}})})\vee{((p\vee{\neg{p}})\wedge{q})}
(p∧(q∨¬q))∨((p∨¬p)∧q)
主范式的性质👺
求公式的成真与成假赋值
-
首先,我们知道给定一个 n n n元命题公式 A A A,其真值表有 2 n 2^{n} 2n个条目(所有的 n n n元命题公式可以产生 2 2 n 2^{2^{n}} 22n个条目)
-
集合定义: S = { 1 , ⋯ , 2 n − 1 } S=\{1,\cdots,2^{n}-1\} S={1,⋯,2n−1}
-
若公式 A A A中含有 n n n个命题变项,则 A A A的主析取范式含有 s ( 0 ⩽ s ⩽ 2 n ) s(0\leqslant{s}\leqslant{2^{n}}) s(0⩽s⩽2n)个极小项,且 A A A恰好有 s s s个成真赋值,这些成真赋值恰好是所含极小项下标的二进制串表示,其余 2 n − s 2^{n}-s 2n−s个赋值都是成假赋值
- 设 A A A ⇔ \Leftrightarrow ⇔ m i 1 ∨ ⋯ ∨ m i s m_{i_1}\vee\cdots\vee m_{i_s} mi1∨⋯∨mis, m i j = ( q 1 ) ∧ ⋯ ∧ ( q n ) m_{ij}=(q_1)\wedge\cdots\wedge{(q_n)} mij=(q1)∧⋯∧(qn),其中 j = 1 , ⋯ , s j=1,\cdots,s j=1,⋯,s, ( q r ) , r = 1 , ⋯ , n (q_{r}),r=1,\cdots,n (qr),r=1,⋯,n表示 q r q_r qr或 ¬ q r \neg q_r ¬qr
- A A A为真当且仅当 m i j m_{ij} mij中至少有一个真值为真,显然 i 1 , ⋯ , i s i_1,\cdots,i_s i1,⋯,is分别使得 m i 1 , ⋯ , m i s m_{i_1},\cdots,m_{i_s} mi1,⋯,mis为真,也就能使 A A A为真
- 除此 s s s个成真赋值外,所有赋值 j 1 , ⋯ , j t j_1,\cdots,j_{t} j1,⋯,jt( t = 2 n − s t=2^{n}-s t=2n−s个)都不能使 m i 1 , ⋯ , m i s m_{i_1},\cdots,m_{i_s} mi1,⋯,mis中地任何一个成真,相应地 A A A成假
- 上述结论表明,我们可以从给定的主析取范式中直接根据各个极小项的下标得出所有的成真赋值( i 1 , ⋯ , i s i_1,\cdots,i_s i1,⋯,is);然后用集合 S S S减去成真赋值下标构成的集合(也就是主析取式中未出现的下标集合),就是所有成假赋值的集合 ( j 1 , ⋯ , j t ) , t = 2 n − s (j_1,\cdots,j_t),t=2^{n}-s (j1,⋯,jt),t=2n−s
主析取范式直接得到主合取范式
- 类似的分析主合取范式
- 对于主合取范式, A A A ⇔ \Leftrightarrow ⇔ M j 1 ∧ ⋯ ∧ M j w M_{j_1}\wedge\cdots\wedge M_{j_w} Mj1∧⋯∧Mjw, M j k = ( q 1 ) ∨ ⋯ ∨ ( q n ) M_{jk}=(q_1)\vee\cdots\vee{(q_n)} Mjk=(q1)∨⋯∨(qn),其中 ( q r ) , r = 1 , ⋯ , n (q_{r}),r=1,\cdots,n (qr),r=1,⋯,n表示 q r q_r qr或 ¬ q r \neg q_r ¬qr
- 赋值
j
1
,
⋯
,
j
w
j_1,\cdots,j_w
j1,⋯,jw分别使得
M
j
1
,
⋯
,
M
j
w
M_{j_1},\cdots,M_{jw}
Mj1,⋯,Mjw成假,因而它们的合取公式成假,即使得
A
A
A成假
- 其余赋值使得 M j 1 , ⋯ , M j w M_{j_1},\cdots,M_{jw} Mj1,⋯,Mjw都成真,即使 A A A成真
- 因此,若已知
A
A
A的主析取范式有
s
s
s个极小项
(
0
<
s
<
2
n
)
(0<s<2^{n})
(0<s<2n),即
A
A
A有
s
s
s个成真赋值,
- 则 A A A有 w = 2 n − s w=2^{n}-s w=2n−s个成假赋值, A A A的主合取范式有 w = 2 n − s w=2^{n}-s w=2n−s项的极大项
- 设 w w w个极大项的下标分别是 j 1 , ⋯ , j w j_1,\cdots,j_w j1,⋯,jw,它们和极小项下标 i 1 , ⋯ , i s i_1,\cdots,i_s i1,⋯,is恰好能一一对应 S S S中的元素
- 事实上,
m
j
1
⋯
m
j
w
m_{j_1}\cdots{m_{j_w}}
mj1⋯mjw是
¬
A
\neg{A}
¬A的极小项:
¬
A
=
m
j
1
∨
⋯
∨
m
j
w
\neg{A}=m_{j_1}\vee\cdots\vee{m_{jw}}
¬A=mj1∨⋯∨mjw
- A A A ⇔ \Leftrightarrow ⇔ ¬ ¬ A \neg{\neg{A}} ¬¬A ⇔ \Leftrightarrow ⇔ ¬ ( m j 1 ∨ ⋯ ∨ m j w ) \neg{(m_{j_1}\vee\cdots\vee{m_{jw}})} ¬(mj1∨⋯∨mjw) ⇔ \Leftrightarrow ⇔ ¬ m j 1 ∧ ⋯ ∧ ¬ m j w \neg m_{j_1}\wedge\cdots\wedge\neg{m_{jw}} ¬mj1∧⋯∧¬mjw ⇔ \Leftrightarrow ⇔ M j 1 ∧ ⋯ ∧ M j w M_{j_1}\wedge{\cdots}\wedge{M_{jw}} Mj1∧⋯∧Mjw
- 上述分析解释了主合取范式与主析取范式间的关系,并且说明了为什么主析取范式和主合取范式共同反映(容易还原)真值表所能表达的全部信息
判断公式的类型
- 主范式能判断公式类型,这也是主范式能体现真值表的表现
- 设
A
A
A中含有
n
n
n个命题变项,则
- 从极小项的角度
- A A A为重言式当且仅当 A A A的主析取范式包含 2 n 2^{n} 2n个极小项( A A A有 2 n 2^{n} 2n个成真赋值)
- A A A为矛盾是当且仅当 A A A的主析取范式不含任何极小项(主合取范式包含 2 n 2^{n} 2n个极大项, A A A有 2 n 2^{n} 2n个成假赋值);此时 A A A的主析取范式为0(表示矛盾式)
- A A A为可满足式当且仅当 A A A的主析取范式包含至少一个极小项
- 从极大项的角度
- A A A为重言式当且仅当 A A A的主合取范式不含极大项(规定此时 A A A的主合取范式为1)
- A A A为矛盾是当且仅当 A A A的主合取范式包含 2 n 2^{n} 2n个极大项
- A A A是可满足式时, A A A至少有一个成真赋值,因此 A A A的主合取范式极大项个数少于 2 n 2^{n} 2n
- 从极小项的角度
n n n元命题公式的主析取范式(主合取范式)的个数
- 根据排列组合可知,主析取范式和主合取范式的个数 N 1 , N 2 N_1,N_2 N1,N2相等,它们都可以从 n n n元极小项集合( N = 2 n N=2^{n} N=2n个元素)中抽取 0 ∼ 2 n 0\sim{2^{n}} 0∼2n个
- 因此都为 N 1 = N 2 = ∑ i = 0 N ( N i ) N_1=N_2=\sum_{i=0}^{N}\binom{N}{i} N1=N2=∑i=0N(iN)= ( 1 + 1 ) N (1+1)^{N} (1+1)N= 2 2 n 2^{2^n} 22n,则个数字和所有 n n n元命题公式的真值表个数相等
判断两个命题公式是否等值
- 设 A , B A,B A,B共有 n n n个命题变项,按 n n n个命题变项求出 A , B A,B A,B的主析取范式 A ′ , B ′ A',B' A′,B′,显然 A A A ⇔ \Leftrightarrow ⇔ A ′ A' A′ , B B B ⇔ \Leftrightarrow ⇔ B ′ B' B′
- 若 A ′ = B ′ A'=B' A′=B′,则 A A A ⇔ \Leftrightarrow ⇔ B B B,否则 A A A ⇎ \not\Leftrightarrow ⇔ B B B
给出一个满足给定真值表的命题公式
- 我们以半加器和全加器为例进行讨论相关算法
- 这部分涉及数字逻辑(数字电路逻辑,这门课很多内容是抽象数理逻辑具象化(或说知识应用))
- 数理逻辑中的真,假分别对应于数字电路逻辑中的二值(1,0)或高,低电平
- 我们的任务使从给定真值表通过一定的方法给出满足真值表的公式
半加器
-
例如二进制半加器(不考虑上一位的进位,但是考虑下一位进位;其输入变元 x , y x,y x,y其输出变元包含半 h h h和半进位 d d d),我们根据半加器的真值表来求取一个真值表和半加器相同的命题公式
-
x y 本位和位h 下一位进位d 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 -
分析此表,其包含了两个公式(输出半和位,半进位)
- x , y , h x,y,h x,y,h; x , y , d x,y,d x,y,d
-
下面我尝试给出主析取范式 h ( x , y ) h(x,y) h(x,y), d ( x , y ) d(x,y) d(x,y)
-
根据公式和其主范式的关系,如果要求主析取范式,则我们只需要关注真值表中的成真赋值
-
若想要求主合取范式
- 可以仅关注真值表中的成假赋值
- 也可以先求主析取范式,然后根据主合取范式和主析取范式的关系间接求得
-
x y h 0 0 0 0 1 1 1 0 1 1 1 0 -
x y d 0 0 0 0 1 0 1 0 0 1 1 1
-
-
h = m 1 ∨ m 2 h=m_1\vee{m_2} h=m1∨m2= ( ¬ x ∧ y ) ∨ ( x ∧ ¬ y ) (\neg{x}\wedge{y})\vee(x\wedge{\neg{y}}) (¬x∧y)∨(x∧¬y),
- 类似地可以求 h = M 0 ∧ M 3 h=M_0\wedge{M_3} h=M0∧M3= ( x ∨ y ) ∧ ( ¬ x ∨ ¬ y ) ({x}\vee{y})\wedge{(\neg{x}\vee{\neg{y}})} (x∨y)∧(¬x∨¬y)
-
d = m 3 d=m_{3} d=m3= x ∧ y x\wedge{y} x∧y;
- 类似地可以求得 d = M 0 ∧ M 1 ∧ M 2 d=M_0\wedge{M_1}\wedge{M_2} d=M0∧M1∧M2= ( x ∨ y ) ∧ ( x ∨ ¬ y ) ∧ ( ¬ x ∧ y ) (x\vee{y})\wedge{({x}\vee{\neg y})}\wedge{(\neg{x}\wedge{y})} (x∨y)∧(x∨¬y)∧(¬x∧y)
-
全加器
-
全加器不仅考虑了下一位的进位(carry out,简记为cout,或 c c c),同时考虑了上一位的进位
-
为此,输入也要有一个进位(carry in,简记为
cin
,或 c ′ c' c′)来使上一位进位进入加法运算 -
1 , ⋯ , 2 n − 1 1,\cdots,{2^{n}-1} 1,⋯,2n−1 x y 上一位进位cin(c’) 本位和位s 下一位进位cout© 0 0 0 0 0 0 1 0 0 1 1 0 2 0 1 0 1 0 3 0 1 1 0 1 4 1 0 0 1 0 5 1 0 1 0 1 6 1 1 0 0 1 7 1 1 1 1 1 -
s s s= ( ¬ x ∧ ¬ y ∧ c ′ ) (\neg{x}\wedge{\neg y}\wedge{{c'}}) (¬x∧¬y∧c′) ∨ \vee ∨ ( ¬ x ∧ y ∧ ¬ c ′ ) (\neg{x}\wedge{y}\wedge{\neg c'}) (¬x∧y∧¬c′) ∨ \vee ∨ ( x ∧ ¬ y ∧ ¬ c ′ ) (x\wedge{\neg{y}}\wedge{\neg c'}) (x∧¬y∧¬c′) ∨ \vee ∨ ( x ∧ y ∧ c ′ ) (x\wedge{y}\wedge{c'}) (x∧y∧c′)
- = m 1 ∨ m 2 ∨ m 4 ∨ m 7 m_1\vee{m_2}\vee{m_4}\vee{m_{7}} m1∨m2∨m4∨m7
-
c c c= ( ¬ x ∧ y ∧ c ′ ) (\neg{x}\wedge{y}\wedge{{c'}}) (¬x∧y∧c′) ∨ \vee ∨ ( x ∧ ¬ y ∧ c ′ ) ({x}\wedge{\neg y}\wedge{c'}) (x∧¬y∧c′) ∨ \vee ∨ ( x ∧ y ∧ ¬ c ′ ) (x\wedge{{y}}\wedge{\neg c'}) (x∧y∧¬c′) ∨ \vee ∨ ( x ∧ y ∧ c ′ ) (x\wedge{y}\wedge{c'}) (x∧y∧c′)
- = m 3 ∨ m 5 ∨ m 6 ∨ m 7 m_3\vee{m_5}\vee{m_6}\vee{m_7} m3∨m5∨m6∨m7
半加器和全加器的联系
- 全加器可以由两个半加器和一个或门实现
- 设输入位为
x
,
y
x,y
x,y的半加器的本位和的函数表示
h
(
x
,
y
)
=
(
¬
x
∧
y
)
∨
(
x
∧
¬
y
)
h(x,y)=(\neg{x}\wedge{y})\vee(x\wedge{\neg{y}})
h(x,y)=(¬x∧y)∨(x∧¬y)(函数
h
h
h是异或门)
- 半进位 d ( x , y ) = x ∧ y d(x,y)=x\wedge{y} d(x,y)=x∧y(即与门)
- 则
- 全加器的本位和
s
(
x
,
y
,
c
′
)
s(x,y,c')
s(x,y,c′)
⇔
\Leftrightarrow
⇔
(
h
(
x
,
y
)
∧
¬
c
′
)
∨
(
¬
h
(
x
,
y
)
∧
c
′
)
(h(x,y)\wedge{\neg{c'}})\vee{(\neg{h(x,y)}\wedge{c'})}
(h(x,y)∧¬c′)∨(¬h(x,y)∧c′)
⇔
\Leftrightarrow
⇔
h
(
h
(
x
,
y
)
,
c
′
)
h(h(x,y),c')
h(h(x,y),c′)
(1)
,异或门嵌套 - 下一位进位
c
(
x
,
y
,
c
′
)
c(x,y,c')
c(x,y,c′)
⇔
\Leftrightarrow
⇔
(
h
(
x
,
y
)
∧
c
′
)
∨
d
(
x
,
y
)
(h(x,y)\wedge{c'})\vee{d(x,y)}
(h(x,y)∧c′)∨d(x,y)
⇔
\Leftrightarrow
⇔
d
(
h
(
x
,
y
)
,
c
′
)
∨
d
(
x
,
y
)
d(h(x,y),c')\vee{d(x,y)}
d(h(x,y),c′)∨d(x,y)
(2)
,其中 c ′ c' c′是全加器用来接受上一位进位的输入变量 - 根据
(1)
,容易仅需要两个半加器(分别记为半加器 a 1 , a 2 a_1,a_2 a1,a2)即可实现 s s s的计算- a 1 a_1 a1计算 h ( x , y ) h(x,y) h(x,y),同时提供 d ( x , y ) d(x,y) d(x,y)
-
a
2
a_2
a2计算
h
(
h
(
x
,
y
)
,
c
′
)
h(h(x,y),c')
h(h(x,y),c′),同时还提供
d
(
x
,
y
)
,
d
(
h
(
x
,
y
)
,
c
′
)
d(x,y),d(h(x,y),c')
d(x,y),d(h(x,y),c′)
(1.1)
- 根据
(1.1),(2)
,再加上一个或门就可以计算 c c c,
- 全加器的本位和
s
(
x
,
y
,
c
′
)
s(x,y,c')
s(x,y,c′)
⇔
\Leftrightarrow
⇔
(
h
(
x
,
y
)
∧
¬
c
′
)
∨
(
¬
h
(
x
,
y
)
∧
c
′
)
(h(x,y)\wedge{\neg{c'}})\vee{(\neg{h(x,y)}\wedge{c'})}
(h(x,y)∧¬c′)∨(¬h(x,y)∧c′)
⇔
\Leftrightarrow
⇔
h
(
h
(
x
,
y
)
,
c
′
)
h(h(x,y),c')
h(h(x,y),c′)
- 所以两个半加器和一个或门即可实现全加器
- 至于半加器,可以使用一个异或门和与门实现(其中异或门可以由两个与门,两个非门和一个或门实现)
Note:
-
设半加器本位输出和 h = ( ¬ x ∧ y ) ∨ ( x ∧ ¬ y ) h=(\neg{x}\wedge{y})\vee(x\wedge{\neg{y}}) h=(¬x∧y)∨(x∧¬y);全加器下一位进位输出 s s s:
-
s s s ⇔ \Leftrightarrow ⇔ ( ¬ x ∧ ¬ y ∧ c ′ ) (\neg{x}\wedge{\neg y}\wedge{{c'}}) (¬x∧¬y∧c′) ∨ \vee ∨ ( ¬ x ∧ y ∧ ¬ c ′ ) (\neg{x}\wedge{y}\wedge{\neg c'}) (¬x∧y∧¬c′) ∨ \vee ∨ ( x ∧ ¬ y ∧ ¬ c ′ ) (x\wedge{\neg{y}}\wedge{\neg c'}) (x∧¬y∧¬c′) ∨ \vee ∨ ( x ∧ y ∧ c ′ ) (x\wedge{y}\wedge{c'}) (x∧y∧c′)
- ⇔ \Leftrightarrow ⇔ [ ( ( ¬ x ∧ ¬ y ) ∨ ( x ∧ y ) ) ∧ c ′ ] [((\neg x\wedge{\neg{y}})\vee({x}\wedge{y}))\wedge{c'}] [((¬x∧¬y)∨(x∧y))∧c′] ∨ \vee ∨ [ ( ( ¬ x ∧ y ) ∨ ( x ∧ ¬ y ) ) ∧ ¬ c ′ ] [((\neg{x}\wedge{y})\vee{(x\wedge{\neg y})})\wedge{\neg{c'}}] [((¬x∧y)∨(x∧¬y))∧¬c′]
- 再由分配律和德摩根,可知 w = ( ¬ x ∧ ¬ y ) ∨ ( x ∧ y ) w=(\neg x\wedge{\neg{y}})\vee({x}\wedge{y}) w=(¬x∧¬y)∨(x∧y)和 h = ( ¬ x ∧ y ) ∨ ( x ∧ ¬ y ) h=(\neg{x}\wedge{y})\vee{(x\wedge{\neg y})} h=(¬x∧y)∨(x∧¬y)是互非的关系: w = ¬ h w=\neg{h} w=¬h
- 从而 s s s ⇔ \Leftrightarrow ⇔ ( ¬ h ∧ c ′ ) ∨ ( h ∧ c ′ ) (\neg{h}\wedge{c'})\vee(h\wedge{c'}) (¬h∧c′)∨(h∧c′)
主范式合并化简
- 从主范式合并化简为尽可能简单的等价范式是重要问题
- 这个过程和主范式化的是互逆的过程
- 主范式的意义在于能够方便的比较两个公式是否等价以及其他真值表能够完成的任务
- 化简的意义在于,使公式更加简洁,从而在某些应用上更加方便和高效
- 比如涉及一个具有特定真值表的组合逻辑电路,公式越简单,所需要的基本逻辑门也就越少,布线和硬件成本也更低,功耗也更优
- 容易知道,化简得结果可能不唯一,但好的结果使项数尽可能少,每项的变元尽可能少
卡诺图法
- 在数字逻辑中,这个任务称为逻辑函数化简
- 有表格化方法,叫做卡诺图法,其借助格雷码设计而成,通过画卡诺圈来给出化简后的公式
- 这种方法有比较一般的步骤,但是对于变量数目多的(4个以上),就比较繁琐
- 也可用公式的运算律(等值式模式)作合并化简工作,这种方式对于基本功要求比较扎实
- 有表格化方法,叫做卡诺图法,其借助格雷码设计而成,通过画卡诺圈来给出化简后的公式
公式法
- 并项法: ( A ∧ B ) ∨ ( ¬ A ∧ B ) (A\wedge B)\vee(\neg{A}\wedge{B}) (A∧B)∨(¬A∧B) ⇔ \Leftrightarrow ⇔ B B B;该公式可以将两个与项合并为一个,并且消去其中的一个变量
- 吸收法: A ∨ ( A ∧ B ) A\vee (A\wedge B) A∨(A∧B) ⇔ \Leftrightarrow ⇔ A A A;吸收多余的与项
- 消去法: A ∨ ( ¬ A ∧ B ) A\vee(\neg{A}\wedge{B}) A∨(¬A∧B) ⇔ \Leftrightarrow ⇔ A ∨ B A\vee{B} A∨B;消去与项多余的因子
- 配项消项法: ( A ∧ B ) ∨ ( ¬ A ∧ C ) (A\wedge{B})\vee(\neg{A}\wedge{C}) (A∧B)∨(¬A∧C) ⇔ \Leftrightarrow ⇔ ( A ∧ B ) ∨ ( ¬ A ∧ C ) ∨ ( B ∧ C ) (A\wedge{B})\vee{(\neg{A}\wedge{C})}\vee{(B\wedge{C})} (A∧B)∨(¬A∧C)∨(B∧C)配项多出一个与项,尝试合并其他与项来消去更多与项
最简范式
- 最简主析取式(最简与或式):简单合取式个数最少(与项个数最少);简单合取式(与项)中变量个数最少
- 最简主合取式(最简或与式):简单析取式个数最少(或项个数最少);简单析取式(或项)中变量个数最少
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了