programování kvantových počítačů s Q #

Tento týden jsem na vývojářské konferenci NDC v Sydney. Zde jsem se zúčastnil workshopu o programování kvantových počítačů pomocí Q#, který vedl John Azariah, tvůrce programovacího jazyka Q#.

S Johnem Azarjáše, jazyk tvůrce Q#, kvantový počítač programovací jazyk. Pokud vypadám unaveně, je to proto, že jsem dnes ráno psal svůj první kvantový program v Q#.

Q# je nedávno vydala Microsoft jazyk speciálně vyvinutý pro programování kvantový počítač operací z klasického počítače. Je podporován na počítačích Mac, Windows a Linux.

na Q# je tak vzrušující, že se jedná o abstrakci kvantového počítání na nové sémantické úrovni. Můžete stručně vyjádřit složité myšlenky (přemýšlejte o jazyce C versus Assembly). Nové úrovně sémantické abstrakce umožňují vznik nových paradigmat.

Q# není jen nová úroveň abstrakce nad bývalým, známé, nicméně. Q# je sémantická abstrakce nad revolučním hardwarem — který je stále fyzicky implementován-kvantovým počítačem.

v Q# můžete vyjádřit věci, které jednoduše nemůžete vyjádřit v klasickém počítačovém jazyce.

Q# je opravdu více podobá asembleru pro kvantové počítače, pokud jde o primitivy to vystihuje. Jsme v podstatě s kvantovými počítači, kde jsme byli na konci 40. / počátku 50. let s klasickými počítači.

Q# Model Programování

programovací model pro Q# je k léčbě kvantový počítač jako koprocesor. Je to podobné práci s GPU – grafickou jednotkou na grafické kartě počítače. GPU je specializovaný procesor pro křupání polygonů a výpočet stínování. Ukazuje se, že GPU jsou také dobré pro druh počtu křupání potřebné pro těžbu Bitcoin příliš, takže lidé používají je pro to. Chcete-li naprogramovat GPU, sestavíte pokyny pro GPU pomocí jazyka specifického pro doménu a poté je odešlete z hlavního procesoru počítače do GPU k provedení.

Q# jste psát kvantové operace v domény-konkrétní jazyk Q#, což je bez státní příslušnosti, funkční jazyk, a pak poslat je do kvantový počítač před program napsaný v C#, běží na klasickém CPU, což je také místo, kde můžete získat případný výstup z kvantové počítače.

Příklad Q# Kód

Po dílně, napsal jsem Q# program, který znázorňuje jednoduchý kvantové chování, které je odlišné od chování klasickém počítači.

HGate program ukazuje zvláštní případ známý dvouštěrbinový Experiment, kde pozorování přechodný stav systému ovlivňuje chování systému.

„Bůh nehraje v kostky…“ — Albert Einstein

pochopit chování zobrazené v tomto programu: představte si, že vezmete minci a začíná s hlavou nahoru, pak přehodit. Má 50% šanci, že se objeví hlavy nebo ocasy. Zkontrolujete, co to je, pak to znovu otočte. Má 50% šanci, že se znovu objeví hlavy nebo ocasy.

docela rovně vpřed. Tady je kvantová podivnost. V kvantové sféře, pokud je mince částicí podléhající kvantovým účinkům, převrátíte ji odesláním kvantovým logickým obvodem zvaným Hadamardova brána. Když se na to podíváte po prvním překlopení, dostanete 50/50 hlav/ocasů na tomto překlopení a na druhém překlopení. Pokud se na to však po prvním flipu nedíváte, druhý flip se objeví hlavy-pokaždé.

Albert Einstein, který poprvé objevil kvantovou mechaniku, nemohl uvěřit, že vesmír může takto fungovat. A přesto ano, protože jinak bychom neměli iPhony a další moderní elektroniku, které pracují v extrémně malých měřítcích a využívají řadu takových kvantových chování. Einstein strávil zbytek svého života snahou dokázat, že kvantová podivnost, kterou objevil, nebyla věc, neúspěšně. A proto za to nemá zásluhy. Ale jo, vydal tři papíry ve stejnou dobu — jeden byl důkaz existence atomů, druhý byl relativity, a třetí byl o záření černého tělesa, což je kvantově mechanický jev.

přečtěte si víc o tom, proč tento konkrétní kvantové chování se stane, naleznete v souboru README.md soubor z příkladu programu.

kvantová operace Q #

zde je příklad kvantové operace napsané v Q#, převzaté z výše uvedeného příkladu programu:

operation CoinFlip (count: Int) : (Int, Int)
{
body
{
mutable numOnes = 0;
mutable numZeros = 0; // Get a Qubit in Zero state
using (qubit = Qubit) { for (test in 1..count) {
// Set is an operation defined elsewhere
Set (Zero, qubit); // Send the qubit through a Hadamard quantum logic gate
H(qubit); // Measure the value of the q-bit
let state = M(qubit); if (state == Zero) {
set numZeros = numZeros + 1;
}
if (state == One) {
set numOnes = numOnes + 1;
}
}
ResetAll(qubit); // Reset the qubit
}
return (numZeros, numOnes);
}}

Q# Jazyk Design

Q# čerpá inspiraci z F# jako funkční jazyk (kompilátor / parser je napsaný v F#), C# syntaxe, a kreslí některé nápady z Pythonu (zejména for in).

je to jazyk bez státní příslušnosti – neexistuje způsob, jak udržet stav mezi kvantovými operacemi, a měření stavu pro návrat hodnoty z operace zhroutí kvantový stav do jediného stavu v reálném světě. Nemá žádné proměnné, ale používá vazbu konstantních neměnností.

typy jsou n-tice založené, s libovolným arity. Má non-kari částečnou podporu aplikací, a má generika a Funktory. Funktory umožňují vyjádření a odůvodnění posloupností operací.

kompilátor Q # může provést analýzu celého programu a důvod nad kódem k optimalizaci před odesláním operací do kvantového počítače. To je důležité kvůli nákladům na operace, zejména vzhledem k malému času, který qubit stav je koherentní se současnými a pravděpodobnými (krátkodobými) budoucími kvantovými počítači.

Jaké Problémy Mohou Kvantové Počítače Vyřešit?

Klasické Počítače používají bity, které mohou mít jeden ze dvou stavů-jeden nebo nula. Kvantový počítač bitů, nebo qubits, pouze jeden z těchto dvou států, když se na ně podíváte, ale uvnitř kvantové počítače mohou mít pravděpodobnostní státy. Díky tomu mohou modelovat mnoho stavů-zejména pravděpodobnostní stavové průběhy částic. Jak s tím děláte užitečné výpočty? No, je to dobré pro modelování fyzikálních systémů.

v roce 1911 jsme zjistili, jak vyrobit amoniak. Vyžaduje ohřev dusíku na 5000 stupňů a jeho stlačení na 50 atmosfér. Tento amoniak se používá pro střelný prach a hnojivo a toto hnojivo umožnilo zelenou revoluci 60. let, která nám umožnila zdvojnásobit globální lidskou populaci. 4% globálního energetického rozpočtu jde na výrobu amoniaku.

Nitrogenáza je enzym v bakterii, která žije v parazitických uzlinách na kořenech fazolí. Když pěstujete fazole na poli, tento enzym fixuje dusík z atmosféry do země a hnojí půdu. Takže zemědělci střídají plodiny-rostoucí pšenici, pak fazole — pak pšenici-aby udržovali půdu úrodnou.

K pochopení jak produkovat amoniak způsob, jakým bakterie dělá — při pokojové teplotě pomocí H2O + N z atmosféry — vyžaduje řešení interakce 170 elektrony. Nitrogenáza má dva přechodné kovy, které působí jako katalyzátory: železo a molybden. To znamená, že k modelování průběhů elektronů potřebujeme 21⁷⁰ komplexních čísel. Na Zemi je pouze 21 atomů⁵⁰-takže byste potřebovali 1 000 000 zemin, jen abyste uložili definici problému.

kvantový počítač s 200 qubity může modelovat mnoho stavů.

s tímto počítačem můžeme spustit simulace, abychom pochopili, jak to udělat jako bakterie. Jakmile budeme mít řešení postavit něco, co to dokáže, bude existovat další inženýrství-stejně jako se musí vyrábět nové lékové sloučeniny. A jakmile se tak stane, zemědělská produkce zemědělství bude výrazně vyšší.

Kvantový Počítač Stavební

V kvantovém počítači, existují dvě součásti k qubit — některé fyzické komponenty, které drží kvantový stav, a komponenta, která provádí operace na fyzické komponenty.

qubit — alespoň tak, jak se k němu nyní blížíme-pracuje na 15 milikelvinech. Kapalné Helium je 4 Kelviny.

model kvantového počítání je zobecněním klasického výpočtu. Je to matematicky Lineární algebra. Matematicky je qubit vektor ve vysokorozměrném lineárním prostoru (Hilbertův prostor).

nelze pozorovat qubit v tomto prostoru, ale můžete pracovat na to tím, že požaduje systém použít rotační překlady.

současné kvantové počítače jsou schopny generovat fyzický qubit po dobu 10^-6 sekund. Po uplynutí této doby se rozpadá, takže je nutná korekce chyb.

Existují dva modely Quantum computing:

  • bránu model — časový vývoj kvantového stavu pomocí násobení matic. Toto je model, který Q# používá.
  • kvantové žíhání-nalezení nejnižšího energetického stavu, který řeší problém. Počítač DWave používá tuto metodu.

klasické výpočty jsou zvláštním případem kvantového počítání. Takže vývoj a objevy v kvantových výpočtech způsobují poznatky v klasických výpočtech.

kvantové výpočty dopadů

titulek plakát dítě kvantové výpočetní pravděpodobný budoucí dopad je schopen prolomit současné šifrovací schémata. Do té doby však pravděpodobně dojde k mnohem účinnějším změnám.

prolomení moderní kryptografie bude vyžadovat kvantové počítače s 5000 qubity.

společnost Microsoft již zavádí šifrování odolné vůči kvantovým výpočtům – včetně kryptografie založené na mřížce. Moderní kryptografie je založena na faktoringu velkých prvočísel-klasicky nákladné řešení, ale triviální pro kvantové počítače.

NISQC je „Noisy Intermediate Scale Quantum Computing“. Někteří lidé vyvíjejí počítače, které mají velké množství hlučných qubits. MS to nedělá. Pracují na jejich první „topologické qubit“ — qubit, který je odolný vůči dekoherence. Bude to výpočetně relevantnější. Letos jsou na dobré cestě. John doufá, že za jeho života uvidíme 1000-1 000 000 qubits na oplatce na 15milliKelvin.

Jak jsme se kvantové počítače on-line, jedna z věcí, které nám pomůže udělat, je model fyzikálních systémů, které můžeme použít, aby se více efektivní kvantové počítače.

Řešení problémů, jako Nitrogenase, nebo jak Chlorofyl zachycuje CO2 z atmosféry a mění ho na sacharidy — couvací Skleníkový efekt a umožňuje nám vytvořit jídlo, ze vzduchu (a slunce) — jsou blíž, na obzoru, a bude mít obrovský dopad — jak se pomocí kvantových počítačů rozvíjet supravodičů.

a také odemknou problémy a příležitosti, o kterých právě teď ani neuvažujeme. Einstein nemyslel na iPhone ani na Internet, když publikoval svou práci o záření černého těla.

žijeme v budoucnosti právě teď.

pár skvělých knih, které zavádějí Kvantová fyzika bez matematiky, doporučuji:

„In Search of Schrodinger‘ s Cat: Kvantová Fyzika A Skutečnost“ — populární historie vývoje Kvantové Mechaniky, sledování vývoje myšlení a objev 20. století.

„The Fabric of Reality — Věda o Paralelních Vesmírech, a jeho Důsledky“ — kniha David Deutsch, průkopník Kvantové Výpočetní techniky. Tato kniha začíná s filozofií vědy (konkrétně jeho epistemologie), a dále zkoumat některé filozofické důsledky kvantové mechaniky.

pokud se chcete dostat přímo do toho, podívejte se na „kvantové výpočty pro počítačové vědce“. Toto je kniha, kterou John doporučuje.

Tam je předchozí umění, v tomto prostoru — například Quipper, který je realizován v jazyce Haskell. Nicméně, Q# přichází v Quantum Computing SDK, který obsahuje 3-qubit místní simulátor a přístup k 40-qubit cloud-based simulátoru. IBM má OpenQASM-programovací jazyk kvantové sestavy, který má vizuální editor podobný poškrábání a cloudovou (skutečnou) kvantovou počítačovou platformu. Q# je jazyk vyšší úrovně s typy a řídicím tokem.



+