Deutsch-Jozsa-algoritmus

Kiejtés

  • IPA: [ ˈdɛut͡ʃhjoʒɒɒlɡoritmuʃ]

Főnév

Deutsch-Jozsa-algoritmus

  1. (matematika)

Deutsch–Jozsa-algoritmus

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.

Probléma

Adott egy   függvény, amely   leképezést végez. A függvény:

  1. **Konstans**, ha minden bemenethez ugyanazt az értéket adja (vagy mindig 0, vagy mindig 1).
  2. **Kiegyensúlyozott**, ha a kimenetek fele 0, fele pedig 1.

Cél: Meg kell állapítani, hogy   konstans vagy kiegyensúlyozott.

Klasszikus algoritmus

A klasszikus algoritmusnak a legrosszabb esetben   lekérdezésre van szüksége:

  • El kell kérnie több bemenetet, és összehasonlítania kell a kimeneteket.

Kvantumos algoritmus

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.

Kvantumos működés

  1. Regiszterek inicializálása:
  * Egy  -qubites bemeneti regiszter  .
  * Egy további qubit ( ) a függvényérték tárolására.
  1. Hadamard transzformáció alkalmazása:
  * Az összes qubit Hadamard-transzformációja (Hadamard kapu) szuperpozícióba helyezi az állapotot:
     
  1. Függvény ( ) alkalmazása:
  * A kvantum kapu formájában megvalósított   módosítja a qubit állapotát:
     
  1. Mérés előkészítése:
  * A második regiszteren újabb Hadamard-transzformáció.
  1. Mérés:
  * Ha az első regiszter minden qubitje  , akkor   konstans.
  * Egyébként   kiegyensúlyozott.

Matematikai részletek

A kvantumállapot az alábbi lépéseken megy keresztül:

  1. Inicializálás:
   
  1. Hadamard alkalmazása:
   
  1. Függvény kiértékelése:
   
  1. Kimeneti regiszter redukciója:
  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.

Python implementáció (Qiskit)

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"

Eredmény

  • **Konstans függvény esetén**:
 Az első regiszter minden qubitje   lesz.
  • **Kiegyensúlyozott függvény esetén**:
 Az első regiszterben legalább egy qubit  -t eredményez.

Előnyök

  1. **Gyorsabb, mint a klasszikus algoritmus**:
  * Egyetlen függvényértékeléssel dönthető el a függvény tulajdonsága.
  1. **Egyszerű kvantumos működés**:
  * Demonstrálja a kvantumalgoritmusok előnyét.

Hátrányok

  1. **Speciális probléma**:
  * Csak a konstans/kiegyensúlyozott tulajdonságra korlátozódik.
  1. **Nem skálázható általános problémákra**:
  * Nagyobb, gyakorlati problémákhoz nem használható.

Összefoglalás

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.

Fordítások