📜  用于最小化循环布尔函数的 Prime Implicant 图

📅  最后修改于: 2021-09-16 10:29:37             🧑  作者: Mango

先决条件 – K-Map(卡诺图),K-Map 中的蕴涵
如果一个函数在其各自的 K-Map 中不存在本质素数蕴涵,则称该函数为循环布尔函数

循环函数的性质:

  • 每个素蕴涵项的大小相同。
  • 每个最小项都被至少两个主要蕴涵项覆盖(这意味着没有本质的主要蕴涵项)。
  • 没有本质的主要蕴涵意味着对于这些函数存在不止一个最小化的解决方案/表达式,这将使用数字电路进一步实现。
  • 对于循环函数,我们可以有两个极小形式,且质蕴涵项没有重叠。

例子:
找出以下函数的最小表达式。

f(w, x, y, z) = \Sigma (0, 2, 4, 5, 10, 11, 13, 15)

正如我们在上面的 K-Map 中看到的那样,不存在本质的质蕴涵项。在这里,我们可以使用质蕴涵图来轻松解决它。

使用质蕴涵图求解上述函数的步骤:

  • 步骤1:
    如下绘制质蕴涵图。水平条目表示与所有质蕴涵(垂直)映射的给定最小项。只要质蕴涵覆盖 K-Map 中的特定最小项,方框就会交叉(“x”)。

    例如,’WXZ’ 主蕴涵项覆盖 13 和 15,因此相应的方块被交叉(用“x”表示)。

    请注意,A、B、C、D .. 是用于表示所有主要蕴涵项的变量。

  • 第2步:
    任意选择任何质数蕴涵;查看 ( \checkmark   ) 主要蕴涵项和相应的覆盖最小项。现在删除主要蕴涵项的行及其最小项的相应列。

    在我们的示例中,选择了覆盖最小项 2 和 10 的素蕴涵项 A。因此。删除 A 的行以及 2 和 10 的列。任意选择的质蕴涵(在我们的示例 A 中)必须出现在最终的最小表达式中。

  • 第 3 步:
    找出所有被其他主要蕴涵完全覆盖的主要蕴涵并删除它们对应的行(因为这些不是本质的主要蕴涵。)。

    在我们的例子中,H 覆盖了 {0, 4},B 覆盖了 {0},这意味着 H 覆盖了 B 覆盖的所有最小项,因此删除 B。同样 D 完全覆盖 C,因此删除 C。

  • 第四步:
    现在遵循下面给出的子步骤中提到的质数蕴涵图的标准程序:
    1. 找出仅被一个质蕴涵项覆盖的最小项。
    2. 查看 ( \checkmark   ) 该最小项、其相应的主要蕴涵项以及该相应主要蕴涵项所涵盖的所有其他最小项。
    3. 如果检查所有最小项( \checkmark   ) 停止程序,否则转到子步骤 1。

示例 2 :找到以下循环函数的最小表达式。

f(x, y, z) = \Sigma (0, 1, 2, 5, 6, 7)

步骤1:
绘制素蕴涵图。

第2步:
A 是任意选择的。现在 A 的行和相应的最小项(0 和 2)的列都被删除了。

第 3 步:
由于 B 和 F 分别被 C 和 E 完全覆盖,因此删除素蕴涵 B 和 F 。

第四步:
现在遵循示例 1 中提到的质数蕴涵图的标准程序。

Minterm 1 仅被素数蕴涵 C 覆盖,因此检查 ( \checkmark   ) C 以及它所涵盖的所有最小项(1 和 5)。

Minterm 6 仅被素数蕴涵 E 覆盖,因此检查 ( \checkmark   ) E 以及它所涵盖的所有最小项(6 和 7)。

现在因为所有的最小项 (1, 5, 6, 7) 都被检查 ( \checkmark   ) 因此停止该程序。

Final Minimal Expression: A + C + E