Skip to content

Commit 2f17936

Browse files
committed
docs: add Quantum Ch.6 Classic Logic, Gates, and Circuits
1 parent 94854ea commit 2f17936

File tree

3 files changed

+226
-0
lines changed

3 files changed

+226
-0
lines changed

docs/config.yml

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ nav:
66
- spin-and-qubits
77
- entanglement
88
- bells-inequality
9+
- classic-logic-gates-and-circuits
910
- ads:
1011
- avl-tree
1112
- amortized-analysis
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
---
2+
title: Ch.6 Classic Logic, Gates, and Circuits
3+
---
4+
5+
本章介绍了经典逻辑电路,并引入了**可逆逻辑门**的概念,然后在此基础上介绍了一种以**桌球碰撞**来实现逻辑运算的理想模型. 本文只介绍可逆逻辑门的部分:CNOT 门、Toffoli 门、Fredkin 门.
6+
7+
---
8+
9+
## 受控非门 CNOT
10+
11+
**受控非门**(Controlled-NOT gate)接收两个输入比特,传出两个输出比特. 它的作用是:**当第一个比特是 1 时,将第二个比特取反;当第一个比特是 0 时,第二个比特保持不变**. 用函数的形式表达,可以写为
12+
13+
$$
14+
f(x, y) = (x, x \oplus y).
15+
$$
16+
17+
CNOT 门是**可逆的**,给定一组输出,可以唯一确定输入. 我们后面介绍的所有门都满足这个条件.
18+
19+
同时我们注意到,两个 CNOT 门的作用可以**相互抵消**,即 $(x, y) \mapsto (x, x \oplus y) \mapsto (x, x \oplus (x \oplus y)) = (x, y)$.
20+
21+
我们可以通过一个**扇出**(Fan-out,在本书中指的是将一个比特复制到多个比特,即下图的小黑点)和一个**异或门**来实现 CNOT 电路.
22+
23+
![](./assets/classic-logic-gates-and-circuits.cnot-circuit.svg){.inv width=400px}
24+
25+
在量子电路中,我们用如下记号表示.
26+
27+
```typst
28+
#import "@preview/quill:0.6.0": *
29+
#scale(180%, reflow: true, quantum-circuit(
30+
lstick($x$), 1, ctrl(1), 1, rstick($x$), [\ ],
31+
lstick($y$), 1, targ(), 1, rstick($x xor y$)
32+
))
33+
```
34+
35+
---
36+
37+
## Toffoli 门
38+
39+
**Toffoli 门**有三个输入和三个输出,**当前两个输入都是 1 时,将第三个输入取反**,因此又称为**CCNOT 门**(Controlled-Controlled-NOT gate). 它可以用函数表示为
40+
41+
$$
42+
T(x, y, z) = (x, y, (x \land y) \oplus z).
43+
$$
44+
45+
和 CNOT 门一样,Toffoli 门也是可逆的,并且两个 Toffoli 门的作用可以相互抵消.
46+
47+
它用如下的记号表示.
48+
49+
```typst
50+
#import "@preview/quill:0.6.0": *
51+
#scale(180%, reflow: true, quantum-circuit(
52+
lstick($x$), 1, ctrl(1), 1, rstick($x$), [\ ],
53+
lstick($y$), 1, ctrl(1), 1, rstick($y$), [\ ],
54+
lstick($z$), 1, targ(), 1, rstick($(x and y) xor z$)
55+
))
56+
```
57+
58+
Toffoli 门是**通用门**,因为它可以实现 **NAND 门****扇出**.
59+
60+
$$
61+
\begin{align*}
62+
\text{NAND:}\quad & T(x, y, 1) = (x, y, (x \land y) \oplus 1) = (x, y, x \uparrow y), \\[0.7em]
63+
\text{扇出:}\quad & T(x, 1, 0) = (x, 1, (x \land 1) \oplus 0) = (x, 1, x).
64+
\end{align*}
65+
$$
66+
67+
---
68+
69+
## Fredkin 门
70+
71+
**Fredkin 门**有三个输入和三个输出,**当前第一个输入是 1 时,交换第二个和第三个输入**,对应函数
72+
73+
$$
74+
F(x, y, z) = (x, (\neg x \land y) \lor (x \land z), (\neg x \land z) \lor (x \land y)).
75+
$$
76+
77+
或者更直观地写成
78+
79+
$$
80+
\begin{align*}
81+
F(0, y, z) &= (0, y, z), \\[0.7em]
82+
F(1, y, z) &= (1, z, y).
83+
\end{align*}
84+
$$
85+
86+
Fredkin 门也是自身的逆. 可用如下记号表示.
87+
88+
```typst
89+
#import "@preview/quill:0.6.0": *
90+
#scale(180%, reflow: true, quantum-circuit(
91+
lstick($x$), 1, ctrl(1), 1, rstick($x$), [\ ],
92+
lstick($y$), 1, swap(1), 1, rstick($(not x and y) or (x and z)$), [\ ],
93+
lstick($z$), 1, swap(0), 1, rstick($(not x and z) or (x and y)$)
94+
))
95+
```
96+
97+
Fredkin 门也是**通用门**,因为可以实现**与门****非门****扇出**.
98+
99+
$$
100+
\begin{align*}
101+
\text{与门:}\quad & F(x, y, 0) = (x, \neg x\land y, x\land y), \\[0.7em]
102+
\text{非门、扇出:}\quad & F(x, 0, 1) = (x, x, \neg x).
103+
\end{align*}
104+
$$

0 commit comments

Comments
 (0)