this dir | view | cards | source | edit | dark top

Algoritmy a datové struktury 2

Algoritmy a datové struktury 2
Hledání v řetězci

značení

Hledání v řetězci

pozorování

Hledání v řetězci

jak najít jehlu

Hledání v řetězci

hledání více jehel v kupce sena – algoritmus Aho-Corasicková

Hledání v řetězci

Robinův-Karpův algoritmus

Toky v síti

df: síť je čtveřice

Toky v síti

df: tok je funkce f:ER0+f:E\in\mathbb R_0^+ taková, že

Toky v síti

df: pro vVv\in V

Toky v síti

df: toku ff přiřadíme průtok ff^*

Toky v síti

důkaz

Toky v síti

lemma: pro každý tok ff v síti SS a každý tok gg v síti R(S,f)R(S,f) existuje tok hh v síti SS takový, že h=f+g|h|=|f|+|g|hh lze najít v čase O(m)O(m)

mm … počet hran

Toky v síti

důkaz: h:=f+gh^*:=f^*+g^*

Toky v síti

Dinicův algoritmus O(n2m)O(n^2m)

Toky v síti

čištění sítě O(m)O(m)

Toky v síti

blokující tok O(nm)O(nm)

Toky v síti

lemma: během každé fáze vzroste počet vrstev pročištěné sítě aspoň o jedna

Toky v síti

df: ff je vlna \equiv

Toky v síti

převedení přebytku

Toky v síti

Goldbergův algoritmus

Toky v síti

vlna: f:ER0+f:E\to\mathbb R_0^+

fc,vz,s:fΔ(v)0f\leq c,\,\forall v\neq z,s:f^\Delta(v)\geq 0

Toky v síti

převedení po hraně uvuv

Toky v síti

invariant A (základní)

Toky v síti

invariant S (o spádu)

Toky v síti

lemma K (korektnosti)

pokud se algoritmus zastaví, finální ff je maximální tok

Toky v síti

důkaz

Toky v síti

invariant C (cesta do zdroje)

Toky v síti

invariant V (o výšce)

Toky v síti

lemma Z (zvednutí)

Toky v síti

lemma S („sytá“ převedení)

počet nasycených převedení nm\leq n\cdot m

Toky v síti

důkaz

Toky v síti

df: potenciál Φ:=vz,s:fΔ(v)>0h(v)\Phi:=\sum_{v\neq z,s:f^\Delta(v)\gt0}h(v)

Toky v síti

lemma N (nenasycená převedení)

počet nenasycených převedení O(n2m)\in O(n^2m)

Toky v síti

implementace

Toky v síti

rozbor složitosti

Toky v síti

lemma N'

v algoritmu s výběrem nejvyššího vvfΔ(v)>0f^\Delta(v)\gt 0 nastane O(n3)O(n^3) nenasycených převedení

Toky v síti

důkaz

Rychlá Fourierova transformace

násobení polynomů

Rychlá Fourierova transformace

rovnost polynomů – dvě možnosti

Rychlá Fourierova transformace

věta: nechť P,QP,Q jsou polynomy stupně maximálně ddP(xj)=Q(xj)P(x_j)=Q(x_j) pro navzájem různá čísla x0,,xdx_0,\dots,x_d, potom PQP\equiv Q

polynom stupně dd je určený d+1d+1 body

Rychlá Fourierova transformace

dk:

Rychlá Fourierova transformace

graf polynomu

Rychlá Fourierova transformace

násobení polynomů a grafy

Rychlá Fourierova transformace

teorie ke komplexním číslům

Rychlá Fourierova transformace

algoritmus FFT

Paralelní algoritmy

booleovská hradla

Paralelní algoritmy

hradlová síť obsahuje

Paralelní algoritmy

výpočet probíhá v taktech

Paralelní algoritmy

prostor = počet hradel

nemohli bychom použít počet hradel v největší vrstvě, protože ne všechny hrany vedou o jednu vrstvu (někdy je potřeba, aby si hradlo pamatovalo svůj výsledek během několika taktů)

Paralelní algoritmy

tedy ekvivalent programu ve světě hradlových sítí by byla sada různých hradlových sítí pro různé velikosti vstupu

tedy výpočetní model je neuniformní

Paralelní algoritmy

OR(x1,,xn)\text{OR}(x_1,\dots,x_n)

Paralelní algoritmy

binární sčítání

Paralelní algoritmy

binární násobení

Paralelní algoritmy

komparátorová síť

Paralelní algoritmy

df: posloupnost x0,,xn1x_0,\dots,x_{n-1} je

Paralelní algoritmy

separátor SnS_n

Paralelní algoritmy

bitonická třídička BnB_n

Paralelní algoritmy

slévačka MnM_n

Paralelní algoritmy

třidička SnS_n

Paralelní algoritmy

pozorování: z dolního odhadu složitosti třídění plyne, že hloubka každé třídicí sítě je Ω(logn)\Omega(\log n)

dá se to O(logn)O(\log n), ale konstanta je obrovská

Dvojrozměrné úlohy

oplocení jabloní

Dvojrozměrné úlohy

průsečíky nn úseček

Dvojrozměrné úlohy

Voroného diagram

Dvojrozměrné úlohy

lokalizace bodu

Složitost algoritmů

problém existence párování velikosti kk

vstup: bipartitní graf a kNk\in\mathbb N

Složitost algoritmů

df: problém A je převoditelný na problém B f:{0,1}{0,1}\equiv\exists f:\set{0,1}^*\to\set{0,1}^* taková, že α{0,1}:A(α)=B(f(α))\forall\alpha\in\set{0,1}^*:A(\alpha)=B(f(\alpha))ff lze spočítat v čase polynomiálním v α|\alpha|

začíme ABA\to B nebo APBA\leq_P B

Složitost algoritmů

příklad

Složitost algoritmů

lemma

Složitost algoritmů

princip

Složitost algoritmů

důkaz

Složitost algoritmů

vlastnosti relace převoditelnosti (\to)

Složitost algoritmů

vstup: formule v CNF

Složitost algoritmů

problém: nezávislá množina (NzMna)

Složitost algoritmů

pozor: převoditelnost z 3-SAT na SAT není identita

je potřeba zvalidovat vstup, jestli je 3-SAT – pro nevalidní vstupy chceme vrátit NE

Složitost algoritmů

zajímavější je převod SAT → 3-SAT

Složitost algoritmů

3-SAT → NzMna

Složitost algoritmů

NzMna → SAT

Složitost algoritmů

3-SAT → 3,3-SAT

Složitost algoritmů

3,3-SAT* … navíc každý literál max. 2×

použijeme předchozí algoritmus pro všechny proměnné s 3\geq 3 výskyty

Složitost algoritmů

3D-párování

Složitost algoritmů

3,3-SAT → 3D-párování

Složitost algoritmů

df: třída problémů P

LPAL\in \text P\equiv\exists A algoritmus p\exists p polynom takový, že x\forall x vstup platí, že A(x)A(x) doběhne do p(x)p(|x|) kroků   A(x)=L(x)\land\;A(x)=L(x)

Složitost algoritmů

df: třída problémů NP

LNPVPL\in \text{NP}\equiv\exists V\in P (verifikátor) g\exists g polynom (omezení délky certifikátů) x:L(x)=1    \forall x:L(x)=1\iff y\exists y (certifikát) yg(x)|y|\leq g(|x|) (krátký)   V(x,y)=1\land\;V(x,y)=1 (schválený)

Složitost algoritmů

důkaz

Složitost algoritmů

důkaz

Složitost algoritmů

NP-úplné problémy

Složitost algoritmů

částečný důkaz Cookovy věty

Složitost algoritmů

triky a přístupy

Složitost algoritmů

největší nezávislá množina ve stromu

Složitost algoritmů

plánování přednášek

Složitost algoritmů

batoh

Složitost algoritmů

TSP (problém obchodního cestujícího)

Složitost algoritmů

důkaz: tt-aproximace     \implies polynomiální algoritmus pro hamiltonovskou kružnici     \implies P = NP

Složitost algoritmů

batoh

Hurá, máš hotovo! 🎉
Pokud ti moje kartičky pomohly, můžeš mi koupit pivo.