Dajbych.net


Q# – Úvod do kvantových výpočtů

, 9 minut čtení

quantum logo

Společnost Microsoft vydala nový jazyk .NET s názvem Q# spolu se sadou Microsoft Quantum Development Kit. Obsahuje plnohodnotný kvantový simulátor. Microsoft chce vydláždit cestu ke kvantovým výpočtům v datových centrech, která budou schopna provádět výkonné kvantové algoritmy. Kvantový počítač se zásadně liší od klasického binárního počítače. Nová éra výpočetní techniky je možná blíže, než si myslíte.

Co budete potřebovat

Jak nainstalovat a spustit

Co simuluje

Klasické počítače jsou založeny na binárních číslech. Bit může být realizován elektrickým nábojem v kondenzátoru nebo magnetizovanou oblastí ve feromagnetickém materiálu. Kvantové počítače založené na spinu jsou založeny na qubitech. Qubit může být realizován jako spin fyzické částice. Navrhl je Richard Feynman na konferenci o fyzice a výpočtech na MIT v roce 1981.

Co je to odstřeďování? Co dalšího lze považovat za qubit?

V kvantových počítačích se spin týká vlastního momentu hybnosti částic, jako jsou elektrony. Tuto vlastnost lze použít k reprezentaci qubitu.

Qubit může být reprezentován různými fyzikálními systémy, jako je spin elektronu, polarizace fotonu nebo energetické hladiny atomu. Na rozdíl od klasických bitů mohou qubity existovat v superpozici stavů, což znamená, že mohou být 0 i 1 současně.

Chcete-li si představit qubit, představte si rotaci Země. Sklon zemské osy (úhel mezi rovníkem a oběžnou dráhou) je přibližně 23,5°. Podobně může být qubit reprezentován jako vektor na Blochově kouli, kde jakýkoli bod na kouli představuje možný stav qubitu.

Qubit je jednotkový vektor ve dvourozměrném komplexním vektorovém prostoru. V jednu chvíli můžeme měřit pouze jednu složku tohoto vektoru, a proto qubity nelze klonovat (princip známý jako teorém o neklonování). To znamená, že nemůžeme duplikovat qubit stejným způsobem, jakým používáme funkci memcpy v jazyce C++ ke kopírování klasických bitů.

Qubit můžeme přesněji definovat jako lineární kombinaci dvou vektorů: |ψ⟩ = α ∙ |0⟩ + β ∙ |1⟩, kde α, β ∈ C.

Hodnotu qubitu lze přečíst, ale tento proces polarizuje qubit do stavu |0⟩ nebo |1⟩ s rozdělením pravděpodobnosti souvisejícím s tím, který stav je nejblíže. To znamená, že kvantové počítače nejsou univerzálně rychlejší než bitové počítače. Kvantové počítače jsou rychlejší pouze pro malou skupinu algoritmů.

Kvantové počítače měly až do roku 1994 malý zájem. V tomto roce Peter Shor publikoval algoritmus pro kvantové počítače pro faktorizaci celých čísel. Lze jej použít k prolomení algoritmu RSA. K výpočtu 2048bitového klíče RSA je zapotřebí 4098 qubitů a 5,2 bilionu bran Toffoli. Časová složitost přerušení RSA pomocí nbitového klíče na kvantovém počítači je O(n³).

Kvantový počítač je exponenciálně rychlejší než bitový počítač v diskrétní Fourierově transformaci. Je velmi dobrý v simulaci fyzikálních systémů. Může být široce užitečný v materiálových vědách, chemii a kvantové chromodynamice.

Demystifikace

Mýtus 1

Kvantový počítač je rychlejší, protože může reprezentovat exponenciální počet stavů.

Binární počítač může také zdvojnásobit počet stavů, když je jeho paměť rozšířena o jeden bit. Počet stavů roste exponenciálně s velikostí paměti pro binární počítače i kvantové počítače.

Mýtus 2

Kvantový počítač je rychlejší, protože qubit může reprezentovat 0 a 1 současně.

Dva bity mohou také reprezentovat 0 a 1 současně. Znamená to, že kvantový počítač je rychlejší, protože potřebuje polovinu paměti a čtvrtinu tranzistorů oproti binárním počítačům? Analogový počítač může také reprezentovat superpozici 0 a 1 současně. Znamená to, že analogové počítače jsou rychlejší?

Mýtus 3

Kvantový počítač umožňuje vyhodnocovat všechna možná řešení paralelně.

To obecně neplatí. Dokonce i binární počítač může vyhodnotit všechna možná řešení paralelně, pokud je problém dostatečně jednoduchý. Kvantový počítač je také omezen množstvím paměti a počtem bran.

Mýtus 4

Qubit může obsahovat nekonečné množství stavů.

I sklenice vody může obsahovat nekonečné množství stavů, ale problém, který máme, je, že nedokážeme přesně změřit množství vody. Naše měření má vždy nějakou odchylku. Omezuje nás na konečný (a poměrně malý) počet stavů. Pokud by se sklenice vody dala změřit jako qubit, věděli bychom, že sklenice je buď prázdná, nebo plná.

Mýtus 5

Kvantový počítač je rychlejší, protože dokáže vyhodnotit stavy všech qubitů najednou.

V současné době je maximální 3qubitová brána. Brány můžete kombinovat a skládat jich více do série. Binární i kvantové počítače jsou omezeny taktovací frekvencí (nebo rychlostí, kterou se napětí šíří ve vedení). Mimochodem, můžete nakonfigurovat obvod FPGA tak, aby vyhodnocoval některé operace pro celou paměť. Můžete začít s 8-bitovou pamětí a 8-bitovou sčítačkou. Potenciálně můžete skončit s GPU – který může provádět operace exponenciálně rychleji než CPU.

Mýtus 6

D-Wave je první kvantový počítač.

D-Wave je kvantový annealer, který má daleko k univerzálnímu hradlovému kvantovému počítači. Může provádět pouze adiabatické kvantové algoritmy. Zatímco D-Wave annealer je někdy 10krát rychlejší než binární počítač, je také někdy více než 100krát pomalejší.

Mýtus 7

Provázané částice umožňují komunikaci rychlejší než světlo.

To není pravda, protože měření je destruktivní proces.

Co je dobré vědět

Superpozice

Superposition je název pro fyzikální princip. Když jeden člověk mluví v tichém prostředí, slyšíte ho. Když se mnoho lidí shromáždí na malém místě a mluví velmi blízko sebe, neslyšíte nic jiného než hluk. Ale pokud tito lidé začnou říkat totéž ve stejnou dobu jako sbor, uslyšíte projev mnohem hlasitěji než v případě jednoho člověka. Dva reproduktory jsou hlasitější než jeden. Tato zásada se nazývá superposition. Stejné efekty můžete pozorovat i u žárovek. Dvě žárovky jsou jasnější než jedna. Osmiválcový motor má větší točivý moment než čtyřválec. Tento princip však nelze aplikovat na všechno. Dvě jádra CPU nejsou dvakrát rychlejší než jedno jádro (obecně). Systémy, kde superpozice funguje, se nazývají linear.

Zápletka

Dva objekty mohou být vzájemně propojeny. Například kolo má jedno ozubené kolo vpředu a druhé vzadu spojené řetězem. Když se jedno ozubené kolo otáčí, druhé se otáčí také, protože řetěz přenáší sílu. Spojení nemusí být nutně viditelné – jako gravitace. Jablko na stromě je spojeno se Zemí. Když stonek praskne, jablko se bude pohybovat směrem k Zemi a Země se bude pohybovat směrem k jablku, dokud do sebe nenarazí.

Klasická mechanika popisuje světlo jako proud fotonů. Když foton projde dvěma krystaly (beta boritan barnatý) (které vysílají různé polarizační stavy na různých trajektoriích), rozdělí se na dva fotony, které jsou vzájemně propojeny. Když změníte rotaci první, ovlivní to rotaci druhé. Tento jev se nazývá kvantové provázání. Ve skutečnosti bychom si neměli představovat dvě provázané částice jako dva oddělené objekty, ale jako jeden objekt, který existuje na dvou místech současně, protože stav mezi nimi je přenášen okamžitě. To však nemůžeme použít pro komunikaci. Dvě vzájemně provázané částice mohou být nazývány jinak (neptejte se mě proč). Obvykle se označují jako

Qubity jsou fyzicky realizovány jako spiny elektronů. Elektronový pár Cooper se přirozeně tvoří v supravodiči. Když projde dvěma samostatnými krystaly (kvantovými tečkami), oddělí se. Jeden elektron se přesune k jednomu svodu a druhý člen páru k druhému svodu. Tímto principem jsou generovány provázané částice v elektronických obvodech. Microsoft strávil 12 let prací na vlastní qubitové technologii založené na Majoranových fermionech.

Kvantová teleportace

Kvantová teleportace je termín pro přenos stavu jednoho qubitu do druhého, aniž by se s ním musela přesouvat fyzická částice.

Chceme přenést stav qubitového ψ, který obsahuje Alici, na Boba. Za tímto účelem vezmeme dva provázané qubity, α a β, a pošleme α Alici a β Bobovi. Pak Alice změří superpozici ψ a α, takže α′ = ψ + α. Toto měření také ovlivňuje β které se změní na β' tak, že β′ = β + ψ. Poté Alice pošle Bobovi α prostřednictvím klasického komunikačního kanálu. Bob upraví β′ na β′′ tak, aby β′′ = β′ + α′.

Nyní předpokládáme, že β′′ = ψ. Pojďme rozšířit to, co Bob má. β′′ = β′ + α′ = β + ψ + ψ + α = ψ. Poslední rovnice potřebuje vysvětlení. Dvě částice α a β jsou provázané, což také znamená, že α + β = 0. Superpozice dvou identických vektorů je totožná s původními vektory, protože všechny vektory jsou jednotkové vektory, proto ψ + ψ = ψ.

Jaký smysl má kvantová teleportace, když stále potřebujeme přenášet α' prostřednictvím komunikačního kanálu ze staré školy? Na začátku je stav α náhodný. Proto α′ nezveřejňuje žádné užitečné informace o ψ. Tento protokol lze použít v kvantové kryptografii pro přenos jednorázové podložky. Pokud se zdroj provázaných qubitů (v tomto případě fotonů) bude nacházet na satelitu, který je roznese do dvou vzdálených míst, můžeme vytvořit komunikační kanál odolný vůči člověku.

Q#

Jazyk Q# je nový jazyk .NET inspirovaný jazyky C# a F#. Pokud jste se naučili tyto dva jazyky, naučíte se Q# velmi snadno. Je to v podstatě C# s neměnností, deklarací proměnných a funkcí a řazenými kolekcemi členů převzatými z F#.

Podívejme se na níže uvedený kód a vysvětlíme si několik základních tvrzení:

operation Teleport(msg : Qubit, there : Qubit) : () {
    body {
        using (register = Qubit[1]) {
            // Ask for an auxillary qubit that we can use to prepare
            // for teleportation.
            let here = register[0];
            
            // Create some entanglement that we can use to send our message.
            H(here);
            CNOT(here, there);
            
            // Move our message into the entangled pair.
            CNOT(msg, here);
            H(msg);

            // Measure out the entanglement.
            if (M(msg) == One)  { Z(there); }
            if (M(here) == One) { X(there); }

            // Reset our "here" qubit before releasing it.
            Reset(here);
        }
    }
}

Jazyk C# má methods a properties, jazyk F# má functions a members a Q# má functions a operations. Deklarace operace začíná klíčovým slovem, za kterým následuje název a argumenty a končí návratovým typem. Název argumentu je první a typ argumentu je druhý. Je to přesně jako v jazyce F# a řídí se spíše lidským myšlením než potřebami strojového zpracování.

Operaci lze volat z jiných .NET jazyků. Funkce jsou čisté funkce – převádějí vstupní hodnoty na výstupní hodnoty bez možnosti ovlivnit cokoli jiného.

Alokace qubitu je svázána s blokem using. Operace jsou deklarovány v oboru názvů. Když otevřeme jmenný prostor, můžeme z něj používat operace. Jedná se o stejný koncept jako klíčové slovo jazyka C# using pro přístup ke všem typům z něj. Operace H a CNOT jsou deklarovány v oboru názvů Microsoft.Quantum.Primitive.

Funkce H vytvoří |0⟩ nebo |1⟩ se stejnou pravděpodobností. Je to jako házení mincí. Funkce CNOT převrátí druhý qubit, když je první qubit |1⟩. Funkce M vrátí Zero nebo One, podle toho, co je nejblíže. Funkce Z je hradlo Pauli Z. Otáčí vektor v Blochově kouli kolem osy Z. Funkce X je Pauliho hradlo X. Obrátí vektor kolem osy X. Je ekvivalentní bráně NOT pro bitové počítače.

Ukázka teleportace nepřenáší žádné informace na jiné místo. Jedná se o místní test algoritmu quantum teleportation implementovaného v Q#.

Jak poskytnout zpětnou vazbu

Problémy můžete nahlásit na GitHubu. V tuto chvíli společnost Microsoft není připravena přijímat žádosti o přijetí změn. Můžete také hlasovat pro nebo odesílat návrhy na webu UserVoice.