cirq 中的量子傅立叶变换 (QFT)

$$
QFT |x> = frac{1}{2^{n/2}} sum_{y=0}^{2^n-1} e^{2 pi iyx / 2^n} |y>
$$

$|x_1>$ = -H-CR2-CR3-.. -CRn—————–
$|x_2>$ = ——————H-CR2–.. ———-
.
.
$|x_{n-1}>$ = ———————.. –H-CR2—
$|x_n>$ = ————————-.. ——–H-

import cirq
import random
import matplotlib.pyplot as plt
import numpy as np
def make_qft(qubits):
    qreg = list(qubits)
    while len(qreg) > 0:
        q_head = qreg.pop(0)
        yield cirq. H(q_head)
        for i, qubit in enumerate(qreg):
            yield (cirq. CZ **(1 / 2 ** (i + 1)))(qubit, q_head)
qubits = cirq. LineQubit.range(4)
qft = cirq. Circuit(make_qft(qubits))
print(qft)
image.png