B1: Copy Oracle

実行時間制限:3 秒

メモリ制限:512 MiB

配点:100点

Writer:admin

解説

オラクルの入力となる 量子ビット xxyy の計算基底状態と、出力 y=xyy' = x \oplus y の真理値表は次のようになります。

xxyyy=xyy' = x \oplus y
000
101
011
110

真理値表を注意深く観察すると、x=1x = 1 の場合にのみ yy のビットが反転していることがわかります。

このような操作は xx を制御ビット、yy を標的ビットとする制御 XX ゲート 1 を使うことで実現できます。

よって、制御 XX ゲートを使うことでこの問題を解くことができます。

解答例

解答例は以下の通りです。

from qiskit import QuantumCircuit, QuantumRegister
 
 
def solve() -> QuantumCircuit:
    x, y = QuantumRegister(1), QuantumRegister(1)
    qc = QuantumCircuit(x, y)
    
    qc.cx(x, y)
 
    return qc

Footnotes

  1. 制御ゲートについては 問題 A3 の解説 を参考にしてください。