Avmystifiera principerna för kvantberäkning

Avmystifiera principerna för kvantberäkning
"Jag tror att jag säkert kan säga att ingen förstår kvantmekanik." - Richard Feynman

Ämnet quantum computing har alltid fascinerat tekniska författare och journalister. Dess beräkningspotential och komplexitet gav den en viss mystisk aura. Alltför ofta beskriver featureartiklar och infografik i detalj de olika utsikterna för denna bransch, samtidigt som de knappt berör dess praktiska tillämpning: detta kan vilseleda den mindre uppmärksamma läsaren.

Populärvetenskapliga artiklar utelämnar beskrivningar av kvantsystem och gör påståenden som:

En vanlig bit kan vara en 1 eller en 0, men en qubit kan vara en 1 och en 0 samtidigt.

Om du har mycket tur (vilket jag inte är säker på), kommer du att få veta att:

Qubiten är i en superposition mellan "1" och "0".

Ingen av dessa förklaringar verkar rimliga, eftersom vi försöker formulera ett kvantmekaniskt fenomen med hjälp av språk som utvecklats i en mycket traditionell värld. För att tydligt förklara principerna för kvantberäkning är det nödvändigt att använda ett annat språk - matematiskt. 

I den här handledningen kommer jag att täcka de matematiska verktyg som behövs för att modellera och förstå kvantberäkningssystem, samt hur man illustrerar och tillämpar kvantberäkningens logik. Dessutom kommer jag att ge ett exempel på en kvantalgoritm och berätta vad dess fördel är jämfört med en traditionell dator.

Jag ska göra mitt bästa för att förklara allt detta i ett tydligt språk, men jag hoppas ändå att läsarna av den här artikeln har en grundläggande förståelse för linjär algebra och digital logik (linjär algebra täcks av här, om digital logik - här). 

Låt oss först gå igenom principerna för digital logik. Den är baserad på användningen av elektriska kretsar för att utföra beräkningar. För att göra vår beskrivning mer abstrakt, låt oss förenkla tillståndet för den elektriska ledningen till "1" eller "0", vilket kommer att motsvara tillstånden "på" eller "av". Genom att arrangera transistorer i en viss sekvens kommer vi att skapa så kallade logiska element som tar ett eller flera insignalvärden och omvandlar dem till en utsignal baserad på vissa regler för boolesk logik.

Avmystifiera principerna för kvantberäkning

Vanliga logiska grindar och deras tillståndstabeller

Baserat på kedjorna av sådana grundläggande element kan mer komplexa element skapas, och baserat på kedjorna av mer komplexa element kan vi i slutändan, med en stor grad av abstraktion, förvänta oss att få en analog till den centrala processorn.

Som jag nämnde tidigare behöver vi ett sätt att representera digital logik matematiskt. Låt oss först introducera matematisk traditionell logik. Med hjälp av linjär algebra kan de klassiska bitarna med värdena "1" och "0" representeras som två kolumnvektorer:
Avmystifiera principerna för kvantberäkning
där siffrorna till vänster är Dirac notation vektor. Genom att representera våra bitar på detta sätt kan vi modellera logiska operationer på bitarna med hjälp av vektortransformationer. Observera: även om användning av två bitar i logiska grindar kan utföra många operationer (AND, NOT, XOR, etc.), när du använder en bit, kan endast fyra operationer utföras: identitetsomvandling, negation, beräkning av konstanten "0" och beräkning av konstanten "1". Med en identitetsomvandling förblir biten oförändrad, med en negation ändras bitvärdet till det motsatta (från "0" till "1" eller från "1" till "0"), och beräkningen av konstanten "1" eller "0" ställer in biten till "1" eller "0" oavsett dess tidigare värde.
Avmystifiera principerna för kvantberäkning

Identitet Identitetsförvandling
negation Negation
Konstant-0 Beräkning av konstanten "0"
Konstant-1 Beräkning av konstanten "1"

Baserat på vår föreslagna nya representation av en bit är det ganska enkelt att utföra operationer på motsvarande bit med hjälp av en vektortransformation:

Avmystifiera principerna för kvantberäkning

Innan vi går vidare, låt oss titta på konceptet reversibla beräkningar, vilket helt enkelt antyder att för att säkerställa reversibiliteten för en operation eller ett logiskt element, är det nödvändigt att bestämma en lista över ingångssignalvärden baserad på utsignalerna och namnen på de operationer som används. Således kan vi dra slutsatsen att identitetstransformationen och negationen är reversibla, men operationerna för att beräkna konstanterna "1" och "0" är det inte. Tack vare enhetlighet kvantmekanik, kvantdatorer använder uteslutande reversibla operationer, så det är vad vi kommer att fokusera på. Därefter omvandlar vi irreversibla element till reversibla element för att de ska kunna användas av en kvantdator.

Med tensorprodukt individuella bitar kan representeras av många bitar:
Avmystifiera principerna för kvantberäkning
Nu när vi har nästan alla nödvändiga matematiska begrepp, låt oss gå vidare till vår första kvantlogikport. Det här är operatören CNOT, eller kontrollerad Not (NOT), vilket är av stor betydelse vid reversibel och kvantberäkning. CNOT-elementet gäller två bitar och returnerar två bitar. Den första biten betecknas som "kontroll"-biten och den andra som "kontroll"-biten. Om styrbiten är satt till "1", ändrar styrbiten sitt värde; Om styrbiten är inställd på "0" ändras inte styrbiten.
Avmystifiera principerna för kvantberäkning
Denna operator kan representeras som följande transformationsvektor:
Avmystifiera principerna för kvantberäkning
För att demonstrera allt vi har täckt hittills ska jag visa dig hur du använder CNOT-elementet på flera bitar:
Avmystifiera principerna för kvantberäkning
För att sammanfatta det som redan har sagts: i det första exemplet bryter vi ner |10⟩ i delar av dess tensorprodukt och använder CNOT-matrisen för att erhålla ett nytt motsvarande tillstånd för produkten; vi faktoriserar det sedan till |11⟩ enligt tabellen med CNOT-värden som gavs tidigare.

Så vi har kommit ihåg alla matematiska regler som hjälper oss att förstå traditionell beräkning och vanliga bitar, och vi kan äntligen gå vidare till modern kvantberäkning och qubits.

Om du har läst så här långt, så har jag goda nyheter för dig: qubits kan enkelt uttryckas matematiskt. I allmänhet, om en klassisk bit (cbit) kan sättas till |1⟩ eller |0⟩, är qubiten helt enkelt i överlagring och kan vara både |0⟩ och |1⟩ före mätning. Efter mätning kollapsar den till |0⟩ eller |1⟩. Med andra ord kan en qubit representeras som en linjär kombination av |0⟩ och |1⟩ enligt formeln nedan:
Avmystifiera principerna för kvantberäkning
där a₀ и a₁ representerar amplituderna |0⟩ respektive |1⟩. Dessa kan ses som "kvantsannolikheter", som representerar sannolikheten för att en qubit kollapsar till ett av tillstånden efter att den har mätts, eftersom ett objekt i superposition kollapsar till ett av tillstånden efter att ha fixerats i kvantmekaniken. Låt oss utöka detta uttryck och få följande:
Avmystifiera principerna för kvantberäkning
För att förenkla min förklaring är det här representationen jag kommer att använda i den här artikeln.

För denna qubit, chansen att kollapsa till värdet a₀ efter mätning är lika med |a₀|², och chansen att kollapsa till värdet a₁ är lika med |a₁|². Till exempel för följande qubit:
Avmystifiera principerna för kvantberäkning
chansen att kollapsa till "1" är lika med |1/ √2|², eller ½, det vill säga 50/50.

Eftersom i det klassiska systemet alla sannolikheter måste läggas till ett (för en fullständig sannolikhetsfördelning), kan vi dra slutsatsen att kvadraterna av absolutvärdena för amplituderna |0⟩ och |1⟩ måste läggas till ett. Baserat på denna information kan vi formulera följande ekvation:
Avmystifiera principerna för kvantberäkning
Om du är bekant med trigonometri kommer du att märka att denna ekvation motsvarar Pythagoras sats (a²+b²=c²), det vill säga vi kan grafiskt representera qubitens möjliga tillstånd som punkter på enhetscirkeln, nämligen:
Avmystifiera principerna för kvantberäkning
Logiska operatorer och element appliceras på qubits på samma sätt som i situationen med klassiska bitar - baserat på en matristransformation. Alla de inverterbara matrisoperatorerna som vi har återkallat hittills, särskilt CNOT, kan användas för att arbeta med qubits. Sådana matrisoperatorer låter dig använda var och en av amplituderna för qubiten utan att mäta och kollapsa den. Låt mig ge dig ett exempel på hur du använder negationsoperatorn på en qubit:
Avmystifiera principerna för kvantberäkning
Innan vi fortsätter, låt mig påminna dig om att amplitudvärdena a₀ och a₁ är faktiskt komplexa tal, så att tillståndet för en qubit mest exakt kan mappas till en tredimensionell enhetssfär, även känd som Loppsfär:
Avmystifiera principerna för kvantberäkning
Men för att förenkla förklaringen kommer vi här att begränsa oss till reella tal.

Det verkar vara dags att diskutera några logiska element som är vettiga enbart i samband med kvantberäkning.

En av de viktigaste operatorerna är "Hadamard-elementet": det tar lite i ett "0" eller "1" tillstånd och sätter det i lämplig överlagring med en 50% chans att kollapsa till en "1" eller "0" efter mätning. 
Avmystifiera principerna för kvantberäkning
Lägg märke till att det finns ett negativt tal i den nedre högra sidan av Hadamard-operatören. Detta beror på det faktum att resultatet av att tillämpa operatorn beror på värdet på insignalen: - |1⟩ eller |0⟩, och därför är beräkningen reversibel.

En annan viktig punkt med Hadamard-elementet är dess reversibilitet, vilket betyder att det kan ta en qubit i lämplig överlagring och omvandla den till |0⟩ eller |1⟩.
Avmystifiera principerna för kvantberäkning
Detta är mycket viktigt eftersom det ger oss förmågan att transformera från ett kvanttillstånd utan att bestämma qubitens tillstånd - och följaktligen utan att kollapsa den. Således kan vi strukturera kvantberäkningar baserat på en deterministisk snarare än en probabilistisk princip.

Kvantoperatorer som bara innehåller reella tal är deras egen motsats, så vi kan representera resultatet av att tillämpa operatorn på en qubit som en transformation inom enhetscirkeln i form av en tillståndsmaskin:
Avmystifiera principerna för kvantberäkning
Således omvandlas qubiten, vars tillstånd presenteras i diagrammet ovan, efter att ha tillämpat Hadamard-operationen, till det tillstånd som indikeras av motsvarande pil. På samma sätt kan vi konstruera en annan tillståndsmaskin som kommer att illustrera transformationen av en qubit med hjälp av negationsoperatorn som visas ovan (även känd som Pauli-negationsoperatorn, eller bitinversion), som visas nedan:
Avmystifiera principerna för kvantberäkning
För att utföra mer komplexa operationer på vår qubit kan vi kedja flera operatorer eller applicera element flera gånger. Exempel på serietransformation baserat på kvantkretsrepresentationer är som följer:
Avmystifiera principerna för kvantberäkning
Det vill säga, om vi börjar med bit |0⟩, applicerar en bitinversion, och sedan en Hadamard-operation, sedan ytterligare en bitinversion, och igen en Hadamard-operation, följt av en sista bitinversion, slutar vi med vektorn som ges av on höger sida av kedjan. Genom att lägga olika tillståndsmaskiner ovanpå varandra kan vi börja vid |0⟩ och spåra de färgade pilarna som motsvarar var och en av transformationerna för att förstå hur det hela fungerar.
Avmystifiera principerna för kvantberäkning
Eftersom vi har kommit så långt är det dags att överväga en av typerna av kvantalgoritmer, nämligen - Deutsch-Jozsa algoritm, och visa dess fördel gentemot en klassisk dator. Det är värt att notera att Deutsch-Jozsa-algoritmen är helt deterministisk, det vill säga den returnerar det korrekta svaret 100 % av tiden (till skillnad från många andra kvantalgoritmer baserade på den probabilistiska definitionen av qubits).

Låt oss föreställa oss att du har en svart låda som innehåller en funktion/operator på en bit (kom ihåg - med en bit kan endast fyra operationer utföras: identitetsomvandling, negation, utvärdering av konstanten "0" och utvärdering av konstanten "1" "). Exakt vilken funktion utförs i lådan? Du vet inte vilken, men du kan gå igenom så många varianter av ingångsvärden som du vill och utvärdera utdataresultaten.

Avmystifiera principerna för kvantberäkning
Hur många ingångar och utgångar måste du köra genom den svarta rutan för att ta reda på vilken funktion som används? Tänk på det här en sekund.

När det gäller en klassisk dator måste du göra 2 frågor för att avgöra vilken funktion som ska användas. Till exempel, om ingången "1" ger en "0"-utgång, blir det tydligt att antingen funktionen att beräkna konstanten "0" eller negationsfunktionen används, varefter du måste ändra värdet på insignalen till "0" och se vad som händer vid utgången.

I fallet med en kvantdator kommer två frågor också att krävas, eftersom du fortfarande behöver två olika utdatavärden för att exakt definiera funktionen som ska tillämpas på ingångsvärdet. Men om man formulerar om frågan lite så visar det sig att kvantdatorer fortfarande har en allvarlig fördel: om man ville veta om funktionen som används är konstant eller variabel, skulle kvantdatorer ha fördelen.

Funktionen som används i rutan är variabel om olika värden på insignalen ger olika resultat vid utgången (till exempel identitetsomvandling och bitinversion), och om utgångsvärdet inte ändras oavsett ingångsvärdet, då funktionen är konstant (till exempel beräkna en konstant "1" eller beräkna konstanten "0").

Med hjälp av en kvantalgoritm kan du avgöra om en funktion i en svart låda är konstant eller variabel baserat på bara en fråga. Men innan vi tittar på hur man gör detta i detalj, måste vi hitta ett sätt att strukturera var och en av dessa funktioner på en kvantdator. Eftersom alla kvantoperatorer måste vara inverterbara står vi genast inför ett problem: funktionerna för att beräkna konstanterna "1" och "0" är det inte.

En vanlig lösning som används vid kvantberäkning är att lägga till en extra utdata-qubit som returnerar vilket ingångsvärde funktionen än tar emot. 

Innan: efter:
Avmystifiera principerna för kvantberäkning Avmystifiera principerna för kvantberäkning

På detta sätt kan vi bestämma ingångsvärdena enbart baserat på utgångsvärdet, och funktionen blir inverterbar. Strukturen hos kvantkretsar skapar behovet av en extra ingångsbit. För att utveckla motsvarande operatorer kommer vi att anta att den extra inmatade qubiten är satt till |0⟩.

Med hjälp av samma kvantkretsrepresentation som vi använde tidigare, låt oss se hur vart och ett av de fyra elementen (identitetstransformation, negation, utvärdering av konstanten "0" och utvärdering av konstanten "1") kan implementeras med hjälp av kvantoperatorer. 

Så här kan du till exempel implementera funktionen för att beräkna konstanten "0":

Beräkning av konstanten "0":
Avmystifiera principerna för kvantberäkning
Här behöver vi inga operatörer alls. Den första ingångsqubiten (som vi antog vara |0⟩) returnerar med samma värde, och det andra ingångsvärdet returnerar sig själv - som vanligt.

Med funktionen för att beräkna konstanten "1" är situationen lite annorlunda:

Beräkning av konstanten "1":
Avmystifiera principerna för kvantberäkning
Eftersom vi har antagit att den första ingångsqubiten alltid är satt till |0⟩, är resultatet av att tillämpa bitinversionsoperatorn att den alltid producerar en etta vid utgången. Och som vanligt ger den andra qubiten sitt eget värde vid utgången.

När man kartlägger identitetstransformationsoperatören börjar uppgiften bli mer komplicerad. Så här gör du:

Identisk transformation:
Avmystifiera principerna för kvantberäkning
Symbolen som används här betecknar CNOT-elementet: den översta raden anger kontrollbiten och den nedre raden anger kontrollbiten. Låt mig påminna dig om att när du använder CNOT-operatorn ändras värdet på kontrollbiten om kontrollbiten är lika med |1⟩, men förblir oförändrad om kontrollbiten är lika med |0⟩. Eftersom vi antog att värdet på den översta raden alltid är lika med |0⟩, tilldelas dess värde alltid den nedersta raden.

Vi fortsätter på liknande sätt med negationsoperatorn:

Negation:
Avmystifiera principerna för kvantberäkning
Vi inverterar helt enkelt biten i slutet av utgångslinjen.

Nu när vi har fått den preliminära förståelsen ur vägen, låt oss titta på de specifika fördelarna med en kvantdator jämfört med en traditionell dator när det gäller att bestämma konstantheten eller variabiliteten för en funktion gömd i en svart låda med bara en fråga.

För att lösa detta problem med hjälp av kvantberäkning i en enda begäran är det nödvändigt att lägga in de ingående qubits i en superposition innan de skickas till funktionen, som visas nedan:
Avmystifiera principerna för kvantberäkning
Hadamard-elementet återappliceras på resultatet av funktionen för att bryta qubits ur superposition och göra algoritmen deterministisk. Vi startar systemet i tillståndet |00⟩ och, av skäl som jag ska förklara snart, får vi resultatet |11⟩ om den tillämpade funktionen är konstant. Om funktionen inuti den svarta rutan är variabel, returnerar systemet resultatet |01⟩ efter mätning.

För att förstå resten av artikeln, låt oss titta på illustrationen jag visade tidigare:
Avmystifiera principerna för kvantberäkning
Genom att använda bitinversionsoperatorn och sedan tillämpa Hadamard-elementet på båda ingångsvärdena lika med |0⟩, säkerställer vi att de översätts till samma överlagring av |0⟩ och |1⟩, enligt följande:
Avmystifiera principerna för kvantberäkning
Genom att använda exemplet med att skicka detta värde till en svart låda-funktion är det lätt att visa att båda konstantvärdesfunktionerna matar ut |11⟩.

Beräkning av konstanten "0":
Avmystifiera principerna för kvantberäkning
På liknande sätt ser vi att funktionen för att beräkna konstanten "1" också producerar |11⟩ som en utdata, det vill säga:

Beräkning av konstanten "1":
Avmystifiera principerna för kvantberäkning
Observera att utgången blir |1⟩, eftersom -1² = 1.

Med samma princip kan vi bevisa att när vi använder båda variabelfunktionerna kommer vi alltid att få |01⟩ vid utgången (förutsatt att vi använder samma metod), även om allt är lite mer komplicerat.

Identisk transformation:
Avmystifiera principerna för kvantberäkning
Eftersom CNOT är en två-qubit-operator, kan den inte representeras som en enkel tillståndsmaskin, och därför är det nödvändigt att definiera två utsignaler baserade på tensorprodukten av både ingående qubits och multiplikation med CNOT-matrisen som beskrivits tidigare:
Avmystifiera principerna för kvantberäkning
Med denna metod kan vi också bekräfta att utmatningsvärdet |01⟩ tas emot om negationsfunktionen är gömd i den svarta rutan:

Negation:
Avmystifiera principerna för kvantberäkning
Således har vi just visat en situation där en kvantdator är klart mer effektiv än en konventionell dator.

Vad härnäst?

Jag föreslår att vi slutar här. Vi har redan gjort ett bra jobb. Om du har förstått allt jag har täckt tror jag att du nu har en god förståelse för grunderna i kvantberäkning och kvantlogik, och varför kvantalgoritmer kan vara effektivare än traditionell beräkning i vissa situationer.

Min beskrivning kan knappast kallas en fullfjädrad guide till kvantberäkning och algoritmer - snarare är det en kort introduktion till matematik och notation, utformad för att skingra läsarnas idéer om ämnet som påtvingats av populärvetenskapliga källor (allvarligt, många kan verkligen inte förstå situationen!). Jag hann inte beröra många viktiga ämnen, som t.ex kvantintrassling av qubits, komplexiteten hos amplitudvärdena|0⟩ och |1⟩ och funktionen hos olika kvantlogiska element under transformation av Bloch-sfären.

Om du vill systematisera och strukturera dina kunskaper om kvantdatorer, starkt Jag rekommenderar dig att läsa "En introduktion till kvantalgoritmer" Emma Strubel: trots överflöd av matematiska formler diskuterar den här boken kvantalgoritmer mycket mer i detalj.

Källa: will.com

Lägg en kommentar