Quantum Computing : Basics of Qiskit and Cirq (Part 1)
Quantum Computing: Quantum computing is a type of computing that uses quantum-mechanical phenomena, such as superposition and entanglement, to perform operations on data. Quantum computers use quantum bits, or qubits, which can represent and process a much larger amount of information than traditional bits. This allows them to solve complex problems much faster than classical computers in certain scenarios.
Cirq: Cirq is an open-source Python library developed by Google Quantum AI for designing, simulating, and running quantum circuits on quantum computers and simulators. It provides tools to create quantum circuits that work with noisy intermediate-scale quantum (NISQ) devices, which are characterized by having a modest number of qubits that can perform a limited set of operations.
Qiskit: Qiskit is an open-source software development kit (SDK) created by IBM. It allows users to work with quantum computers at the level of circuits, operators, and algorithms. Qiskit provides tools for building and running quantum programs on both simulators and real quantum machines provided by IBM and other providers.
Both Cirq and Qiskit are instrumental in advancing the field of quantum computing by making it more accessible to researchers and developers. They each have their own set of features and are compatible with different quantum processors and simulators, catering to a wide range of quantum computing applications.
Installing Qiskit and Cirq
Firstly install qiskit by IBM: Check the documentation
pip install qiskit
Secondly install cirq by Google: Check documentation
!pip install cirq --quiet
import cirq
import cirq_web
print("Libraries imported successfully!")
Create a qubit and apply X gate
In qiskit:
import qiskit
from qiskit import *
qc= QuantumCircuit(1)
qc.x(0)
qc.draw()
To get more good drawing, you may do this:
pip install pylatexenc
Now, if you write: qc.draw('mpl') ,
you will see this
Note: We have just used MatPlotLib
In Cirq:
!pip install cirq --quiet
import cirq
import cirq_web
qubit = cirq.NamedQubit("q0")
qc = cirq.Circuit()
qc.append( cirq.X(qubit) )
print( qc )
H gate
In cirq:
qc.append(cirq.H(qubit)) #adding H gate to the circuit
print(qc)
In qiskit:
Bloch Sphere
In qiskit:
from qiskit import QuantumCircuit from qiskit.quantum_info import Statevector from qiskit.visualization import plot_bloch_multivector
qc = QuantumCircuit(1) # one qubit creation qc.x(0) #applying x gate to the first qubit
state = Statevector(qc) #creating state vector for the circuit plot_bloch_multivector(state) #bloch sphere
In cirq:
state_vector =
cirq.final
_state_vector(qc) #creating state vector
ket = cirq.dirac_notation( state_vector=state_vector ) #generating ket notation print( state_vector) # state_vector = [0.+0.j 1.+0.j]
print(ket) # ket= 0.71|0⟩ - 0.71|1⟩ as we have applied X gate & H gate cirq_web.bloch_sphere.BlochSphere( state_vector=state_vector )
Histogram
In qiskit:
from qiskit.visualization import plot_histogram
counts1 = {'1': 1}
legend = ['First execution']
plot_histogram([counts1], legend=legend, color=['lightblue'], title="New Histogram")
In cirq:
qc.append(cirq.measure(qubit)) #histogram is not possible without measurement print(qc)
sim = cirq.Simulator() result =
sim.run
(qc, repetitions = 100) #100 times repetition
hist = cirq.plot_state_histogram(result, plt.subplot(), title = 'Qubit States', xlabel = 'States', ylabel = 'Occurrences')
plt.show
()
Restart the kernel if you get errors
Try the qiskit code
Try the cirq code
Done!