為計算機發明奠定基礎的《思想法則》出版150週年:什麼是布林邏輯/布林代數? - maa
這本書為一個世紀後的計算機發明奠定了基礎,喬治·布林(George Boole)的《思想法則》(The Laws of Thought)於1854年首次出版。使用術語“布林邏輯”或“布林代數”表示使用“與”,“或”和“非”運算的思想組合,以及我們使用術語“布林搜尋”表示涉及鍵組合的資料庫或Web搜尋使用AND,OR和NOT的單詞。(事實表明布林的影響力是無處不在的。)
布林的書以這些詞開頭:
以下論文的目的是研究進行推理的思維活動的基本規律。用微積分的符號語言表達他們,並在此基礎上建立邏輯科學並構建其方法。
布林的“微積分的符號語言”意思是指代數,使用x,y,z,p,q,r等代數符號來表示未知的單詞,短語或命題。古代希臘的邏輯學家做了很多事情。(banq注:這是古希臘文明在四大文明中的獨特之處)
布林談論的是使用高中代數學習的全部知識,進行加法和乘法以及使用求解方程的方法。布林的代數需要表達一種象徵性的思想語言。用這種符號語言求解方程式不會得出數值答案;它會給出邏輯上的結論。他的代數將成為思想的代數。
即使在今天,在二十一世紀,當我們熟悉計算機(布林型邏輯代數的直接後代“思維機”)時,寫下描述我們思維方式的代數方程式似乎也是一個大膽的想法。是什麼促使布林提出了這樣的事情,為什麼他認為這可能會成功?
喬治·布林(George Boole)於1815年出生於英國。儘管全世界都將他視為數學家-的確,他是有史以來最有影響力的數學家之一-但他在數學和心理學之間有著共同的興趣。如果他今天還活著,他無疑將自己稱為認知科學家,這個術語最早於1950年代初使用。他主要是自學成才,可能是因為沒有老師帶領他從事這種看似荒謬的想法,這使他能夠尋求借助代數的思維方式。他才華橫溢的標誌是他取得了如此成功。
布林Boole於1847年首次在名為《邏輯的數學分析》的小手冊中發表了他的思想代數。描述本手冊內容的最簡單方法是在開頭部分引用。
熟悉符號代數理論的現狀的人們知道,分析過程的有效性並不取決於所使用符號的解釋,而僅取決於它們組合的定律。每個不影響假定關係真相的解釋系統都是可以接受的,因此,在一個解釋方案下,相同的過程可以代表一個關於數字性質的問題的解決方案,在另一個解釋方案下,幾何問題,第三,動力學或光學問題。...基於這一一般原則,我打算建立邏輯微積分...
值得再次閱讀以上文章。布林使每個單詞都變得很重要。
由於他新的邏輯代數,布林於1849年被任命為新成立的科克大學學院數學系主任。他在愛爾蘭定居後,就開始著手撰寫有關他的新理論的更大著作。他特別熱衷於確保自己的數學確實能捕捉到心理活動的規律,為此,他花了大量時間閱讀心理學文獻,並使自己熟悉哲學家對思想和邏輯的看法。
他用自己的錢和朋友的錢在1854年出版了他的第二本更重要的書。該書的全書是《關於邏輯和概率數學理論的思想定律的調查》。但通常將其更簡單地稱為“思想定律”。總的來說,1854年的書和1847年的早期小冊子之間唯一的實質區別是使用他的新代數框架增加了對概率的處理。邏輯本身基本上沒有改變。
布林的想法是試圖將邏輯思想簡化為方程式的求解:自從德國數學家戈特弗裡德·萊布尼茲(Gottfried Leibniz)在17世紀試圖做到這一點以來,這就是一個邏輯的聖盃。萊布尼茲(Leibniz)嘗試開發“概念代數”,其中代數符號表示概念,例如大,紅色,男人,女人,獨角獸, 但他取得的成功有限。
布林希望他的代數包含亞里士多德對人類推理的所有見解(著名的希臘語“所有人都是凡人”三段論)以及斯多葛派的命題邏輯(現在我們稱為命題演算)。他用符號x,y,z 等表示物件的任意集合。例如,所有人員的集合,所有凡人的集合,所有銀行家的集合或所有自然數的集合。然後,他展示瞭如何使用表示集合的符號進行代數運算(寫下並求解方程式),其方式與執行邏輯推論相對應。
為了能夠寫下並求解涉及集合的代數方程式,布林必須定義將兩個集合相加和相乘的含義。由於他的代數旨在捕捉邏輯思維的某些模式,因此他對加法和乘法的定義必須與一些基本的思維過程相對應。此外,如果他可以定義加法和乘法,使得它們具有許多熟悉的性質,即數字具有加法和乘法的功能,那麼做代數會更容易,這使得他的新思想代數類似於每個人都習慣的代數。
這是他的所作所為。鑑於集合X和 Y,布林表示物件的公共集合的兩個X和Ÿ 由XY。 例如,如果x是所有德國人的集合,而y是所有水手的集合,則xy是所有德國水手的集合。
布林對加法的定義比它所需要的要複雜得多,因此當時的其他數學家將其修改為以下簡單的思想:x + y 是x或 y 或兩者中的物件的集合。例如,如果x 是所有紅色筆的集合,而y 是所有藍色筆的集合,則x + y 是所有紅色或藍色的筆的集合。
通過乘法和加法的這些定義,布林系統具有以下特性:
x + y = y + x X ÿ = ÿ X x +(y + z)=(x + y)+ z x(y z)=(x y)z x(y + z)= x y + x z |
這些方程對於普通算術應該很熟悉,其中字母表示數字。它們是兩個交換律,兩個關聯律和分配律。由於布林的集合代數與普通算術之間的相似性,因此布林能夠在其系統中執行計算,即諸如求解方程之類的代數操作。但是,在布林系統中求解方程式不等於算術,而是對應於……的邏輯推理……好吧,無論符號是什麼意思:男人,女人,獨角獸,準備晚餐的東西等。方程不一定是做出人為決定的最佳方法。但關鍵是邏輯思維模式可以 用代數表示。這將使您在現實生活中走多遠,這是後代必須解決的問題。
布林系統與普通代數之間還有其他相似之處。例如,在普通算術中,數字0是特殊的:將0加到任何數字都會使數字保持不變。為了使他的代數起作用,布林也需要一個零。他通過將0設為空集合來獲得它。
具有0的一個優點是,它提供了一種寫出不存在各種事物的代數方程的方法。例如,在布林的代數中,我們可以通過讓x為所有獨角獸的集合並寫下等式x = 0來表達獨角獸不存在的事實。
將0定義為空集合,符號0在Boole的集合代數中具有與普通代數相同的特殊屬性:
x + 0 = x x 0 = 0 |
對於任何集合x。
儘管布林的代數具有普通代數的許多特性,但並不完全相同。布林確實確實需要使用一種奇怪的新型代數。例如,在布林的代數中,以下兩個方程是正確的:
x + x = x x x = x |
這些方程對於普通算術當然不是正確的。
順便說一下,今天的數學家將公理系統稱為“布林代數”不是由於布林。相反,它是由其他數學家基於布林的原始工作開發的。
通過減少進行代數的推理,布林實現了構建推理機的可能性。即使在今天,也很難想象有任何一種機械或(如今的)電子機器能夠推理出人們對當地政治的看法。一臺機器可能對當地政府有什麼瞭解?另一方面,即使在布林時代,似乎也有可能製造出一種可以根據一些通用規則來操縱代數符號的機器。
實際上,布林提出的用於處理代數表示式和求解系統方程式的規則具有足夠的機械性,以至於英國邏輯學家威廉姆·斯坦利·傑文斯(WS Jevons)能夠使用它們來構建機械推理機,並於1870年向皇家學會展示了這一點。毫不奇怪,鑑於當時流行的技術,Jevons的裝置就像老式的機械收銀機一樣,在全世界範圍內尋找。但是,儘管它具有過時的外觀,但作為邏輯的實現,卻是現代電子計算機的令人驚歎的早期祖先。
從本質上講,今天的電子計算機只是布林代數思想中矽的一種實現,電子流執行布林的代數運算。您可以在描述計算機工作方式的書中閱讀“或”門和“與”門,它們直接對應於布林的加法和乘法代數運算。在上個月的專欄中,我描述了數學家約翰·馮·諾伊曼(John von Neumann)如何在1950年代初期第一臺電子計算機的設計中發揮關鍵作用。一百年前,喬治·布林的理論工作為馮·諾依曼和他的同事們引領了當今的計算機時代奠定了基礎。
相關文章
- 從零構造一臺計算機——布林代數到邏輯電路計算機
- 布林代數入門
- 計算機簡史第三章 機電時代之布林代數計算機
- PHP基礎教程-17 布林運算子PHP
- 面試題:布林變數面試題變數
- C#快速入門教程(10)——布林型別與布林運算C#型別
- python-布林運算Python
- 布林帶策略
- TypeScript 布林型別TypeScript型別
- SCSS 布林 型別CSS型別
- 『無為則無心』Python基礎 — 8、Python中的資料型別(數值、布林、字串)Python資料型別字串
- HTML 布林屬性值HTML
- python 判斷一個表示式是什麼布林型別bool()Python型別
- 【冰山白皮書】JS中的布林 數字 字串JS字串
- 你好,布林瑪!(Blazor元件庫)Blazor元件
- 布林線指標(轉載)指標
- ?【程式中的數學】利用德摩根定律簡化布林運算
- 計算機程式的思維邏輯 (20) – 為什麼要有抽象類?計算機抽象
- 計算機程式的思維邏輯 (20) - 為什麼要有抽象類?計算機抽象
- 5.注意Dart中的布林值Dart
- 聊聊快取布林值踩到的坑快取
- 元組、布林、集合的內建方法
- 【廖雪峰python入門筆記】布林運算和短路計算Python筆記
- 條件和布林操作符
- java布林型別易錯點Java型別
- MySQL手注之盲注(布林)MySql
- javascript 布林型別值判斷JavaScript型別
- Delphi中布林型別辨析 (轉)型別
- 邏輯代數基礎
- 布林線的用法圖解:如何運用布林線逃頂和抄底圖解
- C 語言之布林型別介紹型別
- vnpy,BollChannel布林線軌道策略分析
- lua與c++ 中布林布bool值對應關係C++
- 計算機程式的思維邏輯 (18) – 為什麼說繼承是把雙刃劍計算機繼承
- 計算機程式的思維邏輯 (18) - 為什麼說繼承是把雙刃劍計算機繼承
- 我在大廠做 CR——為什麼建議使用列舉來替換布林值
- Pandas知識點彙總(2)——布林索引索引
- javascript型別系統——布林Boolean型別JavaScript型別Boolean