Mga klasikal na komputasyon sa quantum computers
Ngayon ay ilalipat natin ang ating atensyon sa pag-implement ng mga klasikal na algorithm sa quantum computers. Makikita natin na ang anumang komputasyon na maisasagawa gamit ang isang klasikal na Boolean circuit ay maisasagawa rin ng isang quantum circuit na may katulad na asymptotic na computational cost. Bukod dito, magagawa ito sa isang "malinis" na paraan na ipapaliwanag natin sa ilang sandali, na isang mahalagang kinakailangan para magamit ang mga komputasyong ito bilang mga subroutine sa loob ng mas malalaking quantum na komputasyon.
Pag-simulate ng mga Boolean circuit gamit ang mga quantum circuitβ
Ang mga Boolean circuit ay binubuo ng mga AND, OR, NOT, at FANOUT gate. Para ma-simulate ang mga Boolean circuit gamit ang mga quantum circuit, magsisimula tayo sa pagpapakita kung paano masisimulate ang bawat isa sa apat na gate na ito gamit ang mga quantum gate. Kapag nagawa na iyon, ang pag-convert ng isang partikular na Boolean circuit sa isang quantum circuit ay isang simpleng bagay lamang ng pag-simulate ng isang gate sa isang pagkakataon. Ang kailangan lang natin ay mga NOT gate, controlled-NOT gate, at Toffoli gate para gawin ito, na pawang mga deterministikong operasyon bukod sa pagiging unitary.
Mga Toffoli gateβ
Ang mga Toffoli gate ay maaari ring ilarawan bilang controlled-controlled-NOT gate, na ang aksyon sa mga standard basis state ay makikita sa sumusunod na figure.
Tandaan na gumagamit tayo ng ordering convention ng Qiskit, kung saan ang mga qubit ay nakaayos sa pataas na kahalagahan mula sa itaas pababa, ang matrix representation ng gate na ito ay ganito.
Isa pang paraan para pag-isipan ang mga Toffoli gate ay ang mga ito ay essentially mga query gate para sa AND function, sa kahulugang sumusunod sila sa pattern na nakita natin sa nakaraang aralin para sa mga unitary query gate na implementasyon ng mga arbitrary na function na may binary string na input at output.
Ang mga Toffoli gate ay hindi kasama sa default na gate set na tinukoy kanina sa aralin, ngunit posible itong buuin mula sa at mga CNOT gate tulad ng sumusunod.
Pag-simulate ng mga Boolean gate gamit ang Toffoli, controlled-NOT, at NOT gateβ
Ang isang Toffoli gate, kapag ginamit kasama ang ilang NOT gate, ay maaaring mag-implement ng isang AND at OR gate, at ang mga FANOUT gate ay madaling maiimplementa gamit ang mga controlled-NOT gate, tulad ng iminumungkahi ng mga sumusunod na diagram.
Sa lahat ng tatlong kaso, ang mga qubit na kinakatawanan ng mga AND, OR, at FANOUT gate ay pumapasok mula sa kaliwa bilang mga input, at nangangailangan din tayo ng isang workspace qubit na initialized sa zero state para sa bawat isa. Ang mga workspace qubit na ito ay lumalabas sa loob ng mga kahon na kumakatawan sa mga gate na implementasyon upang ipahiwatig na bago sila, at samakatuwid ay bahagi ng gastos ng mga implementasyong ito.
Para sa mga AND at OR gate, mayroon ding dalawang qubit na natitira, bukod sa output qubit. Halimbawa, sa loob ng kahon sa diagram na kumakatawan sa simulation ng isang AND gate, ang dalawang qubit sa itaas ay naiwan sa mga estado na at Ang mga qubit na ito ay inilalarawan na nananatili sa loob ng mga kahon dahil hindi na sila kailangan at hindi bahagi ng output. Maaari silang balewalain sa ngayon, bagama't babalik tayo sa kanila sa ilang sandali.
Ang natitirang Boolean gate, ang NOT gate, ay kasama sa ating default na set ng mga quantum gate, kaya hindi na tayo nangangailangan ng simulation para dito.
Gate-by-gate na simulation ng mga Boolean circuitβ
Ngayon, ipagpalagay na mayroon tayong isang ordinaryong Boolean circuit na pinangalanang na binubuo ng mga AND, OR, NOT, at FANOUT gate, at may na input bit at na output bit. Hayaan ang ang bilang ng mga gate sa at pangalanan natin ang function na kinukuwenta ng bilang na may anyo
para sa
Ngayon ay pag-isipan kung ano ang mangyayari kapag isa-isa tayong dumaan sa mga AND, OR, at FANOUT gate ng pinapalitan ang bawat isa ng katumbas na simulation na inilarawan sa itaas, kasama ang pagdaragdag ng mga kinakailangang workspace qubit. Pangalanan natin ang resultang circuit bilang at ayusin ang mga qubit ng upang ang na input bit ng ay tumutugma sa pinakataas na qubit ng at ang mga workspace qubit ay nasa ibaba.
Dito, ang ay ang bilang ng mga workspace qubit na kailangan β isa para sa bawat AND, OR, at FANOUT gate ng β at ang ay isang function na may anyo na naglalarawan ng mga estado ng mga natitira at naiwan na qubit na nilikha ng mga gate simulation pagkatapos patakbuhin ang Sa figure, ang mga qubit na tumutugma sa output na ay nasa itaas at ang mga natitirang, naiwan na qubit na nag-iimbak ng ay nasa ibaba. Maaari nating pilitin itong mangyari kung nais natin sa pamamagitan ng muling pag-aayos ng mga qubit gamit ang mga SWAP gate, na maaaring maiimplementa gamit ang tatlong controlled-NOT gate tulad nito:
Tulad ng makikita natin sa susunod na seksyon, hindi talaga mahalaga ang muling pag-aayos ng mga output qubit tulad nito, ngunit madali itong gawin kung pipiliin natin.
Ang function na na naglalarawan ng mga klasikal na estado ng mga natitira at naiwan na qubit ay tinutukoy ng circuit na ngunit hindi na tayo masyadong kailangang mag-alala tungkol dito; hindi tayo nagmamalasakit kung anong estado ang mga qubit na ito kapag natapos na ang komputasyon. Ang titik na ay sumusunod sa kaya ito ay makatwirang pangalan para sa function na ito sa kadahilanang iyon, ngunit may mas magandang dahilan para piliin ang pangalang β ito ay maikli para sa basura.
Paglilinis ng basuraβ
Kung ang tanging interes natin ay ang pag-evaluate ng function na na kinukuwenta ng isang partikular na Boolean circuit na gamit ang isang quantum circuit, hindi na tayo kailangang magpatuloy pa kaysa sa gate-by-gate na simulation na inilarawan lamang. Nangangahulugan ito na, bukod sa output ng function, magkakaroon tayo ng maraming basura na natitira.
Gayunpaman, hindi ito sapat kung gusto nating magsagawa ng mga klasikal na komputasyon bilang mga subroutine sa loob ng mas malalaking quantum na komputasyon, dahil ang mga garbage qubit na iyon ay magdudulot ng mga problema. Ang penomenon ng interference ay kritikal na mahalaga sa mga quantum algorithm, at ang mga garbage qubit ay maaaring masira ang mga interference pattern na kailangan para gumana ang mga quantum algorithm.
Sa kabutihang palad, hindi mahirap linisin ang basura, sa madaling sabi. Ang susi ay ang paggamit ng katotohanang dahil ang ay isang quantum circuit, maaari nating patakbuhin ito nang baligtad, sa pamamagitan lamang ng pagpapalit ng bawat gate ng inverse nito at pag-apply ng mga ito sa baligtad na pagkakasunud-sunod, na makakakuha ng quantum circuit para sa operasyon na Ang mga Toffoli gate, CNOT gate, at NOT gate ay pawang sarili nilang mga inverse, kaya ang pagpapatakbo ng nang baligtad ay isang bagay lamang ng pag-apply ng mga gate sa baligtad na pagkakasunud-sunod β ngunit sa pangkalahatan, ang anumang quantum circuit ay maaaring i-reverse tulad ng inilarawan.
Partikular, ang magagawa natin ay magdagdag ng pang qubit (alalahanin na ang function na ay may na output bit), gumamit ng mga CNOT gate para kopyahin ang output ng sa mga qubit na ito, at i-reverse ang para linisin ang basura. Ang sumusunod na figure ay naglalarawan ng resultang circuit at inilalarawan ang aksyon nito sa mga standard basis state.
Kung lalagyan natin ng kahon ang buong circuit at tatawagin itong magmumukhang ganito ito:
Dahil ang ay may na gate, ang circuit na ay magkakaroon ng na gate.
Kung hindi natin isasaalang-alang ang na karagdagang workspace qubit, ang mayroon tayo ay isang circuit na na gumagana nang eksaktong tulad ng isang query gate para sa function na Kung simpleng gusto nating kuwentahin ang function na sa ilang string na maaari nating itakda ang at ang resultang halaga ng ay lalabas sa pinakailalim na qubit β o maaari tayong mag-feed ng iba't ibang estado sa pinakailalim na qubit kung nais natin (marahil para magamit ang isang phase kickback, tulad ng sa Deutsch's o ang Deutsch-Jozsa algorithm).
Nangangahulugan ito na para sa anumang query algorithm, kung mayroon tayong Boolean circuit na kukuwenta sa input function, maaari nating palitan ang bawat query gate ng isang circuit implementation nito, at ang query algorithm ay gagana nang tama.
Tandaan na ang mga workspace qubit ay kailangan para gumana ang prosesong ito, ngunit ibinabalik ang mga ito sa kanilang mga paunang estado kapag naisagawa na ang pinagsamang circuit. Nagbibigay-daan ito sa mga qubit na ito na muling magamit bilang mga workspace qubit para sa iba pang layunin. Mayroon ding mga kilalang estratehiya para bawasan ang bilang ng mga workspace qubit na kailangan (na may kapalit na paggawa ng mga circuit na mas malaki), ngunit hindi natin tatalakaying ang mga estratehiyang iyon dito.
Pag-implement ng mga invertible na functionβ
Ang konstruksyon na inilarawan ay nagbibigay-daan sa atin na ma-simulate ang anumang Boolean circuit gamit ang isang quantum circuit sa isang garbage-free na paraan. Kung ang ay isang Boolean circuit na nag-iimplementa ng function na kung gayon nakakakuha tayo ng quantum circuit na na gumagana tulad ng sumusunod sa mga standard basis state.
Ang bilang na ay nagpapahiwatig kung ilang workspace qubit ang kailangan sa kabuuan. Sapat ito para sa mga layunin ng kursong ito, ngunit posible na dalhin ang metodolohiyang ito nang isang hakbang pa kapag ang function na mismo ay invertible.
Para maging tiyak, ipagpalagay na ang function na ay may anyo na at ipagpalagay din na mayroong function na na ang para sa bawat (na kinakailangang natatangi kapag umaandar ito). Nangangahulugan ito na ang operasyon na nagbabago ng sa para sa bawat ay unitary, kaya maaari tayong umasa na makabuo ng isang quantum circuit na nag-iimplementa ng unitary operation na tinukoy ng
para sa bawat
Para maging malinaw, ang katotohanang ito ay isang unitary operation ay nakasalalay sa pagiging invertible ng β hindi ito unitary kapag ang ay hindi invertible. Kung hindi isasaalang-alang ang mga workspace qubit, ang ay naiiba mula sa operasyon na ipinapatupad ng circuit na dahil hindi tayo nagpapanatili ng kopya ng input at nagXO-or ito sa isang arbitrary na string, pinapalitan natin ang ng
Ang tanong ay: kapag ang ay invertible, magagawa ba natin ito?
Ang sagot ay oo, sa kondisyon na pinapayagan tayong gumamit ng mga workspace qubit at, bukod sa pagkakaroon ng isang Boolean circuit na kukuwenta sa mayroon din tayong isa para kukuwenta sa Kaya, hindi ito isang shortcut para sa computational na pag-invert ng mga function kapag hindi natin alam kung paano gawin iyon! Ang sumusunod na diagram ay naglalarawan kung paano ito maisasagawa sa pamamagitan ng pag-compose ng dalawang quantum circuit, at na nakukuha nang hiwalay para sa mga function na at sa pamamagitan ng paraan na inilarawan sa itaas, kasama ang na swap gate, na kinukuha ang bilang pinakamataas na bilang ng mga workspace qubit na kailangan ng at