Jak projektuje się algorytmy kwantowe

Programista klasyczny myśli krokami: „weź liczbę, porównaj, zapisz, powtórz”. Projektant algorytmów kwantowych myśli inaczej — bardziej jak akustyk strojący salę koncertową: gdzie fale mają się wzmocnić, a gdzie wygasić? To zasadnicza zmiana perspektywy i główny powód, dla którego dobrych algorytmów kwantowych powstało dotąd stosunkowo niewiele.

Reguły gry, których nie da się obejść

  • Pomiar niszczy stan. Nie można „podejrzeć” obliczenia w trakcie — odczyt wyniku kończy pracę kubitów. Algorytm musi być tak ułożony, by w chwili pomiaru poprawna odpowiedź była najbardziej prawdopodobna.
  • Nie wolno kopiować. Twierdzenie o zakazie klonowania mówi, że nieznanego stanu kwantowego nie da się powielić — odpada więc cała klasyczna technika „zapisz kopię na później”.
  • Operacje muszą być odwracalne. Każda bramka kwantowa działa „w obie strony”; nawet zwykłe dodawanie trzeba zapisać tak, by dało się je cofnąć.
  • Wynik jest probabilistyczny. Algorytm uruchamia się zwykle wiele razy i zbiera statystykę odpowiedzi.

Typowy przepis na algorytm kwantowy

  1. Przygotowanie superpozycji — bramki Hadamarda rozkładają kubity na wszystkie możliwe kombinacje naraz.
  2. Zakodowanie problemu — tzw. wyrocznia (ang. oracle) lub sekwencja bramek „wszywa” strukturę zadania w fazy stanów kwantowych.
  3. Interferencja — kolejne bramki (np. kwantowa transformata Fouriera) sprawiają, że błędne ścieżki się wygaszają, a poprawne wzmacniają.
  4. Pomiar i obróbka klasyczna — odczytany wynik często wymaga jeszcze klasycznych obliczeń (tak działa algorytm Shora).

Projektowanie na dzisiejszy, niedoskonały sprzęt

Obecne maszyny należą do ery NISQ (ang. Noisy Intermediate-Scale Quantum — „szumne” komputery średniej skali): mają od kilkudziesięciu do kilkuset kubitów, a każda operacja wnosi błąd. Dlatego króluje podejście hybrydowe i wariacyjne: krótki obwód kwantowy z „pokrętłami” (parametrami), które klasyczny optymalizator dostraja w pętli — tak działają VQE (chemia) i QAOA (optymalizacja). Projektant musi przy tym minimalizować głębokość obwodu, dopasować go do fizycznego układu połączeń między kubitami i stosować techniki tłumienia błędów (ang. error mitigation).

Narzędzia pracy

W praktyce algorytmy projektuje się w językach wysokiego poziomu opartych na Pythonie: Qiskit (IBM), Cirq (Google), PennyLane (Xanadu, ukierunkowany na uczenie maszynowe) czy Q# (Microsoft). Kod testuje się najpierw na symulatorach (klasyczny komputer udaje mały komputer kwantowy — do ok. 30–40 kubitów), a dopiero potem na prawdziwym sprzęcie w chmurze. Coraz częściej w projektowaniu pomagają też… algorytmy klasyczne i sztuczna inteligencja, które automatycznie upraszczają obwody.

Praktyczne wprowadzenie do tych narzędzi znajdziesz w dziale Quantum 101 — Qiskit.