真值表計算機:逐步計算「非」、「且」、「或」與蘊含
真值表計算機會針對由 p、q 等命題變數組成的邏輯命題,列出這些變數所有可能為真或為假的組合,並逐列計算該命題的真假值。命題邏輯將任何論證簡化為非真即假的命題,而邏輯運算子——「非」、「且」、「或」與蘊含(→)——則將這些簡單命題組合成更複雜的表達式。由於每個變數恰好有兩種可能值,含有 n 個變數的命題恰好會有 2ⁿ 列:兩個變數會產生 4 列,三個變數會產生 8 列,依此類推。本指南將手動逐步解析核心運算子,建立蘊含與三變數表達式的真值表計算機範例,並運用笛摩根定律證明兩個寫法不同的命題在布林代數中屬於等價命題。
目錄
什麼是真值表計算機?
真值表計算機是一種工具,它會列出邏輯命題中變數所有可能的真假組合,並針對每種組合計算該命題的結果。有些人把同樣的概念稱為真值表產生器,因為它會自動產生完整的列數,而不需要你每次都手動寫出來。在命題邏輯中,像 p 或 q 這樣的變數代表一個非真即假的命題——不會同時為真也不會同時為假——而邏輯運算子讓你能用這些簡單的建構元件組合出複合命題。 真值表之所以重要,並不只是課堂練習而已。電腦科學系學生會用它們來設計數位邏輯電路,其中每個邏輯閘——AND、OR、NOT、NAND、XOR——都直接對應一張真值表,而整個電路的行為則是所有邏輯閘連接後的真值表。軟體工程師也會用同樣的表格來簡化程式碼中的條件判斷式、資料庫查詢篩選條件與搜尋邏輯,因為一個雜亂的巢狀 if 敘述往往只是一個尚未化簡的布林代數表達式。哲學與數學課程則用真值表來檢驗一個論證在邏輯上是否有效,而不管其個別命題在現實世界中是否恰好為真。一旦你能手動建立真值表,計算機就會變成一種驗算工具,而不是取代你對其理解的捷徑。
真值表其實就是一個邏輯命題所有可能的輸入組合,以及每種組合所產生的輸出結果。
基本邏輯運算子「非」、「且」、「或」如何運作?
在處理蘊含或多變數表達式之前,先確實掌握這三個最基本的邏輯運算子會很有幫助,因為任何更複雜的命題,其實都只是「非」、「且」、「或」以不同方式組合與巢狀嵌套而成。
1. 非p(否定)
「非」單純會反轉一個命題的真假值。 p | 非p 真 | 假 假 | 真 如果 p 是「天空是藍色的」而且 p 為真,那麼「非 p」——也就是「天空不是藍色的」——就是假的。否定是這裡唯一只作用於單一變數、而非組合兩個變數的運算子。
2. p 且 q(合取)
「且」只有在兩個命題都為真時才為真。 p | q | p 且 q 真 | 真 | 真 真 | 假 | 假 假 | 真 | 假 假 | 假 | 假 在四種可能的列中,只有一列——p 與 q 皆為真——會讓整個命題為真。這是基本邏輯運算子中最嚴格的一個:只要有一個輸入為假,就足以讓整個合取命題為假。
3. p 或 q(析取)
只要至少有一個命題為真,「或」就為真。 p | q | p 或 q 真 | 真 | 真 真 | 假 | 真 假 | 真 | 真 假 | 假 | 假 只有 p 與 q 皆為假的那一列,才會讓析取命題為假。這是命題邏輯與布林代數中通用的「相容或」(inclusive OR)——即使兩個命題都為真,仍然算作真,這與日常用語中「非此即彼」、恰好只能有一個成立的「或」不同。
「非」會反轉單一值;「且」需要全部為真;「或」只有在全部為假時才會失敗。
真值表計算機如何計算蘊含(p → q)?
蘊含寫作 p → q,讀作「若 p 則 q」,是最容易讓人搞混的邏輯運算子,因為它和日常對話中「如果……那麼……」給人的感覺並不相符。真值表計算機只依據一條規則來計算蘊含:p → q 恰好在一種情況下為假——當 p 為真但 q 為假時——其餘所有情況都為真。
1. 步驟 1——列出 p 與 q 的所有組合
有兩個變數時,共有 2² = 4 列:真真、真假、假真、假假。
2. 步驟 2——對每一列套用蘊含規則
p | q | p → q 真 | 真 | 真 真 | 假 | 假 假 | 真 | 真 假 | 假 | 真 唯一為假的一列是「真、假」——p 承諾了 q,但 q 卻沒有發生。
3. 步驟 3——解讀兩個「令人意外」為真的列
當 p 為假時(「假真」與「假假」兩列),無論 q 為何,蘊含都為真,因為前提為假會讓命題「空真」(vacuously true)——你不可能打破一個你根本沒許下的承諾。這是蘊含真值表中最不直觀、卻對命題邏輯至關重要的部分。
4. 步驟 4——用實際範例驗證合理性
「如果下雨,地面就會濕。」如果沒有下雨(p 為假),無論地面是什麼狀態,這句話都不算被推翻——這正是為什麼「假真」與「假假」這兩列的結果都是真。
p → q 恰好在一列中為假:p 為真、q 為假。其餘所有組合都會讓蘊含為真。
(p ∧ q) → r 的真值表長什麼樣子?
加入第三個變數會讓列數倍增:2³ = 8。表達式 (p ∧ q) → r 讀作「若 p 與 q 皆為真,則 r 為真」,建立其真值表時,需要先計算一個中間欄位 p ∧ q,再對 r 套用蘊含規則。
1. 步驟 1——列出 p、q、r 的所有 8 種組合
有三個變數時,依固定順序逐一列出每種組合,確保沒有遺漏或重複任何一列:真真真、真真假、真假真、真假假、假真真、假真假、假假真、假假假。
2. 步驟 2——計算中間欄位 p ∧ q
p ∧ q 只有在 p 與 q 皆為真的兩列中為真(「真真真」與「真真假」),其餘六列皆為假。
3. 步驟 3——在 (p ∧ q) 與 r 之間套用蘊含
p | q | r | p∧q | (p∧q)→r 真 | 真 | 真 | 真 | 真 真 | 真 | 假 | 真 | 假 真 | 假 | 真 | 假 | 真 真 | 假 | 假 | 假 | 真 假 | 真 | 真 | 假 | 真 假 | 真 | 假 | 假 | 真 假 | 假 | 真 | 假 | 真 假 | 假 | 假 | 假 | 真
4. 步驟 4——解讀結果
唯一為假的一列是「真真假」:p 與 q 皆為真,但 r 為假——這是前件 (p ∧ q) 成立但後件不成立的唯一情況。其餘每一列都為真,原因不是 r 為真,就是 p ∧ q 本身已經為假,使蘊含空真成立。
在 (p ∧ q) → r 的 8 種可能列中,只有一列會讓整個命題為假:p 與 q 為真、r 為假。
如何使用真值表計算機證明等價命題?
當兩個命題的真值表在每一列都產生完全相同的輸出欄位時——不只是部分範例相符,而是所有可能的輸入組合都相符——這兩個命題就是邏輯上等價的命題。這正是使用真值表計算機來證明布林代數中最實用結果之一的方法:笛摩根定律,該定律指出 ¬(p ∧ q) 等價於 ¬p ∨ ¬q。
1. 步驟 1——建立 p ∧ q 及其否定的欄位
p | q | p∧q | ¬(p∧q) 真 | 真 | 真 | 假 真 | 假 | 假 | 真 假 | 真 | 假 | 真 假 | 假 | 假 | 真
2. 步驟 2——建立 ¬p、¬q 及其析取的欄位
p | q | ¬p | ¬q | ¬p∨¬q 真 | 真 | 假 | 假 | 假 真 | 假 | 假 | 真 | 真 假 | 真 | 真 | 假 | 真 假 | 假 | 真 | 真 | 真
3. 步驟 3——比較兩個輸出欄位
¬(p∧q):假、真、真、真 ¬p∨¬q:假、真、真、真 這兩個欄位在每一列都完全相符,這正是邏輯等價的定義——這兩個命題只是同一件事的兩種不同寫法。
4. 步驟 4——歸納通則
笛摩根第二定律的運作方式相同:¬(p ∨ q) 等價於 ¬p ∧ ¬q。在這兩條定律中,對整個表達式取否定都會翻轉運算子(且變成或、或變成且),並將否定分配到每個變數上——這條規則在化簡程式碼與數位邏輯設計中的布林代數表達式時經常出現。
當兩張真值表在每一列都產生相同的輸出欄位時,這些命題就是等價命題——無論它們寫出來的樣子看起來有多不同。
手動建立真值表時應避免哪些錯誤?
大多數錯誤的真值表,都是源自少數幾種可預期的疏忽,而非對邏輯運算子本身的誤解。事先了解這些錯誤,可以省下大量重新檢查的時間。
1. 遺漏或重複某一列
有 n 個變數時,必須恰好有 2ⁿ 列,並依一致的順序排列(就像二進位計數:真真真、真真假、真假真……)。遺漏或重複某一列,代表這張表其實並未涵蓋所有情況,這會讓依此表進行的任何等價性檢驗都失效。
2. 把蘊含誤讀成「且」
p → q 和 p ∧ q 並不相同。蘊含恰好在一列中為假(p 為真、q 為假);合取則在三列中為假。把兩者搞混,是命題邏輯中最常見的真值表錯誤。
3. 忘記運算子的優先順序
在 (p ∧ q) → r 中,括號非常重要——必須先計算 ∧,再計算 →。如果沒有括號,p ∧ (q → r) 就是完全不同的命題,會有不同的真值表。
4. 只套用一半的笛摩根定律
把 ¬(p ∧ q) 否定成 ¬p ∧ ¬q——忘記把「且」也翻轉成「或」——會產生一個與原命題不等價的命題。運算子與每個變數都必須一起被否定。
幾乎每一個真值表錯誤,都是遺漏了某一列、搞混了運算子,或否定不完整——而不是邏輯本身有問題。
如何檢查自己的布林代數運算?
在信任手動建立的真值表之前,請像檢查任何其他多步驟計算一樣,先做幾項快速檢查。
1. 重新計算列數
含有 n 個變數的命題,應該恰好有 2ⁿ 列。兩個變數:4 列。三個變數:8 列。如果列數不對,就代表有列被遺漏或重複了。
2. 根據規則抽查為假的列
以蘊含來說,只有「p 為真、q 為假」的那一列應該為假。以合取來說,只有全部為真的那一列應該為真。如果某一列的結果與該運算子的定義規則不符,就要特別重新檢查那一列。
3. 用完整欄位檢驗等價性,而非單一列
兩個表達式如果只在四列中的三列相符,並不算等價——必須每一列都相符才行。當手動檢查感到不確定時,可以使用真值表產生器或計算機一次驗證整個欄位。
先計算列數,再根據定義規則檢查為假的情況,並且在每一列都相符之前,絕不要斷定兩個命題等價。
使用 Solvify 的真值表計算機驗證你的邏輯
一旦你了解「非」、「且」、「或」與蘊含逐列的運作方式,真值表計算機就會變成檢驗自己推理過程的工具,而不是繞過思考的捷徑。Solvify 的逐步解題工具會個別建立邏輯表達式的每一列,並顯示中間欄位——例如套用蘊含之前的 p ∧ q——讓你能將自己手算的表格與其比對,準確找出錯誤發生的地方,無論是遺漏了某一列、誤用了運算子,還是笛摩根定律只套用了一半。 先手動計算真值表,再用計算機只確認最終欄位,能培養出在命題邏輯與布林代數課程中真正紮實的熟練度——讓你一眼就能看出蘊含恰好只有一列為假、三變數命題需要八列,以及兩個表達式只有在每一列都相符時才是等價命題,而且這些判斷早在任何計算機幫你確認之前就已經成竹在胸。
真值表計算機的目的應該是驗證你的推理,而不是取代它——請先手動完成表格,再進行檢查。
相關文章
相關數學解題工具
逐步解題
查看真值表中每一列與每個中間欄位的完整計算過程,而不只是最終答案。
AI 數學家教
針對蘊含、笛摩根定律或任何邏輯運算子提出後續問題,直到完全理解為止。
練習模式
反覆練習更多真值表與布林代數題目,提升解題速度與準確度。
