📌  相关文章
📜  门| Sudo GATE 2020 Mock I(2019年12月27日)|问题26(1)

📅  最后修改于: 2023-12-03 15:42:19.644000             🧑  作者: Mango

门| Sudo GATE 2020 Mock I(2019年12月27日)|问题26

这是一道基于门的逻辑电路设计问题。假设有一个基本门库,包括与门、或门、非门和异或门以及它们的扩展版本,如与非门、或非门、或异或门等。

问题描述

你需要使用基本门来实现以下逻辑电路: $$ f(a, b, c, d, e) = (\neg a \land b \land \neg c \land \neg d) \lor (a \land \neg b \land c \land \neg d) \lor (a \land b \land \neg c \land d \land \neg e) \lor (\neg a \land c \land \neg d \land \neg e) $$

其中 $a$, $b$, $c$, $d$, 和 $e$ 是两个 bit 的变量。

请编写一个电路,其中的所有门必须来自基本门库,并且数量应该尽可能小。

使用 markdown 格式来描述你的解决方案,也可以使用代码片段来表述。

解决方案

首先,我们注意到原始表达式是由四个子表达式的或运算组成的。因此,我们可以先设计四个电路来计算它们。

子电路 1

$ (a \land \neg b \land \neg c \land \neg d) $

这个表达式可以使用与门和非门来实现。

a -------\
          AND -- NOT -- out
b -------/
c -------/
d -------/
子电路 2

$ (\neg a \land c \land \neg d \land \neg e) $

a ------- NOT --\
                 AND -- NOT -- NOT -- out
b -------/       |
c -------        |
d -------        |
e -------/       |
子电路 3

$ (a \land b \land \neg c \land d \land \neg e) $

这个表达式可以使用异或门、非门、与门和或门来实现,因为:

$$ (a \land b \land \neg c \land d \land \neg e) = (a \oplus b) \land \neg c \land (b \oplus d) \land \neg e $$

a -- XOR --\
            |    AND -- NOT -- out
b -- XOR --|         |
c -------/ |         |
d -- XOR --      AND -|
e -------/        NOT --|
子电路 4

$ (\neg a \land b \land c \land \neg d) $

这个表达式可以使用异或门、与门和非门来实现,因为:

$$ (\neg a \land b \land c \land \neg d) = (a \oplus 1) \land b \land c \land (d \oplus 1) $$

a ------- NOT --\
                 |    XOR -- XOR -- NOT -- out
b -------        |         |         |
c -------        |         |       AND -|
d ------- NOT -- /          \       NOT --|
合并子电路

现在,我们可以合并这四个电路来计算整个表达式。为此,我们可以在任意子电路之间使用或门。

a -------[sub-circuit-1]--- OR --\
                                    |
b -------[sub-circuit-4] ------ AND --[sub-circuit-3]---- OR -- out
                                    |
c -------[sub-circuit-1] ------ AND --[sub-circuit-4] --- OR --/
                                    |
d -------[sub-circuit-2] ------ AND --/
                                    |
e -------[sub-circuit-2] ------/