Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 命题逻辑——减少运算次数_Algorithm_Optimization_Boolean_Logic - Fatal编程技术网

Algorithm 命题逻辑——减少运算次数

Algorithm 命题逻辑——减少运算次数,algorithm,optimization,boolean,logic,Algorithm,Optimization,Boolean,Logic,简言之,我想知道,给定两个命题公式,是否有一种标准方法可以找到与这两个公式输出相同的最短运算序列。例如,如果我们有以下公式: 及 我们可以通过引入一个新的命题来减少操作的数量: 然后Q变成: 这将操作数(一元和二进制)从19减少到14。Q的新逻辑电路为: 理想情况下,我希望只有否定和析取。有没有一种算法可以把任何命题转换成我理想的简化命题?有没有一种算法可以引入上述新命题?是的,有一种标准的逻辑方程简化方法 这是使用 这是 背后的想法是将逻辑/电路真值表编码为矩形矩阵 这是本书中3

简言之,我想知道,给定两个命题公式,是否有一种标准方法可以找到与这两个公式输出相同的最短运算序列。例如,如果我们有以下公式:

我们可以通过引入一个新的命题来减少操作的数量:

然后
Q
变成:

这将操作数(一元和二进制)从
19
减少到
14
Q
的新逻辑电路为:


理想情况下,我希望只有否定和析取。有没有一种算法可以把任何命题转换成我理想的简化命题?有没有一种算法可以引入上述新命题?

是的,有一种标准的逻辑方程简化方法

  • 这是使用
  • 这是
  • 背后的想法是将逻辑/电路真值表编码为矩形矩阵
  • 这是本书中3幅卡诺图的示例
  • 一个映射表示单个输出
  • 每个都代表其自身的逻辑电路/方程
  • 如您所见,set1和set2是相同的
  • X
    表示输出=1
  • 空白表示输出=0
  • 边是所有输入组合的二进制编码
简化

  • 是通过从地图中提取方程来完成的
  • 因此,找到覆盖所有X或空间的最小面积数
  • 哪一个取决于所使用的逻辑,还是哪一个更容易选择
  • 例如,仅当ab都处于活动状态时,set1才处于活动状态
  • 所以:
    set1=a.b
  • set3可以这样提取:
  • set3=a+b
    通过选择x
  • set3=!(!a)。(!b))
    通过选择空格
[附注]

  • +
  • 选择可以重叠边框

经过大约50年的研究,仍然没有标准的多级逻辑综合方法。两级情况可以使用或方法妥善处理。在这里,minterm的数量被最小化。但这并不直接对应于确定函数值所需的逻辑操作数

加州大学伯克利分校开发了几种启发式算法。其中一些工具很好地打包在
Logic Friday 1

为您的函数输入Q:

输入: Q:=(A&((B&C)+(B'&C'))+(A'&((B&C)+(B'&C')))

最小化: Q:=ABC+ABC+ABC+ABC+ABC

在“映射到门”操作后的输出:

注意:

最近的一个合成套件是Clifford Wolf的。

我想你可能会更幸运地在其他SE站点之一(可能)得到答案。有趣的问题,用德摩根定律,否定一切conjunctions@AidanKane是的,我不知道该把它贴在哪一个上面。我想我会同时做这两件事,然后看看哪一件先给出答案。我在这里很喜欢它,这样我就可以看到人们的想法。检查一个电路是否总是返回“false”被称为“circuit SAT”,这是一个典型的NP难问题。