[TEAP早期試讀]《程式設計師的數學》- 邏輯工具卡諾圖
圖靈社群按:
TEAP是什麼?TEAP是Turingbook Early Access Program的簡稱,即早期試讀,它公佈的是圖靈在途新書未經編輯的內容。一本書的翻譯週期約為3到6個月,如果在翻譯過程中,譯者就能與讀者進行溝通和交流,對整本書的翻譯品質是有幫助的。通過TEAP,讀者可以提前閱讀將來才能出版的內容,譯者也能收穫寶貴的反饋意見,改進翻譯,提高質量。本書原名為《プログラマの數學》,中文暫定名為《程式設計師的數學》,有問題可以在這裡留言,也歡迎大家與我或者編輯聯絡交流,本篇內容選自書中第2章。
作者結城浩(1963年7月 - ),是身在日本東京武藏野市的一位經驗豐富的程式設計師,也是一位資深技術作家。開發出了有名的YukiWiki軟體。結城浩經常在雜誌上發表程式入門連載文章和翻譯技術類文章,除此之外還著有程式、數學方面的圖書達30多本,其中有多部被翻譯成英語和韓語在國外出版。由他所著的設計模式入門書長期暢銷,被媒體譽為日本國內普及設計模式的功臣。
■ 三燈遊戲
這回我們看看3個燈會是什麼情況。
【三燈遊戲的規則】
請在下述情況時按下按鈕。
ⓐ 綠燈、黃燈、紅燈都滅
ⓑ 黃燈滅,紅燈亮
ⓒ 綠燈滅,黃燈亮
ⓓ 綠燈、黃燈、紅燈都亮
現在燈泡有綠色、黃色、黃色3種。(圖2-31)
圖2-31 三燈遊戲
圖中的文字:
“青いランプ”譯為“綠燈”
“黃色いランプ” 譯為 “黃燈”
“赤いランプ” 譯為 “紅燈”
“ボタン” 譯為 “按鈕”
這回光靠腦袋想可無濟於事了吧。還是使用卡諾圖看看吧。(圖2-32)
設有以下命題
・ 命題A “綠燈亮”
・ 命題B “黃燈亮”
・ 命題C “紅燈亮”
畫出A、B、C的true/false所有組合的表,在“應該按下按鈕”之處打上鉤。這次有3個命題,因此表的網格數變為2的3次方 =8個。
圖2-32 三燈遊戲的卡諾圖(打上鉤)
注意一下B和C的false/true邊界是錯位的。而正是由於這個“錯位”,使得用8個網格就能表示所有情況。 打上鉤後,就像前面那樣儘可能用大的框進行分組。(圖2-33)
圖2-33 三燈遊戲的卡諾圖(畫出框組,思考邏輯表示式)
圖中的文字:
左上文字 譯為“這個框組為¬A”
右下文字 譯為“這個框組為C”
將所有打鉤處都框起來後,我們就來思考表示各個框組的邏輯表示式吧。
・ 橫向的框組,就是A為false的區域,因此用¬A來表示。
・ 正中間的框組,就是C為true的區域,因此用C來表示。
根據以上結果,我們將打鉤區域用¬A 和C的邏輯或來表示,即
(¬A)∨ C
三燈遊戲的規則看起來相當複雜,然而通過使用卡諾圖,居然能夠使它的表示形式大幅簡化。不可思議吧?!
最後得到的邏輯表示式為(¬A)∨ C,表明在三燈遊戲中,當“綠燈滅(¬A)”或者“紅燈亮(C)”的時候可以按下按鈕。
在這個邏輯表示式中沒有出現B。由此我們可知,在判斷是否按下按鈕時,不需要看黃燈。
卡諾圖通常用於簡化邏輯表示式、設計邏輯迴路等。
相關文章
- [TEAP早期試讀]《程式設計師的數學》- 前言程式設計師
- [TEAP早期試讀]在資料庫中使用PL/SQL實現業務邏輯的優勢資料庫SQL
- [TEAP早期試讀]基於WebSocket的聯機作圖例子Web
- [TEAP早期試讀]《敏捷武士》推薦序敏捷
- [TEAP早期試讀]《Linux/Unix設計思想》之: 大教堂?多怪異Linux
- [TEAP早期試讀]HTML5與JSONHTMLJSON
- [TEAP早期試讀]敏捷武士之敏捷簡介敏捷
- [TEAP早期試讀]資料庫和敏捷開發資料庫敏捷
- 程式設計師需要了解的邏輯學思想程式設計師
- [TEAP早期試讀]NoSQL資料庫的基礎知識SQL資料庫
- [TEAP早期試讀]《深入淺出CoffeeScript》譯者序
- [TEAP早期試讀]《MongoDB in Action》——為什麼選擇MongoDB?MongoDB
- [TEAP早期試讀]真正的好處:客戶端批量處理客戶端
- [TEAP早期試讀]《深入淺出CoffeeScript》CoffeeScript中的OOPOOP
- [TEAP早期試讀]Linux: 一個人加上一百萬人的智慧Linux
- 程式設計師面試邏輯題解析程式設計師面試
- [TEAP早期試讀]Android開發實現後臺下載Android
- 從程式設計師到架構師的方法與邏輯程式設計師架構
- [TEAP早期試讀]《深入淺出CoffeeScript》CoffeeScript與Node.jsNode.js
- 卡諾圖學習
- 程式設計師,你的邏輯思維有多強?程式設計師
- 程式設計師的數學程式設計師
- 讀人工智慧全傳06邏輯程式設計人工智慧程式設計
- [TEAP早期試讀]《30天寫出你的作業系統》 - 挑戰多工作業系統
- 好程式設計師web前端分享邏輯運算程式設計師Web前端
- [TEAP早期試讀]《深入淺出CoffeeScript》集合與迭代節選和若干問題
- 邏輯程式設計與函式程式設計的介紹程式設計函式
- 最適合程式設計師的畫圖工具?程式設計師
- 程式設計師的工具程式設計師
- sql生成可讀性邏輯圖SQL
- 當邏輯程式設計遭遇CQRS時程式設計
- 《程式設計師的數學》思考題(一)程式設計師
- 幽默:js程式設計師的數學不好?JS程式設計師
- 《圖靈的祕密》—— 推薦給所有想學數學的程式設計師圖靈程式設計師
- java程式設計師程式設計筆試基礎學習Java程式設計師筆試
- 程式設計師要學會讀原始碼程式設計師原始碼
- [02] 多執行緒邏輯程式設計執行緒程式設計
- 10.24程式設計師節專輯——程式設計師最愛的數字,1024的祕密程式設計師