卡诺图(详细补充)

4681 words 17 min read

Mar 29, 2026

Note: This page does not support English, using the default language version

卡诺图化简全指南:从基础含义、核心理论到题目实操

本文全程从零起步,无跳步、无前置知识门槛。不仅讲解「卡诺图怎么画」,更深入剖析「为什么要这样画」,引入蕴涵项、主要项、必要项等核心理论概念,配套可直接套用的规则和手把手例题。学完不仅能上手解题,还能理解背后的逻辑本质。


一、卡诺图的核心含义:它是什么?用来干嘛?

1. 本质定义

卡诺图(Karnaugh Map,简称 K 图),是逻辑函数最小项的一种图形化表示

  • 本质:把布尔代数的逻辑运算,转化为直观的图形合并操作。
  • 地位:数字电路中化简逻辑函数的核心工具。

2. 核心作用

逻辑函数化简有两种主流方法:

  • 公式法:依赖布尔代数公式,需要大量技巧,容易出错,很难判断结果是否最简。
  • 卡诺图法:程序化、可视化,只要严格遵守规则,就能稳定得到最简与或式,是初学者、应试场景的首选方法。

3. 核心底层逻辑

卡诺图的所有设计,都围绕一个核心目标:让几何上相邻的单元格,在逻辑上也相邻(仅 1 个变量不同)。

  • 目的:利用布尔代数的互补律 A + A' = 1,消去变化的变量,实现函数化简。

二、前置必备基础:最小项(不学懂没法用卡诺图)

卡诺图的每一个格子,都对应逻辑函数的一个最小项,这是所有内容的基础。

1. 最小项的定义

对于 n 个变量的逻辑函数,最小项是包含全部 n 个变量的乘积项,每个变量以**原变量(如 A)或反变量(如 A’)**的形式出现,且仅出现一次。

  • 例 1:2 个变量 A、B,最小项有 4 个:A'B'A'BAB'AB
  • 例 2:3 个变量 A、B、C,最小项有 8 个:A'B'C'A'B'CABC
  • 规律:n 个变量,有且仅有 2ⁿ 个最小项。

2. 最小项的编号(核心!填卡诺图的关键)

我们给每个最小项一个唯一的编号 mᵢ,i 是十进制数。

编号规则:

  1. 约定变量的顺序(如 A 为最高位,B 次之,C 为最低位);
  2. 最小项中,原变量记为 1,反变量记为 0,得到一组二进制数;
  3. 把这组二进制数转换成十进制数,就是最小项的下标 i。

举个例子(变量顺序 A-B-C):

最小项表达式二进制编码(A B C)十进制数编号
A’B’C’0 0 00m₀
A’B’C0 0 11m₁
A’BC’0 1 02m₂
A’BC0 1 13m₃
AB’C’1 0 04m₄
AB’C1 0 15m₅
ABC’1 1 06m₆
ABC1 1 17m₇

3. 最小项的核心性质

  1. 唯一性:任意一组变量取值,有且仅有一个最小项的值为 1。
  2. 相邻性:两个最小项,若仅有 1 个变量不同,则称为逻辑相邻,相加可消去该变量。
    • m₀(A'B'C') + m₁(A'B'C) = A'B'(C'+C) = A'B',消去了变化的变量 C。
  3. 全或性:所有最小项相加,结果恒为 1。

三、卡诺图的结构与绘制:循环码的核心作用

卡诺图的本质,是把 2ⁿ 个最小项,按照**循环码(格雷码)**的规则排列成的方格矩阵。

1. 循环码(格雷码)的核心规则

要求:相邻两组编码,仅有 1 位二进制位发生变化;序列首尾的两组编码,也满足该相邻特性(循环相邻)。

  • 2 位循环码标准顺序00 → 01 → 11 → 10
  • ❌ 错误顺序00 → 01 → 10 → 11(自然二进制),因为 01 和 10 有 2 位同时变化,破坏相邻性。

2. 不同变量数的卡诺图标准绘制

(1)2 变量卡诺图(2×2 矩阵)

A\B0(B’)1(B)
0(A’)m₀m₁
1(A)m₂m₃

(2)3 变量卡诺图(2×4 矩阵)

⚠️ 注意:列变量 BC 的顺序是 00→01→11→10,m₂ 在最后一列,不是第三列。

A\BC00(B’C’)01(B’C)11(BC)10(BC’)
0(A’)m₀m₁m₃m₂
1(A)m₄m₅m₇m₆

(3)4 变量卡诺图(4×4 矩阵,最常用)

⚠️ 注意:行变量 AB 和列变量 CD 均采用循环码。第一行和第四行相邻、第一列和第四列相邻、四个角相邻。

AB\CD00011110
00m₀m₁m₃m₂
01m₄m₅m₇m₆
11m₁₂m₁₃m₁₅m₁₄
10m₈m₉m₁₁m₁₀

四、核心理论:蕴涵项、主要项与必要项(化简的灵魂)

在动手画圈之前,必须理解三个核心术语。它们直接定义了什么是「最简与或式」。为了便于理解,我们全程使用一个经典例子贯穿本节:

示例函数F(A,B,C) = AB + A'C + BC 对应最小项:AB(m₆,m₇) + A'C(m₁,m₃) + BC(m₃,m₇) = Σm(1, 3, 6, 7)

1. 蕴涵项(Implicant)

定义:对于逻辑函数 F,若一个乘积项 P 为 1 时,F 一定为 1,则称 P 是 F 的一个蕴涵项卡诺图对应:乘积项 P 对应的所有最小项,都是 F 中取值为 1 的最小项。

  • ✅ 是蕴涵项的例子
    • AB:当 AB=1 时,F 必为 1(因为 F 包含 AB 项)。
    • A'C:当 A'C=1 时,F 必为 1。
    • ABC:当 ABC=1 时,AB 必为 1,所以 F 必为 1。
  • ❌ 不是蕴涵项的例子
    • BC':当 BC'=1 时即 B=1, C=0,若 A=0,则 A'C=0, AB=0, BC=0,此时 F=0。所以 BC' 不能保证 F 为 1。

2. 主要项 / 质蕴涵项(Prime Implicant,PI)

定义主要项,是不能再扩大、不能再消去变量的蕴涵项。 卡诺图对应按照合并规则圈出的、无法再进一步扩大的卡诺圈,对应的乘积项就是主要项。

  • ✅ 是主要项的例子
    • AB:覆盖了 m₆, m₇。如果想扩大(消去变量),变成 AB,就会包含 m₄,m₅ 或 m₂,m₃ 等 F 为 0 的项,所以无法扩大。
    • A'C:覆盖了 m₁, m₃。无法再扩大。
    • BC:覆盖了 m₃, m₇。无法再扩大。
  • ❌ 不是主要项的例子
    • ABC:它是蕴涵项,但它可以扩大成 AB(消去 C),扩大后依然是蕴涵项。所以 ABC 不是主要项。
    • 结论:最简与或式里的所有乘积项,一定都是主要项。

3. 必要项 / 实质主要项(Essential Prime Implicant,EPI)

定义:如果一个主要项里,至少包含一个「只被这个主要项覆盖,没有被其他任何主要项覆盖的最小项」,这个主要项就是必要项。 卡诺图对应:某个取值为 1 的单元格,只被一个最大卡诺圈包围,这个圈就是必要项。

  • ✅ 是必要项的例子(基于 F = AB + A'C + BC):
    • AB:覆盖 m₆, m₇。检查 m₆,其他主要项(A'C, BC)都不包含 m₆。m₆ 是 AB 独有的,所以 AB 是必要项。
    • A'C:覆盖 m₁, m₃。检查 m₁,其他主要项都不包含 m₁。m₁ 是 A'C 独有的,所以 A'C 是必要项。
  • ❌ 不是必要项的例子
    • BC:覆盖 m₃, m₇。m₃ 已经被 A'C 覆盖,m₇ 已经被 AB 覆盖。它没有独有的最小项,所以不是必要项。
  • 结论:最简与或式里,必须无条件包含所有的必要项。

4. 多余项 / 冗余项(Redundant Implicant)

定义本身是主要项,但它覆盖的所有最小项,都已经被其他选中的主要项完全覆盖。

  • ✅ 是多余项的例子
    • BC:因为必要项 ABA'C 已经覆盖了所有最小项(m₁, m₃, m₆, m₇),BC 覆盖的 m₃, m₇ 已被完全覆盖,所以 BC 是多余项。
  • 结论:最简与或式里,必须删除所有的多余项。

5. 三者的逻辑关系与生成步骤

所有蕴涵项 → 筛选出主要项(最大圈候选) → 拆分出必要项(必须留) + 非必要主要项 → 非必要主要项中,未被选中的就是多余项(必须删)

最简式生成严格步骤:

  1. 找出所有的主要项(圈出所有无法再扩大的合法卡诺圈);
  2. 找出所有的必要项(检查是否有最小项仅被一个主要项覆盖);
  3. 先把所有必要项加入最简式;
  4. 若必要项已覆盖所有 1,删除剩余项;若未覆盖完,从剩余主要项中选数量最少的组合补全覆盖;
  5. 未被选中的主要项即为多余项,删除。

五、卡诺图合并最小项的完整规则

基于上述理论,以下是实操中的具体合并规则。

1. 不可违反的硬性规则(违反则合并无效)

  1. 数量规则:单个卡诺圈包围的「取值为 1 的最小项」个数,必须是 2 的正整数次幂(1、2、4、8、16…)。
    • :圈 3 个 1 是绝对错误的。
  2. 形状规则:卡诺圈必须是横平竖直的矩形/正方形
    • :L 型、斜向、凹型都是错误的。
  3. 覆盖规则绝对不能遗漏任何一个取值为 1 的最小项
  4. 消元规则:圈住 2ⁿ 个相邻项,消去 n 个变量;固定为 1 写原变量,固定为 0 写反变量,变化的变量删除。

2. 得到最简与或式的优化规则

  1. 圈最大化优先:优先圈出尽可能大的卡诺圈(寻找主要项)。
  2. 必要项优先:先找出那些包含「独有最小项」的圈(必要项),这些是必须画的。
  3. 圈数最小化:在覆盖所有 1 的前提下,圈的总数量越少越好。
  4. 无冗余圈原则:如果一个圈里的所有 1 都已经被其他圈完全覆盖(多余项),这个圈必须删除。

六、从零开始的题目实操:完整步骤 + 手把手例题

通用解题 6 步法

  1. 确定变量个数,画出卡诺图,标好变量和循环码;
  2. 对应最小项位置填 1,其余填 0;
  3. 找必要项:寻找只被一个最大圈覆盖的 1,画出该圈;
  4. 补全覆盖:检查是否有未被覆盖的 1,用最少的大圈覆盖它们;
  5. 查冗余:确保没有完全被覆盖的多余圈;
  6. 把所有有效乘积项相加,得到最终结果。

例题 1<2> 变量基础题(入门)

题目:用卡诺图化简逻辑函数 F = A'B + AB' + AB

步骤 1&2:画卡诺图 & 填图

  • A'B = m₁,AB'=m₂,AB=m₃
  • 对应位置填 1:
A\B01
001 (m₁)
11 (m₂)1 (m₃)

步骤 3&4:画圈(寻找 EPI)

  • 圈 1(必要项):m₁ 和 m₃(同一列)。
    • 分析:m₁ 只被这个圈覆盖,所以是必要项。
    • 写项:B 固定为 1,A 变化,消去 A → B
  • 圈 2(必要项):m₂ 和 m₃(同一行)。
    • 分析:m₂ 只被这个圈覆盖,所以是必要项。
    • 写项:A 固定为 1,B 变化,消去 B → A
  • 检查:所有 1 都被覆盖,无多余项。

步骤 5:最终结果

F = A + B


例题 2<3> 变量进阶题(应试高频)

题目:用卡诺图化简逻辑函数 F(A,B,C) = Σm(0,1,2,5,6,7)

步骤 1&2:画卡诺图 & 填图

3 变量,2×4 卡诺图,行 A,列 BC(循环码 00,01,11,10)。

A\BC00011110
01 (m₀)1 (m₁)01 (m₂)
101 (m₅)1 (m₇)1 (m₆)

步骤 3&4:画圈(寻找 EPI 和 PI)

  • 圈 1(必要项):m₀、m₁。
    • 分析:m₀ 只被这个圈覆盖(上方无行,左侧无列,下方 m₄ 为 0)。
    • 写项:A 固定 0,B 固定 0 → A'B'
  • 圈 2(必要项):m₂、m₆。
    • 分析:m₂ 只被这个圈覆盖(利用首尾列循环相邻)。
    • 写项:B 固定 1,C 固定 0 → BC'
  • 圈 3(必要项):m₅、m₇。
    • 分析:m₅ 只被这个圈覆盖。
    • 写项:A 固定 1,C 固定 1 → AC
  • 检查:所有 1 都被覆盖,无多余项。

步骤 5:最终结果

F = A'B' + BC' + AC


例题 3<4> 变量核心题(考试必考)

题目:用卡诺图化简逻辑函数 F(A,B,C,D) = Σm(0,1,2,3,4,6,7,8,9,10,11,14,15)

步骤 1&2:画卡诺图 & 填图

4 变量,4×4 卡诺图。

AB\CD00011110
001111
011011
110011
101111

步骤 3&4:画圈(寻找 EPI 和 PI)

  • 圈 1(必要项):第一行 4 个 1(m₀,m₁,m₃,m₂)。
    • 分析:m₁ 只被此圈覆盖(四角圈不含 m₁)。所以第一行圈是必要项。
    • 写项:AB 固定 00 → A'B'
  • 圈 2(必要项):四个角的 1(m₀,m₂,m₈,m₁₀)。
    • 分析:m₈ 只被此圈覆盖。
    • 写项:B 固定 0,D 固定 0 → B'D'
  • 圈 3(必要项):第三、四列的 4 个 1(m₇,m₆,m₁₅,m₁₄)。
    • 分析:m₁₅ 只被此圈覆盖。
    • 写项:B 固定 1,C 固定 1 → BC
  • 检查:所有 1 都被覆盖,无多余项。

步骤 5:最终结果

F = A'B' + B'D' + BC


进阶技巧:不用转最小项,直接填卡诺图

考试时可以不用把函数转成标准最小项,直接按乘积项填 1,节省时间:

  • F = AB + A'C + BC'
    1. AB:A=1、B=1,不管 C,D 取什么,对应行 11 的所有格子,填 1;
    2. A'C:A=0、C=1,不管 B,D 取什么,对应行 00/01 中列 11/10 的格子,填 1;
    3. BC':B=1、C=0,不管 A,D 取什么,对应列 10 的所有格子,填 1;
    4. 其余位置填 0,直接完成卡诺图填写。

七、高频易错点避坑(90% 的初学者都踩过)

1. 绘图与规则类

  1. 循环码顺序错误:列/行用了自然二进制 00→01→10→11,导致相邻格子逻辑不相邻,合并完全错误;
  2. 圈的数量非 2 的幂次:圈了 3、5、6 个最小项,合并无效;
  3. 圈了斜向/不规则形状:斜向单元格有 2 位变量不同,不满足逻辑相邻,不能合并;
  4. 忽略循环相邻:漏掉了首尾行、首尾列、四个角的可合并项,导致圈不够大,结果非最简;
  5. 遗漏了取值为 1 的最小项:导致化简后的函数和原函数不等价,属于致命错误。

2. 概念与逻辑类

  1. 把非主要项当成主要项:圈了可以扩大的小圈,对应的乘积项不是主要项,没有资格进入候选,更不可能成为必要项;
  2. 误删必要项:必要项有独有的最小项,删除后会漏掉最小项,导致函数不等价,属于致命错误;
  3. 保留多余项:最简式中保留了无独有最小项的多余项,导致乘积项过多,表达式非最简;
  4. 认为非必要主要项都是多余项:只有未被选中、无法贡献覆盖的非必要主要项才是多余项,为了补全覆盖而选中的项不是多余项。

八、进阶考点:含无关项(任意项)的卡诺图化简

在实际工程或复杂逻辑设计中,某些输入组合永远不会出现,或者出现后输出值无所谓(可以是 0 也可以是 1)。这些最小项称为无关项(Don’t Care Conditions),在卡诺图中用 ×φ 表示。

1. 无关项的核心使用策略

无关项是化简的「超级工具」,用得好可以极大简化电路。核心策略只有一句话:「有利则用,无利则弃」

  • 当作 1 使用:如果将 × 当作 1,能帮助形成更大的圈(消去更多变量)或减少圈的总数,那么就把它当作 1 圈进去。
  • 当作 0 使用:如果将 × 当作 1 不能帮助扩大圈,或者该 × 周围的 1 已经被其他圈完全覆盖,那么就把它当作 0,不圈它
  • 硬性底线禁止圈出只包含 × 而不包含任何真实 1 的圈。无关项是为了服务真实最小项的,不能为了圈圈而圈圈。

2. 例题 1:无关项极大简化(全用)

题目:化简 F(A,B,C,D) = Σm(1,3,5,7,9) + Σd(10,11,12,13,14,15)

步骤 1:填卡诺图

有效最小项填 1,无关项填×:

AB\CD00011110
000110
010110
11××××
1001××

步骤 2:画圈策略

  • 观察:所有的真实 1 都集中在第 2 列(01)和第 3 列(11)。
  • 操作:我们可以利用下半部分的 ×,将第 2 列和第 3 列合并成一个 8 单元格的大圈(包含 m₁,m₃,m₅,m₇,m₉ 以及无关项 m₁₁,m₁₃,m₁₅)。
  • 分析
    • 这个圈覆盖了所有的真实 1
    • 这是一个必要项(因为它覆盖了所有 1)。
    • 在这个大圈中,A、B、C 都发生了变化(0 和 1 都有),只有 D 始终为 1第 2、3 列对应 CD=01 和 11,D 均为 1。
  • 结果:消去 A、B、C,仅保留 D。

步骤 3:最终结果

F = D

对比:如果不使用无关项,结果可能是 A'D + B'C'D 等复杂形式。使用无关项后,电路成本极大降低。

3. 例题 2:无关项部分使用( selective usage)

题目:化简 F(A,B,C,D) = Σm(0,2,8,10) + Σd(1,5) 注意:这里无关项较少,需要判断哪些有用,哪些没用。

步骤 1:填卡诺图

AB\CD00011110
001 (m₀)× (m₁)01 (m₂)
010× (m₅)00
110000
101 (m₈)001 (m₁₀)

步骤 2:画圈策略

  • 寻找必要项
    • 观察四个角的 1(m₀, m₂, m₈, m₁₀)。它们天然构成一个 4 单元格的大圈(循环相邻)。
    • 这个圈对应的项是 B'D'
    • 这个圈已经覆盖了所有的真实 1
  • 处理无关项
    • m₁ (×):它相邻的 m₀, m₂ 已经被四角圈覆盖。如果把 m₁ 当作 1,能形成更大的圈吗?不能(m₃ 是 0)。所以 m₁ 当作 0,不圈。
    • m₅ (×):它周围全是 0 或已被覆盖的项,无法帮助形成更大的圈。所以 m₅ 当作 0,不圈。
  • 结论:无关项在此题中未被使用,因为它们不能帮助简化结果。

步骤 3:最终结果

F = B'D'

4. 无关项化简的常见陷阱

  1. 圈了纯无关项:画了一个圈,里面全是 ×,没有真实的 1。这是错误的,会增加冗余项。
  2. 为了用而用:强行把无关项圈进去,导致圈的数量增加,反而使表达式变复杂。记住,无关项是可选的,不是必须的。
  3. 遗漏真实 1:过度关注无关项,反而漏掉了某个真实的 1 没有被覆盖。必须确保所有 1 都被覆盖。

九、总结与复习建议

  1. 基础要牢:循环码顺序(00-01-11-10)是生命线,绝对不能错。
  2. 理论指导:理解「必要项(EPI)」的概念,能帮你快速判断哪些圈是必须画的。
  3. 灵活应变:遇到无关项,不要犹豫,能帮圈变大就用,不能帮就当 0 处理。
  4. 多练手感:卡诺图是熟练工,建议找 5-10 道不同类型的题目(2/3/4 变量、有无无关项)进行集中练习,形成肌肉记忆。

掌握以上内容,你就能从容应对数字电路中绝大多数逻辑函数化简题目。

卡诺图(详细补充)
https://shi-tou1234.github.io/-/en/blog/卡诺图详细补充/
Author
shi-tou1234
Published on
Mar 29, 2026
License
CC BY-NC-SA 4.0