Doplnění poznámek z PRO

This commit is contained in:
Filip Znachor 2024-01-25 15:24:15 +01:00
parent 8a9d04fc64
commit dd1b5b9243
2 changed files with 191 additions and 0 deletions

View file

@ -0,0 +1,47 @@
# In-place a in situ algoritmy
## In-place algoritmus
- narozdíl od data stream algoritmu se předpokládá vstup v poli
- transformuje datové struktury s užitím malé, $O(1)$ dodatečné paměti
- vstup během chodu programu obvykle přepsán výstupem
Příklady
- otočení řetězce
## In situ algoritmus
- někdy do in-place řazeny také algoritmy, které potřebují kromě vstupního pole $O(\log n)$ extra paměť
- pro omezená data sice pointer potřebuje $O(1)$ paměť, ale pro libovolně velká data potřebuje $O(\log n)$ bitů pro specifikaci indexů do seznamu délky $n$ - obvykle se toto ale ignoruje
- tyto algoritmy někdy označovány jako **in situ**
## Výhody in-place a in situ
- jde zpracovat větší datové množiny
- větší lokalita reference - vhodné pro paměťové hierarchie
- méně náchylné k selhání - nevyžaduje velké objemy paměti
- hodně velké datové množiny často na discích - pomalý náhodný přístup, levná dodatečná paměť, lokalita reference pak důležitější než objem dostatečné paměti
## Příklady
- Willardův 2D dělicí strom
- konvexní obálky
- Grahamovo prohledávání
## In-place a in situ sorting
1. **spojité pole**
- konstantní čas na přístup a prohození, dlouhý čas na posuvy
- pokud ignorujeme $O(\log n)$ na pointery:
- **heapsort** - ano, konstantní dodatečná paměť
- **quicksort** - in situ, $O(\log n)$ paměť na rekurzi
- **mergesort** - ne
2. zřetězené seznamy
- vyhledávání podle indexu $O(n)$
- **quicksort a heapsort**
- nutné drastické modifikace, aby alespoň $O(n^2)$
- pro tento druh algoritmů zřetěz. seznamy nevhodné
- **mergesort**
- $O(n \log n)$ čas, $O(\log n)$ dodatečná paměť
- krok merge se sřetězenými seznamy lehčí než s poli
- **mergesort** s poli - dobrá lokalita reference, pro data na disku lepší než jiné algoritmy

View file

@ -0,0 +1,144 @@
# Kvantové výpočty
- idea kvantových výpočtů: R. Feynman
- časová náročnost numerické simulace vývoje kvantového systému roste exponenciálně s počtem stupňů volnosti tohoto systému (např. s počtem interagujících částic)
- spontánní dynamika vhodně sestavené kvantové soustavy tedy může realizovat a podstatně urychlit určité numerické výpočty
## Základní vlastnosti
- superpozice stavů
- změna stavu objektu kvantovým měřením
- vzájemná provázanost/propletení
Analogie
- dokud objekt nevidíme (nezměříme jej - je např. pod plachtou), tak se nachází zároveň ve všech možných stavech, kde každý má svou pravděpodobnost
- s objektem můžeme manipulovat, ale nesmíme jej vidět (změřit)
- jeho stav můžeme předpovídat pravděpodobnostmi jednotlivých stavů
- pokud se podíváme na objekt (změřime jej), tak se ocitne v jednom z možných stavů, ve kterém už zůstane
Shrnutí
- **kvantová částice** existuje zároveň v mnona nekompatibilních stavech
- ve stavu superpozice je možné působit na všechny stavy najednou
- **kvantové měření**: když objekt změříme vzhledem k předem vybrané množině stavů, objekt se promítne do jednoho z nich
- když pozorování zopakujeme, částice zůstane ve stejném stavu
- **částice a měřící aparát** určují možné stavy, které jsou výsledkem měření
**Bra-ketová notace**
- Ket - sloupcový vektor komplexních čísel $|abc>$
- Bra - řádkový vektor komplexně sdružených hodnot $<abc|$
## Qubity
- základní jednotka kvantových výpočtů, kvantová obdoba bitu, reprezentována ketem
- základní stavy:
- $|0> = [10]^T$
- $|1> = [01]^T$
- částice může být v obou stavech najednou
- $q = c_{0}|0> + c_{1}|1>$, kde $c_{0}, c_{1}$ jsou komplexní čísla $|c_{0}|^2 + |c_{1}|^2 = 1$
- měřením qubit přejde do stavu $|0>$ s pravděpodobností $|c_{0}|^2$ a $|1>$ s pravděpodobností $|c_{1}|^2$
- realizace: 2 směry polarizace protonů, 2 orientace spinu elektronů
**Vícebitové registry**
- klasický registr vytváříme slepením bitů
- kvantový registr vektorovým součinem bitů (vzniknou všechny kombinace složek v pořadí, v jakém jsou uvedeny)
**Příprava qubitu**
- qubit dán do požadovaného stavu, pak je registr místo vektorového součinu vytvořen jen slepením bytu
- kopie qubitu bez změření není možná
- je možná pouze v případě, že původní částice při kopírování zahyne
- klonování není možné, **teleportace** ano
## Propletení (entanglement)
- příklad: 2x2 bit. registry
- $b_{0} = |00>, b_{1} = |11>$
- $\beta = w|00> + w|11>, w=\frac{1}{\sqrt{ 2 }}$
- změříme jen 2. qubit a získáme 0 nebo 1
- poté víme, že 1. qubit je také právě 0 nebo 1 (podle druhého)
- stav neprohlédnutého bitu je promítnut, aniž bychom si jej prohlédli
- tzv. **propletení** 2 qubitů registru $\beta$
Důsledky
- není časově omezené - propletené částice tak zůstanou navždy
- propletené bity nemusí ležet fyzicky blízko - klidně ve vzdálenosti celého vesmíru
- změřením jedné částice změříme i ostatní s ní propletené
- obě kolabují do stejného stavu
- **experiment Einstein-Podolsky-Rosen** (EPR)
- $q_{0}$ z $\beta$ si necháme, $q_{1}$ pošleme pryč rychlostí světla, po 10 mil. let se podíváme na $q_{0}$ a promítne se tím i $q_{1}$
## Použití
**Kvantový paralelismus**
- kvantový stav je vlastně superpozice všech hodnot
- výpočet se všemi hodnotami najednou
Obecně nelze oddělit dílčí stavy součástí kvantového systému
**Kvantový počítač**
- soustava určitého počtu qubitů
- zvolenou posloupností fyzikálních operací se dostávají do superponovaných a provázaných kvantových stavů
- tato posloupnost operací - hlavní součást **kvantového algoritmu**
**Vhodné úlohy**
- faktorizace
- najít prvočísla, jejichž součinem je dané číslo
- Shor, Bellovy laboratoře, 1994
- kryptografie
- hledání v neseřazeném seznamu
## Fyzikální realizace kvantových počítačů
**1995**
- teoreticky popsaná soustava nabitých atomů v silně ochlazeném stavu držená ve vzájemné vzdálenosti několika mikronů silným elektromagnetickým zářením, řízeno lasresovými impulsy
- **problém**: udržení kvantového počítače po celou dobu výpočtu v naprosté izolaci anebo opravovat průběžně škody vzniklé interakcí
**2001** - Chuang, IBM
- na bázi magnetické rezonance
- 7 qbitů, Shorův algoritmus
- velmi pomalé, pro praktické úlohy ještě nepoužitelné
**2007** - 16qb procesor
**2011** - D-Wave One
- 128 qubitů
- omezené možnosti výpočtů - kvantový optimalizátor
- cena 10 milionů $
- kvantové jevy drahých supervodivých materiálů
- chlazení tekutým héliem
**2012** - Harvard
- odstranění nutnosti extrémně nízkých teplot v kombinaci se supravodivými materiály a bez výrazného stínění
- životnost qubitu rozšířena o několik řádů
- založeno na diamantu s 2 miniaturními nečistotami o velikosti několika atomů
- doba uložení informace: 2 sekundy
**2013** - Univerzita Simona Frasera
- křemík a atomy fosforu
- informace uložena 180 sekund
- životnost qubitu 40 minut
**2019** - D-Wave má $2^{10}$ qb
- stále vysoce specializované
**2019, leden** - IBM Q System One
- kvantová výpočetní síla
- futuristický design
- stále limity současných technologií kvantového počítače
- 20 qb
- komerčně dostupný
- kromě HW možnost open-source nástrojů - knihovny pro Python, kvantové simulátory
- možnost počítat vzdáleně na cloudu kvant. počítačů, do něj přidán i tento
- není 100% bezchybnost
**2019, říjen** - Google oznámil dosažení kvantové nadřazenosti
- jejich kvantový počítač Sycamore za 200s vyřešil problém náhodného vzorkování, žádný počítač by to nevyřešil v rozumném čase
- podle nich by tento problém řešil nejvýkonnější superpočítač IBM Summit 10 tisíc let
- podle IBM jen 2,5 dne
### Problém chybovosti
- qb velmi citlivé a snadno ovlivnitelné vnějšími vlivy
- chyby nutné rychle odstranit, velký vliv na výpočet
- nejspíš nemožné zcela odstranit
- Shor: kvantové algoritmy korigovat průběžně ukládáním zálohy (jen pro malé počty qb)
- na prolomení významné části dnešních šifer by byly potřeba tisícovky qb, na ochranu proti chybám další miliony kontrolních qb