View on GitHub
Open this notebook in GitHub to run it yourself
Qiskit code for discrete quantum walk
This notebook shows how to generate data for discrete quantum walk usingqiskit 1.2.
Copy
Ask AI
# import time
# from qiskit import QuantumCircuit, QuantumRegister, transpile
# from qiskit.circuit.library.standard_gates import XGate
# BASIS_GATES = ["u", "cx"]
# OPT_LEVEL = 3
# SIZE = 6
# # mcx from control on X
# def mcx_gate(num_ctrl_qubits):
# my_mcx_gate = XGate().control(num_ctrl_qubits)
# return my_mcx_gate
# # get increment circuit as an MCX cascade
# def get_increment_circuit(num_qubits):
# increment_circuit= QuantumCircuit(num_qubits)
# for j in range(num_qubits - 1):
# increment_circuit.append(mcx_gate(num_qubits-1-j),[k for k in range(num_qubits-j)])
# increment_circuit.x(0)
# return increment_circuit
# # run an example
# start_time = time.time()
# q_walk_step = QuantumCircuit(SIZE+1)
# q_walk_step.h(0)
# q_walk_step.append(get_increment_circuit(SIZE).control(1, ctrl_state=1),
# [k for k in range(SIZE+1)])
# q_walk_step.append(get_increment_circuit(SIZE).inverse().control(1, ctrl_state=0),
# [k for k in range(SIZE+1)])
# transpiled_cir = transpile(
# q_walk_step,
# basis_gates=BASIS_GATES,
# optimization_level=OPT_LEVEL,
# )
# transpilation_time = time.time()-start_time
# depth = transpiled_cir.depth()
# cx_counts = transpiled_cir.count_ops()["cx"]
# width = transpiled_cir.width()
# print(f"==== qiskit for {SIZE}==== time: {transpilation_time}")