結論
Qiskitで作成した回路を別の回路に組み込みたいとき, qc.append( sub_qc, [q[m], q[m+1], ..., q[n]] )
と書くことで追加できる.
[q[m], ... ,q[n]]
はq[m:n+1]
と書いても実行される.
slice
なのでn+1
になる.
例
IBM Q Epxrerience上で実行した.
まずimport
%matplotlib inline
# Importing standard Qiskit libraries and configuring account
from qiskit import QuantumCircuit, execute, Aer, IBMQ
from qiskit.compiler import transpile, assemble
from qiskit.tools.jupyter import *
from qiskit.visualization import *
# Loading your IBM Q account(s)
provider = IBMQ.load_account()
from qiskit import *
sub_qc
を定義, あとでappend
される.
q = QuantumRegister(3)
c = ClassicalRegister(3)
qc = QuantumCircuit(q, c)
qc.draw()

parent_qc
を定義
q = QuantumRegister(4)
c = ClassicalRegister(1)
parent_qc = QuantumCircuit(q, c)
parent_qc.append( sub_qc, [q[1], q[2], q[3]] )
parent_qc.draw()

slice
の書き方version
q = QuantumRegister(4)
c = ClassicalRegister(1)
parent_qc = QuantumCircuit(q, c)
parent_qc.append( sub_qc, q[1:4] )
parent_qc.draw()