布尔代数入门

  布尔代数 是计算机的基础。没有它,就不会有计算机。

  布尔代数发展到今天,已经非常抽象,但是它的核心思想很简单。本文帮助你理解布尔代数,以及为什么它促成了计算机的诞生。

物联网

  我依据的是《编码的奥妙》的第十章。这是一本好书,强烈推荐。

物联网

  一、数理逻辑的起源

  18世纪早期,英国数学家乔治·布尔(George Boole,1815-1864)突发奇想:人的思想能不能用数学表达?

  此前,数学只用于计算,没有人意识到,数学还能表达人的逻辑思维。

物联网

  两千年来,哲学书都是用文字写的。比如,最著名的三段论:

  所有人都是要死的,

  苏格拉底是人,

  所以,苏格拉底是要死的。

  乔治·布尔认为,这种推理可以用数学表达,也就是说,哲学书完全可以用数学写。这就是数理逻辑的起源。

  二、集合论

  乔治·布尔发明的工具,叫做"集合论"(Set theory)。他认为,逻辑思维的基础是一个个集合(Set),每一个命题表达的都是集合之间的关系。

物联网

  比如,所有人类组成一个集合 R ,所有会死的东西组成一个集合 D 。

  所有人都是要死的

  集合论的写法就是:

  R X D = R

  集合之间最基本的关系是并集和交集。乘号( X )表示交集,加号( + )表示并集。上面这个式子的意思是, R 与 D 的交集就是 R 。

  同样的,苏格拉底也是一个集合 S ,这个集合里面只有苏格拉底一个成员。

  苏格拉底是人

  // 等同于

  S X R = S

  上面式子的意思是,苏格拉底与人类的交集,就是苏格拉底。

  将第一个式子代入第二个式子,就得到了结论。

  S X (R X D)

  = (S X R) X D

  = S X D

  = S

  这个式子的意思是,苏格拉底与会死的东西的交集,就是苏格拉底,即苏格拉底也属于会死的东西。

  三、集合的运算法则

  前面的三段论比较容易,一眼就能看出结论。但是,有些三段轮比较复杂,不容易立即反应过来。

  请看下面这两句话。

  "鸭嘴兽是卵生的哺乳动物。鸭嘴兽是澳洲的动物。"

  你能一眼得到结论吗?

  鸭嘴兽 X 卵生 = 鸭嘴兽

  鸭嘴兽 x 澳洲 = 鸭嘴兽

  将第一个式子代入第二个,就会得到:

  鸭嘴兽 X 卵生 x 澳洲 = 鸭嘴兽

  // 相当于

  卵生 x 澳洲 = 鸭嘴兽 + 其他

  因此,结论就是"有的卵生动物是澳洲的动物",或者"有的澳洲的动物是卵生动物"。

  还有更不直观的三段论。

  "哲学家都是有逻辑头脑的,一个没有逻辑头脑的人总是很顽固。"

  请问结论是什么?

  这道题会用到新的概念:全集和空集。集合 A 和所有不属于它的元素(记作 -A)构成全集( I ),这时 A 和 -A 的交集就是一个空集( 0 )。

  A + (-A) = I

  A X (-A) = 0

  因此,有下面的公式。

  B

  = B X I

  = B X (A + -A)

  = B X A + B X (-A)

  回到上面那道题。

  哲学家 X 逻辑 = 哲学家

  无逻辑 X 顽固 = 无逻辑

  根据第一个命题,可以得到下面的结论。

  哲学家 X 无逻辑

  = (哲学家 X 逻辑) X 无逻辑

  = 哲学家 X (逻辑 X 无逻辑)

  = 哲学家 X 0

  = 0

  即哲学家与没有逻辑的人的交集,是一个空集。

  根据第二个命题,可以得到下面的结论。

  无逻辑 X 顽固

  = 无逻辑 X 顽固 X (哲学家 + 非哲学家)

  = 无逻辑 X 顽固 X 哲学家 + 无逻辑 X 顽固 X 非哲学家

  = 0 X 顽固 + 无逻辑 X 顽固 X 非哲学家

  = 无逻辑 X 顽固 X 非哲学家