逻辑电路

概述

逻辑电路(Logic Circuit)是用逻辑门(AND、OR、NOT 等)组合实现的布尔函数计算装置,是布尔代数的物理实现形式,也是计算复杂性理论中电路复杂度类的研究对象。

定义

形式化定义

一个布尔电路(Boolean Circuit) 是一个有向无环图(DAG),其中:

  • 输入节点(input gate):无入边,标记为布尔变量 或常量 0/1
  • 逻辑门(logic gate):每个非输入节点标记为一个布尔运算:
    • AND 门):入度为 2,输出
    • OR 门):入度为 2,输出
    • NOT 门):入度为 1,输出
  • 输出节点(output gate):一个指定的门,其输出即为电路的计算结果

电路计算布尔函数

核心度量

电路大小(Circuit Size)

电路大小衡量了实现该布尔函数所需的硬件资源量。

电路深度(Circuit Depth)

电路深度衡量了计算的并行时间——深度为 的电路可以在 个时间步内完成计算(假设每个门耗时 1 个时间步,且同一层的门可以并行执行)。

电路族(Circuit Family)

对每个输入长度 ,一个电路 计算 位输入上的函数。所有 的集合 构成一个电路族

通用门集

以下门集合是通用的(universal),即用它们可以实现任意布尔函数:

  • :标准门集
  • :仅用 NAND 门即可实现所有布尔函数(NAND 是功能完备的)
  • :仅用 NOR 门即可实现所有布尔函数

复杂度类与电路

P/poly

P/poly 复杂度类

语言 ,当且仅当存在多项式大小的电路族 判定

即:对每个 ,存在大小不超过 (某常数 )的电路

P/poly 包含 P(多项式时间可判定的语言),但也可能包含非递归语言(因为电路族不需要一致地构造)。

CIRCUIT-SAT

CIRCUIT-SAT 是 NP 完全的

给定布尔电路 ,判定是否存在输入赋值使 输出 1。这是 Cook-Levin 定理的电路版本——CIRCUIT-SAT 是第一个被证明为 NP 完全的问题之一。

归约方向:任何 NP 问题都可以在多项式时间内归约为 CIRCUIT-SAT(将非确定型图灵机的计算过程编码为电路)。

应用场景

  • 硬件设计:CPU、GPU 等处理器由数十亿个逻辑门组成
  • NP 完全性:CIRCUIT-SAT 是 Cook-Levin 定理的基础,证明 SAT 问题的 NP 完全性
  • 密码学:密码算法的硬件实现依赖逻辑电路优化
  • 程序验证:将程序的正确性条件编码为电路可满足性问题

参见