A **Deutsch–Jozsa-algoritmus** az egyik első kvantumalgoritmus, amely megmutatta, hogy a kvantumszámítógépek bizonyos problémákat gyorsabban tudnak megoldani, mint a klasszikus számítógépek. A problémája egy adott függvény tulajdonságainak meghatározása a lehető legkevesebb lekérdezéssel.
Adott egy függvény, amely leképezést végez. A függvény:
Cél: Meg kell állapítani, hogy konstans vagy kiegyensúlyozott.
A klasszikus algoritmusnak a legrosszabb esetben lekérdezésre van szüksége:
A Deutsch–Jozsa-algoritmus kvantumszámítógépen garantáltan egyetlen függvényértékeléssel meg tudja oldani a problémát.
* Egy -qubites bemeneti regiszter . * Egy további qubit () a függvényérték tárolására.
* Az összes qubit Hadamard-transzformációja (Hadamard kapu) szuperpozícióba helyezi az állapotot:
* A kvantum kapu formájában megvalósított módosítja a qubit állapotát:
* A második regiszteren újabb Hadamard-transzformáció.
* Ha az első regiszter minden qubitje , akkor konstans. * Egyébként kiegyensúlyozott.
A kvantumállapot az alábbi lépéseken megy keresztül:
A függvény hatása szuperpozícióba helyezi az eredményt, és az első regiszterben maradt interferencia határozza meg a konstans vagy kiegyensúlyozott tulajdonságot.
from qiskit import QuantumCircuit, Aer, execute
def deutsch_jozsa(is_balanced=True):
n = 1 # Egy qubites függvény
qc = QuantumCircuit(n + 1, n)
# Inicializálás
qc.x(n) # Második regiszter állapota: |1⟩
qc.h(range(n + 1)) # Hadamard minden qubiten
# Fekete doboz függvény implementálása
if is_balanced:
qc.cx(0, 1) # Kiegyensúlyozott
else:
pass # Konstans (nem történik változtatás)
# Hadamard az első regiszteren
qc.h(range(n))
# Mérés
qc.measure(range(n), range(n))
# Szimuláció
simulator = Aer.get_backend('qasm_simulator')
result = execute(qc, backend=simulator, shots=1).result()
counts = result.get_counts()
# Eredmény kiértékelése
return "Balanced" if '1' in counts else "Constant"
# Példa futtatása
print(deutsch_jozsa(is_balanced=True)) # "Balanced"
print(deutsch_jozsa(is_balanced=False)) # "Constant"
Az első regiszter minden qubitje lesz.
Az első regiszterben legalább egy qubit -t eredményez.
* Egyetlen függvényértékeléssel dönthető el a függvény tulajdonsága.
* Demonstrálja a kvantumalgoritmusok előnyét.
* Csak a konstans/kiegyensúlyozott tulajdonságra korlátozódik.
* Nagyobb, gyakorlati problémákhoz nem használható.
A **Deutsch–Jozsa-algoritmus** az első kvantumalgoritmusok egyike, amely megmutatja a kvantumszámítógépek erejét. Bár gyakorlati alkalmazása korlátozott, kiváló példája annak, hogy a kvantummechanikai tulajdonságok hogyan gyorsíthatják fel bizonyos számításokat.