确定实现布尔表达式所需的NAND / NOR门的最小数量


9

是否有任何算法可以确定带有NAND或NOR门的最小数量

  1. 给定数量的输入
  2. 补充输入的可用性/不可用性

实现布尔表达式所需的吗?我们可以通过Karnaugh映射获得最小的AND-OR形式作为素数蕴含量(据我所知,Quine-McCluskey算法确定性地获得了它们)。对于NAND或NOR实现,是否也存在类似的技术?至少,即使没有找到实际的图,这种技术也应该确定所需的NAND / NOR门的最小数量?

在主要牵涉者上应用德摩根定律似乎不是确定性的,

A ⊕ B = A'B + AB' = ((A'B)'(AB')')' [5 NAND gates]
A ⊕ B = (AB + A'B')' = ((ABAB+ABB') + (A'AB+A'B'))' = (AB(AB+B') + A'(AB+B'))' = ((AB+A')(AB+B'))' = (((AB)'A)'((AB)'B)')' [4 NAND gates by reusing (AB)']

这是两阶段还是多阶段实施?
嘶嘶声

@RespawnedFluff多层实现的目标是最小化门的数量,因此最小的NAND / NOR实现也应该是多层的。
Samik

K-map不会给您带来最少的多层优化结果。
Fizz

Answers:


10

您只能通过解决整数编程问题(或等效物,请参见下文)来找到多层网络中的最小门数。这个问题是NP完全的,因此只能解决多达12个左右的门。

存在一些逼近方法,它们不会为您提供最小数目,但在所需时间方面更易于处理...这些本身就是一个很大的话题,基本上是多级优化的整个领域。您可以在此处阅读[免费]概述。

对于小型NAND网络(最多4个变量),该问题已通过穷举枚举[或等效方法]完全解决。伊丽莎白·安·恩斯特(Elizabeth Ann Ernst)最近发表了一篇 [2009] 博士学位论文,总结了古代的研究成果并加以扩展。恩斯特使用分支定界法,在实践中对穷举法进行了改进,但并非渐近。她还指出,其他隐式枚举方法,例如整数编程或CSP(约束满足,通过SAT解决),在实践中效果较差。

很明显,她为自己的方法编写了一些软件(称为BESS),但是我不确定该软件是否可以在某个地方公开获得。她的论文全文可在umich免费获得。的确,您找到了2输入xor的最小表达式(显然是您的第二个表达式),下面突出显示了一个表达式:

在此处输入图片说明

她还将准确的结果(对于NAND)与ABC的启发式优化器产生的结果进行了比较。

在已知最佳网络的4,043个功能中,ABC能够为其中的340个产生最佳网络。对于那些ABC无法产生最佳网络的功能,它平均比最佳网络大36%[。]

有(显然)一些[大型]网络尚未完成BESS,但允许找到一个上限(在放弃搜索的位置)。从下面的第二张图中可以看出,对于那些ABC来说,它们的表现相当不错[相对于发现的界限而言]。

在此处输入图片说明


如果您很好奇,我已经尝试了xor问题的ABC ...它至少给出了5个nand门resyn2。因此,这并不比使用星期五的Logic Friday好。
Fizz

有一些用于ABC的脚本和数据库,这些脚本和数据库基本上可以查找大量用于预先计算的最佳实现的功能,例如arxiv.org/pdf/1108.3675.pdf我还没有尝试过,但是即使它起作用了,辛苦的工作还是在其他地方完成。
Fizz

我正在仔细阅读您提供的材料,它们看起来非常有趣,但是我仍在努力理解它们。一旦我正确理解它们,我可能会奖励赏金。在此期间,请进行投票。
Samik

1

可能有更好的技术,但是回到黑暗时代,我发现Karnaugh Maps可以正常工作


您是否想了解那些“黑暗时代”,即如何从从卡诺图获得的AND-OR实现中继续最小化NAND / NOR实现?
Samik

1

NAND后跟NAND与AND后跟OR等效。

NOR后跟NOR等于或后跟AND。

NAND后跟NOR等同于AND后跟AND,这实际上没有多大意义。NOR后跟NAND将等效于OR后跟OR。

我不相信在一般情况下,有任何可行的方法都可以找到大量输入问题的最小解决方案(显然,对于少量输入,您可以蛮力行事)。Quine-McClusky仅查看两级解决方案(最小的两级解决方案通常不是总的最小解决方案),并且在复杂的真值表和大量输入的情况下可能无法实现计算。


因此,没有比泡沫转移更好的方法了吗?
Samik

1

最好的算法是Espresso算法。在某种程度上,这是在FPGA综合中实现的

逻辑星期五是可以使用的一块软件。注意:这将XOR减少到5个NAND门。


但是Espresso还提供了AND-OR实现,不是吗?
Samik

1
浓缩咖啡仅在大型输入(公式)可行的情况下才是“最佳”(与k-maps不同),但在所有情况下都无法提供最佳/最小公式。
嘶嘶声
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.