Quantum algorithm (Deustch Jozsa)

Summarize this article with:
Hello! I've created this quantum algorithm to simulate with qiskit_aer and stuff like this what Deustch Jozsa's algorithm looks like. from qiskit import QuantumCircuit from qiskit_aer import AerSimulator import numpy as np import time num = int(input("How many qbits do you want to use? ")) num_p1 = num + 1 sel = np.random.choice(["constant","equilibrated"]) constant_value = np.random.choice([0,1]) def classical_oracle( n ): if sel == "equilibrated": return n %2 elif sel == "constant": return constant_value def classical_solution( num ): max_consults = 2**( num - 1) + 1 first_resultat = classical_oracle(0) consults = 1 for i in range(1, max_consults): result = classical_oracle(i) consults += 1 if result != first_resultat: print(f"Classical solution = Equilibrated! (found in {consults} consults)") return "equilibrat", consults print(f"Classical solution: CONSTANT (it needed {consults} consults)") def deustch_jozsa( sel ): q1 = QuantumCircuit(num_p1, num) q1.x(num) for qbit in range(num_p1): q1.h(qbit) if sel == "equilibrated": for i in range (num): q1.cx(i, num) for i in range (num): q1.h(i) print(f"Oracle choosen: { sel }") q1.measure(list(range(num)),list(range(num))) return q1 sim = AerSimulator() classical_oracle(num) classical_solution(num) print("Now, let's see what happens if we simulate it quantically...") time.sleep(2) q1 = deustch_jozsa(sel) result = sim.run(q1, shots =num).result() counts = result.get_counts() print(f"oracle: {sel:10s} --> {counts}") print(q1.draw()) lmk what do you think about. thank you submitted by /u/taddx8 [link] [comments]
