Kako se programiraju kvantni računari?
Programiranje kvantnih računara značajno se razlikuje od programiranja klasičnih računara. Dok smo kod standardnih računara navikli da pišemo kod u jezicima kao što su C, Python, Java ili slično, kod kvantnih računara moramo razmišljati o dvojakoj strukturi programa.
Sa jedne strane, koristimo klasičan programski jezik, na primer Python, kao i biblioteku Qiskit, kako bismo uz pomoć klasičnih alata na klasičnom računaru dizajnirali kvantni program koji će se izvršavati na kvantnom računaru. U suštini, Python program, prikazan u programu 1, koristimo da generišemo kvantno kolo sa slike 4.
Najveći problem predstavlja upravo ovaj korak — dizajn kvantnog kola. Kada dizajniramo kvantno kolo, uglavnom vodimo računa o tome da ono funkcioniše kroz nekoliko karakterističnih faza, prikazanih na slici 3, kako bismo mogli što bolje da iskoristimo prednosti kvantnog paralelizma.
Kao što smo prethodno rekli, programiranje kvantnog računara može se posmatrati kroz dva osnovna koraka:
-
Generisanje kvantnog kola klasičnim programskim jezikom
U ovom koraku koristi se klasičan programski jezik, na primer Python sa Qiskit bibliotekom, da bi se programskim putem generisalo kvantno kolo. Iako je program koji pišemo klasičan, on u sebi definiše kubite, kvantne gejtove i redosled kvantnih operacija koje, u principu, prate korake prikazane na slici 3.
import quantum_utils_v1 as q from qiskit import QuantumCircuit # Definisanje kvantnog kola sa dva kubita i dva klasična bita qc = QuantumCircuit(2, 2) # Resetovanje kubita na početno stanje |0> qc.reset([0, 1]) qc.barrier() q.show_bloch_sphere(qc) # Uvođenje kubita u superpoziciju qc.h(0) qc.h(1) qc.barrier() q.show_bloch_sphere(qc) # Izračunavanje u paralelnom režimu superpozicije qc.z(1) qc.t(0) qc.barrier() q.show_bloch_sphere(qc) # Izlaz iz superpozicije i povratak u računarsku bazu qc.h(0) qc.h(1) qc.barrier() q.show_bloch_sphere(qc) # Merenje kubita qc.measure(0, 0) qc.measure(1, 1) qc.barrier() # Prikaz kvantnog kola i rezultata merenja q.show_qc(qc) q.show_measurement(qc)Program 1. Python program za generisanje jednostavnog kvantnog kola -
Kvantno kolo koje izvršava kvantni algoritam
Kvantni program izvršava se na kvantnom računaru postavljanjem određenog broja kubita i njihovom manipulacijom pomoću različitih kvantnih gejtova. Drugim rečima, klasičan program ne izvršava direktno kvantni algoritam, već opisuje kvantno kolo koje će zatim biti izvršeno na kvantnom procesoru ili simulatoru kvantnog računara.
Da bi kvantni računar mogao da izvrši određeni zadatak, prvi korak je da, na osnovu problema koji rešavamo, dizajniramo odgovarajuće kvantno kolo (quantum circuit). Slika 4 daje primer jednostavnog kvantnog kola koje možemo da iskoristimo kako bismo stekli uvid u njegovu tipičnu strukturu.
Kvantno kolo predstavlja niz kvantnih operacija koje se primenjuju nad definisanim kubitima. Te operacije mogu da uključuju uvođenje kubita u superpoziciju, njihovo međusobno povezivanje kroz entanglement, primenu različitih kvantnih gejtova, interferenciju amplituda i, na kraju, merenje kojim se kvantni rezultat prevodi u klasičnu informaciju.
Slika 4. Primer kvantnog kola