0% found this document useful (0 votes)
2 views

Assignment 1 and 2

The document contains multiple Qiskit code snippets demonstrating various quantum circuits, including Bell states, superdense coding, GHZ states, and parity oracles. Each section includes the creation of quantum circuits, application of quantum gates, measurement of qubits, and visualization of results using histograms. The document also mentions the use of a balanced function in a quantum oracle context.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Assignment 1 and 2

The document contains multiple Qiskit code snippets demonstrating various quantum circuits, including Bell states, superdense coding, GHZ states, and parity oracles. Each section includes the creation of quantum circuits, application of quantum gates, measurement of qubits, and visualization of results using histograms. The document also mentions the use of a balanced function in a quantum oracle context.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Question no 1 :

from qiskit import QuantumCircuit, Aer, transpile, assemble, execute


from qiskit.visualization import plot_histogram

# Create a quantum circuit with 3 qubits and 3 classical bits


qc = QuantumCircuit(3, 3)

# Apply the gates


qc.h(0)
qc.cx(0, 1)
qc.t(2)
qc.s(1)
qc.measure([0, 1, 2], [0, 1, 2])

# Draw the circuit


qc.draw('mpl')

Question no 2 :
from qiskit import QuantumCircuit, Aer, execute
from qiskit.visualization import plot_histogram

def bell_circuit(state):
qc = QuantumCircuit(2, 2)
qc.h(0) # Hadamard on qubit 0
qc.cx(0, 1) # CNOT (0 -> 1)

if state == "|Φ−⟩":
qc.z(0)
elif state == "|Ψ+⟩":
qc.x(1)
elif state == "|Ψ−⟩":
qc.x(1)
qc.z(0)
qc.measure([0, 1], [0, 1]) # Measurement
return qc

states = ["|Φ+⟩", "|Φ−⟩", "|Ψ+⟩", "|Ψ−⟩"]


simulator = Aer.get_backend('qasm_simulator')
for state in states:
qc = bell_circuit(state)
result = execute(qc, simulator, shots=1024).result()
counts = result.get_counts()

print(f"Results for this {state}:")


display(qc.draw('mpl'))
plot_histogram(counts).show()

Question no 3 :
from qiskit import QuantumCircuit, Aer, execute
from qiskit.visualization import plot_histogram, visualize_transition
from qiskit.quantum_info import Statevector

qc = QuantumCircuit(3, 2)

qc.initialize([0.6, 0.8], 0) # Example state (adjust coefficients)

qc.h(1)
qc.cx(1, 2)

qc.cx(0, 1)
qc.h(0)
qc.measure([0, 1], [0, 1])

qc.x(2).c_if(qc.cregs[0], 1) # Apply X if first classical bit is 1


qc.z(2).c_if(qc.cregs[1], 1) # Apply Z if second classical bit is 1

# Simulate the circuit


simulator = Aer.get_backend('qasm_simulator')
result = execute(qc, simulator, shots=1024).result()
counts = result.get_counts()

print(" Results:")
display(qc.draw('mpl'))
plot_histogram(counts).show()

Question no 4 :
from qiskit import QuantumCircuit, Aer, execute
from qiskit.visualization import plot_histogram
def superdense_coding(message):

qc = QuantumCircuit(2, 2)

qc.h(0)
qc.cx(0, 1)

if information == "10":
qc.z(1)
elif information == "01":
qc.x(1)
elif information == "11":
qc.x(1)
qc.z(1)

qc.cx(0, 1)
qc.h(0)

qc.measure([0, 1], [0, 1])


return qc

information = ["00", "01", "10", "11"]


simulator = Aer.get_backend('qasm_simulator')

for info in information:


qc = superdense_coding(info)
result = execute(qc, simulator, shots=1024).result()
counts = result.get_counts()

print(f"Results for information {info}:")


display(qc.draw('mpl'))
plot_histogram(counts).show()
Question no 6 :
from qiskit import QuantumCircuit, Aer, execute
from qiskit.visualization import plot_histogram

qc = QuantumCircuit(4, 4)

qc.h(0)

qc.cx(0, 1)
qc.cx(1, 2)
qc.cx(2, 3)

qc.measure([0, 1, 2, 3], [0, 1, 2, 3])

simulator = Aer.get_backend('qasm_simulator')
result = execute(qc, simulator, shots=1024).result()
counts = result.get_counts()

print(" Results for GHZ State:")


display(qc.draw('mpl'))
plot_histogram(counts).show()
Question no 5 :
We can use c-not gates to swap both the qubits ,
Swapping can be done by applying c-not on second bit using first as control
bit then c-not on first bit as second as control bit then again c-not on
second bit using first as control bit
ASSIGNMENT -2

Question no 1 :
from qiskit import QuantumCircuit, Aer, execute
from qiskit.visualization import plot_histogram

# Define a 4-bit parity oracle with an auxiliary qubit


def parity_oracle(qc):
qc.cx(0, 4)
qc.cx(1, 4)
qc.cx(2, 4)
qc.cx(3, 4)
# Create the quantum circuit for phase kickback demonstration
qc = QuantumCircuit(5, 4)

qc.h([0, 1, 2, 3])

qc.x(4)
qc.h(4)
parity_oracle(qc)

qc.h([0, 1, 2, 3])

qc.measure([0, 1, 2, 3], [0, 1, 2, 3])

simulator = Aer.get_backend('qasm_simulator')
result = execute(qc, simulator, shots=1024).result()
counts = result.get_counts()

print(“Results:")
display(qc.draw('mpl'))
plot_histogram(counts).show()

THE GIVEN FUNCTION IS BALANCED

QUESTION NO 3 :
from qiskit import QuantumCircuit, Aer, execute
from qiskit.visualization import plot_histogram

s = "1011"
n = len(s)

def bv_oracle(qc):
for i, bit in enumerate(reversed(s)):
little-endian order
if bit == "1":
qc.cx(i, n)
qc = QuantumCircuit(n + 1, n)

qc.h(range(n))
qc.x(n)
qc.h(n)

bv_oracle(qc)

qc.h(range(n))

qc.measure(range(n), range(n))

simulator = Aer.get_backend('qasm_simulator')
result = execute(qc, simulator, shots=1024).result()
counts = result.get_counts()

print(“Results:")
display(qc.draw('mpl'))
plot_histogram(counts).show()

You might also like