Doplnění poznámek z PRO
This commit is contained in:
parent
8a9d04fc64
commit
dd1b5b9243
47
KIV PRO/06. In-place a in situ algoritmy.md
Normal file
47
KIV PRO/06. In-place a in situ algoritmy.md
Normal 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
|
144
KIV PRO/07. Kvantové výpočty.md
Normal file
144
KIV PRO/07. Kvantové výpočty.md
Normal 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
|
Loading…
Reference in a new issue