- 在《格:偏序格与代数格》中已经基本介绍了格作为偏序集合和代数系统各自是如何定义的,以及具有特殊性质的格:分配格、有补格以及综合两者的有补分配格。
- 有补分配格也被称为布尔格,定义一元运算 —— 补 ′ ' ′,即可得到布尔代数: < B , ∗ , ⊕ , ′ , 0 , 1 > \big<B,*,\oplus,',0,1\big> ⟨B,∗,⊕,′,0,1⟩
布尔代数.
- 【定义】给定代数系统 < B , ∗ , ⊕ > \big<B,*,\oplus\big> ⟨B,∗,⊕⟩,其中 ∗ , ⊕ *,\oplus ∗,⊕ 是定义在 B B B 上的二元运算,如果对于任意的 a , b , c ∈ B a,b,c\in B a,b,c∈B,都有下面四条性质成立: a ∗ b = b ∗ a ; a ⊕ b = b ⊕ a a*b=b*a~;~a\oplus b=b\oplus a a∗b=b∗a ; a⊕b=b⊕a a ∗ ( b ⊕ c ) = ( a ⊕ b ) ∗ ( a ⊕ c ) ; a ⊕ ( b ∗ c ) = ( a ∗ b ) ⊕ ( a ∗ c ) a*(b\oplus c)=(a\oplus b)*(a\oplus c)~;~a\oplus(b*c)=(a*b)\oplus(a*c) a∗(b⊕c)=(a⊕b)∗(a⊕c) ; a⊕(b∗c)=(a∗b)⊕(a∗c) a ∗ 1 = 1 ; a ⊕ 0 = a a*1=1~;~a\oplus0=a a∗1=1 ; a⊕0=a ∃ a ′ ∈ B , a ∗ a ′ = 0 ; a ⊕ a ′ = 1 \exist~a'\in B,a*a'=0~;~a\oplus a'=1 ∃ a′∈B,a∗a′=0 ; a⊕a′=1那么我们称代数系统 < B , ∗ , ⊕ > \big<B,*,\oplus\big> ⟨B,∗,⊕⟩ 为布尔代数.
- 【例】设 B = { 0 , 1 } B=\{0,1\} B={0,1},运算 ∗ , ⊕ , ′ *,\oplus,' ∗,⊕,′ 由下面三表格定义:
* | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
⊕ \oplus ⊕ | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 1 |
a a a | a ′ a' a′ |
---|---|
0 | 1 |
1 | 0 |
- 上述代数 < { 0 , 1 } , ∗ , ⊕ , ′ , 0 , 1 > \big<\{0,1\},*,\oplus,',0,1\big> ⟨{0,1},∗,⊕,′,0,1⟩ 能够满足布尔代数的定义要求,它是一个二元素布尔代数,二元素布尔代数是哈斯图为链的唯一布尔代数。
- 【例】给定非空集合
S
S
S,
ρ
(
S
)
\rho(S)
ρ(S) 为其幂集,那么代数
<
ρ
(
S
)
,
⋂
,
⋃
,
¬
,
Φ
,
S
>
\big<\rho(S),\bigcap,\bigcup,\neg,\Phi,S\big>
⟨ρ(S),⋂,⋃,¬,Φ,S⟩ 能够满足布尔代数的定义,基于其特殊性,我们将其命名为集合代数。根据集合与其幂集之间的关系,我们知道如果
∣
S
∣
=
N
\big|S\big|=N
∣∣S∣∣=N,那么
∣
ρ
(
S
)
∣
=
2
N
.
\big|\rho(S)\big|=2^N.
∣∣ρ(S)∣∣=2N. 下图是集合势分别为
1
,
2
,
3
1,2,3
1,2,3 时上述布尔代数的哈斯图,其偏序关系为
⊆
.
\subseteq.
⊆.
- 稍后我们会看到上述布尔代数对于有限布尔代数的重要意义。
子布尔代数.
- 布尔代数作为代数系统,可以使用《代数系统》中的抽象代数研究方法进行更多性质的发现,例如给定布尔代数 < B , ∗ , ⊕ , ′ , 0 , 1 > \big<B,*,\oplus,',0,1\big> ⟨B,∗,⊕,′,0,1⟩,如果 S ⊆ B S\subseteq B S⊆B、对于运算 ∗ , ⊕ , ′ *,\oplus,' ∗,⊕,′ 封闭并且 0 , 1 ∈ S 0,1\in S 0,1∈S,那么我们称代数 < S , ∗ , ⊕ , ′ , 0 , 1 > \big<S,*,\oplus,',0,1\big> ⟨S,∗,⊕,′,0,1⟩ 是 < B , ∗ , ⊕ , ′ , 0 , 1 > \big<B,*,\oplus,',0,1\big> ⟨B,∗,⊕,′,0,1⟩ 的子布尔代数.
- 实际检测子集 S S S 对应的代数系统是否为子布尔代数,只需要验证该子集关于运算 { ∗ , ′ } \{*,'\} {∗,′} 或 { ⊕ , ′ } \{\oplus,'\} {⊕,′} 是否封闭即可。
- 因为: a ⊕ b = ( a ′ ∗ b ′ ) ′ a\oplus b = \big(a'*b'\big)' a⊕b=(a′∗b′)′ a ∗ a ′ = 0 ; ( a ∗ a ′ ) ′ = 1 a*a'=0~;~\big(a*a'\big)'=1 a∗a′=0 ; (a∗a′)′=1以 { ∗ , ′ } \{*,'\} {∗,′} 封闭为例, ∀ a , b ∈ S \forall~a,b\in S ∀ a,b∈S,则有: a ′ , b ′ ∈ S a',b'\in S a′,b′∈S a ∗ a ′ = 0 ∈ S ; ( a ∗ a ′ ) ′ = 1 ∈ S a*a'=0\in S~;~\big(a*a'\big)'=1\in S a∗a′=0∈S ; (a∗a′)′=1∈S ( a ′ ∗ b ′ ) ′ = ( a ⊕ b ) ∈ S \big(a'*b'\big)'=\big(a\oplus b\big)\in S (a′∗b′)′=(a⊕b)∈S即由 S S S 关于 { ∗ , ′ } \{*,'\} {∗,′} 封闭能够推导出它关于 ⊕ \oplus ⊕ 封闭,并且 0 , 1 ∈ S . 0,1\in S. 0,1∈S.
- 【定理】布尔代数的任一子代数都是布尔代数。
- 【定理】两个布尔代数的积代数是布尔代数。
- 我们记
A
2
=
<
{
0
,
1
}
,
∗
,
⊕
,
′
,
0
,
1
>
A_2=\big<\{0,1\},*,\oplus,',0,1\big>
A2=⟨{0,1},∗,⊕,′,0,1⟩,计算它和自己的积代数:
A
2
×
A
2
=
A
2
2
=
<
{
<
0
,
0
>
,
<
0
,
1
>
,
<
1
,
1
>
,
<
1
,
0
>
}
,
∗
′
,
⊕
′
,
′
′
,
<
0
,
0
>
,
<
1
,
1
>
>
A_2\times A_2=A_2^2=\Big<\{\big<0,0\big>,\big<0,1\big>,\big<1,1\big>,\big<1,0\big>\},*',\oplus','',\big<0,0\big>,\big<1,1\big>\Big>
A2×A2=A22=⟨{⟨0,0⟩,⟨0,1⟩,⟨1,1⟩,⟨1,0⟩},∗′,⊕′,′′,⟨0,0⟩,⟨1,1⟩⟩任选两元素进行运算:
<
0
,
1
>
∗
′
<
1
,
1
>
=
<
0
∗
1
,
1
∗
1
>
=
<
0
,
1
>
\big<0,1\big>*'\big<1,1\big>=\big<0*1,1*1\big>=\big<0,1\big>
⟨0,1⟩∗′⟨1,1⟩=⟨0∗1,1∗1⟩=⟨0,1⟩再计算一次积代数:
A
2
×
A
2
×
A
2
=
A
2
3
=
<
{
0
,
a
,
b
,
c
,
d
,
e
,
f
,
1
}
,
∧
,
∨
,
¬
,
0
,
1
>
A_2\times A_2\times A_2=A_2^3=\Big<\{0,a,b,c,d,e,f,1\},\wedge,\vee,\neg,0,1\Big>
A2×A2×A2=A23=⟨{0,a,b,c,d,e,f,1},∧,∨,¬,0,1⟩注意在
A
2
3
A_2^3
A23 中改变了表示元素的符号。不难发现,从
A
2
A_2
A2 到
A
2
2
A_2^2
A22 再到
A
2
3
A_2^3
A23 分别对应了下图中的三个布尔代数:
- 那么 A 2 n A_2^n A2n 呢 ⋯ ⋯ \cdots\cdots ⋯⋯
布尔同态.
- 给定两个布尔代数: < A , ∗ , ⊕ , ′ , 0 , 1 > , < B , ⋂ , ⋃ , ¬ , α , β > \big<A,*,\oplus,',0,1\big>,\big<B,\bigcap,\bigcup,\neg,\alpha,\beta\big> ⟨A,∗,⊕,′,0,1⟩,⟨B,⋂,⋃,¬,α,β⟩,如果存在映射 f : A → B f:A\rightarrow B f:A→B 对 ∀ a , b ∈ A \forall~a,b\in A ∀ a,b∈A 满足: f ( a ∗ b ) = f ( a ) ⋂ f ( b ) f(a*b)=f(a)\bigcap f(b) f(a∗b)=f(a)⋂f(b) f ( a ⊕ b ) = f ( a ) ⋃ f ( b ) f\big(a\oplus b\big)=f(a)\bigcup f(b) f(a⊕b)=f(a)⋃f(b) f ( a ′ ) = ¬ f ( a ) f(a')=\neg f(a) f(a′)=¬f(a) f ( 0 ) = α ; f ( 1 ) = β f(0)=\alpha~;~f(1)=\beta f(0)=α ; f(1)=β那么称映射 f : A → B f:A\rightarrow B f:A→B 是一个布尔同态。
- 基于德●摩根律, ∗ * ∗ 和 ⊕ \oplus ⊕ 能够通过 ′ ' ′ 相互转化,因此实际只要验证了同态函数关于 { ∗ , ′ } \{*,'\} {∗,′} 或 { ⊕ , ′ } \{\oplus ,'\} {⊕,′} 的性质即可验证前三条。如果函数 h h h 只能保持运算 ∗ , ⊕ *,\oplus ∗,⊕,那么根据在《格:偏序格与代数格》中所定义的, h h h 是一个格同态,它不一定能够满足 f ( 0 ) = α , f ( 1 ) = β f(0)=\alpha,f(1)=\beta f(0)=α,f(1)=β,但由于格同态是保序的: ∀ a , b ∈ A , ( a ≤ b ) ⇒ ( f ( a ) ≤ ′ f ( b ) ) \forall~a,b\in A,(a\leq b)\Rightarrow\big(f(a)\leq' f(b)\big) ∀ a,b∈A,(a≤b)⇒(f(a)≤′f(b))因此原布尔代数中的上下界被映射到同态象 f ( A ) f(A) f(A) 中的上下界 —— f ( 0 ) , f ( 1 ) f(0),f(1) f(0),f(1),如果根据 f ( 0 ) , f ( 1 ) f(0),f(1) f(0),f(1) 定义补运算 ¬ \neg ¬,那么代数系统 < f ( A ) , ⋂ , ⋃ , ¬ , f ( 0 ) , f ( 1 ) > \big<f(A),\bigcap,\bigcup,\neg,f(0),f(1)\big> ⟨f(A),⋂,⋃,¬,f(0),f(1)⟩ 是布尔代数,映射 g : A → f ( A ) g:A\rightarrow f(A) g:A→f(A) 是一个布尔同态,虽然 f : A → B f:A\rightarrow B f:A→B 不是布尔同态。
- 根据上述分析,如果格同态映射
f
f
f 为满射函数,即对于
B
B
B 中的任意元素
b
b
b 都存在
a
∈
A
a\in A
a∈A 使得
f
(
a
)
=
b
f(a)=b
f(a)=b,再根据其保序性,那么必然有
f
(
0
)
=
α
,
f
(
1
)
=
β
f(0)=\alpha,f(1)=\beta
f(0)=α,f(1)=β,这一定理被称为满同态定理. 中南大学徐德智老师2019离散数学授课教案中图示如下:
原子表示.
- 原子表示针对有限布尔代数而言,即其载体 B B B 是有限集合。有限布尔代数的一个重要性质如下:任意有限布尔代数 < B , ∗ , ⊕ , ′ , 0 , 1 > \big<B,*,\oplus,',0,1\big> ⟨B,∗,⊕,′,0,1⟩ 同构于某一集合代数 < ρ ( S ) , ⋂ , ⋃ . ¬ , Φ , S > . \big<\rho(S),\bigcap,\bigcup.\neg,\Phi,S\big>. ⟨ρ(S),⋂,⋃.¬,Φ,S⟩.
- 这一性质在前面讨论二元素布尔代数与集合代数,以及积代数 A 2 n A_2^n A2n 时已经初见端倪,现对其进行形式化表述。
- 【覆盖】设 a , b a,b a,b 是格中的两个元素,如果 b ≤ a b\leq a b≤a 且 b ≠ a b\neq a b=a,并且不存在元素 x x x 满足 b < x < a b<x<a b<x<a,那么称元素 a a a 覆盖元素 b . b. b.
- 【原子】给定布尔代数 < B , ∗ , ⊕ , ′ , 0 , 1 > \big<B,*,\oplus,',0,1\big> ⟨B,∗,⊕,′,0,1⟩。如果 a ∈ B a\in B a∈B 满足 a a a 覆盖 0 0 0,那么称元素 a a a 是该布尔代数的一个原子.
- 【充要条件】元素 a a a 是布尔代数的原子,当且仅当在 a ≠ 0 a\neq 0 a=0 时(这是显然的),对于任意的 x ∈ B x\in B x∈B 有: ( x ∗ a = a ) ∨ ( x ∗ a = 0 ) \big(x*a=a\big)\vee\big(x*a=0\big) (x∗a=a)∨(x∗a=0)
- 【证明】充分性: 因为 a a a 是原子,所以 ( 0 ≤ a ) ∧ ( a ≠ 0 ) (0\leq a)\wedge(a\neq0) (0≤a)∧(a=0),并且 0 , a 0,a 0,a 之间没有元素,又因为 x ∗ a ≤ a x*a\leq a x∗a≤a,所以 ( x ∗ a = a ) ∨ ( x ∗ a = 0 ) . \big(x*a=a\big)\vee\big(x*a=0\big). (x∗a=a)∨(x∗a=0).
- 必要性: 假设满足 ( x ∗ a = a ) ∨ ( x ∗ a = 0 ) , a ≠ 0 \big(x*a=a\big)\vee\big(x*a=0\big),a\neq 0 (x∗a=a)∨(x∗a=0),a=0 时 a a a 不是原子,那么存在一个元素 x x x 满足 0 < x < a 0<x<a 0<x<a,所以 x ∗ a = x ≠ a ≠ 0 x*a=x\neq a\neq 0 x∗a=x=a=0,矛盾出现,因此 a a a 是原子。
- 基于上述充要条件可以得出推论:对于任意 x ∈ B x\in B x∈B, a ≤ x a\leq x a≤x 和 a ≤ x ′ a\leq x' a≤x′ 有且仅有一个能成立。这是因为: ( x ∗ a = a ) ⇔ ( a ≤ x ) (x*a=a)\Leftrightarrow(a\leq x) (x∗a=a)⇔(a≤x) ( x ∗ a = 0 ) ⇔ [ ( x ∗ a ) ⊕ x ′ = x ′ ] ⇔ ( a ⊕ x ′ = x ′ ) ⇔ ( a ≤ x ′ ) (x*a=0)\Leftrightarrow\big[(x*a)\oplus x'=x'\big]\Leftrightarrow(a\oplus x'=x')\Leftrightarrow(a\leq x') (x∗a=0)⇔[(x∗a)⊕x′=x′]⇔(a⊕x′=x′)⇔(a≤x′)
- 上述推论的意义在于,基于原子
a
a
a 将集合
B
B
B 划分为两块,其中一块中的元素满足
a
≤
x
a\leq x
a≤x(它们与
a
a
a 可比较),另一块中的元素满足
a
≤
x
′
a\leq x'
a≤x′(它们的补元与
a
a
a 可比较). 下面的图中分别以
a
1
a_1
a1 为原子,示意对格中元素的划分:
- ( a ) (a) (a) 图中仅有两个元素,满足 a 1 ≤ a 1 , a 1 ≤ 0 ′ = 1 a_1\leq a_1,a_1\leq0'=1 a1≤a1,a1≤0′=1; ( b ) (b) (b) 图中有四个元素,满足: a 1 ≤ a 1 , a 1 ≤ 1 a_1\leq a_1~,~a_1\leq 1 a1≤a1 , a1≤1 a 1 ≤ 0 ′ = 1 , a 1 ≤ a 2 ′ = a 1 a_1\leq 0'=1~,~a_1\leq a_2'=a_1 a1≤0′=1 , a1≤a2′=a1 ( c ) (c) (c) 图中可自行验证。
- 【保联定理】对于有限布尔代数 < B , ∗ , ⊕ , ′ , 0 , 1 > \big<B,*,\oplus,',0,1\big> ⟨B,∗,⊕,′,0,1⟩ 而言,对于任意非 0 0 0 元素 x ∈ B x\in B x∈B,记 a i a_i ai 代表所有满足 a i ≤ x a_i\leq x ai≤x 的原子,那么我们有: x = a 1 ⊕ a 2 ⊕ ⋯ ⊕ a k (1) x=a_1\oplus a_2\oplus\cdots\oplus a_k\tag{1} x=a1⊕a2⊕⋯⊕ak(1)并且表示式 ( 1 ) (1) (1) 是唯一的。
- 该定理的意义在于说明有限布尔代数中的任意非零元素可以唯一地表示成原子的保联.
- 【同构定理】给定有限布尔代数 < B , ∗ , ⊕ , ′ , 0 , 1 > \big<B,*,\oplus,',0,1\big> ⟨B,∗,⊕,′,0,1⟩, S S S 是其中所有原子元素构成的集合,那么该布尔代数同构于集合代数 < ρ ( S ) , ⋂ , ⋃ . ¬ , Φ , S > . \big<\rho(S),\bigcap,\bigcup.\neg,\Phi,S\big>. ⟨ρ(S),⋂,⋃.¬,Φ,S⟩. 其同构函数为: f : B → ρ ( S ) , f ( x ) = { Φ , x = 0 { a ∣ a ∈ S ∧ a ≤ x } , x ≠ 0 f:B\rightarrow \rho(S)~,~f(x)=\left\{ \begin{aligned} &\Phi~,~x=0\\ &\{a|a\in S\wedge a\leq x\}~,~x\neq0\\ \end{aligned} \right. f:B→ρ(S) , f(x)={Φ , x=0{a∣a∈S∧a≤x} , x=0
- 上述定理的重要的推论有:① 任意布尔代数载体的基数是 2 N . 2^N. 2N. 这是由集合幂集的基数决定的。
- ② 元素个数相同(载体基数相同)的布尔代数必定同构. 由于两布尔代数都同构于某个集合代数,可以证明这两个布尔代数同构(实际上同构是等价关系).
布尔函数.
- 上面的内容都是关于布尔代数 < B , ∗ , ⊕ , ′ , 0 , 1 > \big<B,*,\oplus,',0,1\big> ⟨B,∗,⊕,′,0,1⟩ 的,现考虑从集合 B n B^n Bn 映射到集合 B B B 的函数。设 B = { 0 , 1 } B=\{0,1\} B={0,1},下面分别是从 B 1 → B B^1\rightarrow B B1→B 和 B 2 → B B^2\rightarrow B B2→B 的函数:
< x 1 > <x_1> <x1> | f f f |
---|---|
0 | 1 |
1 | 0 |
< x 1 , x 2 > <x_1,x_2> <x1,x2> | f f f |
---|---|
00 | 0 |
01 | 0 |
11 | 1 |
10 | 0 |
- 定义
B
B
B 中的元素称为布尔常元,取值于
B
B
B 的变量称为布尔变元,布尔表达式的定义如下:
① 单个布尔常元、布尔变元是布尔表达式;
② 若 b 1 , b 2 b_1,b_2 b1,b2 是布尔表达式,那么 ( b 1 ) ∗ ( b 2 ) , ( b 1 ) ⊕ ( b 2 ) , ( b 1 ) ′ (b_1)*(b_2),(b_1)\oplus (b_2),(b_1)' (b1)∗(b2),(b1)⊕(b2),(b1)′ 是布尔表达式;
③ 除有限步应用 ① 和 ② 得到的表达式是布尔表达式以外,没有其它布尔表达式。 - 其中符号 ∗ , ⊕ , ′ *,\oplus,' ∗,⊕,′ 就是布尔代数中的运算,如果两个变元数相同的布尔表达式对于变元的任意赋值组合,表达式值都相同,那么称这两个布尔表达式等价。
- 【极小项】《数字电子技术》课程中有过,现定义如下:给定 n n n 个布尔变元 x 1 , x 2 , ⋯ , x n x_1,x_2,\cdots,x_n x1,x2,⋯,xn,极小项表达式如下: x 1 ~ ∗ x 2 ~ ∗ ⋯ ∗ x n ~ \tilde{x_1}*\tilde{x_2}*\cdots*\tilde{x_n} x1~∗x2~∗⋯∗xn~其中 x i ~ \tilde{x_i} xi~ 表示 x i x_i xi 或 x i ′ x_i' xi′ 两者之一,显然对于上述极小项表达式,共有 2 n 2^n 2n 种不同的极小项,对其编号为 k ∈ [ 0 , 2 n − 1 ] k\in[0,2^n-1] k∈[0,2n−1],记作 m k . m_k. mk. 极小项满足以下性质: m i ∗ m j = 0 , i ≠ j m_i*m_j=0~,~i\neq j mi∗mj=0 , i=j ⊕ k m k = 1 \oplus_k m_k=1 ⊕kmk=1
- 形如 ( A 0 ∗ m 0 ) ⊕ ( A 1 ∗ m 1 ) ⊕ ⋯ ⊕ ( A 2 n − 1 ∗ m 2 n − 1 ) (A_0*m_0)\oplus(A_1*m_1)\oplus\cdots\oplus(A_{2^n-1}*m_{2^n-1}) (A0∗m0)⊕(A1∗m1)⊕⋯⊕(A2n−1∗m2n−1) 的布尔表达式称为主析取范式,其中 A i A_i Ai 为布尔常元,因为 A i A_i Ai 的取值有 ∣ B ∣ \big|B\big| ∣∣B∣∣ 种,上述主析取范式共 2 n 2^n 2n 项,所以主析取范式共有 ∣ B ∣ ( 2 n ) \big|B\big|^{(2^n)} ∣∣B∣∣(2n) 个,任何一个 n n n 元布尔表达式可以唯一等价到一个主析取范式。
- 对应地可以定义极大项: x 1 ~ ⊕ x 2 ~ ⊕ ⋯ ⊕ x n ~ \tilde{x_1}\oplus\tilde{x_2}\oplus\cdots\oplus\tilde{x_n} x1~⊕x2~⊕⋯⊕xn~编号为 [ 0 , 2 n − 1 ] [0,2^n-1] [0,2n−1],记为 M i M_i Mi,极大项满足: M i ⊕ M j = 1 , i ≠ 1 M_i\oplus M_j=1~,~i\neq 1 Mi⊕Mj=1 , i=1 ∗ k M k = 0 *_kM_k=0 ∗kMk=0并且极小项与极大项存在下面的关系: ( m i ) ′ = M i , ( M i ) ′ = m i (m_i)'=M_i~,~(M_i)'=m_i (mi)′=Mi , (Mi)′=mi对应地可以定义主合取范式。
- 【布尔函数】一个从 B n → B B^n\rightarrow B Bn→B 的函数如果可以用 n n n 元布尔表达式表示,那么称之为布尔函数.
- 由于布尔表达式唯一等价于主析取范式,主析取范式有 ∣ B ∣ ( 2 n ) \big|B\big|^{(2^n)} ∣∣B∣∣(2n) 个,而从 B n → B B^n\rightarrow B Bn→B 的函数数量如下: ∣ B ∣ ( ∣ B ∣ n ) \big|B\big|^{\big(|B|^n\big)} ∣∣B∣∣(∣B∣n)这一数字推导如下:前域共 ∣ B ∣ n \big|B\big|^n ∣∣B∣∣n 个元素,每个元素的函数值有 ∣ B ∣ \big|B\big| ∣∣B∣∣ 种取值。可以发现,当 ∣ B ∣ = 2 |B|=2 ∣B∣=2,即 B = { 0 , 1 } B=\{0,1\} B={0,1} 时,所有的函数都是布尔函数;其它情况下的函数不一定都是布尔函数。
- 使用最多的布尔代数即为上面 B = { 0 , 1 } B=\{0,1\} B={0,1} 的情况,在这一情况下,给定 n n n 个布尔变元,对应 2 n 2^n 2n 个极小项,有 N = 2 ( 2 n ) N=2^{(2^n)} N=2(2n) 个主析取范式,将代数系统 < B N , ∗ , ⊕ , ′ , 0 , 1 > \big<B_N,*,\oplus,',0,1\big> ⟨BN,∗,⊕,′,0,1⟩ 称为由 n n n 个布尔变元 x i ∣ i = 1 , 2 , ⋯ , n x_i|i=1,2,\cdots,n xi∣i=1,2,⋯,n 生成的自由布尔代数.
搜索引擎.
- 很多文献通常在编写时会由作者给出关键词或摘要,搜索引擎对于用户输入的关键词,需要判断这篇文献是否含有该关键词(或者相近的词),如果包含,则相应地给这篇文献一个真逻辑值,否则赋假逻辑值. 关键词的组合就是我们对于一篇文献的要求,而每一篇文件对于这样的要求都会返回一个真值,根据这样的真值表,搜索引擎就能知道某一篇文章是不是我们想要的。
- 而搜索引擎要在海量的资源中找到符合我们要求的文献、网页,其技巧在于建立索引。最简单的索引结构是使用一个位向量,其每一位表示该文献中是否出现关键字 k k k,例如位向量 010011 010011 010011 表示第 2 , 5 , 6 2,5,6 2,5,6 篇文献是包含该关键字的,而 1 , 3 , 4 1,3,4 1,3,4 未包含,那么同时要搜索包含关键字 k 1 , k 2 k_1,k_2 k1,k2 的文献只需要对这两个位向量做与操作(对应着布尔代数中的下界运算 ∗ * ∗ ). 现代计算机进行布尔运算的速度极快,一个指令周期内可以完成 32 32 32 位的布尔运算,一秒能够进行十亿量级。这样直观来看,索引的形式就像一张表,表的每一行对应一个关键词,关键词后面是一个表示文献包含关键词情况的位向量。
Key | BitVector |
---|---|
SingleCell | 01001010110101010101… |
Review | 10101110101110111010… |
Clustering | 10101010101001111010… |
… | … |