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
- Przygotowanie superpozycji — bramki Hadamarda rozkładają kubity na wszystkie możliwe kombinacje naraz.
- Zakodowanie problemu — tzw. wyrocznia (ang. oracle) lub sekwencja bramek „wszywa” strukturę zadania w fazy stanów kwantowych.
- Interferencja — kolejne bramki (np. kwantowa transformata Fouriera) sprawiają, że błędne ścieżki się wygaszają, a poprawne wzmacniają.
- 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.