【问题标题】:Finding the essential prime implicants寻找基本的主要蕴涵
【发布时间】:2017-02-20 02:57:24
【问题描述】:

给定表格:

我试图找出函数 F(w, x, y, z) = sum (0, 2, 5, 7, 8, 10, 12, 13, 14, 15) 的质蕴涵项。我得到了 xz 的基本质蕴涵项。我想知道是否还有更多基本的质蕴涵项?我很难理解如何找到它们。

【问题讨论】:

    标签: boolean-expression


    【解决方案1】:

    质蕴涵项是最小 DNF(析取范式;SOP = 乘积之和)或最小 CNF(合取范式;POS = 和的乘积)形式的逻辑术语,在删除它的任何部分后它不会是不再是输出函数的质蕴涵项。

    考虑这个更简单的例子:

     a\b  0   1  
        +---+---|
      0 | 0 | 0 |
      1 | 0 |(1)|
        +---+---+
    

    您可以将 DNF 形式的输出函数编写为文字值位置的最小术语:a=1,b=1(由 K-map 中的括号“圈出”):

    y = a*b
    

    它是主蕴涵项,因为如果您删除任何文字(变量或变量的否定),它将不再是输出函数的蕴涵项!

    这里您只有两个变量,因此您可以从正确的输出函数定义y = a*b 中删除 a(a 或其否定)或 b(b 或其否定)。

    从 y = a*b 中删除 b,您可以在位置 a=1、b=0 上圈出一个 零:

     a\b  0   1  
        +---+---|
      0 | 0 | 0 |
      1 |(0   1)|
        +---+---+  wrong_output_function: y1 = a
    

    或在a=0、b=1 的位置圈出一个不需要的 零,方法是删除 a(a 或其否定):

     a\b  0   1  
        +---+---|
      0 | 0 |(0)|
      1 | 0 |(1)|
        +---+---+  wrong_output_function: y2 = b
    

    在这个例子中,通过选择在 DNF 中表达输出函数,你想圈出所有 ones 和 NO zero,这就是为什么所有这两个布尔表达式 y1 和 y2错了。

    举个例子:

    为了找到最小的 DNF 形式,您希望找到可能的最大组(术语),它们中的变量数量可能最少,在这种情况下不会威胁输出函数的有效性,在任何一个中添加一个零组(输出函数的蕴涵项)。

    在这里您可以看到,一些组重叠,但这没关系,因为根据定义,这些组具有最小形式。这个 K-map 是最小的,因为你不能让选择的组更大。

    例如,您可以分别圈出未被绿色圆圈捕获的红色组,但在这种情况下,它们不会是质蕴涵项,因为您可以使它们的组更大,如之前的卡诺图所示。因此,这个 K-map 不是最小的,因为存在非质蕴涵项。

    注意:你函数中的索引与我的 K-map 中的索引不匹配,因为变量的排列不同。我的 K-map 匹配原始 K-map 样式中变量的位置。输出函数就是以此为基础的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多