ToolDingo

Симулатор квантног рачунара

Напишите мало квантно коло или опишите прорачун високог нивоа, па га директно симулирајте и прегледајте резултате.

Модел шума

Прави квантни рачунари не рачунају савршено: кубити су веома осетљиви и при свакој нежељеној интеракцији са околином – топлотом, електромагнетним пољима или суседним кубитима – губе део информације (декохеренција). Квантна кола и очитавање зато могу дати погрешне резултате. Модел шума омогућава истраживање тог утицаја.

Примењује се на сваку симулацију на овој страници – на извршавање програма високог нивоа и на ручно написана кола.
%
Примењује се по колу и укљученом кубиту, односно по очитаном биту за модел очитавања. Изаберите вредност за сценарио који желите да истражите.

Програмски код

Опишите прорачун функцијама quantum.add, quantum.subtract, quantum.multiply, quantum.divide или quantum.random. Ctrl+Enter покреће симулацију. Цела документација доступна је преко дугмета „Документација”.

Документација

Опишите прорачун у уређивачу – из њега се аутоматски ствара и симулира право квантно коло. Највише 4000 знакова. Ctrl+Enter покреће симулацију.

ИзразОписОграничења
quantum.add({ a, b })Сабирање два бројаРезултат највише 4 бита (0–15)
quantum.subtract({ a, b })Одузимањеa ≥ b, највише 4 бита
quantum.multiply({ a, b })МножењеЧиниоци 0–7 (3 бита)
quantum.divide({ a, b })Дељење (количник и остатак)b ≥ 1; веома ограничено: битови(a)+битови(b)+битови(a÷b)+1 ≤ 10
quantum.random({ bits })Прави квантни случајни број1–10 битова

Изаберите пример

Код кола

Највише 4000 знакова. Доступне методе QuantumCircuit: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, cz, ccnot (други назив: toffoli), swap, measureAll и run. Ctrl+Enter покреће симулацију.

Изаберите пример

Основе: како то ради?

Шематски приказ квантног рачунара: управљачки рачунар усмерава више ласерских зрака преко оптичког стола ка кубиту у вакуумској комори.
Од класичног управљачког рачунара преко ласера и оптике до физичког кубита.

Од програма до физичког кубита

Прави квантни рачунар је више од чипа. Класична управљачка електроника претвара коло у прецизне импулсе. У приказаном примеру ласери за хлађење, поновно побуђивање, управљање кубитом и очитавање обликују те сигнале на оптичком столу и усмеравају их кроз вакуумску комору ка физичком кубиту.

Кубит и базна стања

Класични бит има вредност 0 или 1. Кубит додатно може бити у суперпозицији два базна стања |0⟩ и |1⟩. Код више кубита сва базна стања записују се као низ битова, на пример |10⟩ за 2 кубита – при чему је q0 у овом симулатору увек најзначајнији леви бит.

Суперпозиција

Кубит у суперпозицији истовремено садржи компоненте више базних стања. Оне се описују комплексним амплитудама; квадрат апсолутне вредности амплитуде даје вероватноћу добијања припадајућег стања при мерењу.

Блохова сфера

Стање једног кубита може се приказати као стрелица у сфери: северни пол представља |0⟩, а јужни пол |1⟩, док су све тачке на екватору једнако пондерисане суперпозиције – фаза одређује смер стрелице дуж екватора. Ротациона кола rx, ryи rz ротирају стрелицу око одговарајуће осе, а фазна кола попут S и T око Z осе. Код спрегнутих кубита стрелица се скраћује ка средишту сфере: појединачни кубит тада више нема сопствено чисто стање – његово стање одређено је само заједничким системом.

Мерење и понављања

measureAll() мери све кубите одједном и завршава коло. Пошто једно мерење даје само један насумичан резултат, коло се замишљено мери задати број пута помоћу run({ shots }), како би се расподела вероватноће приказала као хистограм. Тачне вероватноће додатно се рачунају директно из вектора стања, независно од случајности појединачних мерења.

Адамарово коло

Адамарово коло h(q) преводи кубит из одређеног стања (|0⟩ или |1⟩) у једнако пондерисану суперпозицију стања |0⟩ и |1⟩ – па се при мерењу добија приближно 50% / 50%.

Фазна кола: S и T

Кола s(q) и t(q) не мењају вероватноће мерења једног кубита; мењају само фазу |1⟩ амплитуде – S за 90°, а T за 45°. Утицај постаје видљив тек у комбинацији са суперпозицијом: између два Адамарова кола фаза одређује како се амплитуде сабирају или поништавају (интерференција). Варијанте са ознаком dagger sdg(q) и tdg(q) ротирају у тачно супротном смеру и поништавају S и T. Правило гласи: два T чине S, а два S чине Z.

CNOT и условна спрегнутост

Коло CNOT cnot(control, target) преокреће циљни кубит само када је управљачки кубит у стању |1⟩. Ако је управљачки кубит претходно у суперпозицији, може настати спрегнутост – два кубита више се не могу описати независно, као у примеру Беловог стања. Ако је управљачки кубит у одређеном базном стању, CNOT делује као обична условна операција.

CZ: симетрични сродник CNOT

Коло CZ cz(a, b) мења предзнак амплитуде само када су оба кубита у стању |1⟩. За разлику од CNOT, нема одвојеног управљачког и циљног кубита – коло једнако делује на оба, па је у дијаграму приказано као две повезане тачке. CZ и CNOT могу се претворити једно у друго: CNOT је CZ коме је циљни кубит пре и после окружен Адамаровим колима.

GHZ стање: трострука спрегнутост

GHZ стање, названо по Гринбергеру, Хорну и Цајлингеру, проширује начело Беловог стања на три кубита: једно Адамарово коло и два CNOT спрежу сва три кубита тако да мерење даје само |000⟩ или |111⟩ – никада мешовите низове битова. Ниједан кубит више нема сопствено стање; информација постоји искључиво у заједничкој корелацији.

Дојчов алгоритам: најмања квантна предност

Дојчов алгоритам једним вредновањем непознатог пророчишта одговара на питање за које класичном рачунару требају два вредновања: да ли је функција константна или уравнотежена? Улаз пролази кроз пророчиште у суперпозицији, а интерференција затим претвара глобално својство функције у један мерљив бит.

Гроверово претраживање: појачавање амплитуда

Гроверово претраживање проналази означену ставку у несортираном скупу са знатно мање упита него класични поступак. Пророчиште означава тражено стање променом фазе, овде колом CZ, а оператор дифузије затим појачава његову амплитуду и смањује остале.

Реверзибилно сабирање: од quantum.add() до кола

Уређивач програма преводи quantum.add({ a, b }) у коло X, CNOT и CCNOT (Тофоли) које изводи класично сабирање потпуно реверзибилно: свако коло може се тачно поништити јер се информације не одбацују. Коло CCNOT (ccnot(c1, c2, target)) преокреће циљни кубит само када су оба управљачка кубита |1⟩ – то је довољно као градивни елемент за реверзибилно извођење сваког класичног кола, укључујући потпуни сабирач са преносом. Улази A и B прво се колима X постављају у одређена базна стања без суперпозиције. Пошто цело коло quantum.add() даје одређен резултат упркос квантној симулацији, испод се не појављује више могућих стања са вероватноћама мањим од 100%.

Одузимање: сабирање обрнутим редом

Пошто су сва кола квантног кола тачно инвертибилна, цело коло сабирача може се извести уназад – и сабирање постаје одузимање: quantum.subtract({ a, b }) користи управо кола сабирача обрнутим редом и тако рачуна a − b. То није трик, већ основно начело реверзибилног рачунања: ниједан корак не уништава информацију и сваки корак може се поништити. У овом извођењу a мора бити веће или једнако b.

Множење: quantum.multiply()

Множење настаје из истих реверзибилних градивних елемената као сабирање: према школском поступку чинилац a сабира се више пута на помереним положајима, у складу са постављеним битовима чиниоца b. Свако делимично сабирање затим враћа помоћне кубите у почетно стање.

Дељење: quantum.divide()

И дељење користи само реверзибилне градивне елементе: quantum.divide({ a, b }) изводи дуго дељење помереним, реверзибилним одузимањима делиоца из регистра остатка; резултат чине количник и остатак (a = quotient · b + remainder). Пошто дељеник, делилац, количник и кубит позајмице заједно морају стати у 10 кубита, дељење је највише ограничена операција: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 мора важити, а делилац b мора бити ≥ 1, јер дељење нулом није дозвољено. Ако унос не стане у расположиви број кубита, уређивач приказује грешку уместо резултата.

Права случајност: quantum.random()

Класични рачунари не могу стварати праву случајност – њихови „случајни бројеви” настају детерминистичким алгоритмима, односно псеудослучајно. Квантни рачунар може: quantum.random({ bits }) поставља сваки бит у суперпозицију 50/50 Адамаровим колима, а тек мерење – суштински непредвидиво – одређује добијену вредност. На правом квантном хардверу то је физички права случајност; симулатор је опонаша насумичним мерењем тачне квантне расподеле.

Симулатор и прави квантни хардвер

Овај симулатор тачно рачуна стање класичном аритметиком са покретним зарезом у вашем прегледачу – то је изводљиво само зато што обрађује мала кола са највише 10 кубита. Прави квантни рачунари користе физичке кубите, изложени су шуму и декохеренцији и за поуздане резултате захтевају сложено управљање и исправљање грешака.

Честа питања

Да ли је ово прави квантни рачунар?
Не. То је класични симулатор вектора стања за мала кола до 10 кубита. Стварни хардвер користи физичке кубите.
Који је кубит q0 у низу „10”?
q0 је увек најзначајнији леви бит. Уз 2 кубита x(0) ствара |10⟩.
Шта значи shots?
То је број поновљених симулираних мерења од 1 до 10.000. Свако бира исход према тачној расподели.
Зашто неки примери приказују грешку?
Дозвољени су једно коло и један run() после measureAll(). Неважећи уноси дају разумљиву поруку.
Шта раде Адамарово, X и CNOT коло?
X замењује |0⟩ и |1⟩, Адамар ствара суперпозицију, а CNOT условно преокреће циљ и може створити спрегнутост.
Како настаје спрегнутост?
Адамар на првом кубиту, па CNOT на другом стварају повезане исходе |00⟩ и |11⟩.