文章目录
2.1 概述
在前面的章节中,主要是讲了数码来表示数量的不同大小,也能用来表示不同的事物。在数字逻辑电路中,可以用1位二进制数码的0和1表示一个事物的两种不同逻辑状态。
所谓“逻辑”,这里是指事物间的因果关系。当两个二进制数码表示不同的逻辑状态时,他们之间可以按照指定的某种因果酸洗进行推理运算,我们称菏泽中运算为逻辑运算。
本章所讲的逻辑代数是布尔代数在二值逻辑电路中的应用,虽然有些逻辑代数的运算公式在形式上和普通代数的运算公式雷同,但是两者包含的物理意义有本质的不同。逻辑代数中也用字母表示变量,
这种变量称为逻辑变量。
而逻辑运算表示的事逻辑变量以及常量之间逻辑状态的推理运算,而不是数量之间的运算。
2.2 逻辑代数中的三种基本运算。
逻辑代数的基本运算有三种,分别是与(AND)、或(OR)、非(NOT).如下控制电路所示:
在(a)中只有开关a和b同时闭合,指示灯才会亮;而在(b)中,开关A和B其中任意一个闭合,开关也能亮;而在(c)中开关A闭合,灯反而熄灭。上述电路代表不同的因果关系;
- 只有决定事物结果的全部条件同时具备时,结果才会发生。这就逻辑与,或称逻辑相乘。
- 在决定事物结果的诸条件中要要满足任何一个,结果就会发生,这就是逻辑或,或称逻辑相加。
- 只要条件具备了,结果便不会发生。而条件不具备时,结果一定发生。这就是逻辑非,也称逻辑求反
在逻辑代数中,将与、或、非看做是逻辑变量A、B间的三种最基本的逻辑运算,并以“·”表示与运算,以“+”表示或运算。以变量右上角"‘’"表示非运算,因此上面可以用公式表示:
A和B的与逻辑运算可以写成:
Y
=
A
⋅
B
Y =A\cdot B
Y=A⋅B
A和B的或逻辑运算可以写成:
Y
=
A
+
B
Y = A + B
Y=A+B
对A进行非逻辑运算可以写成:
Y
=
A
’
Y = A^{’}
Y=A’
同时,将实现与逻辑运算的单元称为与门,将实现或逻辑运算的单元电路称为或门,将实现非逻辑运算的单元电路称为非门(也称反相器)。
Tip
:
逻辑非的运算符号尚统一,除了 A ′ A^{'} A′之外,主要包括$overline {\rm{A}} $$、~A、\neg {A} $等。
当然,与或非逻辑运算还可以使用图像符号来表示,如下图所示:
然后,在实际逻辑问题往往比与或非复杂得多,不过他们都是可以用与或非的组和来实现的,最常见的复合逻辑运算有与非(NAND)、或非(NOR)、与或非(AND-NOR)、异或(EXCLUSIVE OR)、同或(EXCLUSIVE NOR)等等。他们的图形逻辑符号和运算符号如下:
在上面的图中:
-
在与非运算中,是将A、B进行与运算,之后将结果求反,最后得到的即为A、B的与非运算结果。因此可以把与非运算看做是与运算和非运算的组合。
-
在与或非逻辑中,A、B之间和C、D之间都是与的关系,只要A、B或C、D中任何一组同时输出1,输出Y就是0。只有当每一组输入都全是1时,输出Y才是1.
-
在异或逻辑中,当A、B不相同时,输出Y为1;而当A、B相同时,输出Y为0.异或也可以用与、或、非的组合表示,如下:
A ⊕ B = A ⋅ B ′ + A ′ ⋅ B A \oplus B = A \cdot B^{'} + A^{'}\cdot {B} A⊕B=A⋅B′+A′⋅B -
在同或逻辑中,跟异或相反,只有A、B相同时输出为1 ,不同时,输出为0.同或也可以写成与、或、非的组合形式,如下:
A ⊙ B = A ⋅ B + A ′ ⋅ B ′ A \odot {B} = { A \cdot {B} + A^{'}\cdot{B^{'}}} A⊙B=A⋅B+A′⋅B′
由上可见,同或和异或互为反运算,即:
A
⊕
B
=
(
A
⊙
B
)
′
A
⊙
B
=
(
A
⊕
B
)
′
A \oplus B = (A \odot {B})^{'}\newline A \odot {B} = (A \oplus B)^{'}
A⊕B=(A⊙B)′A⊙B=(A⊕B)′
Tip
:
为了简化书写,允许将 A ⋅ B A\cdot{B} A⋅B简写成AB,省略逻辑相乘的符号“·”。
2.3 逻辑代数的基本公式和常用公式
2.3.1 基本公式
下面的是逻辑代数的基本公式,这些公式成为布尔恒等式。
- 变量与常量间的运算规则,如下:
0 ⋅ A = 0 1 ⋅ A = A 1 + A = 1 0 + A = A 0 \cdot {A} = 0 \\ 1 \cdot {A} = A \\ 1 + {A} = 1 \\ 0 + A = A 0⋅A=01⋅A=A1+A=10+A=A
-
重叠率:同一变量的运算规律
A ⋅ A = A A + A = A A \cdot {A} = A \\ A + {A} = A A⋅A=AA+A=A -
互补律:表示变量与它的反变量之间运算规律
A ⋅ A ′ = 0 A + A ′ = 1 A \cdot {A^{'}} =0 \\ A + {A^{'}} = 1 A⋅A′=0A+A′=1 -
交换律:
A ⋅ B = B ⋅ A A + B = B + A A \cdot {B} = {B \cdot {A}} \\ A + {B} = {B + A} A⋅B=B⋅AA+B=B+A -
结合律:
A ⋅ ( B ⋅ C ) = ( A ⋅ B ) ⋅ C A + ( B + C ) = ( A + B ) + C A \cdot (B \cdot C) = {(A \cdot B) \cdot C} \\ A + (B + C) = {(A + B) + C} A⋅(B⋅C)=(A⋅B)⋅CA+(B+C)=(A+B)+C -
分配律:
A ⋅ ( B + C ) = A ⋅ B + A ⋅ C A \cdot {(B + C)} = {A \cdot B + A \cdot C} A⋅(B+C)=A⋅B+A⋅C -
反演律:
( A ⋅ B ) ′ = A ′ + B ′ ( A + B ) ′ = A ′ ⋅ B ′ (A \cdot B)^{'} = A^{'} + B^{'} \\ (A + B)^{'} = A^{'} \cdot {B^{'}} (A⋅B)′=A′+B′(A+B)′=A′⋅B′ -
还原律:一个变量经过两次求反运算之后还原为其本身
( A ′ ) ′ = A {(A^{'})^{'}} = A (A′)′=A
上面公式的正确性可以用列真值表的方法加以验证,如果等式成立,那么将任何一组变量的取值带入公式两边所得的结果应该相等。因此如果等式两边所对应的真是表必然相同。
2.3.2 若干常用公式
下面的公式是基于基本公式推导出的,可以直接使用:
公式推导:
-
21: A + A ⋅ B = A ⋅ ( 1 + B ) = A ⋅ 1 = A A+A\cdot{B} = A \cdot (1 + B)= A \cdot 1 = A A+A⋅B=A⋅(1+B)=A⋅1=A
-
22: A + A ′ ⋅ B = ( A + A ′ ) ⋅ ( A + B ) = 1 ⋅ ( A + B ) = A + B A + A^{'}\cdot {B} = {(A + A^{'} )\cdot (A + B)} = 1 \cdot (A + B) = A+B A+A′⋅B=(A+A′)⋅(A+B)=1⋅(A+B)=A+B
-
23: A ⋅ B + A ⋅ B ′ = A ⋅ ( B + B ′ ) = A ⋅ 1 = A A\cdot{B} + A \cdot {B^{'}} = A \cdot (B + B^{'}) = A \cdot 1 = A A⋅B+A⋅B′=A⋅(B+B′)=A⋅1=A
-
24: A ⋅ ( A + B ) = A ⋅ A + ( A ⋅ B ) = A + ( A ⋅ B ) = A ⋅ 1 + A ⋅ B = A ⋅ ( 1 + B ) = A A\cdot{(A+B)} = {A\cdot{A} + (A \cdot B)} = A + {(A \cdot B)} = {A \cdot 1} + A \cdot B = A \cdot (1 + B) =A A⋅(A+B)=A⋅A+(A⋅B)=A+(A⋅B)=A⋅1+A⋅B=A⋅(1+B)=A
-
25:
A ⋅ B + A ′ ⋅ C + B ⋅ C = A ⋅ B + A ′ ⋅ C + B ⋅ C ( A + A ′ ) = A ⋅ B + A ′ ⋅ C + B ⋅ C ⋅ A + B ⋅ C ⋅ A ′ = A ⋅ B ( 1 + C ) + A ′ ⋅ C ( B + 1 ) = A ⋅ B + A ′ ⋅ C A \cdot B + A^{'} \cdot C + B \cdot C = A \cdot B + A ^{'}\cdot C + B \cdot C (A + A^{'})\\ = A \cdot B + A ^{'}\cdot C + B \cdot C \cdot A + B \cdot C \cdot A ^{'} \\ = A \cdot B (1+C) + A^{'} \cdot C (B + 1) \\ = A \cdot B + A^{'} \cdot C A⋅B+A′⋅C+B⋅C=A⋅B+A′⋅C+B⋅C(A+A′)=A⋅B+A′⋅C+B⋅C⋅A+B⋅C⋅A′=A⋅B(1+C)+A′⋅C(B+1)=A⋅B+A′⋅C
该公式说明:若两个乘积项中分别包含A和 A ′ A^{'} A′两个因子时,而这两个乘积项的其余因子组成三个乘积项时,则第三个乘积项是多余的,可以消去,即从上面不难推导出:
A ⋅ B + A ′ ⋅ C + B ⋅ C ⋅ D = A ⋅ + A ′ ⋅ C A \cdot B + A^{'} \cdot C + B \cdot C \cdot D = A \cdot + A^{'} \cdot C A⋅B+A′⋅C+B⋅C⋅D=A⋅+A′⋅C -
26: A ⋅ ( A ⋅ B ) ′ = A ⋅ ( A ′ + B ′ ) = A ⋅ A ′ + A ⋅ B ′ = A ⋅ B ′ A \cdot (A \cdot B)^{'} = A \cdot (A^{'} + B^{'}) = A \cdot A^{'} +A \cdot B^{'} = A \cdot B^{'} A⋅(A⋅B)′=A⋅(A′+B′)=A⋅A′+A⋅B′=A⋅B′
上面公式,当当$A^和一个乘积项的非相乘时,且A为乘积项的因子时,则这个因子可以消去
A ′ ⋅ ( A ⋅ B ) ′ = A ′ ⋅ ( A ′ + B ′ ) = A ′ ⋅ A ′ + A ′ ⋅ B ′ = A ′ ⋅ ( 1 + B ′ ) = A ′ A^{'} \cdot (A \cdot B)^{'} = A^{'} \cdot (A^{'} + B^{'}) = A^{'} \cdot A^{'} +A^{'} \cdot B^{'} = A^{'} \cdot (1 + B^{'}) = A^{'} A′⋅(A⋅B)′=A′⋅(A′+B′)=A′⋅A′+A′⋅B′=A′⋅(1+B′)=A′该公式说明,当 A ′ A^{'} A′和一个乘积项的非相乘时,且A为乘积项的因子时,结果等于 A ′ A^{'} A′
2.4 逻辑代数的基本定理
2.4.1 带入定理
在任何一个包含变量A的逻辑表达式中,若以另外一个逻辑式代入式中所有A的位置,则等式仍然成立。这就是代入定理。
因为变量A仅有0和1两种可能的状态,所以无论将A=0和A=1代入逻辑等式,等式都一定成立。
例如:
- 已知 ( A + B ) ′ = A ′ ⋅ B ′ (A+B)' = A' \cdot B' (A+B)′=A′⋅B′,则将B+C带入B的位置为: ( A + B + C ) ′ = A ′ ⋅ ( B + C ) ′ = A ′ ⋅ B ′ ⋅ C ′ (A+B+C)' = A' \cdot (B+C)'=A' \cdot B' \cdot C' (A+B+C)′=A′⋅(B+C)′=A′⋅B′⋅C′
2.4.2 反演定理
对于任何一个逻辑式Y,若将其中所有的“·”换成“+”,“+”换成“·”,0换成1,1换成0,原变量换成原变量,则得到的结果就是 Y ′ Y^{'} Y′.这个规律成为反演定理。
但在使用反演定理时,还需要注意以下两个规则:
- 仍需要遵循“先括号,然后乘,最后加”的运算优先次序。
- 不属于单个变量的反号应保留不变。
例如:
- 若
Y
=
A
(
B
+
C
)
+
C
D
Y = A(B+C)+CD
Y=A(B+C)+CD,则
Y ′ = ( A ′ + B ′ C ′ ) ⋅ ( C ′ + D ′ ) = A ′ C ′ + B ′ C ′ + A ′ D ′ + B ′ C ′ D ′ = A ′ C ′ + B ′ C ′ + A ′ D ′ Y^{'} = (A^{'}+B^{'}C^{'})\cdot(C'+D') \\ =A'C'+B'C'+A'D'+B'C'D'\\ =A'C'+B'C'+A'D' Y′=(A′+B′C′)⋅(C′+D′)=A′C′+B′C′+A′D′+B′C′D′=A′C′+B′C′+A′D′
2.4.3 对偶定理
若两逻辑式相等,则它们的对偶式也相等,这就是对偶定理。
对偶式定义:对于任何一个逻辑式Y,若将其中的“·”换成“+”,“+”换成“·”,0换成1,1换成0,则得到一个新的逻辑式 Y D Y^{D} YD,这个 Y D Y^{D} YD就是成为Y的对偶式,或者说Y和 Y D Y^{D} YD互为对偶式。
例如:
- 若 Y = A ( B + C ) Y = A(B+C) Y=A(B+C),则 Y D = A + B C Y^{D} = A+BC YD=A+BC
- 若 Y = ( A B + C D ) ′ Y = (AB+CD)^{'} Y=(AB+CD)′,则 Y D = ( A + B ) ⋅ ( C + D ) ′ Y^{D} = (A+B)\cdot{(C+D)^{'}} YD=(A+B)⋅(C+D)′
- 若 Y = A B + ( C + D ) ′ Y = AB+(C+D)^{'} Y=AB+(C+D)′,则 Y D = ( A + B ) ⋅ ( C D ) ′ Y^{D} = (A+B)\cdot (CD)^{'} YD=(A+B)⋅(CD)′
2.5 逻辑函数及其表示方法
2.5.1 逻辑函数
如果以逻辑变量作为输入,以运算结果作为输出,那么当输入变量的取值确定之后,输出的取值便随之而定。因此,输出与输入之间存在一种函数关系,这种关系成为逻辑函数(Logic Function),写作:
Y
=
F
(
A
,
B
,
C
,
⋯
)
Y = F(A,B,C,\cdots)
Y=F(A,B,C,⋯)
由于变量和输出(函数)的取值只有0和1两种状态,所以讨论的逻辑函数都是二值逻辑函数。
2.5.2 逻辑函数的表示方法
常用的逻辑韩式表示方法有逻辑真值表、逻辑函数式(简称逻辑式或者函数式)、逻辑图、波形图、卡洛图和硬件描述语言等。
(一)、逻辑真值表
将输入变量的所有的取值对应的输出值找出来,列成表格,即可得真值表。如下是对应逻辑的真值表:
(二)、逻辑函数
将输出与输入之间的逻辑关系写成与、或、非等运算的组合式,即逻辑代数式,就得到了所需的逻辑函数式。而上面电路图的函数逻辑式可以写成:
Y
=
A
(
B
+
C
)
Y = A(B+C)
Y=A(B+C)
(三)、逻辑图
将逻辑函数式中各变量之间的与、或、非等逻辑关系用图形符号表示出来,就可以画出表示函数关系的逻辑图(Logic Diagram).
只需要将逻辑运算的图形符号代替式中的代数符号运算便可以得到如下:
(四)、波形图
如果将逻辑函数输入变量 每一种可能出现的取值与对应的输出值按时间顺序依次排列起来,就可以得到表示该逻辑函数的波形图。这种波形图(Waveform)也称为时序图(Timing Diagram).
如果用时序图来描述上面的逻辑函数,只需要将上面逻辑图中的输入变量与对应的输出变量取值依照时间顺排列起来,就可以得到想要的波形图如下:
(五)、各类表示方法间的互相转换方法
-
真值表与逻辑函数式的相互转换:
- 找出真值表中使用逻辑函数Y=1的输入变量取值的组合
- 每组输入变量取值的组合对应一个乘积项,其中取值为1的写入原变量,取值为0的写入反变量。
- 将这些乘积项相加,即可以得到Y的逻辑函数式。
例如:已知一个奇偶判别函数的真值表如下图,写入它的逻辑函数式:
解:由真值表可见,只有当A、B、C三个输入变量中两个同时为1时,Y才为1,因此,在输入变量取值以下三种情况时,Y才将等于1:
A
=
0
、
B
=
1
、
C
=
1
A
=
1
、
B
=
0
、
C
=
1
A
=
1
、
B
=
1
、
C
=
0
A = 0 、B = 1、C = 1 \\ A = 1 、B = 0、C = 1 \\ A = 1 、B = 1、C = 0
A=0、B=1、C=1A=1、B=0、C=1A=1、B=1、C=0
而当
A
=
0
、
B
=
1
、
C
=
1
A = 0 、B = 1、C = 1
A=0、B=1、C=1时,必然使得乘积项A‘BC = 1,其他同理,因此Y的逻辑函数式就等于这三个乘积项的和,即:
Y
=
A
′
B
C
+
A
B
′
C
+
A
B
C
′
Y = A'BC + AB'C + ABC'
Y=A′BC+AB′C+ABC′
-
逻辑函数式与逻辑图的相互转换:
从给定的逻辑函数式转换为相应的逻辑图时,只需要用逻辑图形符号代替逻辑函数式中的逻辑运算符号并按照运算优先顺序将它们连接起来,就可以得到所有求的逻辑图;
而在从给定的逻辑图转换为对应的逻辑函数式时,只要从逻辑图的输入端到输出端逐级写出每个图形符号的输出逻辑式,就可以在输出端得到所求的逻辑函数式。
-
时序图与真值表的相互转换:
在从已知的逻辑函数波形图求对应的真值表时,首先需要从波形图上找出每个时间段里输入变量与函数输出的取值,然后将这些输入、输出取值对应列表,就得到了所求的真值表。
在将真值表转换为波形图时,只需要将真值表中所有的所有的输入变量变量与对应的输出变量取值依次排列画成以时间为横轴的波形,就是得到了所求的波形图。
2.5.3 逻辑函数的两种标准形式
(一)、最小项和最大项
1.最小项
在n个变量逻辑函数中,如m为包含n个因子的乘积项,而且这n个变量均以原变量或反变量的形式在m中出现一次,则称m为该组变量的最小项。
例如:
A、B两个变量的最小项有 A B 、 A ′ B 、 A B ′ 、 A ′ B ′ AB、A'B、AB'、A'B' AB、A′B、AB′、A′B′共4个(即 2 2 2^2 22个)。因此,n变量的最小项应该有 2 n 2^n 2n个。
输入变量的每一组取值都使一个对应的最小项的值等于1。例如,在三变量A、B、C最小项中,当A = 1、B = 0、C = 1时, A B ′ C = 1 AB'C =1 AB′C=1。如果把 A B ′ C AB'C AB′C取值看做101,那么它所表示的十进制数就是5.为了后面使用方便,将 A B ′ C AB'C AB′C这个最小项记作 m 5 m_5 m5.同理可得三变量最小项的编号表,如下:
同理可知,我们将A、B、C、D这4个变量的16个最小项记作 m 0 m_0 m0~ m 1 5 m_15 m15.
最小项的定义出发可以证明它具有如下性质:
-
在输入变量的任何取值下必有一个最小项,而且仅有一个最小项的值为1。
-
全体最小项之和为1。
-
任意两个最小项的乘积为0.
-
具有相邻性的两个最小项之后可以合并成一项,并消去一堆因子。
如 A ′ B C ′ A^{'}BC^{'} A′BC′和 A B C ′ ABC^{'} ABC′只有一个因子不同。那么它们就具有相邻性。因此这个两个最小项相加时定能合成一项并将一对不同的因子消去:
A ′ B C ′ + A B C ′ = ( A ′ + A ) B C ′ = 1 ⋅ B C ′ = B C ′ A'BC' + ABC' \\ =(A'+A)BC' \\ =1 \cdot BC' \\ =BC' A′BC′+ABC′=(A′+A)BC′=1⋅BC′=BC′
2.最大项
在n变量逻辑函数中,若M为n个变量之和,而且这n个变量均以原变量或反变量的形式在M中出现一次,则称M为该组变量的最大项。
例如,三变量A、B、C的最大项有: ( A ′ + B ′ + C ′ ) (A^{'}+B^{'}+C^{'}) (A′+B′+C′)、 ( A + B ′ + C ′ ) (A+B^{'}+C^{'}) (A+B′+C′)、 ( A ′ + B + C ′ ) (A^{'}+B+C^{'}) (A′+B+C′)、 ( A ′ + B ′ + C ) (A^{'}+B^{'}+C) (A′+B′+C)、 ( A + B + C ′ ) (A+B+C^{'}) (A+B+C′)、 ( A ′ + B + C ) (A^{'}+B+C) (A′+B+C)、 ( A + B ′ + C ) (A+B^{'}+C) (A+B′+C)、 ( A + B + C ) (A+B+C) (A+B+C)共8个,即( 2 3 2^3 23)。
因此,对于n个变量则有 2 n 2^{n} 2n个最大学校。因此可先,n个变量的最大项数目和最小数目是相等的。
输入变量的每一组取值都使一个对应的最大项的值为0.例如,在三变量A、B、C的最大项中,当A=1、B=0、C=1时, ( A ′ + B + C ′ ) = 0 (A' + B+ C')=0 (A′+B+C′)=0.若将使最大项为0的ABC的取值视为一个二进制数,并以其对应的十进制数给最大项编号,则(A’ + B + C’)可记作 M 5 M_5 M5。同理,三变量的最大项编号如下所示:
根据最大项的定义,同样可以得到它的主要性质:
- 在输入变量的任何取值下必有一个最大项,而且只有一个最大项的值为0
- 全体最大项之积为0
- 任意两个最大项之和为1
- 只有一个变量不同的两个最大项的乘积等于各相同变量之和。
最大项和最小项之间存着如下关系:
M
i
=
m
i
′
M_i = mi^{'}
Mi=mi′
例如:
m
0
=
A
′
B
′
C
′
m_0 = A'B'C'
m0=A′B′C′,则
m
0
′
=
(
A
′
B
′
C
′
)
′
=
A
+
B
+
C
m_0^{'} = (A'B'C')' = A+B+C
m0′=(A′B′C′)′=A+B+C
(二)、逻辑函数的最小项之和形式
首先将给定的逻辑函数式化为若干乘积项之和的形式(也称为“积之和”),然后再利用基本公式 A + A ′ = 1 A + A^{'} = 1 A+A′=1将每个乘积项中缺少的因子补全,浙江就可以将”与或“的形式化为最小项之和的标准形式。
例如: Y = A B C ′ + B C Y = ABC' + BC Y=ABC′+BC
则可以化为: Y = A B C ′ + ( A + A ′ ) B C = A B C ′ + A B C + A ′ B C = m 3 + m 6 + m 7 Y = ABC' + (A + A')BC = ABC' +ABC + A'BC = m_3 + m_6 + m_7 Y=ABC′+(A+A′)BC=ABC′+ABC+A′BC=m3+m6+m7
(三)、逻辑函数的最大项之和形式
利用逻辑代数的基本公式和定理,首先我们一定把任何一个逻辑函数式化为若干多项式相乘的的“或与”形式(也称“和之积”)。然后再利用基本公式 A A ′ = 0 AA'=0 AA′=0将每个多项式中缺少的变量补齐,就可以将函数式的或与形式化成最大项之积的形式。
例如:将逻辑函数 Y = A ′ B + A C Y = A'B +AC Y=A′B+AC化为最大项之积的形式。
首先利用公式
A
+
B
C
=
(
A
+
B
)
(
A
+
C
)
A+BC = (A+B)(A+C)
A+BC=(A+B)(A+C)将Y画成或与的形式:
Y
=
A
′
B
+
A
C
=
(
A
′
B
+
A
)
(
A
′
B
+
C
)
=
(
B
+
A
)
(
A
′
+
C
)
(
B
+
C
)
Y = A'B + AC \\ = (A'B+A)(A'B+ C) \\ = (B+A)(A'+C)(B+C)
Y=A′B+AC=(A′B+A)(A′B+C)=(B+A)(A′+C)(B+C)
然后在第一个括号内加入一项CC’,在第二个括号里面加入BB’,在第三个括号加入AA’,于是得到:
Y
=
(
A
+
B
+
C
C
′
)
(
A
′
+
B
B
′
+
C
)
(
A
A
′
+
B
+
C
)
=
(
A
+
B
+
C
)
(
A
+
B
+
C
′
)
(
A
′
+
B
+
C
)
(
A
′
+
B
′
+
C
)
(
A
+
B
+
C
)
Y = (A +B+CC')(A'+BB'+C)(AA'+B+C) \\ =(A+B+C)(A+B+C')(A'+B+C)(A'+B'+C)(A+B+C)
Y=(A+B+CC′)(A′+BB′+C)(AA′+B+C)=(A+B+C)(A+B+C′)(A′+B+C)(A′+B′+C)(A+B+C)
或者写作:
Y
(
A
,
B
,
C
,
D
)
=
∏
M
(
0
,
1
,
4
,
6
)
Y(A,B,C,D) = \prod {M(0,1,4,6)}
Y(A,B,C,D)=∏M(0,1,4,6)
2.5.4 逻辑函数形式的变换
上面中可以通过运算给定的与或形式逻辑函数式变换为最小项之和的形式或最大项之积的形式。而在实际选用电器器件组成逻辑电路时,由于选用不同逻辑功能类型的器件,还必须将逻辑函数式变换成相应的形式。
两个与门和一个或门的
Y
=
A
C
+
B
C
′
Y = AC + BC'
Y=AC+BC′才能产生Y。但如果器件供货的现实,只能全部用与非门实现这个电路,这时候就需要将式子中的与或形式变换成全部有与非组成的与非-与非形式。因此可以这样:
Y
=
A
C
+
B
C
′
=
(
(
A
C
+
B
C
′
)
′
)
′
=
(
(
A
C
)
′
(
B
C
′
)
′
)
′
Y =AC + BC' \\ = ((AC + BC')')' \\ = ((AC)'(BC')')'
Y=AC+BC′=((AC+BC′)′)′=((AC)′(BC′)′)′
而如果要求使用具有与或非门电路来实现上面的函数式,就需要式子转换为与或非得形式。根据逻辑代数的基本公式
A
+
A
′
=
1
A + A' = 1
A+A′=1和代入定理可知,任何一个逻辑函数Y都遵守公式
Y
+
Y
′
=
1
Y + Y' =1
Y+Y′=1.又因为全部最小项之和恒等于1,所以不包含在Y中的最小项之和就是Y’。将这些最小项之和再求反,就得到了Y,而且是与或非的形式的逻辑函数式。
例如:将逻辑函数 Y = A C + B C ′ Y = AC+BC' Y=AC+BC′化为或非形式:
解:首先将Y展开为最小项之和的形式,得到:
Y
=
A
C
(
B
+
B
′
)
+
B
C
′
(
A
+
A
′
)
=
A
B
C
+
A
B
′
C
+
A
B
C
′
+
A
′
B
C
′
Y = AC(B +B')+BC'(A +A') \\ =ABC + AB'C + ABC' + A'BC'
Y=AC(B+B′)+BC′(A+A′)=ABC+AB′C+ABC′+A′BC′
或者写作:
Y
(
A
,
B
.
C
)
=
∑
m
(
2
,
5
,
6
,
7
)
Y(A,B.C) = \sum {m(2,5,6,7)}
Y(A,B.C)=∑m(2,5,6,7)
将Y中不包含的最小项相加,即得;
Y
’
(
A
,
B
,
C
)
=
∑
m
(
0
,
1
,
3
,
4
)
Y’(A ,B,C) = \sum{m(0,1,3,4)}
Y’(A,B,C)=∑m(0,1,3,4)
再将上面的式子求反,就得到了Y的与或非式:
Y
=
(
Y
)
′
=
(
m
0
+
m
1
+
m
3
+
m
4
)
′
=
(
A
′
B
′
C
′
+
A
B
′
C
′
+
A
′
B
′
C
+
A
′
B
C
)
′
=
(
B
′
C
′
+
A
′
C
)
′
Y = (Y)' = (m_0 + m_1 + m_3 + m_4)' \\ =(A'B'C'+AB'C' + A'B'C + A'BC)' \\ =(B'C' + A'C)'
Y=(Y)′=(m0+m1+m3+m4)′=(A′B′C′+AB′C′+A′B′C+A′BC)′=(B′C′+A′C)′
如果要求全部用或非门来实现逻辑函数,应将逻辑函数式化为全部由或非运算组成的形式,即或非-或非的形式。这时可以先将逻辑函数化为与或非得形式,然后再利用反演定理将其中的每个乘积项化为或非形式,这样就得到了或非-或非函数式。因次,假如已经得到了上面的与或非式子
Y
=
(
B
′
C
′
+
A
′
C
)
′
Y=(B'C' + A'C)'
Y=(B′C′+A′C)′,则按照方法转换为或非-或非形式:
Y
=
(
B
′
C
′
+
A
′
C
)
′
=
(
(
B
+
C
)
′
+
(
A
+
C
′
)
′
)
′
Y = (B'C' + A'C)' \\ = ((B + C)' + (A + C')')'
Y=(B′C′+A′C)′=((B+C)′+(A+C′)′)′
2.6 逻辑函数的化简方法
同一个逻辑函数越简单,它表示的逻辑关系越明显,同时也有利于最少的电子器件实现这个逻辑函数。因此,需要通过化简手段来找出逻辑函数的最简形式。
在与或逻辑函数式中,若其中包含的乘积项已经最少,而且每个乘积项里的因子不能再减少时,称此逻辑函数式为最简形式。对与或逻辑式最简形式的定义对其他形式的逻辑式也同样适用,即函数式中相加的乘积项不能再减少,而且每项中相乘的乘积因子不能再减少,则函数式为最简形式。
化简逻辑函数的目的就是消除多余乘积项和每个乘积项中多余的因子,以得到逻辑函数式的最简形式。常用的化简方法有公式化简法、卡诺图化简法以及适用于编制计算机辅助分析程序的Q-M法等。
2.6.1 公式化化简
公式法化简没有固定的步骤,主要原理就是反复使用逻辑代数的基本公式和常用公式消去函数式中多余的乘积项和多余的因子,以求得函数式的最简形式。
- 并项法:利用公式 A B + A B ′ = A AB + AB' = A AB+AB′=A可以将两项合并一项,并消去B和B’这一对因子。而且,根据代入定理A和B均可以是任何复杂的逻辑式;
- 吸收法:利用公式 A + A B = A A+AB = A A+AB=A可将AB项消去,同理,AB项也可以是复杂的逻辑式;
- 消项法:利用公式$AB + A’C + BC = AB + A’C 及 及 及AB + A’C + BCD = AB +AC’$将BC或者BCD消去。其中A、B、C、D均可以是复杂逻辑式;
- 消因子法:利用公式 A + A ′ B = A + B A + A'B = A + B A+A′B=A+B可将A’B中的A’消去。其中A、B均可以是复杂逻辑式;
- 配项法:
- 利用公式 A + A = A A + A = A A+A=A可以在逻辑函数式中重复写入某一项,有时能获得更加简单的化简结果;
- 利用基本公式中 A + A ′ = 1 A + A' = 1 A+A′=1可以在函数式中的某一项上乘以 ( A + A ′ ) (A + A') (A+A′),然后拆成两项分别与其他项合并,有时能得到更加简单的化简结果;
在化简复杂的逻辑函数时,往往需要灵活、交替地综合运用上述方法,才能得到最后的化简结果。
2.6.2 卡诺图化简
一、逻辑函数的卡诺图表示法
将n变量的全部最小项各用一恶搞小方块表示,并使具有逻辑相邻性的最小项在几何位置上也相邻地配列起来,所以得到的图形称为n变量最小项的卡诺图。
下面是2到5变量最小项的卡诺图。图形两侧标注的0和1表示使对应小方格内最小项为1的变量取值。同时,这些-和1组成的二进制数所对应的十进制数大小也就是对应的最小项的编号。
注意
:为了保证图中几何位置相邻的最小项在逻辑上也具有相邻性,这些数码不能按照自然二进制从小到大地顺序排列,而必须按照图中的方式排列,以确保相邻的两个最小项仅有一个变量是不同的。
从上面卡诺图可以看出,处在任何一行或者一列两端的最小项也仅有一个变量不同,所以说它们也具有逻辑相邻性。因此从几何位置应当将卡诺图看成是上下、左右闭合的图形状;
而在变量数量大于、等于5之后,仅仅用几何图形在二维空间的相邻性来表示逻辑相邻性来表示逻辑相邻性已经不够了。例如在上面的(d)所示的5变量最小项的卡诺图中,除了几何位置相邻的最小项具有逻辑相邻以外,以图中双竖线为轴左右对称位置上的最小项有具有逻辑相邻性。
既然任何一个逻辑函数都能表示为若干最小项之和的形式,那么自然也就可以设法用卡诺图来表示任何一个卡诺图,具体方法:
首先将逻辑函数化为最小项之和的形式,然后在卡诺图上与这些最小项对应的位置填入1,在其余位置上填入0,就得了表示该逻辑函数的卡诺图。也就是说,任何一个逻辑函数都等于它的卡诺图中填入1的那些最小项之和。
例如:卡诺图表示逻辑函数 Y = A ′ B ′ C ′ D + A ′ B D ′ + A C D + A B ′ Y = A'B'C'D + A'BD'+ACD +AB' Y=A′B′C′D+A′BD′+ACD+AB′
解:首先将逻辑函数Y化为最小项之和的形式:
KaTeX parse error: No such environment: flalign at position 8: \begin{̲f̲l̲a̲l̲i̲g̲n̲}̲ Y = A'B'C'D + …
然后画出4变量的最小项的卡诺图,在对应于函数式个最小项的位置上填入1,其余位置填入0,然后就得到如下图所示的函数Y的卡诺图:
二、用卡诺图化简逻辑函数
利用卡诺图化简逻辑函数的方法称为卡诺图化简法或图像化简法。化简的基本原理是:具有相邻性的最小项可以合并,并消去不同的因子。由于在卡诺图上几何位置相邻与逻辑上的相邻是一致性的,因而从卡诺图上能直观地找出那些具有相邻的最小项,将其合并化简。
-
合并最小项的原则
若两个最小项相邻,则可以合并为1项并消去一对因子,合并后只剩公共因子。在下图(a)和(b)中画出了两个最小项相邻的几种可能情况。例如(a)中 A ′ B C ( m 3 ) A'BC(m_3) A′BC(m3)和 A B C ( m 7 ) ABC(m_7) ABC(m7)相邻,故可以合并为:
A ′ B C + A B C = ( A ′ + A ) B C = B C A'BC + ABC = (A'+A)BC =BC A′BC+ABC=(A′+A)BC=BC
合并后将A和A’一对因子消去,只剩公共因子B和C。若四个最小项相邻并排列成一个矩形组,则可以合并为一项并消去两对因子,合并后的结果中只包含公共因子;
如在上图的(d)中, A ′ B C ′ D ( m 5 ) A'BC'D(m_5) A′BC′D(m5)、 A ′ B C D ( m 7 ) A'BCD(m_7) A′BCD(m7)、 A B C ′ D ( m 13 ) ABC'D(m_{13}) ABC′D(m13)、 A B C D ( m 15 ) ABCD(m_{15}) ABCD(m15)相邻,因此可以合并,合并后得到:
A ′ B C ′ D + A ′ B C D + A B C ′ D + A B C D = A ′ B D ( C ′ + C ) + A B D ( C ′ + C ) = A ′ B D + A B D = ( A ′ + A ) B D = B D A'BC'D + A'BCD+ ABC'D + ABCD \\ = A'BD(C'+C) + ABD(C' + C) \\ = A'BD + ABD \\ = (A'+A)BD \\ = BD A′BC′D+A′BCD+ABC′D+ABCD=A′BD(C′+C)+ABD(C′+C)=A′BD+ABD=(A′+A)BD=BD
可见合并后消去了A、A’和C、C’两对因子,只剩下四个最小项的公共因子B和D。同理,若八个最小相邻并且排成一个矩形组,则可以合并为一项并消去三对因子。合并后的结果中只包含公共因子。
-
卡诺图化简法的步骤:
用卡诺图化简逻辑函数时可按照如下步骤进行:
(1)将函数化为最小项之和的形式
(2)画出表示该逻辑函数的卡诺图
(3)找出可以合并的最小项
(4)选取化简后的乘积项,选取的原则是:
① 这些乘积项应包含函数式中所有的最小项(应覆盖卡诺图中所有的1)。
② 所用的乘积项数目最少也就是可合并的最小项组成的矩形组数目最少。
③ 每个乘积项包含的因子最少。也就是每个可合并的最小项矩形组中应包含尽量多的最小项。
2.6.3 *奎恩-麦克拉斯基化简法(Q-M法)
虽然卡诺图化简法具有直观、简单的优点,但有存在很大的局限性。首先,在函数的输入逻辑变量较多时(例如大于5以后),便失去了直观的优点.其次许多情况下,化简是凭设计者的经验来合并最小项才得到的最简结果。公式法化简虽然不收输入变量数目的影响,但是由于化简工程没有固定的、通用的步骤,所以通用不适用于计算机的辅助化简;
而奎恩和麦克拉斯基提出的用列表方式进行化简的方法则有一定的规则和步骤可遵循,可以较好地克服公式法化简和卡诺图化简在这方面的局限性,因此较好的适用于计算机辅助化简程序,简称Q-M化简法。
Q-M法基本原理仍然是通过合并相邻最小项并消去多余因子而求得逻辑函数的最简与或式。结合下面例子具体介绍一下Q-M法基本原理和化简步骤:
假设需要化简的五变量的逻辑函数式为:
Y
(
A
,
B
,
C
,
D
,
E
)
=
A
B
′
C
D
E
′
+
A
′
C
′
D
′
E
′
+
A
′
B
′
C
′
D
+
A
′
B
D
E
′
+
B
C
D
E
+
A
B
C
′
(
D
⨁
E
)
′
Y(A,B,C,D,E) = AB'CDE' +A'C'D'E'+A'B'C'D+A'BDE'+BCDE+ABC'(D\bigoplus{E})'
Y(A,B,C,D,E)=AB′CDE′+A′C′D′E′+A′B′C′D+A′BDE′+BCDE+ABC′(D⨁E)′
使用Q-M法的化简步骤如下:
(1)将函数化简为最小项之和的形式,列出最小项编码表。如下
将上式化简为最小项之和形式后得到:
Y
(
A
,
B
,
C
,
D
,
E
)
=
A
B
′
C
D
E
′
+
A
′
C
′
D
′
E
′
+
A
′
B
′
C
′
D
+
A
′
B
D
E
′
+
B
C
D
E
+
A
B
C
′
(
D
⨁
E
)
′
=
A
B
′
C
D
E
′
+
A
′
B
′
C
′
D
′
E
′
+
A
′
B
C
′
D
′
E
′
+
A
′
B
′
C
′
D
E
′
+
A
′
B
′
C
′
D
E
+
A
′
B
′
C
D
E
′
+
A
B
C
D
E
+
A
′
B
C
D
E
+
A
B
C
′
D
′
E
′
+
A
B
C
′
D
E
=
A
′
B
′
C
′
D
′
E
′
+
A
′
B
′
C
′
D
E
′
+
A
′
B
′
C
′
D
E
+
A
′
B
′
C
′
D
′
E
′
+
A
′
B
′
C
′
D
E
′
+
A
′
B
C
D
E
+
A
B
′
C
D
E
′
+
A
B
C
′
D
′
E
′
+
A
B
C
′
D
E
+
A
B
C
D
E
=
∑
m
(
0
,
2
,
3
,
8
,
10
,
14
,
15
,
22
,
24
,
27
,
31
)
Y(A,B,C,D,E) = AB'CDE' +A'C'D'E'+A'B'C'D+A'BDE'+BCDE+ABC'(D\bigoplus{E})' \\ = AB'CDE' +A'B'C'D'E'+A'BC'D'E'+A'B'C'DE'+A'B'C'DE+A'B'CDE'+ABCDE +A'BCDE+ABC'D'E' +ABC'DE\\ = A'B'C'D'E'+ A'B'C'DE'+A'B'C'DE+A'B'C'D'E'+A'B'C'DE'+A'BCDE+AB'CDE'+ABC'D'E'+ABC'DE+ABCDE\\ = \sum{m(0,2,3,8,10,14,15,22,24,27,31)}
Y(A,B,C,D,E)=AB′CDE′+A′C′D′E′+A′B′C′D+A′BDE′+BCDE+ABC′(D⨁E)′=AB′CDE′+A′B′C′D′E′+A′BC′D′E′+A′B′C′DE′+A′B′C′DE+A′B′CDE′+ABCDE+A′BCDE+ABC′D′E′+ABC′DE=A′B′C′D′E′+A′B′C′DE′+A′B′C′DE+A′B′C′D′E′+A′B′C′DE′+A′BCDE+AB′CDE′+ABC′D′E′+ABC′DE+ABCDE=∑m(0,2,3,8,10,14,15,22,24,27,31)
用1表示最小项中的原变量,用0表示最小项中的反变量,就得到了表示最小项的编码表,如下所示:
(2)按包含1的个数将最小项分组,若下表最左一列所示。
(3)合并相邻的最小项。
将上表中最左边一列中每一组的每一个最小项与相邻组里所有的最小项逐一比较,若仅有一个因子不同,则定可以合并,并消去不同的因子。消去的因子用“—”号表示,将合并的结果列与上表的第二列中,同时在第一列中可以合并的最小项右边标以“√”号。
按照同样的方法再将第二列中的乘积项合并,合并后的结果写在第三列中。
如此进行下去,知道不能再合并为止。
(4)选择最少的乘积项
只要将上表中在合并过程中没有用到过的那些乘积项相加,自然就包含了函数Y的全部最小项,故得:
Y
(
A
,
B
,
C
,
D
,
E
)
=
P
1
+
P
2
+
P
3
+
P
4
+
P
5
+
P
6
+
P
7
+
P
8
Y (A,B,C,D,E) = P_1 + P_2 + P_3 + P_4 + P_5 +P_6 + P_7 + P_8
Y(A,B,C,D,E)=P1+P2+P3+P4+P5+P6+P7+P8
然后上式也不一定是最简与或式。为了进一步上式化简,需要将
P
1
−
P
8
P_1 - P_8
P1−P8包含的最小项列成下表。因此表中带圆圈的最小项仅包含在一个乘积项中,所以化简结果中一定包含他们所在的这些乘积项,即P1,P2,P3,P7和P8.而且选取了这五项之和以后,已经包含了除
m
14
m_{14}
m14和
m
15
m_{15}
m15以外的所有Y的最小项。
剩下的问题就是要确定化简中是否应包含了 P 4 P_4 P4、 P 5 P_5 P5和 P 6 P_6 P6了。为此,可以将上表中有关 P 4 P_4 P4、 P 5 P_5 P5、 P 6 P_6 P6的部分简化成表格,如下所示:
从上表可以看出,
P
4
P_4
P4行所有的1和
P
6
P_6
P6行所有的1皆与
P
5
P_5
P5中的1重合,即
P
5
P_5
P5中的最小项包含了
P
4
P_4
P4和
P
6
P_6
P6的所有最小项,因此可以将
P
4
P_4
P4和
P
6
P_6
P6两行删除掉。即可以将上面式子中的
P
4
P_4
P4和
P
6
P_6
P6两项去掉,从而得到最后的化简结果,如下:
Y
(
A
,
B
,
C
,
D
,
E
)
=
P
1
+
P
2
+
P
3
+
P
5
+
P
7
+
P
8
=
A
B
′
C
D
E
′
+
A
′
B
′
C
′
D
+
B
C
′
D
′
E
′
+
A
′
B
C
D
+
A
B
D
E
+
A
′
C
′
E
′
Y(A,B,C,D,E) =P_1 + P_2 + P_3 + P_5 + P_7 + P_8 \\ = AB'CDE' + A'B'C'D +BC'D'E'+A'BCD +ABDE +A'C'E'
Y(A,B,C,D,E)=P1+P2+P3+P5+P7+P8=AB′CDE′+A′B′C′D+BC′D′E′+A′BCD+ABDE+A′C′E′
虽然Q-M化简法看起来繁琐,但是适合计算机复制化简。
2.7 具有无关项的逻辑函数及其化简
2.7.1 约束项、任意项和逻辑函数式中的无关项
在分析某些具体的逻辑函数时,经常会遇到输入的变量的取值不是任意的。对于输入变量取值所加的限制称为约束。同时将这一组变量称为具有约束的一组变量。
例如,有三个逻辑变量,他们分别表示一台电机的正转、反转和停止的命令,A =1表示正转、B=1表示反转,C=1表示停止。那么表示正转、反转和停止的逻辑函数可以写成:
Y
1
=
A
B
′
C
′
(
正转
)
Y
2
=
A
′
B
C
′
(
反转
)
Y
3
=
A
′
B
′
C
(
停止
)
Y_1 = AB'C'(正转) \\ Y_2 = A'BC'(反转)\\ Y_3 = A'B'C (停止)
Y1=AB′C′(正转)Y2=A′BC′(反转)Y3=A′B′C(停止)
因为电机任何时候只能执行其中的一个命令,所以不允许两个以上的变量同时为1.ABC的取值只可能是001,010,100;因此,A、B、C是一组具有约束的变量。
通常用约束条件来描述约束的具体内容,显然不是很方便。由于每一组输入变量的取值都是一个,而且仅有一个最小项的值为1,所以当限制某些输入变量的取值不能出现时,可以用他们对应的最小项恒等0来表示。这样约束条件就可以表示为:
{
A
′
B
′
C
′
=
0
A
′
B
C
=
0
A
B
′
C
=
0
A
B
C
′
=
0
A
B
C
=
0
\begin{cases} A'B'C' = 0\\ A'BC =0 \\ AB'C = 0 \\ ABC'=0\\ ABC = 0 \end{cases}
⎩
⎨
⎧A′B′C′=0A′BC=0AB′C=0ABC′=0ABC=0
或写成
A
′
B
′
C
′
+
A
′
B
C
+
A
B
′
C
+
A
B
C
′
+
A
B
C
=
0
A'B'C' + A'BC + AB'C +ABC' + ABC = 0
A′B′C′+A′BC+AB′C+ABC′+ABC=0
将这些恒等于0的最小项称为函数
Y
1
Y_1
Y1、
Y
2
Y_2
Y2和
Y
3
Y_3
Y3的约束项。
在存在约束项的情况下,由于约束项的值始终等于0,所以既可以将约束项写进逻辑函数式中,也可以将约束项从函数式中删掉,而不影响函数值,
有时还会遇到另外一种情况,就是在输入变量的某些取值下的函数值是1还是0皆可以,并不影响电路的功能。在这些变量取值下,其值等于1的那些最小项称为任意项。
以上面的控制电动机正转、反转和停止控制为例。如果当A、B、C三个控制变量中同时出现两个为1或者全部为0时,电路能自动切断供电电源,那么此时 Y 1 Y_1 Y1、 Y 2 Y_2 Y2和 Y 3 Y_3 Y3等于1还是0是都无关紧要,因为此时电动机收到了保护而停止运行。
例如:当A=B=C时,对于最小项为 A B C ( m 7 ) = 1 ABC(m_7)=1 ABC(m7)=1
-
如果把最小项写入Y1式中,则当A=B=C=1时,Y1 =1;
-
如果没有把最小项写入Y1中,则当A=B=C=1时,Y1 =0;
因为这时候Y1=0或者1都是允许的,所以即可以把ABC这个最小项写入Y1式子中也可以不写入;因此我们把ABC 称为逻辑函数Y1的任意项。同理,在这个例子中A’B’C’、A’BC、AB’C、ABC’也是 Y 1 Y_1 Y1、 Y 2 Y_2 Y2和 Y 3 Y_3 Y3的任意项。
因为使约束项的取值等于1的输入变量取值是不允许出现的,所以约束项的值始终为0.而任意项则不同,在函数的运行过程中,有可能出现使任意项取值为1的输入变量取值。
我们将约束项和任意项统称为逻辑函数中无关项。这里所说的“无关”是指是把这些最小项写入逻辑函数式无关紧要,可以写入也可以删除。
在上面的卡诺图化简中讲到,首先要逻辑函数化简为最小项之和的形式,然后在卡诺图中找到最小项对应位置上填入1,其他位置填入0。既然无关项即可以认为包含在函数式中,也可以认为不包含,那么在卡诺图中用 × \times ×(或者$\emptyset $)表示无关项。在化简时,既可以认为是1也可以认为是0.
2.7.2 无关项在化简逻辑函数中的应用
化简具有无关项的逻辑函数时,如果能合理利用这些无关项,一般可以得到更简单的化简结果。通常的做法是加入的无关项应与函数式中尽可能多的最小项(包括原有的最小项和已写入的无关项)具有逻辑相邻性。
在合并最小项时,究竟把卡诺图中的 × \times ×看做1还是0,应该根据得到的相邻最小项矩阵的组合最大、而且矩阵组合数最少为原则。