Etikettarkiv: Datavetenskap

Vitsi kvantdatorer är bra, var får man en?

I Majstrandens bostäder är det drygt 300 grader för varmt för kvantdatorn.

En av de största utmaningarna för kvantdatorerna är yttre störningar. Som vi beskrev i förra artikeln är superpositionen, där qubiten är både 0 och 1 samtidigt, oerhört känslig och kollapsar väldigt lätt. Dagens kvantdatorer fungerar vid en temperatur på ca 0.2 K, vilket är ungefär -272.95 C. Även denna rysliga kyla är lite för varmt för att uppehålla superposition. Då superpositionen kollapsar blir din qubit, som ursprungligen var både 1 och 0 samtidigt genom svart kvantmagi, en ”normal” bit med ett definitivt värde (antingen 0 eller 1) och vi förlorar information.

En simpel krets som sammanflätar två qubitar.

En längre krets.

I bilderna ovan syns två olika kretsar som kan implementeras på en kvantdator för att utföra något spännande. Operationen “H” i bilderna sätter en qubit i superposition, och för att uppehålla den så genom hela beräkningen måste vi ha en temperatur som är så nära absoluta nollpunkten som möjligt. Ju längre kretsarna är, desto mer sannolikt är det att det sker ett fel.

En annan begränsning är antalet qubitar som kvantdatorerna har i dag. Några av de större kvantdatorerna, bl.a. Googles och IBMs, har kring 50 qubitar. Även om 50 är rätt så många (för en kvantdator) så finns det beräkningar och problem som skulle kräva storleksordningar flera qubitar. En både lovande och icke-intuitiv egenskap är att en större mängd qubitar tycks hålla superpositionerna bättre.

Trots att vi inte ännu har perfekta kvantdatorer så kan vi redan göra nyttiga saker med dem. Kvantdatorer är inte bra på allt, men de saker de är bra på är de väldigt bra på. Det är i huvudsak två områden där en kvantdator kan briljera:

  1. Simulera kvantmekaniska system. Vår värld är i allmänhet väldigt kvantmekanisk och ofta vill man simulera olika system för att försöka förstå hur världen fungerar. Det har visat sig vara väldigt svårt att simulera sådana system med en klassisk dator eftersom simulationen växer exponentiellt då systemet växer. En kvantdator däremot är i sig ett kvantmekaniskt system, vilket innebär att den kan simulera kvantmekaniska system oerhört mera effektivt än en klassisk dator. Problem i den här kategorin kräver ofta inte heller lika många qubitar som problem i kategori 2.
  2. Optimeringsproblem. En kvantdator kan vara väldigt effektiv på att hitta den “bästa” lösningen till problem. Ett bra exempel av ett optimeringsproblem är travelling salesman – problemet, där en handelsman ska besöka ett visst antal städer genom att gå den kortaste rutten. Problemet är väldigt svårt att lösa för en klassisk dator då antalet städer blir stort, eftersom den måste gå genom alla möjliga sträckor och kolla vilken som blir kortast. Det är för tillfället oklart om en kvantdator kan specifikt lösa travelling salesman – problemet effektivare.

Ett område som redan tagit stor nytta av kvantdatorer är beräkningskemin. Beräkningskemi faller in i kategori 1, d.v.s. att simulera kvantmekaniska system. Det har redan länge existerat algoritmer för att simulera och lösa kemiska problem, men störningarna hindrar fortfarande framsteg. För att besegra dessa tappra störningar har man trollat fram en hybrid kvant-klassisk algoritm för att minska på kretsarnas längd. (Kom ihåg att en kort krets är en stabil krets.) Inom fysiken har man redan lyckats simulera enklare kvantmekaniska system som “Hubbard modellen” eller “Ising modellen” där man simulerar elektroner i gitter.

Nästa artikel avslöjar vad framtiden kan ha att erbjuda. En perfekt kvantdator: Uhka vai mahdollisuus? Stay tuned.

Kalla kvant kristallkronor kör kryptografin kaputt: kapitel 1

Richard Feynman lade fram idén om kvantdatorer på 80-talet och länge har de bara existerat som teori. Det är först nu under de några senaste åren, när all hajp har tagit fart, som vi faktiskt kan börja göra produktiva saker med verkliga kvantdatorer. Men vad är en kvantdator och hur skiljer den sig från en klassisk dator? Varför är hajpen så stor? Vi hoppas kunna besvara några av den nyfikna läsarens frågor med en artikel-trilogi om kvantdatorer.

Kuin kaksi marjaa: ena använder sig av elektroner som i sin rörelse påverkar kvantmekaniska vågor för att lysa upp din vardag och andra är en kvantdator.

Först lite bakgrund inom informatik. En bit är en enhet av information och samtidigt den minsta mängden information som går att representeras, dvs. 0 eller 1. En bit kan implementeras på flera sätt: t.ex. som en mikroskopisk magnetisk sektor på hårdskivan eller som elektrisk laddning i datorns processor. Implementationen av en bit kallas för en fysisk bit.

Okej, nu hoppar vi in i kvantvärlden. Nu kan man ta nytta av så kallad superposition och istället använda sannolikheter för att beskriva information i kvantbitar; qubitar. När en qubit är i superposition av 0 och 1 så är den praktiskt taget bådeoch samtidigt i stället för att vara nåndera. Först då du observerar qubiten så antar den ett definitivt tillstånd och man säger att den kollapsar till 0 eller 1. Detta kan kännas väldigt abstrakt, men det är det underliga formalismen i kvantmekaniken. Qubiten representeras ofta med följande symboler:

där och är sannolikheterna att mäta respektive 0 och 1. T.ex. om a²=0.5 så är det 50 % sannolikhet att du skulle mäta 0 och 50 % sannolikhet att du skulle mäta 1 på din qubit.

Ett centralt fenomen inom kvantdatorer, och kvantmekaniken i överlag, är något som kallas för sammanflätning (eng. quantum entanglement). Det innebär att alla qubitar påverkar varandra med mysko kvantmagi, också känd som ”spooky action at a distance”. Försök inte förstå varför eller hur sammanflätningen fungerar för ingen annan gör det heller.

De oranga rutorna till vänster representerar bitar medan lila rutorna till höger representerar kollapsade qubitar. Märk att en kollapsad qubit innehåller de lika mycket information som en vanlig bit (0 eller 1). Qubitar som är i superposition (dvs. har inte ännu kollapsat) kan dock ligga någonstans där emellan.

Fenomenet innebär att du inte behöver veta enskilda qubitars värde för att veta tillståndet av hela systemet. Mängden processerbar information i en vanlig dator ökar linjärt med antalet bitar, medan i en kvantdator ökar processkraften exponentiellt med antalet qubitar. Så om du lägger till en qubit till din kvantdator så blir den i princip ”dubbelt bättre”. Det här är en av de sakerna som gör kvantdatorn kraftig.

Precis som med klassiska bitar finns det också fysiska qubitar av flera slag. Den vanligaste typen utnyttjar supraledare: material utan elektrisk resistans. Här är dina qubitar olika roterande strömmar i ett supraledande material. De kan rotera antingen medsols eller motsols, där den ena riktningen motsvarar värdet 0 och den andra 1. Genom att utföra mysko kvantoperationer på qubitarna, kan man få dem i en superposition av 0 och 1 samt sammanflätade med varandra. Strömmen går då både medsols och motsols med vissa sannolikheter tills man mäter riktningen hos den. I detta tillstånd kan man använda strömmarna som qubitar för att utföra vissa beräkningar som skulle kräva alltför mycket tid hos en normal dator.

Det här var en liten introduktion till kvantdatorer. I nästa artikel avslöjar vi en massa coola saker man kan göra med dem och hur du kan ha en egen kvantdator hemma hos dig (bara du inte bor i Majstranden).

Hugo & Waffe

Programmeringsspråk under tidens lopp

Image result for programming memes
Programmeringsmeme, tillsatt som clickbait.

Jag hade en tråkig sommardag i år och jag beslöt mig att undersöka vilka programmeringsspråk och -koncept som uppfanns under vilken tidspunkt och hur populära de blev på sin höjd. Från min extremt grundliga undersökning har jag plockat fram vissa betydelsefulla språk, i kronologisk ordning:

  • I begynnelsen, slutet på 50-talet: Fortran och LISP
    • Det kan argumenteras att Fortran var den första ”högre nivåns” språk. På 50-talet innebar detta begrepp att koden inte var skriven i ettor och nollor. Fortran introducerade också huvudvärken man får då man läser andras kod. Nuförtiden används Fortran främst av envisa fysiker som vägrar att flytta sig över till bättre designade språk som Rust, Erlang eller även C++.
    • LISP är den bästa språkfamiljen enligt vissa (ö)kända spektrumiter. LISP-kodare kännetecknas med bortslitna Shift-, 8- och 9-tangenter på tangetbordet. Alla viktiga koncept som t.ex. if-then-else lyftes upp av LISP.
Kodblock introducerades av ALGOL.
  • 60-talet: ALGOL och Simula
    • ALGOL är grand-daddy till C och med moderna standarder verkar nästan vettigt… nästan.
    • Simula introducerade bekanta koncept som klass, objekt, ärvandet av egenskaper samt dynamisk bindande av funktioner, whatever that means. Skapat av norrmän, heja Norge!
  • I början av 70-talet, programmeringsspråkens glansperiod: Prolog, C, Smalltalk och ML
    • Prolog, som namnet intyder, är ett språk för PROfessionella LOGiker för att klura ut livssanningar som t.ex.
      ?- help(life).
      No help available for life
      true.
    • C, ett helgat språk. Enligt ursprungsmyten visar C vägen till programmerarnas Nirvana. Predikas på kursen C-programmering där de få utvalda får de färdigt lagade testerna kompilerade utan problem.
    • Smalltalk introducerade metoder (dvs. funktioner som tillhör klasser av objekt) och var en stor inspiration för framtida objektorienterade språk. Men jo, detta betyder säkert inget åt en icke-datavetare. Jepp jepp… fint väder idag, inte sant?
    • ML är LISPs extroverta syster; ML har inte en fetish för parenteser men har en massa typer.
  • I mitten av 90-talet: Java och JavaScript
    • Java är varken vackert eller innovativt. Själva ryggraden, Java Virtual Machine, har dock revolutionerat plattformsoberoende körning. Man kan med andra ord köra sin Java kod på vad man vill, från hemmadatorer till telefoner till Nestes bensapump. (Givet att du har tillräckligt RAM såklart.)
    • JavaScript möjliggör interraktiva nätsidor och är grunden till viktiga applikationer som agar.io, 2048 och Universal Paperclips.

P.S. Data Is Beautiful presenterar de populäraste programmeringsspråken baserat på flera olika källor. Intressant är att man kan förutspå Javas kommande undergång. (Det lönar sig att sätta på 2x hastighet om man har bättre saker att göra med sitt liv).