Státnice – Obecná Informatika

Karel Velička

2026-09-25

Státnice – Obecná Informatika

(Snad budoucí Bc.) Karel Velička

2026-09-25

Tento dokument obsahuje teoretickou přípravu na státnice z Obecné informatiky na MFF UK pro rok 2024/25. Snažil jsem se, jak jen to šlo, dodržet strukturu zveřejněných požadavků. Valná většina uvedeného textu je z mých poznámek, které jsem si v průběhu studia udělal. Výjimkou jsou Logika, ADS a TeMno, kde jsem čerpal přímo z materiálů vyučujících (resp. spolužáka).

Další zdroje a veškeré, mnou sepsané poznámky za 33 roky Bc. studia, jsou k dispozici zde.

P.S. Za nic neručím. Určitě se tu nějaké chyby najdou.

Společná matematika

Z následujících 66 témat budou vybrána 22.

Základy diferenciálního a integrálního počtu

Posloupnosti reálných čísel a jejich limity.

Definice 0.1 (Reálná posloupnost). Reálná posloupnost (an)n=1∞=(a1,a2,…)∈ℝ(a_n)_{n=1}^\infty = (a_1, a_2, \dots) \in {\mathbb{R}} je funkce a:ℕ→ℝa: {\mathbb{N}}\to {\mathbb{R}}.

Definice 0.2 (Limita posloupnosti). Nechť (an)(a_n) je reálná posloupnost a L∈ℝ*L \in {\mathbb{R}}^*, kde ℝ*{\mathbb{R}}^* je ℝ{\mathbb{R}} spolu s ±∞\pm \infty. Potom LL je limita posloupnosti (an)(a_n), pokud: (∀ε>0)(∃n0∈ℕ):∀n≥n0⟹an∈U(L,ε),U(b,ε)=(b−ε,b+ε).(\forall \varepsilon>0) (\exists n_0\in {\mathbb{N}}): \forall n \geq n_0 \implies a_n \in U(L, \varepsilon), \quad U(b,\varepsilon)=(b-\varepsilon, b+\varepsilon). Píšeme lim⁡n→∞an=L\displaystyle \lim_{n\to \infty} a_n = L.

Definice 0.3 (Nevlastní limita posloupnosti). Pokud L∈ℝL \in {\mathbb{R}}, pak konverguje a mluvíme o limitě vlastní, pokud L=±∞L=\pm \infty, pak diveguje a mluvíme o limitě nevlastní.

Definice 0.4 (Podposloupnost). (bn)(b_n) je podposloupností posloupnosti (an)(a_n), pokud existuje taková posloupnost ∀m∈ℕ:m1<m2<…∈ℕ,\forall m \in {\mathbb{N}}: m_1 < m_2 < \dots \in {\mathbb{N}}, kde ∀n:bn=amn\forall n: b_n = a_{m_n}. Značíme jako (bn)≺(an)(b_n) \prec (a_n).

Definice 0.5 (Hromadný bod). Hromadný bod AA posloupnosti (an)(a_n), pokud je limitou nějaké podposloupnosti posloupnosti (an)(a_n).

Věta 0.1 (Bolzano-Weierstrass). Každá omezená reálná posloupnost má konvergentní podposloupnost.
Omezená monotónní posloupnost má vlastní limitu.

Věta 0.2 (Aritmetika limit). Nechť (an),(bn)(a_n), (b_n) jsou posloupnosti reálných čísel s lim⁡n→∞(an)=K∈ℝ*\displaystyle \lim_{n\to \infty} (a_n) = K \in {\mathbb{R}}^*, lim⁡n→∞(bn)=L∈ℝ*\displaystyle \lim_{n\to \infty} (b_n) = L \in {\mathbb{R}}^*. Potom, pokud jsou výrazy na pravých stranách definovány, platí

  1. lim⁡n→∞(an+bn)=K+L\displaystyle \lim_{n\to \infty} (a_n + b_n) = K+L ,

  2. lim⁡n→∞(an⋅bn)=K⋅L\displaystyle \lim_{n\to \infty} (a_n \cdot b_n) = K \cdot L,

  3. lim⁡n→∞(anbn)=KL\displaystyle \lim_{n\to \infty}\left(\frac{a_n}{b_n}\right) = \frac KL, pokud bn≠0b_n\neq 0 pro každé n>n0n>n_0.

Věta 0.3 (O dvou policajtech). Nechť posloupnosti (an)(a_n), (bn)(b_n), (cn)∈ℝ(c_n) \in {\mathbb{R}} splňují, že lim⁡n→∞an=lim⁡n→∞bn=a∈ℝ\displaystyle \lim_{n\to \infty}a_n = \lim_{n\to \infty} b_n = a \in {\mathbb{R}} a ∀n>n0:an<cn<bn\forall n > n_0:~~ a_n < c_n < b_n. Pak (cn)(c_n) konverguje a lim⁡n→∞cn=a\displaystyle \lim_{n \to \infty} c_n = a.

−1≤cos⁡(n)≤1-1 \leq \cos (n) \leq 1 −1≤sin⁡(n)≤1-1 \leq \sin(n) \leq 1 −1≤sin⁡(1n)≤1-1 \leq \sin (\frac 1n) \leq 1
−1≤(−1)n≤1-1 \leq (-1)^n \leq 1 n−1≤⌊n⌋≤nn-1 \leq \lfloor n \rfloor \leq n −π2≤arctan⁡(n)≤π2-\frac \pi 2 \leq \arctan(n) \leq \frac \pi 2

Užitečné vztahy pro větu o dvou policajtech

Věta 0.4 (O limitě a uspořádání). Nechť posloupnosti (an),(bn)∈ℝ(a_n), (b_n)\in {\mathbb{R}} mají limity lim⁡an=A∈ℝ*\lim a_n = A \in {\mathbb{R}}^* a lim⁡bn=B∈ℝ*\lim b_n = B \in {\mathbb{R}}^*. Potom:

  1. A<B⟹∃n0:∀n≥n0A < B \implies \exists n_0 : \forall n \geq n_0  platí  an<bna_n < b_n,

  2. ∀n:an≤bn⟹A≤B\forall n: a_n \leq b_n \implies A \leq B.

Řady.

Definice 0.6 (Řada). Řada je posloupnost (an)⊆ℝ(a_n) \subseteq {\mathbb{R}}.

Definice 0.7 (Částečný součet řady). Částečný součet řady (an)(a_n) je (sn):=(a1+a2+…+an)(s_n):= (a_1 + a_2 + \dots + a_n)

Definice 0.8 (Součet řady). Součet řady je limita ∑an=∑n=1∞an=a1+a2+…:=lim⁡n→∞(a1+a2+…+an)=lim⁡sn∈ℝ*\displaystyle \sum a_n = \sum_{n=1}^\infty a_n = a_1 + a_2 + \dots := \lim_{n\to \infty}(a_1 + a_2 + \dots + a_n) = \lim s_n \in {\mathbb{R}}^*.

Definice 0.9 (Geometrická řada). Geometrická řada je řada ∑n=0∞qn=1+q+q2+…+qn+…\displaystyle \sum_{n=0}^{\infty}q^n = 1 + q + q^2 + \dots + q^n + \dots, kde q=an+1an∈ℝq = \frac{a_{n+1}}{a_n} \in {\mathbb{R}} je kvocient.

Definice 0.10 (Součet geometrické řady). ∑n=0∞qn={11−qpro |q|<1+∞pro q≥1neexistujepro q≤−1\displaystyle \sum_{n=0}^{\infty}q^n = \begin{cases} \frac{1}{1-q} & \text{pro } |q| < 1\\ + \infty & \text{pro } q \geq 1\\ \text{neexistuje} & \text{pro } q \leq -1 \end{cases}

Definice 0.11 (Absolutně konvergentní řada). Řada ∑an\sum a_n je absolutně konvergentní, pokud konverguje řada ∑|an|\sum |a_n|.

Definice 0.12 (Harmonická řada). Harmonickou řadu definujeme jako hn=∑n=1∞1nsh_n = \displaystyle \sum_{n=1}^{\infty} \frac 1{n^s}, kde s∈ℝs \in {\mathbb{R}}. Platí, že hnh_n konverguje, pokud s>1s>1, jinak diverguje.

Věta 0.5 (Leibnitzovo kritérium). Pokud pro řadu ∑n=0∞(−1)n+1an\sum_{n=0}^\infty (-1)^{n+1}a_n platí, že posloupnost ana_n je kladná, klesající a má limitu 00, pak řada konverguje.

Reálné funkce jedné reálné proměnné

.

Definice 0.13 (Okolí bodu). ε\varepsilon-okolí bodu b∈ℝb\in {\mathbb{R}}, kde ε∈ℝ+\varepsilon\in {\mathbb{R}}^+ je interval U(b,ε):=(b−ε,b+ε)={x∈ℝ:d(x,b)<ε}, pro metriku d.U(b, \varepsilon):= (b-\varepsilon, b+\varepsilon) = \{x \in {\mathbb{R}}: d(x, b) < \varepsilon\} ,\qquad\text{ pro metriku }d.

Definice 0.14 (Prstencové okolí bodu). Prstencové okolí bodu b≡P(b,ε):=(b−ε,b)∪(b,b+ε)b \equiv P(b, \varepsilon):= (b-\varepsilon, b) \cup (b, b+\varepsilon).

Definice 0.15 (Limita funkce v bodě). Funkce ff má v bodě a∈ℝ*a \in {\mathbb{R}}^* limitu A∈ℝ*A \in {\mathbb{R}}^*, když (∀ε>0)(∃δ>0):∀x∈P(a,δ)⟹f(x)∈U(A,ε),   𝑡𝑒𝑑𝑦 limx→af(x)=A.(\forall \varepsilon >0) (\exists \delta>0): \forall x \in P(a, \delta) \implies f(x) \in U (A, \varepsilon) \textit{,~~ tedy }~~ \displaystyle \lim_{x\to a}f(x) = A.

Definice 0.16 (Jednostranná limita funkce). Podobně, jen ∀x∈P±(a,δ)...\forall x \in P^{\pm}(a, \delta) ~...

limx→0sin⁡(x)x=1\lim\limits_{x\to 0}\frac{\sin (x)}{x} = 1 limx→0tan⁡(x)x=1\lim\limits_{x\to 0}\frac{\tan (x)}{x} = 1
limx→∞sin⁡(x)x=0\lim\limits_{x\to \infty}\frac{\sin (x)}{x} = 0 limx→∞cos⁡(x)x=0\lim\limits_{x\to \infty}\frac{\cos (x)}{x} = 0
limx→0ln⁡(x)=−∞\lim\limits_{x\to 0} \ln(x)= -\infty limx→∞ln⁡(x)x=0\lim\limits_{x\to \infty} \frac{\ln(x)}x= 0

Důležité limitní vztahy.

Věta 0.6 (Vztah limit funkce s uspořádáním). Nechť c∈ℝ*c \in \mathbb{R}^{*} a funkce f,g,hf,g,h jsou definované na nějakém prstencovém okolí bodu cc.

  1. Mají-li funkce f,gf, g v bodě cc limitu a lim⁡x→cf(x)>lim⁡x→cg(x)\displaystyle\lim _{x \rightarrow c} f(x)>\lim _{x \rightarrow c} g(x), pak ∃δ>0\exists\delta > 0 takové, že f(x)>g(x)f (x) > g(x) pro každé x∈P(c,δ)x \in P (c,\delta). (Limita zachovává ostré nerovnosti.)

  2. Existuje-li δ>0:f(x)≥g(x)\delta>0: f(x) \geq g(x) pro každé x∈P(c,δ)x \in P(c, \delta), a mají-li funkce f,gf, g limitu v bodě cc, potom lim⁡x→cf(x)≥lim⁡x→cg(x)\displaystyle\lim _{x \rightarrow c} f(x) \geq \lim _{x \rightarrow c} g(x). (Limita zachovává neostré nerovnosti.)

  3. Existuje-li δ>0:f(x)≤h(x)≤g(x)\delta>0: f(x) \leq h(x) \leq g(x) pro každé x∈P(c,δ)x \in P(c, \delta) a lim⁡x→cf(x)=lim⁡x→cg(x)=A∈ℝ*\displaystyle\lim _{x \rightarrow c} f(x)=\lim _{x \rightarrow c} g(x)=A \in \mathbb{R}^{*}, potom i lim⁡x→ch(x)=A\displaystyle\lim _{x \rightarrow c} h(x)=A. (O dvou policajtech.)

Věta 0.7 (Heine). Limita funkce limx→bf(x)=L⇔\lim\limits_{x\to b}f(x) = L \iff pro každou posloupnost (xn)(x_n) splňující ∀n:xn≠b\forall n: x_n \neq b a limn→∞xn=b\lim\limits_{n\to \infty} x_n = b, platí limn→∞f(xn)=L\lim\limits_{n\to \infty}f(x_n)=L.

Definice 0.17 (Spojitost funkce v bodě). Funkce ff je spojitá v bodě a∈ℝa\in {\mathbb{R}}, pokud (∀ε>0)(∃δ>0):∀x∈P(a,δ)⟹f(x)∈U(f(a),ε).(\forall \varepsilon>0)(\exists \delta>0): \forall x \in P(a, \delta) \implies f(x) \in U(f(a), \varepsilon). Neboli funkce ff je v bodě aa spojitá, pokud lim⁡x→af(x)=f(a)\displaystyle\lim_{x\to a} f(x) = f(a).

Definice 0.18 (Limita složené funkce). Nechť a,b,c∈ℝ*a,b,c \in {\mathbb{R}}^* a nechť funkce mají limity lim⁡x→ag(x)=b\displaystyle \lim_{x\to a}g(x) = b a lim⁡y→bf(x)=c\displaystyle \lim_{y\to b}f(x) = c. Složená funkce má potom limitu lim⁡x→af(g(x))=c⇔\displaystyle\lim_{x\to a} f(g(x)) = c \iff platí jedna z podmínek:

  1. f(x)f(x) je spojitá v bb,

  2. ∃δ,∀x∈P(a,δ):b∉g(x)\exists \delta, \forall x \in P(a, \delta): b \notin g(x), tedy na nějakém prstencovém okolí funkce nenabývá hodnotu bb.

Definice 0.19 (Spojitost na intervalu). Funkce je spojitá na intervalu, je-li spojitá v každém vnitřním bodu a jednostraně spojitá v mezích.

Věta 0.8 (Nabývání mezihodnot). Funkce spojitá na intervalu nabývá všech hodnot mezi mezemi intervalu. Tedy pro a,b,c∈ℝa,b,c \in {\mathbb{R}}; a<ba < b; f:[a,b]→ℝf:[a, b] \to {\mathbb{R}} je spojitá a f(a)≷c≷f(b)f(a) \gtrless c \gtrless f(b), pak ∃d∈(a,b):f(d)=c\exists d \in (a, b): f(d) = c.

Definice 0.20 (Maximum). Nechť M⊆ℝM \subseteq \mathbb{R} a f:M→ℝf: M \rightarrow \mathbb{R}. Řekneme, že funkce ff v bodě a∈Ma \in M nabývá svého maxima, když ∀x∈M:f(x)≤f(a)\forall x \in M: f(x) \leq f(a). (minimum analogicky, jen opačná nerovnost).

Věta 0.9 (Princip minima a maxima). Nechť a,b∈ℝ,a≤ba, b \in \mathbb{R}, a \leq b a f:[a,b]→ℝf:[a, b] \rightarrow \mathbb{R} je spojitá funkce. Potom ff nabývá na intervalu [a,b][a, b] svého maxima i minima.

Derivace a její aplikace.

Definice 0.21 (Derivace funkce). Nechť bod a∈Ma\in M je limitní bod množiny M⊆ℝM \subseteq {\mathbb{R}} a f=f(x):M→ℝf = f(x): M\to {\mathbb{R}} je funkce. Potom derivace ff v bodě aa je limita f′(a)=limx→af(x)−f(a)x−a=limh→0f(a+h)−f(a)h.f'(a) = \lim_{x\to a}\frac{f(x) - f(a)}{x-a} = \lim_{h\to 0}\frac{f(a+h)-f(a)}{h}.

Definice 0.22 (Diferencovatelnost). Jestliže má ff v bodě bb vlastní derivaci, říkáme, že ff je v bb diferencovatelná. (Diferencovatelnost ⟹\implies spojitost).

Věta 0.10 (Derivace složené funkce (řetízkové pravidlo)). Nechť f,gf,g funkce a gg má spojitou derivaci v xx:(f(g(x)))′=f′(g(x))⋅g′(x).(f(g(x)))' = f'(g(x))\cdot g'(x).

Pravidlo Vzorec
Derivace součtu (f+g)′=f′+g′(f + g)' = f' + g'
Derivace násobku (αf)′=αf′∀α∈ℝ(\alpha f)' = \alpha f' \quad \forall \alpha \in \mathbb{R}
Leibnizovo pravidlo (součin) (f⋅g)′=f′⋅g+f⋅g′(f \cdot g)' = f' \cdot g + f \cdot g'
Derivace podílu (fg)′=f′⋅g−f⋅g′g2,g≠0\left(\dfrac{f}{g}\right)' = \dfrac{f' \cdot g - f \cdot g'}{g^2}, \quad g \neq 0
Elementární funkce Derivace
Mocninná funkce (xn)′=nxn−1,n∈ℝ(x^n)' = n x^{n-1}, \quad n \in \mathbb{R}
Exponenciální funkce (ex)′=ex(e^x)' = e^x, (ax)′=axln⁡a(a^x)' = a^x \ln a
Logaritmická funkce (ln⁡x)′=1x(\ln x)' = \dfrac{1}{x}, (log⁡ax)′=1xln⁡a(\log_a x)' = \dfrac{1}{x \ln a}
Goniometrické funkce (sin⁡x)′=cos⁡x(\sin x)' = \cos x
(cos⁡x)′=−sin⁡x(\cos x)' = -\sin x
(tan⁡x)′=1cos⁡2x=1+tan⁡2x(\tan x)' = \dfrac{1}{\cos^2 x} = 1 + \tan^2 x
(cot⁡x)′=−1sin⁡2x=−(1+cot⁡2x)(\cot x)' = -\dfrac{1}{\sin^2 x} = -(1 + \cot^2 x)

Věta 0.11 (l’Hospitalovo pravidlo). Nechť a∈ℝ;f,g:P(a,δ)→ℝa \in {\mathbb{R}}; f,g: P (a, \delta)\to {\mathbb{R}} mají vlastní derivace, g′≠0g' \neq 0 a
lim⁡x→af(x)=lim⁡x→ag(x)=0\displaystyle \lim_{x\to a}f(x) = \lim_{x\to a}g(x) = 0 nebo lim⁡x→ag(x)=±∞\displaystyle \lim_{x\to a}g(x) = \pm \infty, potom: limx→af(x)g(x)=limx→af′(x)g′(x), pokud poslední limita existuje.00,±∞±∞\lim_{x\to a}\frac {f(x)}{g(x)} = \lim_{x\to a}\frac{f'(x)}{g'(x)}, \text{ pokud poslední limita existuje.}\qquad \boxed{\frac 00, \frac{\pm \infty}{\pm \infty}} Věta platí i pro P±(a,δ)P^\pm(a, \delta) a pro a=±∞a = \pm \infty.

Definice 0.23 (Taylorův polynom funkce). Nechť ∀n∈ℕ:f,f′,…,f(n−1):U(b,δ)→ℝ\forall n\in {\mathbb{N}}: f, f^\prime, \dots, f^{(n-1)}: U(b, \delta) \to {\mathbb{R}} a ∃f(n)(b)∈ℝ\exists f^{(n)}(b)\in {\mathbb{R}}. Potom Taylorův polynom funkce ff řádu nn se středem v bodě bb je Tnf,b(x):=∑k=0nf(k)(b)k!(x−b)k.T_n^{f,b}(x):= \sum_{k=0}^{n}\frac{f^{(k)}(b)}{k!}(x-b)^k.

Věta 0.12 (Taylorova řada funkce). Má-li funkce ff v bodě a∈ℝa \in {\mathbb{R}} derivace všech řádů, rozumíme pro x∈ℝx \in {\mathbb{R}} její Taylorovou řadou se středem v bb řadu Tf,b(x):=∑n=0∞f(n)(b)n!(x−b)n.T^{f,b}(x):= \sum_{n=0}^{\infty}\frac{f^{(n)}(b)}{n!}(x-b)^n.

Funkce Taylorův polynom Konvergence
Exponenciální ex=∑k=0∞xkk!e^x = \displaystyle\sum_{k=0}^\infty \frac{x^k}{k!} ∀x∈ℝ\forall x \in \mathbb{R}
Sinus sin⁡x=∑k=0∞(−1)kx2k+1(2k+1)!\sin x = \displaystyle\sum_{k=0}^\infty (-1)^k \frac{x^{2k+1}}{(2k+1)!} ∀x∈ℝ\forall x \in \mathbb{R}
Kosinus cos⁡x=∑k=0∞(−1)kx2k(2k)!\cos x = \displaystyle\sum_{k=0}^\infty (-1)^k \frac{x^{2k}}{(2k)!} ∀x∈ℝ\forall x \in \mathbb{R}
Přirozený logaritmus ln⁡(1+x)=∑k=1∞(−1)k+1xkk\ln(1+x) = \displaystyle\sum_{k=1}^\infty (-1)^{k+1} \frac{x^k}{k} x∈(−1,1]x \in (-1,1]

Vyšetření průběhu funkce.

Určíme definiční obor, speciální tvar (sudost/lichost/periodicita), limity krajních bodů, 1. derivace, extrémy a monotonie, 2. derivace, inflexní body a kon[vex/kav]ita, asymptoty, náčrt.

Věta 0.13 (Lagrangeova). Pokud ff je spojitá funkce, pak ∃c∈(a,b):f′(c)=f(b)−f(a)b−a=:z\displaystyle \exists c\in (a,b) : f'(c) = \frac{f(b) - f(a)}{b-a} =: z.

Definice 0.24 (Extrémy a monotonie). Nechť ff má první derivaci, potom pokud

Definice 0.25 (Konvexita/ Konkavita). Nechť ff má druhou derivaci, potom pokud f″(x)>0f''(x)>0, pak je konvexní a pokud f″(x)<0f''(x) < 0, pak je konkávní.

Definice 0.26 (Inflexní bod). Inflexní bod je bod, ve kterém f″=0f''=0 a f′=0f'=0 nebo f′f' neexistuje. (Dochází ke změně směru funkce).

Integrály a jejich aplikace.

Definice 0.27 (Primitivní funkce). Nechť I⊆ℝI\subseteq {\mathbb{R}} je netriviální interval a F,f:I→ℝF, f: I\to {\mathbb{R}}. Potom FF je primitivní funkce k ff, neboli F=∫f\displaystyle F = \int f, pokud F′=fF'=f na celém II.

Definice 0.28 (Metody výpočtu: Substituce). Funkce f,gf,g spojité na intervalu II. ∫f(g(x))g′(x)dx=∣y=g(x)dy=g′(x)dx∣=∫f(y)dy=F(y)+C=y=g(x)F(g(x))+C∫abf(g(x))g′(x)dx=∣y=g(x)dy=g′(x)dxx=a⤳y=g(a)x=b⤳y=g(b)∣=∫g(a)g(b)f(y)dy\begin{aligned} \int f(g(x))~g^\prime(x) \,\mathrm{d}x &= \begin{vmatrix} y=g(x)\\ \mathrm{d}y = g^\prime (x) \,\mathrm{d}x \end{vmatrix} = \int f(y)\, \mathrm{d}y = F(y) + C \stackrel{y=g(x)}= F(g(x)) + C\\ \int_a^b f(g(x))~g^\prime(x) \,\mathrm{d}x &= \begin{vmatrix} y=g(x)\\ \mathrm{d}y = g^\prime (x) \,\mathrm{d}x\\ x = a \leadsto y=g(a)\\ x = b \leadsto y=g(b) \end{vmatrix} = \int_{g(a)}^{g(b)} f(y)\, \mathrm{d}y \end{aligned}

Definice 0.29 (Metody výpočtu: Per partes). Funkce f,gf,g spojité na intervalu II. ∫f′g=fg−∫fg′\displaystyle \int f' g = fg - \int f g'

Elementární funkce Neurčitý integrál ∫f(x)dx\int f(x)\, \mathrm dx (bez konst. CC)
Mocninná funkce ∫xn=xn+1n+1\int x^n = \dfrac{x^{n+1}}{n+1} (n≠−1)(n \neq -1)
Exponenciální funkce ∫ex=ex\int e^x = e^x,
∫ax=axln⁡a\int a^x = \dfrac{a^x}{\ln a} (a>0,a≠1)(a > 0, a \neq 1)
Logaritmická funkce ∫1x=ln⁡|x|\int \frac 1x = \ln |x|
Goniometrické funkce ∫sin⁡x=−cos⁡x\int \sin x = -\cos x
∫cos⁡x=sin⁡x\int \cos x = \sin x
∫tan⁡x=−ln⁡|cos⁡x|\int \tan x = -\ln|\cos x|
∫cot⁡x=ln⁡|sin⁡x|\int \cot x = \ln|\sin x|
Goniometrické funkce složitější ∫1cos⁡2x=tan⁡x\int \frac{1}{\cos^2 x} = \tan x
∫1sin⁡2x=−cot⁡x\int \frac{1}{\sin^2 x} = -\cot x
∫11−x2=arcsin⁡x\int \frac{1}{\sqrt{1-x^2}} = \arcsin x
∫11+x2=arctan⁡x\int \frac{1}{1+x^2} = \arctan x
∫cos⁡(ax)dx=1asin⁡(ax)\int \cos(ax)\ dx = \frac 1a \sin(ax)

Newtonův a Riemannův integrál: definice a souvislost.

Definice 0.30 (Newtonův integrál funkce). Newtonův integrál funkce ff na intervalu (a,b)(a,b), a<ba<b: (N)∫abf(x)dx:=[F]ab=F(b−)−F(a+)=limx→b−F(x)−limx→a+F(x)(N) \int_a^b f(x) \,dx := [F]_a^b = F(b^-) - F(a^+) = \lim_{x\to b^-}F(x) - \lim_{x\to a^+} F(x)

Definice 0.31 (Dělení). Rozdělení intervalu [a,b][a,b] je posloupnost P=(t0,…,tn)P=(t_0, \ldots, t_n), kde: a=t0<t1<⋅⋅⋅<tn−1<tn=b.a = t_0 < t_1 < \cdot \cdot \cdot < t_{n-1} < t_n = b.

Definice 0.32 (Horní/dolní Riemannův součet). Pro omezenou funkci f:J=[a,b]→ℝf:J=[a,b] \to {\mathbb{R}} a rozklad PP definujeme dolní a horní součty: s(f,P)=∑j=1nmj(tj−tj−1), resp.S(f,P)=∑j=1nMj(tj−tj−1),s(f,P) = \sum^n_{j=1} m_j(t_j-t_{j-1}), \qquad\text{ resp.}\qquad S(f,P) = \sum^n_{j=1} M_j(t_j-t_{j-1}), kde mj=inf⁡{f(x):tj−1≤x≤tj}, a Mj=sup⁡{f(x):tj−1≤x≤tj}.m_j = \inf\{f(x) : t_{j-1} \leq x \leq t_j\}, ~~\text{ a } ~~ M_j = \sup\{f(x) : t_{j-1} \leq x \leq t_j\}.

Definice 0.33 (Horní/dolní Riemannův integrál). Horní a dolní Riemannův integrál ff přes [a,b][a,b] je: ∫_abf(x)dx=sup⁡{s(f,P):P dělení}a∫¯abf(x)dx=inf⁡{S(f,P):P dělení}\underline{\int}^b_{ a} f(x)\, \mathrm dx = \sup\{s(f,P) : P \text{ dělení}\} \qquad \text{a}\qquad \overline{\int}^b_{ a} f(x) \, \mathrm dx = \inf\{S(f,P) : P \text{ dělení}\}

Definice 0.34 (Riemannův integrál funkce). Riemannův integrál funkce ff přes [a,b][a,b] je (R)∫abf(x)dx, pokud ∫_abf(x)dx=∫¯abf(x)dx.(R) \displaystyle \int^b_a f(x) \, \mathrm dx ~~\text{, pokud }~ ~ \underline{\int}^b_{ a} f(x)\, \mathrm dx = \overline{\int}^b_{ a} f(x)\, \mathrm dx.

Věta 0.14 (Základní věta analýzy 1). 1 Pro Riemannovsky integrovatelnou ff a primitivní FF je F(x)=∫axf(t)dtF(x) = \int_a^x f(t)\, \mathrm dt a platí, že

  1. FF je spojitá na [a,b][a, b] a

  2. v každém bodě spojitosti x∈[a,b]x \in [a, b] funkce ff existuje F′(x)=f(x)F'(x) = f(x).

Věta 0.15 (Základní věta analýzy 2). Pokud ff je Newtonovsky i Riemannovsky integrovatelná, pak (R)∫abf=(N)∫abf(R) \int_{a}^{b} f=(N) \int_{a}^{b} f

Aplikace integrálů.

Věta 0.16 (Odhady součtu řad). Pro neklesajicí (resp. nerostoucí) ff na intervalu [1,n][1, n] platí ∑k=1n−1f(k)≤∫1nf≤∑k=2nf(k)\sum_{k=1}^{n-1} f(k) \leq \int_{1}^{n} f \leq \sum_{k=2}^{n} f(k) Pro neklesajicí (resp. nerostoucí) funkci ff na intervalu [1,∞)[1, \infty) platí ∑k=1∞f(k) konverguje⇔∫1∞f(x)dx konverguje.\sum_{k=1}^\infty f(k) \text{ konverguje} \quad \iff \quad \int_1^\infty f(x) \, \mathrm{d}x \text{ konverguje}.

Věta 0.17 (Obsahy rovinných útvarů). Plocha mezi dvěma funkcemi f(x)f(x) a g(x)g(x): S=∫ab|f(x)−g(x)|dxS = \int_a^b |f(x) - g(x)| \, \mathrm{d}x

Věta 0.18 (Délka křivky). Pro graf funkce y=f(x)y = f(x): L=∫ab1+[f′(x)]2dx\quad\displaystyle L = \int_a^b \sqrt{1 + [f'(x)]^2} \, \mathrm{d}x

Věta 0.19 (Objem rotačního tělesa). Zvlášť pro objem a povrch rotačního tělesa:

Algebra a Lineární algebra

Algebraické struktury.

Definice 0.35 (Grupa). Grupa je dvojice 𝒢=(G,∘)\mathcal{G}=(G, \circ), kde GG je nosná množina, na které je definována binární operace ∘:G×G→G\circ:G\times G\to G, splňující:

  1. ∀a,b,c∈G:a∘(b∘c)=(a∘b)∘c\forall a,b,c \in G: a\circ(b\circ c) = (a\circ b) \circ c, …asociativita

  2. ∃e∈G∀a∈G:a∘e=e∘a=a\exists e\in G ~\forall a \in G: a\circ e = e \circ a = a, …existence neutrálního prvku

  3. ∀a∈G∃b∈G:a∘b=b∘a=e\forall a \in G ~\exists b \in G: a \circ b = b \circ a = e. …existence inverzního prvku

Pokud platí navíc ještě komutativita, jedná se o Abelovskou grupu.

Definice 0.36 (Podgrupa). Nechť 𝒢=(G,∘)\mathcal{G}=(G, \circ) a ℋ=(H,▫)\mathcal{H}=(H, \square) jsou grupy, potom ℋ\mathcal{H} je podgrupa grupy 𝒢\mathcal{G}, značeno ℋ⊆𝒢\mathcal{H}\subseteq \mathcal{G}, pokud: ∀a,b∈H:a▫b=a∘b\forall a,b \in H: a ~\square~ b = a\circ b a pokud jsou zachovány inverzní a neutrální prvky.

Definice 0.37 (Permutace). Permutace na množině [n][n] je bijekce p:[n]→[n]p: [n] \to [n].

Definice 0.38 (Inverze v permutaci). Inverze v permutaci je dvojice prvků (i,j)(i,j) taková, že: i<ji < j a p(i)>p(j)p(i)>p(j).

Definice 0.39 (Znaménko permutace). Znaménko permutace pp je číslo sgn⁡(p)=(−1)#inverzí v p~\operatorname{sgn}(p) = (-1)^{\# \text{inverzí v } p}. Ekvivalentně také jako sgn⁡(c)=(−1)m−1\operatorname{sgn}(c) = (-1)^{m-1}, kde mm je délka cyklu cc.

Definice 0.40 (Těleso). Nechť KK je množina a (⊕,*)(\oplus, *) jsou binární operace na 𝕂\mathbb{K}. Trojici 𝕂=(K,⊕,*)\mathbb K =(K, \oplus, *) potom nazýváme tělesem, splňuje-li:

  1. (K,⊕)(K, \oplus) tvoří Abelovskou grupu s neutrálním prvkem 00,

  2. (K\{0},*)(K \setminus \{0\}, *) tvoří Abelovskou grupu s neutrálním prvkem 11,

  3. platí distributivita, tedy (∀a,b,c∈K):a*(b⊕c)=a*b⊕a*c(\forall a,b,c \in K): a * (b \oplus c) = a * b \oplus a * c.

Definice 0.41 (Charakteristika tělesa). Pokud ∃n∈ℕ\exists n \in {\mathbb{N}} t.ž v tělese 𝕂\mathbb{K} platí 1+1+...+1⏟n-krát=0\underbrace{1+1+...+ 1}_{n\text{-krát}} = 0, potom nejmenší takové nn je char(𝕂)\mathrm{char}(\mathbb{K}) tělesa 𝕂\mathbb{K}. Jinak má těleso charakteristiku 00.

Definice 0.42 (Konečná tělesa). Konečné těleso (GF) značíme 𝔽q\mathbb{F}_q, kde q=pnq=p^{n}, pp je prvočíslo a n≥1n \geq 1.

Soustavy lineárních rovnic.

Definice 0.43 (Maticový zápis). Pro soustavu Ax=bAx = b, kde A∈ℝm×nA \in \mathbb{R}^{m \times n} je matice soustavy, x=(x1,...,xn)Tx = (x_1, ..., x_n)^T je vektor neznámých a bb je vektor pravých stran, je rozšířená matice soustavy: Am×n=(a1,1⋯a1,nb1⋮⋱⋮⋮am,1⋯am,nbm)A^{m\times n} = \left(\begin{array}{ccc|c} a_{1,1} & \dotsb & a_{1,n} & b_1\\ \vdots & \ddots & \vdots & \vdots\\ a_{m,1} & \dotsb & a_{m,n} & b_m\\ \end{array}\right)

Definice 0.44 (Elementární řádkové úpravy). Vznikne z matice AA matice A′A^\prime (A∼∼A′A \sim \sim A'):

  1. vynásobením i-tého řádku t∈ℝ\{0}t \in \mathbb{R} \setminus \{0\},

  2. přičtením jj-tého řádku k ii-tému, když i≠ji \neq j,

  3. přičtení t-násobku j-tého řádku k i-tému, když j≠ij \neq i,

  4. prohození dvou řádků.

Definice 0.45 (Odstupňovaný tvar matice (REF)). Matice AA je v REF, pokud (a) nenulové řádky jsou seřazeny podle počáteřních nul a (b) nulové řádky jsou pod nenulovými.
Matice je v RREF, pokud je v REF, pivoty jsou jednotkové a nad i pod pivoty jsou pouze nuly.

Definice 0.46 (Pivot). Pivot je první nenulový prvek ai,j(i)a_{i,j(i)} na ii-tém řádku.

Seřaď řádky podle počtu počátečních nul.
Pokud mají dva nenulové řádky stejný počet počátečních nul (ii-tý a i+1i+1-ní), tak od i+1i+1-ního odečteme ai+1,j(i)ai,j(i)\frac{a_{i+1, j(i)}}{a_{i, j(i)}}-násobek ii-tého.
Opakuj, dokud nemají každé dva nenulové řádky různé počty počátečních nul.

Algoritmus je konečný, protože po kroku 2. vždy vzroste celkový počet počátečních 00 alespoň o 11.

Seřaď řádky podle počtu počátečních nul.
Opakuj, dokud není matice REF.

Algoritmus je konečný, protože v každé iteraci se buď zvýší počet počátečních nul, nebo se pivotní prvek přesune blíže k diagonále.

Věta 0.20 (Frobeniova). Soustava Ax=bAx = b má řešení ⇔\iff rank(A)\mathrm{rank}(A) se rovná hodnosti rozšířené matice.

Počet řešení Podmínka
Žádné Existuje řádek (0⋯0|b)(0\ \cdots\ 0\ |\ b), b≠0b \neq 0
Právě jedno # pivotů == # neznámých, žádné konflikty
Nekonečně mnoho # pivotů << # neznámých, žádné konflikty

Matice.

Definice 0.47 (Jednotková matice). Pro (∀n∈ℕ)(\forall n \in \mathbb{N}) je jednotková matice In∈ℝn×nI_n \in \mathbb{R}^{n \times n} definována vztahy: (In)i,j={1pokud i=j0pokud i≠j(1000⋱0001)\begin{equation*} (I_n)_{i,j} = \begin{cases} 1 &\text{pokud } i = j \\ 0 &\text{pokud } i \neq j \end{cases} \qquad \qquad \begin{pmatrix} 1 & 0 & 0\\ 0 & \ddots & 0 \\ 0 & 0 & 1 \end{pmatrix} \end{equation*}

Definice 0.48 (Transponovaná matice). Transponovaná matice k matici A∈ℝm×nA \in \mathbb{R}^{m \times n} je taková matice AT∈ℝn×mA^T \in \mathbb{R}^{n \times m}, pro kterou platí: Ai,jT=Aj,i(1234)⤳(1324)\begin{equation*} A^T_{i,j} = A_{j,i} \qquad \qquad \begin{pmatrix} 1 & 2\\ 3 & 4 \end{pmatrix} \leadsto \begin{pmatrix} 1 & 3\\ 2 & 4 \end{pmatrix} \end{equation*}

Definice 0.49 (Symetrická matice). Symetrická matice je taková čtvercová matice A∈ℝn×nA \in \mathbb{R}^{n \times n}, že: Aj,i=Ai,j, neboli A=AT\begin{equation*} A_{j,i} = A_{i, j} \text{, neboli } A = A^T \end{equation*}

Definice 0.50 (Inverzní matice). Inverzní matice k čtvercové matici A∈ℝn×nA \in \mathbb{R}^{n \times n} je taková matice A−1∈ℝn×nA^{-1} \in \mathbb{R}^{n \times n}, pro kterou platí: A⋅A−1=In\begin{equation*} A \cdot A^{-1} = I_n \end{equation*}

Definice 0.51 (Regulární matice). Regulární matice je čtvercová matice, ke které existuje inverzní matice.
Ekvivalentně, pokud je rank(A)=n\mathrm{rank}(A) = n.
Ekvivalentně, pokud Ax=0Ax=0 má pouze triviální řešení x=0x=0.
Ekvivalentně, pokud det⁡(A)≠0\det(A) \neq 0.
Ekvivalentně, pokud její sloupce nebo řádky jsou lineárně nezávislé.
Ekvivalentně, pokud žádné vlastní číslo není nulové.

Definice 0.52 (Singulární matice). Singulární matice je taková matice, která není regulární.

Definice 0.53 (Rovnost matic). Dvě matice se rovnají, A=BA=B, pokud mají stejné rozměry m×nm \times n a Aij=Bij, pro i=1,…,m,j=1,…,n.A_{i j}=B_{i j}\quad \text{, pro } i=1, \ldots, m, j=1, \ldots, n.

Definice 0.54 (Součet Matic). Bud’ A,B∈ℝm×nA, B \in \mathbb{R}^{m \times n}. Pak A+BA+B je matice typu m×nm \times n s prvky (A+B)ij=Aij+Bij, pro i=1,…,m,j=1,…,n.(A+B)_{i j}=A_{i j}+B_{i j} \quad\text{, pro } i=1, \ldots, m, j=1, \ldots, n .

Definice 0.55 (Maticový součin). Pro součin dvou matic A∈ℝm×nA \in \mathbb{R}^{m \times n} a B∈ℝn×pB \in \mathbb{R}^{n \times p} platí (AB)∈ℝm×p(AB) \in \mathbb{R}^{m \times p}: (AB)i,j=∑k=1nai,k⋅bk,j\begin{equation*} (AB)_{i,j} = \displaystyle \sum_{k = 1}^n a_{i,k} \cdot b_{k,j} \end{equation*}

Definice 0.56 (Hodnost matice). Hodnost matice AA, značená jako rank(A)\mathrm{rank}(A), je počet pivotů v libovolné matici A′A' v REF takové, že A∼∼A′A \sim \sim A'. Tedy počet lineárně nezávislých řádků.

Vektorové prostory.

Definice 0.57 (Vektorový prostor). Vektorový prostor (V,⊕,*)(V, \oplus, *) nad tělesem (𝕂,⊕,*)(\mathbb{K}, \oplus, *) je množina VV spolu s binární operací ⊕\oplus na VV a binární operací skalárního násobku *:𝕂×V→V*: \mathbb{K} \times V \to V, kde:

  1. (V,⊕)(V, \oplus) tvoří Abelovskou grupu,

  2. (∀v∈V):1*v=v(\forall v \in V): 1 * v = v, (kde 1 je neutrální prvek pro násobení v 𝕂\mathbb{K})

  3. (∀a,b∈𝕂)(∀v∈V):(a*b)*v=a*(b*v)(\forall a,b \in \mathbb{K})(\forall v \in V): (a * b) * v = a * (b * v), …asociatavita

  4. (∀a,b∈𝕂)(∀v∈V):(a⊕b)*v=(a*v)⊕(b*v)(\forall a,b \in \mathbb{K})(\forall v \in V): (a \oplus b) * v = (a * v) \oplus (b * v), …distributivita

  5. (∀a∈𝕂)(∀u,v∈V):a*(u⊕v)=(a*u)⊕(a*v)(\forall a \in \mathbb{K})(\forall u,v \in V): a * (u \oplus v) = (a * u) \oplus (a * v), …distributivita

Prvky 𝕂\mathbb{K} se nazývají skaláry a prvky VV vektory.

Definice 0.58 (Podprostor vektorového prostoru). Podprostor UU vektorového prostoru VV je neprázdná podmnožina U⊆VU \subseteq V, splňující uzavřenost na operaci ⊕,*\oplus, * a obsahující nulový vektor.

Definice 0.59 (Lineární kombinace). Lineární kombinace vektorů v1,…,vn∈Vv_1, \ldots, v_n \in V nad 𝕂\mathbb{K} je libovolný vektor u=a1⋅v1+⋯+an⋅vn=∑i=1naiviu = a_1 \cdot v_1 + \cdots + a_n \cdot v_n = \displaystyle\sum_{i=1}^na_iv_i, kde a1,...,an∈𝕂a_1, ..., a_n \in \mathbb{K}.

Definice 0.60 (Lineární obal). Lineární obal span(X)\mathrm{span}(X) množiny X⊆VX \subseteq V, kde VV je vektorový prostor nad 𝕂\mathbb{K}, je průnik všech podprostorů UU z VV obsahující XX. Tedy množina všech jejích lineárních kombinací. span(X)=⋂{U:X⊆U,Uje podprostor V}={∑i=1naivi∣ai∈𝕂,vi∈X}.\mathrm{span}(X) = \bigcap \{U: X \subseteq U, U \text{je podprostor } V\} = \left\{\sum_{i=1}^na_iv_i \mid a_i \in \mathbb K, v_i \in X\right\}.

Definice 0.61 (Lineární nezávislost). Množina vektorů XX ve vektorovém prostoru VV je lineárně nezávislá, pokud nelze nulový vektor získat netriviální lineární kombinací vektorů z XX.
Tedy, vektory v1,…,vnv_1, \ldots , v_n jsou LN ⇔∑i=1naivi=0\iff \sum_{i=1}^n a_iv_i = 0 má pouze triviální řešení a1=…=an=0a_1 = \ldots = a_n = 0.

Definice 0.62 (Báze). Báze vektorového prostoru VV je LN množina XX, která generuje VV, span(X)=V\mathrm{span}(X) = V.

Definice 0.63 (Dimenze). Dimenze vektorového prostoru VV, dim(V)\mathrm{dim}(V), je mohutnost jeho (konečné) báze.

Definice 0.64 (Jádro). Jádro matice A∈𝕂m×nA \in \mathbb{K}^{m \times n} je podprostor 𝕂n\mathbb{K}^n tvořen řešeními soustavy Ax=0Ax = 0. ker(A)={(x∈𝕂n):Ax=0}\begin{equation*} \mathrm{ker}(A) = \{(x \in \mathbb{K}^n) : Ax = 0 \} \end{equation*} Platí vztah: dim⁡(ker⁡(A))+rank(A)=n\dim(\ker(A)) + \mathrm{rank}(A) = n.

Definice 0.65 (Řádkový prostor). Řádkový prostor matice je prostor generovaný jejími řádky.
Pro matici A∈𝕂m×nA \in \mathbb{K}^{m \times n}: ℛ(A)=𝒮(AT)=∑j=1mxjAj,*ℛ(A)={(v∈𝕂n):v=ATy,y∈𝕂m},𝑣š𝑒𝑐ℎ𝑛𝑦 𝑙𝑖𝑛𝑒á𝑟𝑛í 𝑘𝑜𝑚𝑏𝑖𝑛𝑎𝑐𝑒 řá𝑑𝑘ů\begin{flalign*} \mathcal{R}(A) &= \mathcal{S}(A^T) = \sum_{j=1}^m x_jA_{j, *}\\ \mathcal{R}(A) &= \{(v \in \mathbb{K}^n): v = A^Ty, y \in \mathbb{K}^m\}, \textit{všechny lineární kombinace řádků} \end{flalign*} Řádkový prostor je kolmý na jádro, tedy ℛ(A)⊥=ker(A)\mathcal R(A)^\bot = \mathrm{ker}(A). Dále také ℛ(Ak)⊆ℛ(A)\mathcal R(A^k) \subseteq \mathcal{R}(A).

Definice 0.66 (Sloupcový prostor). Sloupcový prostor matice je prostor generovaný jejími sloupci.
Pro matici A∈𝕂m×nA \in \mathbb{K}^{m \times n}: 𝒮(A)=𝔏{A*,1,...,A*,n}=∑j=1nxjA*,j𝒮(A)={(u∈𝕂m):u=Ax,x∈𝕂n},𝑣š𝑒𝑐ℎ𝑛𝑦 𝑙𝑖𝑛𝑒á𝑟𝑛í 𝑘𝑜𝑚𝑏𝑖𝑛𝑎𝑐𝑒 𝑠𝑙𝑜𝑢𝑝𝑐ů\begin{flalign*} \mathcal{S}(A) &= \mathfrak{L}\{A_{*,1}, ..., A_{*,n}\} = \displaystyle \sum_{j=1}^n x_jA_{*,j}\\ \mathcal{S}(A) &= \{(u \in \mathbb{K}^m): u = Ax, x \in \mathbb{K}^n\}, \textit{všechny lineární kombinace sloupců} \end{flalign*} Platí vztah: dim⁡(ℛ(A))=dim⁡(𝒮(A))=rank(A)\dim(\mathcal{R}(A)) = \dim(\mathcal{S}(A)) = \mathrm{rank}(A).

Definice 0.67 (Vektor souřadnic). Nechť B=(v1,…,vn)B = (v_1, \ldots, v_n) je konečná uspořádaná báze vektorového prostoru VV nad tělesem 𝕂\mathbb{K}. Vektor souřadnic u∈Vu \in V vzhledem k bázi BB je [u]B=(a1,…,an)T∈𝕂n[u]_B = (a_1,\ldots, a_n)^T \in \mathbb{K}^n, kde u=∑i=1naiviu = \sum_{i=1}^n a_i v_i. Neboli, obsahuje v BB koeficienty LK bázických vektorů BB, která tvoří uu.

Věta 0.21 (Steinitzova o výměně). Nechť XX je konečná LN množina vektorového prostoru VV nad 𝕂\mathbb{K} a YY je systém generátorů VV, tedy span(Y)=V\mathrm{span}(Y)=V. Potom platí |X|≤|Y||X| \leq |Y| a existuje ZZ, taková že: span(Z)=V,X⊆Z,|Z|=|Y|,Z\X⊆Y.\mathrm{span}(Z) = V, \qquad X \subseteq Z, \qquad |Z| = |Y|, \qquad Z \setminus X \subseteq Y.

Lineární zobrazení.

Definice 0.68 (Lineární zobrazení). Nechť UU a VV jsou vektorové prostory nad stejným tělesem 𝕂\mathbb{K}. Potom zobrazení f:U→Vf: U \to V se nazývá lineární zobrazení, pokud splňuje:

  1. (∀u,v∈U):f(u+v)=f(u)+f(v)(\forall u,v \in U): f(u+v) = f(u) + f(v)

  2. (∀u∈U)(∀a∈𝕂):f(a⋅u)=a⋅f(u)(\forall u \in U)(\forall a \in \mathbb{K}): f(a\cdot u) = a\cdot f(u)

Maticová reprezentace LZ pro matici AA a vektor uu je f(u)=Auf(u) = Au.

Definice 0.69 (Matice lineárního zobrazení). Nechť VV a WW jsou vektorové prostory nad stejným tělesem 𝕂\mathbb{K} s bázemi X=(v1,...,vn),Y=(w1,...,wm)X = (v_1, ..., v_n), Y=(w_1, ..., w_m). Matice lineárního zobrazení f:V→Wf:V\to W vzhledem k bázím XX a YY je [f]X,Y∈𝕂m×n[f]_{X,Y}\in \mathbb{K}^{m\times n}, jejíž sloupce jsou vektory souřadnic obrazů vektorů báze XX vzhledem k bázi YY. Neboli, [f]X,Y=(∣∣[f(v1)]Y...[f(vn)]Y∣∣).⤳[f(u)]Y=[f]XY[u]X[f]_{X,Y} = \begin{pmatrix} \mid & & \mid \\ [f(v_1)]_Y & ... & [f(v_n)]_Y\\ \mid & & \mid \end{pmatrix}. \leadsto [f(u)]_Y = [f]_{XY}[u]_X

Definice 0.70 (Matice složeného zobrazení). Pokud máme zobrazení f:U→Vf: U \to V a g:V→Wg: V \to W, pak matice složeného zobrazení g∘fg \circ f je součinem jejich matic: [g∘f]X,Z=[g]Y,Z⋅[f]X,Y[g \circ f]_{X,Z} = [g]_{Y,Z} \cdot [f]_{X,Y}.

Definice 0.71 (Jádro lineárního zobrazení). Jádro lineárního zobrazení f:U→Vf:U\to V je ker⁡(f)={(w∈U):f(w)=0}.\operatorname{ker}(f) = \{(w \in U) : f(w) = 0\}.

Definice 0.72 (Isomorfismus). Isomorfismus prostorů VV a WW je bijektivní lineární zobrazení f:V→Wf: V \to W.

Věta 0.22. Dva prostory nad stejným tělesem jsou isomorfní ⇔\iff mají stejnou dimenzi.

Skalární součin.

Definice 0.73 (Skalární součin). Skalární součin na vektorovém prostoru VV nad ℂ{\mathbb{C}} je zobrazení, které přiřadí každé dvojici vektorů u,v∈Vu,v \in V skalár ⟨u∣v⟩∈ℂ\langle u \mid v \rangle \in {\mathbb{C}} tak, že jsou splněny následující axiomy:

Definice 0.74 (Norma indukovaná skalárním součinem). Nechť VV je prosor se skalárním součinem nad ℂ{\mathbb{C}} nebo ℝ{\mathbb{R}}, pak norma odvozená ze skalárního součinu je zobrazení V→ℝ0+V\to {\mathbb{R}}_0^+ přiřazující vektoru uu jeho normu ||u||=⟨u∣u⟩||u|| = \sqrt{\langle u \mid u \rangle}.

Věta 0.23 (Pythagorova). Pokud VV je VP nad ℂ{\mathbb{C}} a x,y∈Vx,y\in V jsou kolmé, tak ||x+y||2=||x||2+||y||2\left|\left| x+y \right|\right|^2 = \left|\left| x \right|\right|^2 + \left|\left| y \right|\right|^2.

Věta 0.24 (Cauchy-Schwartzova nerovnost). Pro skalární součin libovolných2 dvou vektorů uu a vv ve vektorovém prostoru nad ℂ{\mathbb{C}} platí: |⟨u∣v⟩|≤⟨u∣u⟩⋅⟨v∣v⟩=||u||⋅||v||\left | \langle u \mid v \rangle \right | \leq \sqrt{\langle u \mid u \rangle \cdot \langle v \mid v \rangle} = ||u|| \cdot ||v||

Věta 0.25 (Trojúhelníková nerovnost). Každá norma odvozená ze skalárního součinu splňuje: ||u+v||≤||u||+||v||.||u+v|| \leq ||u|| + ||v||.

Definice 0.75 (Ortogonální (kolmé) vektory). Vektory u,vu, v z prostoru se skalárním součinem jsou ortogonální, u⊥vu \bot v, pokud ⟨u∣v⟩=0\langle u \mid v \rangle = 0.

Definice 0.76 (Ortogonální a ortonormální báze). Báze Z={v1,...,vn}Z = \{v_1, ..., v_n\} prostoru VV se skalárním sou­či­nem je ortogonální, pokud vi⊥vjv_i \bot v_j pro každé i≠ji \neq j. Pokud navíc ||vi||=1||v_i|| = 1, pak je ZZ ortonormální.

Definice 0.77 (Fourierovy koeficienty). Nechť Z={v1,...,vn}Z = \{v_1, ..., v_n\} je ortonormální báze prostoru VV. Pro každé u∈Vu \in V platí: u=⟨u|v1⟩v1+...+⟨u|vn⟩vn=∑i=1n⟨u|vi⟩viu = \langle u | v_1 \rangle v_1 + ... + \langle u | v_n \rangle v_n = \displaystyle\sum_{i=1}^n\langle u | v_i \rangle v_i. Koeficienty ⟨u|vi⟩\langle u | v_i \rangle se nazývají Fourierovy.

Definice 0.78 (Ortogonální doplněk). Ortogonální doplněk podmnožiny VV prostoru se skalárním sou­či­nem WW je V⊥={u∈W:(∀v∈V)(u⊥v)}V^\bot = \{u \in W: (\forall v \in V) (u\bot v)\}.

Věta 0.26. Pro konečně generovaný prostor WW se skalárním součinem a podprostor VV platí: (V⊥)⊥=V a dim⁡V+dim⁡V⊥=dim⁡W.(V^\bot)^\bot = V ~~\text{ a }~~ \dim V + \dim V^\bot = \dim W.

Definice 0.79 (Ortogonální projekce). Nechť WW je prostor se skalárním součinem a VV je jeho podprostor s ortonormální bází Z=(v1,…,vn)Z = (v_1, \ldots, v_n). Potom ortogonální projekce WW na VV je zobrazení pZ:W→Vp_Z: W \to V definované jako pZ(u)=∑i=1n⟨u|vi⟩vip_Z(u) = \displaystyle \sum_{i=1}^{n} \langle u | v_i \rangle v_i.

Definice 0.80 (Vzdálenost bodu od podprostoru). Vzdálenost vektoru vv od podprostoru VV rovna normě rozdílu ∥v−pZ(v)∥\|v - p_Z(v)\|.

Poznámka 0.1. Ortogonální projekce je lineární zobrazení.

Definice 0.81 (Ortogonální matice). Matice Q∈ℝn×nQ\in{\mathbb{R}}^{n\times n} je or­to­go­nál­ní, pokud QTQ=InQ^TQ=I_n. Pro or­to­go­ná­lní matici QQ tedy platí QT=Q−1Q^T = Q^{-1}.

Věta 0.27 (Vlastnosti ortogonálních matic). Matice QQ je ortogonální, právě když sloupce tvoří ortonormální bázi ℝn{\mathbb{R}}^n. Součin ortogonálních matic je ortogonální matice. Dále platí vztahy: ⟨Qx∣Qy⟩=⟨x∣y⟩,||Qx||=||x||.\langle Qx\mid Qy\rangle = \langle x \mid y\rangle, \qquad ||Qx||= ||x||.

Determinanty.

Definice 0.82 (Determinant). Determinant matice A∈𝕂A\in \mathbb K je dán výrazem: det⁡(A)=∑p∈Snsgn⁡(p)∏i=1nai,p(i),(Sn je grupa permutací na množině {1,…,n}).\det(A) = \sum_{p\in S_n} \operatorname{sgn} (p) \prod_{i=1}^{n} a_{i, p(i)}, \quad (S_n \text{ je grupa permutací na množině } \{1, \ldots, n\}). Můžeme prohazovat řádky i sloupce, ale změní se tím znaménko determinantu.

Věta 0.28. Pro horní trojúhelníkové matice je determinant roven součinu na diagonále.

Věta 0.29 (Linearita determinantu). Determinant matice je lineárně závislý na každém jejím řádku i sloupci. Tedy vzhledem ke sčítání řádků a násobení řádku skalárem. Platí det⁡(A)=det⁡(AT)\det(A) = \det(A^T).

Věta 0.30 (Multiplikativnost determinantu). Pro libovolné A,B∈𝕂:det⁡(AB)=det⁡(A)⋅det⁡(B)A, B \in \mathbb K: \det(AB) = \det(A)\cdot \det(B).

Důsledek 0.1. Platí det⁡(A−1)=1det⁡(A)\det(A^{-1}) = \frac{1}{\det(A)}.

Definice 0.83 (Adjungovaná matice). Pro matici A∈𝕂A\in \mathbb K je adjungovaná matice definována vztahem adj(A)j,i=(−1)i+jdet⁡(Ai,j).\mathrm{adj}(A)_{j,i}= (-1)^{i+j} \det(A^{i, j}).

Věta 0.31 (Laplaceův rozvoj). Nechť Ai,jA^{i,j} je podmatice získaná z AA odstaněním ii-tého řádku a jj-tého sloupce, potom pro libovolné A∈𝕂A\in \mathbb K a jakékoli i∈{1,…n}i\in \{1, \ldots n\} platí, že: det⁡(A)=∑j=1nai,j(−1)i+jdet⁡(Ai,j)=∑j=1nai,jadj(A)j,i.\det(A)=\sum_{j=1}^{n}a_{i,j}(-1)^{i+j}\det(A^{i,j}) = \sum_{j=1}^{n}a_{i,j}~\mathrm{adj}(A)_{j,i}. ∣125𝟐𝟑𝟎353∣=𝟐⋅(−1)2+1∣2553∣+𝟑⋅(−1)2+2∣1533∣+𝟎⋅(−1)2+3∣1235∣=2.\begin{vmatrix} 1 & 2 & 5\\ \textbf{2} & \textbf{3} & \textbf{0}\\ 3 & 5 & 3 \end{vmatrix} = \textbf{2}\cdot (-1)^{2+1} \begin{vmatrix} 2 & 5\\ 5 & 3 \end{vmatrix} + \textbf{3}\cdot (-1)^{2+2} \begin{vmatrix} 1 & 5\\ 3 & 3 \end{vmatrix} + \textbf{0}\cdot (-1)^{2+3} \begin{vmatrix} 1 & 2\\ 3 & 5 \end{vmatrix} = 2.

Poznámka 0.2 (Geometrická reprezentace determinantu). Absolutní hodnota determinantu rozhoduje, zda se daná plocha geometrického útvaru proměňuje.

Vlastní čísla a vlastní vektory.

Definice 0.84 (Vlastní číslo). Nechť VV je vektorový prostor nad 𝕂\mathbb{K} a ff je lineární zobrazení f:V→Vf:V\to V, potom vlastní číslo zobrazení ff je jakékoli λ∈𝕂\lambda \in \mathbb{K}, pro které existuje vektor x∈V\{0}x \in V\setminus \{0\}, t.ž.: f(x)=λxf(x)=\lambda x.

Definice 0.85 (Vlastní vektor). Nechť λ\lambda je vlastní číslo, potom jemu odpovídající vlastní vektor je libovolný vektor x∈Vx\in V, t.ž.: f(x)=λxf(x)=\lambda x. Také, pokud 𝐨≠x∈ker(A−λIn)\textbf{o}\neq x\in \mathrm{ker}(A - \lambda I_n).

Definice 0.86 (Vlastní číslo a Vlastní vektor matice). Jestliže VV má konečnou dimenzi nn, pak ff může být reprezentováno maticí A=[f]XX∈𝕂A=[f]_{XX}\in \mathbb K vzhledem k nějaké bázi XX prostoru VV. Vlastní číslo matice je potom λ∈𝕂\lambda \in \mathbb{K} a vlastní vektor matice x∈𝕂nx\in \mathbb{K}^n, oba splňující Ax=λxAx=\lambda x .

Věta 0.32. Vlastní vektory odpovídající stejnému vlastnímu číslu tvoří podprostor.

Věta 0.33. Nechť f:V→Vf: V\to V je lineární zobrazení a λ1,…,λk\lambda_1, \dots, \lambda_k jsou různá vlastní čísla ff a u1,…,uku_1, \dots, u_k odpovídající netriviální vlastní vektory. Potom u1,…,uku_1, \dots, u_k jsou lineárně nezávislé.

Poznámka 0.3. Platí, že rank\mathrm{rank} matice je ≤\leq než počet nenulových vlastních čísel.

Poznámka 0.4. V každé matici řádu nn je nejvýše nn vlastních čísel.

Věta 0.34 (Vlastnosti vlastních čísel). Nechť A∈ℂn×nA \in \mathbb{C}^{n \times n} má vlastní čísla λ1,…,λn\lambda_1, \ldots, \lambda_n a jim odpovídající vlastní vektory x1,…,xnx_1, \ldots, x_n. Pak:

  1. AA je regulární ⇔0\iff 0 není její vlastní číslo,

  2. det⁡(A)=λ1⋅…⋅λn=∏λi\det(A) = \lambda_1 \cdot \ldots \cdot \lambda_n = \prod \lambda_i,

  3. Tr(A)=λ1+…+λn=∑λi\mathrm{Tr}(A) = \lambda_1 + \ldots + \lambda_n = \sum \lambda_i,

  4. je-li AA regulární, pak A−1A^{-1} má vlastní čísla λ1−1,…,λn−1\lambda_1^{-1}, \ldots, \lambda_n^{-1} a vlastní vektory x1,…,xnx_1, \ldots, x_n,

  5. A2A^2 má vlastní čísla λ12,…,λn2\lambda_1^2, \ldots, \lambda_n^2 a vlastní vektory x1,…,xnx_1, \ldots, x_n,

  6. αA\alpha A má vlastní čísla αλ1,…,αλn\alpha\lambda_1, \ldots, \alpha\lambda_n a vlastní vektory x1,…,xnx_1, \ldots, x_n,

  7. A+αInA + \alpha I_n má vlastní čísla λ1+α,…,λn+α\lambda_1 + \alpha, \ldots, \lambda_n + \alpha a vlastní vektory x1,…,xnx_1, \ldots, x_n,

  8. ATA^T má vlastní čísla λ1,…,λn\lambda_1, \ldots, \lambda_n, ale vlastní vektory obecně jiné.

Definice 0.87 (Charakteristický polynom). Charakteristický polynom A∈𝕂A\in \mathbb K je pA(t)=det⁡(A−tIn)p_A(t)=\det (A-tI_n).

Věta 0.35. Číslo λ∈𝕂\lambda \in \mathbb K je vlastním číslem matice A∈𝕂⇔λA\in \mathbb K \iff \lambda je kořenem charakteristického polynomu pA(λ)p_A(\lambda). Tedy když det⁡(A−λIn)=0\det(A - \lambda I_n) = 0.

Definice 0.88 (Algebraická násobnost). Algebraická násobnost vlastního čísla λ\lambda je násobnost λ*\lambda^* jako kořene charakteristického polynomu pA(λ)p_A(\lambda).

Definice 0.89 (Geometrická násobnost). Geometrická násobnost vlastního čísla λ\lambda je dimenze (pod)pro­sto­ru jeho vlastních vektorů. Tedy je rovna n−rank(A−λ*In)n - \mathrm{rank}(A - \lambda^* I_n).

Definice 0.90 (Podobné matice). Matice A,B∈𝕂A,B\in \mathbb K jsou si podobné, pokud existuje regulární matice RR taková, že A=RBR−1⤳AR=RBA=RBR^{-1} \leadsto AR = RB. (Vlastní čísla matice A=A = vlastní čísla matice BB.)

Věta 0.36. Matice AA je podobná diagonální ⇔\iff prostor 𝕂n\mathbb K^n má bázi z vlastních vektorů AA.

Definice 0.91 (Diagonalizovatelná matice). Matice podobná diagonální matici je diagonalizovatelná.
Matice An×nA^{n\times n} s navzájem různými vlastními čísly je vždy diagonalizovatelná.

Věta 0.37. Matice je diagonalizovatelná ⇔\iff algebraická násobnost se rovná geometrické násobnosti pro každé její vlastní číslo.

Věta 0.38. Pro jakoukoli symetrickou matici A∈𝕂A\in \mathbb K s char(𝕂)≠2\text{char}(\mathbb K) \neq 2 existuje regulární matice RR taková, že RTARR^TAR je diagonální.

Definice 0.92 (Spektrální rozklad). Diagonalizovatelná matice AA lze vyjádřit ve tvaru A=SΛS−1A = S\Lambda S^{-1}, kde SS je regulární a Λ\Lambda je diagonální.

Věta 0.39 (Spektrální rozklad symetrických matic). Pro každou symetrickou matici A∈ℝn×nA \in \mathbb{R}^{n \times n} existuje ortogonální Q∈ℝn×nQ \in \mathbb{R}^{n \times n} a diagonální Λ∈ℝn×n\Lambda \in \mathbb{R}^{n \times n} takové, že A=QΛQ⊤A = Q\Lambda Q^\top.

Positivně semidefinitní a positivně definitní matice

Definice 0.93 (Positivně definitní matice). Pokud symetrická A∈ℝn×nA\in{\mathbb{R}}^{n\times n} splňuje ∀x∈ℝn\{0}:xTAx>0,\forall x \in {\mathbb{R}}^n \setminus \{0\} : x^T Ax>0, pak je matice pozitivně definitní. Je semidefinitní, pokud platí ≥\geq.

Věta 0.40 (Vlastnosti positivně definitních matic). Nechť A,B∈ℝn×nA, B \in \mathbb{R}^{n \times n} jsou positivně definitní matice. Pak platí:

  1. A+BA + B je positivně definitní matice,

  2. Pro libovolné α>0\alpha > 0 je αA\alpha A positivně definitní matice,

  3. Je-li AA positivně definitní, pak je regulární a A−1A^{-1} je též positivně definitní.

Věta 0.41 (Charakterizace PD). Pro symetrickou matici AA jsou následující podmínky ekvivalentní:

  1. AA je pozitivně definitivní

  2. AA má všechna vlastní čásla kladná (resp. nezáporná pro semi)

  3. Existuje regulární matice UU, t.ž.: A=UTUA=U^TU.

Věta 0.42 (Choleskeho rozklad3). Pro každou pozitivně definitní matici AA existuje unikátní horní troj­úhel­ní­ko­vá matice UU s kladnou diagonálou, t.ž.: A=UTUA = U^TU. Matice UU se nazývá Choleského rozklad.

Věta 0.43 (Sylvestrovo kritérium). Symetrická A∈ℝn×nA\in {\mathbb{R}}^{n\times n} je positivně definitní ⇔\iff determinanty hlavních vedoucích podmatic A1,…,AnA_1, \ldots, A_n jsou kladné.

Diskrétní matematika

Relace.

Definice 0.94 (Relace mezi množinami). Relace R⊆X×YR \subseteq X \times Y je podmnožina kartézského součinu dvou množin XX a YY. Relace RR na množině XX je R⊆X×XR \subseteq X \times X.

Definice 0.95 (Vlastnosti binárních relací). Pro relaci RR na XX definujeme:

Ekvivalence a rozkladové třídy.

Definice 0.96 (Ekvivalence). Relace RR na XX je ekvivalentní ⇔\iff je reflexivní, symetrická a tranzitivní.

Definice 0.97 (Ekvivalenční třída). Ekvivalenční třídu definujeme jako R[x]={y∈X∣xRy}R[x] = \{y \in X \mid xRy\}.

Poznámka 0.5 (Bellova čísla). Počet ekvivalencí na nn prvcích udává Bellovo číslo Bn+1=∑k=0n(nk)Bk,b0=1,B1=1.B_{n+1}=\sum_{k=0}^n \binom{n}{k}B_k, \ b_0=1,\ B_1=1.

Částečná uspořádání.

Definice 0.98 (Uspořádání). Relace RR na XX je uspořádání ⇔\iff je reflexivní, antisymetrická a tranzitivní. Dále je uspořádání

Definice 0.99 (Maximální a největší prvek). Nechť (X,≼)(X, \preceq) je ČUM. Potom a∈Xa\in X je

Definice 0.100 (Řetězec a antiřetězec). Nechť (X,≼)(X, \preceq) je ČUM a A⊆XA \subseteq X, potom pro:

Definice 0.101 (Výška uspořádání). Výška uspořádání je maximální velikost řetězce v uspořádání.

Definice 0.102 (Šířka uspořádání). Šířka uspořádání je maximální velikost antiřetězce v uspořádání.

Věta 0.44 (O dlouhém a širokém). Nechť (X,≼)(X, \preceq) je konečná ČUM, potom α(X,≼)⋅ω(X,≼)≥|X|\alpha (X, \preceq) \cdot \omega (X, \preceq) \geq |X|

Funkce.

Definice 0.103 (Funkce). Funkce f:X→Yf:X \to Y je relace f⊆X×Yf \subseteq X\times Y taková, že (∀x∈X)(∃!y∈Y):xfy(\forall x \in X)(\exists !y \in Y): xfy.

Definice 0.104 (Prosté/injektivní zobrazení). Funkce f:X→Yf: X\to Y je prostá ⇔\iff pro všechna YY existuje nejvýše jedno x,∀x∈Xx, ~\forall x \in X. (∀x,y:f(x)=f(y)⟹x=y\forall x,y: f(x)=f(y) \implies x=y).

Definice 0.105 (Na/surjektivní zobrazení). Funkce f:X→Yf: X\to Y je na ⇔\iff pro všechna YY existuje alespoň jedno x,∀x∈Xx, ~\forall x \in X. (∀y∃x:f(x)=y\forall y\ \exists x: f(x)=y).

Definice 0.106 (Bijekce). Funkce f:X→Yf: X\to Y je bijektivní ⇔\iff je prostá i na.

Věta 0.45 (Počet funkcí). Nechť AA a BB jsou dvě množiny, potom počet funkcí mezi AA a BB je |B||A||B|^{|A|}.

Věta 0.46 (Počet prostých funkcí). Potom počet prostých funkcí mezi AA a BB je |B||A|_|B|^{\underline{|A|}}.

Věta 0.47. Počet všech nn-prvkových podmnožin je roven 2n2^n, tedy |2X|=2|X|\left | 2^X \right | = 2^{|X|}.

Permutace.

Definice 0.107 (Permutace). Permutace je bijekce π:[n]→[n]\pi:[n]\to [n].

Definice 0.108 (Pevný bod). Pro permutaci π\pi a prvek xx je pevný bod π(x)=x\pi (x) = x. Zobrazí se sám na sebe.

Věta 0.48. Pokud AA, |A|=n|A|=n, je konečná množina, pak permutace AA je bijekce z AA do AA, tedy n!n!.

Kombinační čísla.

Definice 0.109 (Množina všech kk-prvkových podmnožin). Nechť NN je množina. Potom (Nk)\binom Nk je množina všech kk-prvkových podmnožin množiny NN: (Nk)={A⊆N:|A|=k}.\binom{N}{k} = \{A\subseteq N: |A| = k\}.

Definice 0.110 (Kombinační číslo). Pro čísla n,k>0n,k > 0 platí: (nk)=nk_k!=n⋅(n−1)⋅...⋅(n−k+1)1⋅2⋅...⋅k=n!k!⋅(n−k)!\binom nk = \frac{n^{\underline{k}}}{k!} = \frac{n\cdot (n-1) \cdot ... \cdot (n-k+1)}{1\cdot 2 \cdot ... \cdot k} = \frac{n!}{k! \cdot (n-k)!}

Věta 0.49. Počet uspořádaných kk-tic bez opakování a kk-prvkových podmnožin je roven (nk)\binom nk.

Věta 0.50 (Vlastnosti kombinačních čísel). (n0)=1=(nn)(n1)=n=(nn−1)(nk)=(nn−k)=(n−1k)+(n−1k−1)∑k=0n(nk)=2n\begin{flalign*} \binom n0 &= 1 = \binom nn\\ \binom n1 &= n = \binom n{n-1}\\ \binom nk &= \binom n{n-k} = \binom {n-1}k + \binom {n-1}{k-1}\\ \sum_{k=0}^{n} \binom{n}{k} &= 2^n \end{flalign*}

Věta 0.51 (Binomická). (∀x,y∈ℝ)(∀n∈ℕ):(x+y)n=∑k=0n(nk)xn−kyk(\forall x,y \in \mathbb{R}) (\forall n \in \mathbb{N}): \displaystyle (x+y)^n = \sum_{k=0}^{n} \binom nk x^{n-k}y^k

Princip inkluze a exkluze (PIE).

Princip inkluze a exkluze.

Věta 0.52 (Princip inkluze a exkluze). Pro konečné množiny A1,…,AnA_1, \ldots, A_n platí: |⋃i=1nAi|=∑k=1n(−1)k+1∑I∈([n]k)|⋂i∈IAi|\left | \bigcup_{i=1}^{n} A_i \right | = \sum_{k=1}^{n} (-1)^{k+1} \sum_{I\in \binom{[n]}{k}} \left | \bigcap_{i\in I} A_i \right |

Proof. Nechť A:=⋃iAiA := \displaystyle \bigcup_i A_i
Levá i pravá strana jsou součty velikostí nějakých množin, takže se můžeme ptát, kolikrát levé a pravé straně přispěje každý prvek a∈Aa\in A. Víme, že k levé přispěje jednou, chceme dokázat, že k pravé také jednou. Předpokládejme, že je a∈Aa\in A v kk množinách z nn, pak 1. suma je ∑|Ai|\sum |A_i|, počítáme (k1)\binom k1-krát, 2. suma ∑|Ai∩Aj|\sum |A_i \cap A_j| počátáme (k2)\binom k2-krát, atd. Celkem P=(k1)−(k2)+(k3)±…±(−1)k−1(kk).P = \binom k1 - \binom k2 + \binom k3 \pm \ldots \pm (-1)^{k-1}\binom kk. Dále z binomické věty víme, že (1−1)k=(k0)−(k1)+(k2)±…±(−1)k(kk)=1−P(1-1)^k = \binom k0 - \binom k1 + \binom k2 \pm \ldots \pm (-1)^k \binom kk = 1 - P. A jelikož (1−1)k=0(1-1)^k=0, tak 1−P=01-P=0, tedy P=1P = 1. Pravá strana tak také přispěje právě jednou. ◻

Aplikace

(Problém šatnářky).   Do divadla přišlo nn pánů s nn klobouky, každý pán si odložil klobouk v šatně a po představení si jej zase vyzvedl. Šatnářka však pánům vybrala klobouky náhodně. Jaká je pravděpodobnost, že žádný pán nedostal svůj klobouk?
Pravděpodobnost, že žádný pán nedostane svůj klobouk je #permutací bez pevného bodu#permutací\frac{\#\text{permutací bez pevného bodu}}{\#\text{permutací}}. Víme, že # počet permutací =n!= n!. Nejprve spočítáme #počet permutací s pevným bodem. Pro každý prvek i∈[n]i \in [n] definujeme Ai={π|π(i)=i}A_i = \{\pi | \pi(i) = i\} (permutace s pevným bodem ii). Pak platí, že |Ai|=(n−1)!|A_i| = (n-1)!, a když se podíváme na velikost průniku množin A1,A2,…,AkA_1, A_2,\ldots, A_k, tak je to (n−k)!(n -k)!. Z PIE: |⋃i=1nAi|=∑k=1n(−1)k+1∑I∈(Nk)(n−k)!=∑k=1n(−1)k+1(nk)(n−k)!=∑k=1n(−1)k+1n!k!.\left| \bigcup_{i=1}^{n} A_i \right| = \sum_{k=1}^n (-1)^{k+1} \sum_{I \in \binom{N}{k}} (n-k)! = \sum_{k=1}^n (-1)^{k+1} \binom{n}{k} (n-k)! = \sum_{k=1}^n (-1)^{k+1} \frac{n!}{k!}. Dosadíme do počtu permutací bez pevného bodu: |πs|=n!−∑k=1n(−1)k+1n!k!≈n!e.|\pi_s| = n! - \displaystyle\sum_{k=1}^n (-1)^{k+1} \frac{n!}{k!} \approx \frac{n!}e. Pravděpodobnost, že žádný pán nedostal svůj klobouk je tedy n!⋅e−1n!=1e\dfrac{n!\cdot e^{-1}}{n!} = \dfrac1e.

Věta 0.53 (Počet surjekcí). Počet surjekcí je 1k!∑i=0k(−1)i(ki)(k−i)n\displaystyle\frac{1}{k!}\sum_{i=0}^{k}(-1)^i\binom{k}{i}(k-i)^n.

Proof. Máme množiny AA, |A|=n|A|=n a BB, |B|=k|B|=k. Počet surjekcí f:A→Bf: A \to B určíme za pomoci PIE. Víme, že počet všech funkcí mezi množinami je |BA|=kn|B^A| = k^n. Když z množiny BAB^A odebereme jeden prvek, dostaneme (k−1)n(k-1)^n, když odebereme dva, dostaneme (k−2)n(k-2)^n atd. Obecně nám to pro ii odebraných prvků dává (k−i)n(k-i)^n.

Dále chceme počítat jen čistě surjektivní zobrazení, nikoliv bijektivní, které nastane v případě n=kn=k. Konkrétně: Nechť g:A→Bg: A \to B a nechť Φ\Phi je počet tohoto zobrazení. Množinu AA rozdělíme do kk částí A1,...,AkA_1, ..., A_k, kde pro každou tuto část aa existuje přiřazení do množiny BB. Nastává tedy bijekce z AA do BB, kde počet bijektivních zobrazení odpovídá k!k! . Celkem bychom dostali "Φ=k!×\Phi = k! \timespočet f:A→Bf:A\to B", kde ff je zbylá (námi hledaná) funkce na. 1k!⋅(kn−(k1)(k−1)n+(k2)(k−2)n−...±(kk)(k−k)n⏟0)=1k!∑i=0k(−1)i(ki)(k−i)n\begin{flalign*} \frac{1}{k!} \cdot \left (k^n - \binom{k}{1}(k-1)^n + \binom{k}{2}(k-2)^n -... \pm \underbrace{\binom{k}{k}(k-k)^n}_{0} \right )= \frac{1}{k!}\sum_{i=0}^{k}(-1)^i\binom{k}{i}(k-i)^n \end{flalign*} ◻

Definice 0.111 (Eulerova funkce). Zobrazení φ:ℕ→ℕ\varphi: {\mathbb{N}}\to {\mathbb{N}} značí pro n∈ℕn\in {\mathbb{N}} počet čísel k∈{1,…,n−1}k \in \{1, \ldots, n-1\} nesoudělných s číslem nn. Tedy jinak φ(n)=|{k∈{1,…,n−1}∣gcd⁡(k,n)=1}|\varphi(n) = |\{k \in \{1, \dots, n-1\} \mid \gcd(k, n) = 1\}|.

Výpočet eulerovy funkce za pomoci principu inkluze a exkluze

Nechť n=p1k1p2k2⋯pmkmn = p_1^{k_1} p_2^{k_2} \cdots p_m^{k_m} je rozklad nn na prvočinitele. Aplikujeme PIE: Počet čísel ≤n\leq n nesoudělných s nn získáme odečtením počtů násobků všech prvočísel pip_i a přičtením zpět násobků jejich dvojic atd.: φ(n)=n−∑i=1mnpi+∑1≤i<j≤mnpipj−⋯+(−1)mnp1p2⋯pm.\varphi(n) = n - \sum_{i=1}^m \frac{n}{p_i} + \sum_{1 \leq i < j \leq m} \frac{n}{p_i p_j} - \cdots + (-1)^m \frac{n}{p_1 p_2 \cdots p_m}. Nakonec vytkneme nn a tím získáme: φ(n)=n(1−1p1)(1−1p2)⋯(1−1pm).\varphi(n) = n \left(1 - \frac{1}{p_1}\right)\left(1 - \frac{1}{p_2}\right) \cdots \left(1 - \frac{1}{p_m}\right).

Hallova věta.

Definice 0.112 (Párování). Párování v grafu G=(V,E)G=(V, E) je množina M⊆EM \subseteq E, t.ž. každý vrchol je incidentní nejvýše jednou hranou z MM.

Definice 0.113 (Vrcholové prokrytí). Vrcholové prokrytí v grafu G=(V,E)G=(V, E) je množina vrcholů C⊆VC \subseteq V, t.ž. každá hrana obsahuje alespoň jeden vrchol z CC.

Definice 0.114 (Systém různých reprezentantů). SRR v hypergrafu H=(V,E)H=(V,E) je funkce r:E→Vr: E \to V, t.ž.:

  1. ∀e∈E:r(e)∈e\forall e \in E: r(e) \in e, kde r(e)r(e) je reprezentant hyperhrany ee,

  2. ∀e,f∈E:e≠f⟹r(e)≠r(f)\forall e,f \in E: e\neq f \implies r(e) \neq r(f), tedy funkce rr je prostá (zástupe se neopakuje).

(Máme několik množin a z každé chceme vybrat zástupce, aby se neopakoval)

Věta 0.54 (König-Egerváty). V každém bipartitním grafu má největší párování stejnou velikost, jako nejmenší vrcholové pokrytí.

Věta 0.55 (Hallova bipartitní). Nechť G=(A∪B,E)G = (A\cup B, E) je bipartitní graf. Potom GG má párování velikosti |A|⇔∀X⊆A:|N(X)|≥|X|.|A|\iff \forall X \subseteq A : |N(X)| \geq |X|.

Proof. Musím dokázat obě implikace.

 ◻

Důsledek 0.2. Pokud platí |A|=|B||A|=|B|, pak má GG perfektní párování.

Věta 0.56 (Hallova - hypergrafová verze). Hypergraf H=(V,E)H=(V,E) má SRR ⇔∀F⊆E:|⋃e∈Fe|≥|F|\displaystyle\iff \forall F\subseteq E: \left|\bigcup_{e\in F}e\right| \geq |F|.

Proof. Nechť H=(V,E)H=(V,E) je hypergraf a IHI_H jeho graf incidence. HH má SRR ⇔IH\iff I_H má párování velikosti |E||E|.
Hallova podmínka pro HH ⇔∀F⊆E:|⋃e∈Fe|⇔\displaystyle\iff \forall F\subseteq E: \left|\bigcup_{e\in F}e\right| \iff bipartitní Hallova podmínka pro IHI_H a partitu EE. Ekvivalence platí díky bipartitní Hallově podmínce. ◻

Algoritmus

(Nalezení SRR v polynomiálním čase). Modelujeme bipartitní graf. Levá partita jsou množiny S1,…,SmS_1, \ldots ,S_m. Pravá partita prvky ⋃iSi\bigcup_i S_i. Hrana vede z Si→xS_i\to x, pokud x∈Six\in S_i. Najdeme max párování v bipartitním grafu (třeba Ford-Fulkerson – polytime) a z Hallovy věty: SRR existuje ⇔\iff párování pokrývá všechny množiny SiS_i.

Teorie grafů

Základní pojmy teroie grafů.

Definice 0.115 (Graf). Graf GG je uspořádaná dvojice (V,E)(V, E), kde VV je konečná neprázdná množina vrcholů a E⊆(V2)E \subseteq \binom{V}{2} konečná neprázdná množina hran, neboli všech dvouprvkovych podmnožin VV.

Definice 0.116 (Isomorfismus grafů). Grafy GG a HH jsou isomorfní, pokud existuje bijekce mezi vrcholy: ∃f:VG→VH, t.ž. {u,v}∈EG⇔{f(u),f(v)}∈EH\exists f:V_G\to V_H ~~\text{, t.ž. } ~~ \{u, v\} \in E_G \iff \{f(u), f(v)\}\in E_H

Definice 0.117 (Podgraf). Graf HH je podgrafem grafu GG, pokud VH⊆VGV_H \subseteq V_G a EH⊆EG∩(VH2)E_H \subseteq E_G \cap \binom{V_H}{2}.

Definice 0.118 (Indukovaný podgraf). Podgraf HH je indukovaný, pokud E(H)=E(G)∩(V(H)2)E(H)=E(G) \cap \binom{V(H)}{2}. Tedy bereme všechny původní hrany grafu GG.

Definice 0.119 (Stupeň vrcholu). Stupeň vrcholu vv v grafu G=(V,E)G=(V,E) je deg⁡G(v):=|{u∈V:{u,v}∈E}|.\deg_G(v) := |\{u \in V: \{u, v\} \in E\}|. Neboli počet hran grafu GG, které obsahují hranu s vv.

Definice 0.120 (kk-regulární graf). Graf je kk-regulární, pokud pro k∈ℕk \in \mathbb{N} platí ∀u∈V(G):deg⁡G(u)=k\forall u \in V(G) : \deg_G(u) = k.

Definice 0.121 (Skóre grafu). Skóre grafu GG je posloupnost stupňů všech vrcholů (krom uspořádání).

Definice 0.122 (Doplněk grafu). Doplněk grafu G=(V,E)G=(V,E) je graf G‾=(V,(V2)\E)\bar G = \left(V, \binom{V}{2}\setminus E\right ).

Základní příklady grafů.

Definice 0.123 (Úplný graf). Úplný graf na nn vrcholech značíme KnK_n, kde V=[n]V = [n] a E=(V2)E =\binom{V}{2}.

Definice 0.124 (Bipartitní graf). Graf GG je bipartitní, pokud lze VV rozdělit na dvě disjunktní množiny V1V_1 a V2V_2 takové, že každá hrana z EE obsahuje jeden bod z V1V_1 a druhý z V2V_2.
Tedy pokud V=V1∪V2V = V_1 \cup V_2, t.ž. V1∩V2=∅V_1 \cap V_2 = \emptyset. Hrany jsou mezi V1V_1 a V2V_2, neboli ∀e∈E:|e∩V1|=1\forall e \in E: |e\cap V_1| = 1.

Definice 0.125 (Úplný bipartitní graf). Úplný bipartitní graf na n+mn + m vrcholech značíme Kn,mK_{n,m}, kde V={u1,...,un}∪{v1,...,vm}V = \{u_1, ..., u_n\} \cup \{v_1, ..., v_m\} (=dvě partity) a E={{ui,vj}∣1≤i≤n,1≤j≤m}E = \{\{u_i, v_j\}\mid 1\leq i\leq n,~ 1 \leq j \leq m\}.

Definice 0.126 (Eulerovský graf). Graf je Eulerovský ⇔\Leftrightarrow je souvislý a všechny vrcholy mají sudý stupeň.

Definice 0.127 (Cesta). Cestu na nn vrcholech značíme PnP_n, kde V={0…n}V = \{0\ldots n\} a E={{i−1,i}∣1≤i≤n}E = \{\{i-1, i\}\mid 1\leq i \leq n\}.

Definice 0.128 (Kružnice). Kružnici na nn vrcholech značíme CnC_n, kde V={1,2,3,…,n}V = \{1, 2, 3, \ldots, n\} a E={{i,i+1}∣1≤i≤n−1}∪{{1,n}}.E = \{\{i, i+1\}\mid 1\leq i\leq n-1\} \cup \{\{1, n\}\}.

Definice 0.129 (Sled). Sled z v0v_0 do vnv_n v grafu GG je posloupnost (v0,e1,v1,e2,…,en,vn)(v_0, e_1, v_1, e_2, \ldots, e_n, v_n), pokud ∀i\forall i platí ei={vi−1,vi}e_i = \{v_{i-1}, v_i\}, kde vv jsou vrcholy a ee hrany.
(Mohou se opakovat vrcholy i hrany).

Definice 0.130 (Tah). Tah z v0v_0 do vnv_n v grafu GG je posloupnost (v0,e1,v1,e2,...,en,vn)(v_0, e_1, v_1, e_2, ... , e_n, v_n), pokud ∀i\forall i platí ei={vi−1,vi}e_i = \{v_{i-1} , v_i \}, kde vv jsou vrcholy a ee navzájem různé hrany.
(Mohou se opakovat pouze vrcholy, ne hrany).

Souvislost grafů.

Definice 0.131 (Souvislý graf). Graf je souvislý, pokud (∀u,v∈V)(\forall u, v \in V) existuje cesta z uu do vv.

Definice 0.132 (Relace dosažitelnosti (ekvivalence)). Ekvivalence v grafu GG je binární relace ∼\sim na V(G)V(G), t.ž. u∼vu \sim v, pokud existuje cesta z uu do vv.

Definice 0.133 (Komponenty souvislosti). Komponenty souvislosti jsou podgrafy indukované třídami ekvivalence.

Definice 0.134 (Vzdálenost v grafu). Vzdálenost v souvislém grafu GG je definována jako dG:V2→ℝ:∀u,v:dG(u,v)d_G: V^2 \to {\mathbb{R}}: \forall u,v: d_G(u,v) je minimum z délek mezi uu a vv.
Pro metriku musí platit ∀u,v,w∈V\forall u,v,w \in V:

Stromy.

Definice 0.135 (Strom). Strom je souvislý graf bez kružnic. (acyklicky graf)

Definice 0.136 (Les). Les je acyklicky graf. Jeho komponenty souvislosti jsou stromy.

Definice 0.137 (List). List je vrchol stupně 11.

Věta 0.57. Každý strom s alespoň dvěma vrcholy má alespoň jeden list.

Věta 0.58. Pro graf GG s listem vv platí, že GG je strom ⇔G−v\iff G-v je strom.

Věta 0.59 (Eulerova formule). Pro GG souvislý máme počet hran stromu |E(G)|=|V(G)|−1|E(G)| = |V(G)| - 1.

Věta 0.60 (Ekvivalentní charakteristiky). Pro graf GG jsou následující tvrzení ekvivalentní:

  1. GG je souvislý a acyklický (=strom)

  2. ∀u,v∈V(G)\forall u,v\in V(G) ∃!\exists! cesta v GG mezi uu a vv (=jednoznačná souvislost)

  3. GG je souvislý a ∀e∈E(G):G−e\forall e\in E(G): G-e není souvislý (=minimální souvislost)

  4. GG je acyklický a ∀e∈(V(G)2)\E:G+e\forall e\in \binom{V(G)}{2}\setminus E: G+e má cyklus (=maximálně acyklický)

  5. GG je souvislý a |E(G)|=|V(G)|−1|E(G)| = |V(G)| - 1 (=Eulerova formule)

Věta 0.61. V grafu G=(V,E)G=(V, E) platí: ∑v∈Vdeg⁡G(v)=2|E|\sum_{v\in V} \deg_G (v) = 2|E|

Věta 0.62. Každá kružnice CnC_n má právě nn koster.

Rovinné grafy.

Definice 0.138 (Rovinný graf). Rovinný graf je takový graf, pro nějž existuje nějaké nakreslení v rovině.

Definice 0.139 (Rovinné nakreslení). Rovinné nakreslení GG je přiřazení různých bodů v rovině různým vrcholům GG, spojené s přiřazením oblouků každé hraně z E(G)E(G) – aby bylo nakreslení rovinné, tak žádné dva oblouky nesmí sdílet jeden bod v rovině, jedině ten koncový.

Definice 0.140 (Stěna). Stěna je oblast ohraničená hranami.

Věta 0.63 (Kuratowski). Graf GG je rovinný ⇔\iff neobsahuje podgraf izomorfní s dělením K5K_5 nebo K3,3K_{3,3}.

Věta 0.64 (Eulerova formule). Nechť GG je souvislý graf nakreslený do roviny a |S||S| je počet stěn nakreslení. Potom platí |V|−|E|+|S|=2|V|-|E|+|S| = 2. (pro |C||C| počet komponent: |V|−|E|+|S|=1+|C||V|-|E|+|S| = 1+|C|.)

Proof. Zvolíme vv pevně a pak indukcí podle ee.

  1. e=v−1e = v-1 (GG je strom), f=1f = 1: v+1=v−1+2v+1 = v-1+2.

  2. e−1→ee-1\to e: mějme graf GG s ee hranami. Nechť λ\lambda je hrana na kružnici v GG.
    Potom G′=G−λG' = G-\lambda, v′=vv' = v, e′=e−1e' = e-1, f′=f−1f' = f-1. Nyní použijeme indukční předpoklad: v′+f′=e′+2⇔v+f−1=e−1+2⇔v+f=e+2.v' + f' = e' + 2 \iff v + f -\cancel{1} = e -\cancel{1} + 2 \iff v + f = e + 2.

 ◻

Věta 0.65 (Maximální počet hran rovinného grafu). V každém rovinném grafu s alespoň 33 vrcholy platí: |E|≤3|V|−6.|E| \leq 3|V| - 6.

Proof. Doplním do GG hrany, až získám maximální rovinný graf G′G'. Takže v′=vv' = v, e′≥ee'\geq e. Každá stěna přispěje třemi hranami, kadždá hrana dvěma stěnám, tedy 3f=2e⤳f=23e3f=2e\leadsto f=\frac 23 e. Nyní jen dosadíme: v′−e′+23e=2⇔3v−e′+2e=6⟹e≤3v−6v' - e' + \frac{2}{3}e = 2 \iff 3v - e' + 2e = 6 \implies e \leq 3v - 6 ◻

Důsledek 0.3. Pokud je graf bipartitní, pak |E|≤2|V|−4|E| \leq 2|V|-4.

Věta 0.66. V rovinném grafu existuje vrchol stupně nejvýše 55.

Věta 0.67 (O 4 barvách). Každý rovinný graf lze obarvit nejvýše 4 barvami.

Barevnost grafů (vrcholová).

Definice 0.141 (Vrcholové kk-obarvení grafu). Obarvení grafu G=(V,E)G=(V,E) kk barvami je funkce c:V→[k]c:V \to [k], že pokud {x,y}∈E\{x,y\}\in E, pak c(x)≠c(y)c(x) \neq c(y).

Definice 0.142 (Vrcholová barevnost grafu). Barevnost χ\chi je nejmenší kk takové, že existuje kk-obarvení GG.

Věta 0.68. χ(G)≤2⇔G\chi (G) \leq 2 \iff G je bipartitní ⇔G\iff G nemá lichou kružnici.

Definice 0.143 (Klikovost). Klikovost ω(G)\omega (G) je rovna velikosti největší kliky (úplného podgrafu KkK_k) v GG.

Věta 0.69 (Barevnost a klikovost). χ(G)≥ω(G)\chi (G) \geq \omega (G).

Věta 0.70. Pro maximální stupeň v grafu Δ\Delta platí χ(G)≤Δ(G)+1\chi(G) \leq \Delta(G)+1.

Hranová a vrcholová souvislost grafů.

Definice 0.144 (Hranový řez). F⊆EF\subseteq E je hranový řez v GG pokud G\FG \setminus F je nesouvislý.

Definice 0.145 (Hranová k−k-souvislost). Graf GG je hranově k−k-souvislý, pokud neobsahuje žádný hranový řez velikosti menší než kk.

Definice 0.146 (Vrcholový řez). U⊆VU \subseteq V je vrcholový řez v GG pokud podgraf indukovaný V\UV \setminus U je nesouvislý.

Definice 0.147 (Vrcholová kk-souvislost). Graf GG je vrcholově kk-souvislý, pokud má alespoň k+1k+1 vrcholů a neobsahuje žádný vrcholový řez velikosti <k<k.

Věta 0.71 (Menger – hranová xyxy verze). Pro dva různé vrcholy x,yx,y grafu GG platí, že GG obsahuje k∈ℕk \in {\mathbb{N}} hranově disjunktních cest z xx do y⇔Gy \iff G neobsahuje hranový xy−xy-řez velikosti menší než kk.

Věta 0.72 (Menger – vrcholová xyxy verze). Pro dva různé nesousední vrcholy x,yx,y grafu GG platí, že GG obsahuje k∈ℕk \in {\mathbb{N}} navzájem vrcholově disjunktních cest z xx do y⇔Gy \iff G neobsahuje vrcholový xyxy-řez velikosti <k<k.

Věta 0.73 (Menger – hranová verze). Graf GG je hranově kk-souvislý ⇔\iff mezi každými dvěma různými vrcholy existuje kk hranově disjunktních cest.

Věta 0.74 (Menger – vrcholová verze). Graf GG je vrcholově kk-souvislý ⇔\iff mezi každými dvěma různými vrcholy existuje kk navzájem vnitřně vrcholově disjunktních cest.

Orientované grafy.

Definice 0.148 (Otevřený eulerovský tah). Otevřený eulerovský tah z v0v_0 do vnv_n je takový tah, který obsahuje všechny vrcholy a hrany grafu právě jednou.

Definice 0.149 (Uzavřený eulerovský tah). Uzavřený eulerovský tah je takový eulerovský tah, kde v0=vnv_0 = v_n.

Definice 0.150 (Orientovaný graf). Orientovaný graf je uspořádaná dvojice (V,E)(V, E), kde E⊆V2\{(x,x)∣x∈V}.E \subseteq V^2 \setminus \{(x, x) \mid x \in V\}.

Definice 0.151 (Podkladový graf). Podkladový graf grafu G=(V,E)G = (V, E) je graf H=(V,F)H=(V, F), kde F={{u,v}∈(V2)|(u,v)∈E∨(v,u)∈E}.F = \left \{\{u,v\} \in \binom V2 \Big| ~(u,v)\in E \lor (v,u) \in E \right \}. Neboli množina všech neuspořádaných dvojic vrcholů, kde v jednom nebo druhém pořadí je hrana.

Definice 0.152 (Silná souvislost). Pokud pro ∀u,v∈V\forall u,v \in V existuje orientovaná cesta z uu do vv.

Definice 0.153 (Slabá souvislost). Pokud podkladový graf je souvislý.

Věta 0.75. Pro orientovaný graf GG je ekvivalentní:

  1. je vyvážený (deg⁡in=deg⁡out\deg_{in}=\deg_{out}, sudý stupeň) a slabě souvislý,

  2. má uzavřený eulerovský tah,

  3. je vyvážený a silně souvislý.

Toky v sítích.

Definice 0.154 (Toková síť). Je pětice (V,E,z,s,c)(V,E,z,s,c):

Definice 0.155 (Tok). V síti (V,E,z,s,c)(V, E, z, s, c) je tok funkce f:E→[0,+∞)f: E\to [0, +\infty) splňující:

  1. ∀e∈E:0≤f(e)≤c(e)\forall e \in E: 0 \leq f(e) \leq c(e),

  2. ∀u∈V\{z,s}:∑v:uv∈Ef(uv)=∑v:vu∈Ef(vu)\forall u \in V\setminus\{z,s\}: \displaystyle \sum_{v:uv\in E}f(uv) = \sum_{v:vu\in E}f(vu),respektive fIn=fOutf_{In} = f_{Out}.

Definice 0.156 (Velikost toku). Velikost toku ff v síti (V,E,z,s,c)(V, E, z,s,c) je w(f):=f[Out(z)]−f[In(z)]w(f):= f[Out(z)] - f[In(z)].

Definice 0.157 (Maximální tok). Maximální tok je takový tok, který má největší velikost.

Definice 0.158 (Řez). v síti (V,E,z,s,c)(V, E, z,s,c) je množiana hran R⊆ER \subseteq E, t.ž.: každá orientovaná cesta ze zz do ss má neprázdný průnik s RR.

Definice 0.159 (Nenasycená cesta). Nechť ff je tok v síti (V,E,z,s,c)(V, E, z, s, c). Nenasycená cesta pro ff je neoreintovaná cesta x1e1x2e2…xk−1ek−1xkekxk+1x_1e_1 x_2e_2\ldots x_{k-1}e_{k-1} x_ke_k x_{k+1}, kde ∀i=1,…,k:\forall i = 1, \ldots, k:

Zároveň platí f(ei)<c(ei)f(e_i) < c(e_i) pro každou dopřednou hranu a f(ei)>0f(e_i) > 0 pro každou zpětnou hranu.

Definice 0.160 (Zlepšující cesta). Zlepšující cesta pro ff je nenasycená cesta ze zz do ss.

f←f \gets nulový tok
tok ff.

Věta 0.76. Nechť ff je tok v síti (V,E,z,s,c)(V, E, z, s, c), potom následující tvrzení jsou ekvivalentní:

  1. ff je maximální

  2. ff nemá zlepšující cestu

  3. Existuje řez RR, t.ž.: w(f)=c(R)w(f) = c(R).

Věta 0.77 (Minimax). Velikost maximálního toku je rovna kapacitě minimáního řezu.

Pravděpodobnost a statistika

Pravděpodobnost, jevy, prostor.

Definice 0.161 (Pravděpodobnost). Nechť Ω\Omega je množina elementárních jevů a ℱ⊆2Ω\mathcal{F} \subseteq 2^\Omega je podmnožina elementárních jevů. Potom pravděpodobnost PP je funkce P:ℱ→[0,1]={P(A)=1jev jistýP(A)=0jev nemožnýP:\mathcal{F} \to [0,1] = \begin{cases} P(A)=1 & \text{jev jistý}\\ P(A)=0 & \text{jev nemožný} \end{cases}

Definice 0.162 (Diskrétní pravděpodobnostní prostor). Diskrétní pravděpodobnostní prostor je trojice (Ω,ℱ,P)(\Omega, \mathcal{F}, P), kde Ω\Omega je konečná nebo spočetná, ℱ=2Ω;P(Ω)=1;\mathcal{F} = 2^{\Omega}; ~~P(\Omega) = 1;   a P(A)=∑w∈AP({w})~~ \displaystyle P(A) = \sum_{w\in A} P(\{w\}).

Definice 0.163 (Konečný pravděpodobnostní prostor). Konečný pravděpodobnostní prostor je diskrétní, kde Ω\Omega je konečná.

Definice 0.164 (Klasický pravděpodobnostní prostor). Klasický pravděpodobnostní prostor je konečný, kde P(A)=|A||Ω|P(A) = \frac{|A|}{|\Omega |}.

Definice 0.165 (Elementární jev). Všechny výsledky nějakého pravděpodobnostního experimentu. Značíme jako Ω\Omega.

Definice 0.166 (Složený jev). Složený jev je takový jev, který není elementární. Složený jev nastane ⇔\iff nastane některý z elementárních jevů v něm obsažený.

Definice 0.167 (Pravděpodobnost jevu). Pravděpodobnost jevu udává, jakou máme šanci, že daný jev nastane.

Věta 0.78 (Základní pravidla pro počítání). V pravděpodobnostním prostoru (Ω,ℱ,P)(\Omega, \mathcal{F}, P) platí pro A,B∈ℱA,B \in\mathcal F:

Definice 0.168 (Nezávislost náhodných jevů). Jevy AA a BB jsou nezávislé ⇔P(A∩B)=P(A)⋅P(B)\iff P(A\cap B) = P(A) \cdot P(B).

Definice 0.169 (Podmíněná pravděpodobnost). Podmíněná pravděpodobnost je pravděpodobnost, že nastal jev AA za podmínek, že nastal jev BB. P(A|B)=P(A∩B)P(B)P(A|B) = \frac{P(A \cap B)}{P(B)}

Věta 0.79 (Bayesova věta). Nechť AA je jev, kde P(A)≠0P(A) \neq 0 a B1,...,BkB_1, ..., B_k je rozklad Ω\Omega na jevy t.ž. ∀i:P(Bi)≠0\forall i: P(B_i) \neq 0. Potom: P(Bi|A)=P(A|Bi)⋅P(Bi)∑jP(A|Bj)⋅P(Bj)P(B_i|A) = \frac{P(A|B_i) \cdot P(B_i)}{\displaystyle \sum_{j} P(A|B_j) \cdot P(B_j)}

Věta 0.80 (O úplné pravděpodobnosti). Nechť B1,...,BkB_1, ..., B_k je rozklad Ω\Omega na jevy t.ž. ∀i:P(Bi)>0\forall i: P(B_i)>0, pak P(A)=∑i=1nP(A∣Bi)⋅P(Bi).P(A) = \sum_{i=1}^n P(A\mid B_i) \cdot P(B_i).

Náhodné veličiny a jejich rozdělení

Definice 0.170 (Náhodná veličina). Náhodná veličina je zobrazení X:Ω→ℝX : \Omega \to {\mathbb{R}}, které ∀x∈ℝ\forall x \in {\mathbb{R}} splňuje: {ω∈Ω:X(ω)≤x}∈ℱ.\{\omega \in \Omega : X(\omega) \leq x\} \in \mathcal F.

Definice 0.171 (Diskrétní náhodná veličina). Funkci X:Ω→ℝX : \Omega \to {\mathbb{R}} nazveme diskrétní náhodná veličina, pokud je obor hodnot XX spočetná množina a pokud ∀x∈ℝ\forall x \in {\mathbb{R}} platí: {ω∈Ω:X(ω)=x}∈ℱ~~\{\omega \in \Omega : X(\omega) = x\} \in \mathcal F.

Definice 0.172 (Spojitá náhodná veličina). Náhodná veličina XX se nazývá spojitá, pokud existuje ne­zá­por­ná reálná funkce fXf_X tak, že FX(x)=P(X≤x)=∫−∞xfX(t)dt.F_X(x) = P(X \leq x) = \int_{-\infty}^x f_X(t)~dt.

Definice 0.173 (Hustota pravděpodobnosti). Pro spojitou náhodnou veličinu XX je hustota pravděpodobnosti nezáporná funkce fX(x)f_X(x), pro kterou platí, že celková plocha pod její křivkou je rovna 1:∫−∞∞fX(x)dx=1.\int_{-\infty}^{\infty} f_X(x)dx = 1.

Definice 0.174 (Indikátorová náhodná veličina). Pro libovolný jev A∈ℱA \in \mathcal{F} definujeme indikátorovou n.v. IAI_A: IA(ω)=1I_A(\omega) = 1 pokud ω∈A,IA(ω)=0\omega \in A,\quad I_A(\omega) = 0 jinak.

Definice 0.175 (Bernoulliho rozdělení). Pro X∼IA∼Bern(p)X \sim I_A \sim Bern(p) je

(XX může být například počet orlů při jednom hodu nespravedlivou mincí.)

Definice 0.176 (Geometrické rozdělení). Pro X∼Geom(p)X \sim Geom(p) je

Pro dané p∈[0,1]p\in [0,1] máme pX(k)=(1−p)k−1p,p_X(k) = (1-p)^{k-1}p, pro k∈ℕk\in {\mathbb{N}}.

(XX může být například kolikátým hodem mincí padl první orel.)

Definice 0.177 (Binomické rozdělení). Pro X∼Bin(n,p)X \sim Bin(n,p) je

Pro dané p∈[0,1]p \in [0,1] máme pX(k)=(nk)pk(1−p)n−k\displaystyle p_X(k) = \binom{n}{k}p^k(1-p)^{n-k}, pro k∈{0,…n}k\in \{0,\dots n\}.

(XX může být například počet orlů při nn hodech nespravedlivou mincí.)

Definice 0.178 (Hypergeometrické rozdělení). Pro X∼Hyper(N,K,n)X \sim Hyper(N,K,n) je

Pro dané p∈[0,1],n,N,Kp\in[0,1], n,N,K máme pX(k)=P(X=k)=(Kk)(N−Kn−k)(Nn).\displaystyle p_X(k) = P(X = k) = \frac{\binom{K}{k}\binom{N-K}{n-k}}{\binom{N}{n}}.

(XX může být například počet vytažených červených míčku při nn tazích, v osudí je KK červených z NN celkových míčků.)

Definice 0.179 (Poissonovo rozdělení). Pro X∼Pois(λ)X \sim Pois(\lambda) je

Pro dané p∈[0,1]p\in [0,1] a reálné λ>0\lambda > 0 máme pX(k)=λkk!e−λp_X(k) = \frac{\lambda^k}{k!}e^{-\lambda}. Platí, že Pois(λ)Pois(\lambda) je limitou Bin(n,λ/n)Bin(n,\lambda/n).

(XX může být například počet emailů, které dostaneme za jednu hodinu.)

Definice 0.180 (Normální rozdělení). Pro X∼N(0,1)X \sim N(0,1) je

Platí, že fX=φf_X = \varphi, kde φ(x)=12πe−x22\varphi(x) = \frac{1}{\sqrt{2\pi}}e^{\frac{-x^2}{2}}.

Definice 0.181 (Exponenciální rozdělení). Pro X∼Exp(λ)X \sim Exp(\lambda) je

FX(x)={0pro x≤01−e−λxpro x≥0fX(x)={0pro x≤0λ−e−λxpro x≥0F_X(x) = \begin{cases} 0 & \text{pro } ~x \leq 0\\ 1-e^{-\lambda x} & \text{pro } ~x \geq 0 \end{cases}\qquad\qquad f_X(x) = \begin{cases} 0 & \text{pro } ~x \leq 0\\ \lambda-e^{-\lambda x} & \text{pro } ~ x \geq 0 \end{cases}

(XX může být například čas před příchodem dalšího telefonního hovoru do call-centra/ dotazu na web-server/čas do dalšího blesku v bouřce apod.)

Definice 0.182 (Distribuční funkce). Distribuční funkce n.v. XX je funkce FX(x):=P(X≤x)=P({ω∈Ω:X(ω)≤x}).F_X(x) := P(X\leq x) = P(\{\omega \in \Omega : X(\omega) \leq x\}).

  1. FXF_X je neklesajíci a zprava spojitá funkce

  2. lim⁡x→−∞FX(x)=0\displaystyle\lim_{x \to -\infty} F_X(x) = 0

  3. lim⁡x→+∞FX(x)=1\displaystyle\lim_{x \to +\infty} F_X(x) = 1

Střední hodnota.

Definice 0.183 (Střední hodnota). Střední hodnota náhodné veličiny XX je 𝔼(X)=∑w∈ΩP({w})⋅X(w)\mathbb{E}(X) = \displaystyle \sum_{w\in \Omega} P(\{w\})\cdot X(w).

Věta 0.81 (Linearita střední hodnoty). Nechť X,YX,Y jsou nezávislé náhodné veličiny a α∈ℝ\alpha \in {\mathbb{R}}, potom 𝔼[X+Y]=𝔼[X]+𝔼[Y] a 𝔼[αX]=α𝔼[X].{\mathbb{E}}[X+Y] = {\mathbb{E}}[X] + {\mathbb{E}}[Y] \quad \text{ a } \quad {\mathbb{E}}[\alpha X] = \alpha {\mathbb{E}}[X].

Věta 0.82. Nechť X,YX,Y jsou nezávislé diskrétní náhodné veličiny, potom 𝔼[X⋅Y]=𝔼[X]⋅𝔼[Y]{\mathbb{E}}[X\cdot Y] = {\mathbb{E}}[X]\cdot {\mathbb{E}}[Y].

Definice 0.184 (Markovova nerovnost). Nechť XX je nezáporná náhodná veličina a ∀t≥1\forall t \geq 1, potom platí: P[X≥t⋅𝔼(X)]≤1t.P[X \geq t \cdot {\mathbb{E}}(X)] \leq \frac1t.

Rozptyl.

Definice 0.185 (Rozptyl). Rozptyl n.v. XX, značeno var⁡(X)\operatorname{var}(X), nazveme číslo 𝔼((X−𝔼[X])2)\mathbb{E}((X-\mathbb{E}[X])^2).

Definice 0.186 (Kovariance). Kovariance měří míru lineární závislosti dvou náhodných veličin XX a YY. Značí se cov(X,Y)cov(X,Y) a platí:cov(X,Y)=𝔼[(X−𝔼[X])(Y−𝔼[Y])]=𝔼[X⋅Y]−𝔼[X]⋅𝔼[Y].cov(X,Y) = \mathbb{E}[(X - \mathbb{E}[X])(Y - \mathbb{E}[Y])] = \mathbb{E}[X \cdot Y] - \mathbb{E}[X]\cdot\mathbb{E}[Y]. Pokud jsou veličiny XX a YY nezávislé, jejich kovariance je rovna 0 (neplatí to ale nutně naopak).

Věta 0.83. var⁡(X)=𝔼[X2]−𝔼[X]2\operatorname{var}(X) = \mathbb{E}[X^2] - \mathbb{E}[X]^2

Věta 0.84 (Rozptyl součtu nezávislých veličin). Pro X1,…,XnX_1,\dots,X_n nezávislé diskrétní nebo spojité n.v. platí var⁡(X1+…+Xn)=var⁡(X1)+…+var⁡(Xn).\operatorname{var}(X_1 + \dots + X_n) = \operatorname{var}(X_1) + \dots + \operatorname{var}(X_n).

Věta 0.85 (Rozptyl součtu závislých veličin). Pro libovolné dvě náhodné veličiny XX a YY (závislé i nezávislé) platí obecný vzorec pro rozptyl součtu:var(X+Y)=var(X)+var(Y)+2cov(X,Y).var(X+Y) = var(X) + var(Y) + 2cov(X,Y).

Definice 0.187 (Spojitý rozptyl). Rozptyl spojité n.v. XX je var⁡(X):=𝔼[(X−μ)2]=∫−∞∞(x−μ)2fX(x)dx\displaystyle \operatorname{var}(X) := \mathbb{E}[(X-\mu)^2] = \int^\infty_{-\infty} (x-\mu)^2 f_X(x)dx.

Limitní věty

Věta 0.86 (Zákon velkých čísel). Nechť X1,…,XnX_1,\dots ,X_n jsou stejné rozdělené n.n.v. se střední hodnotou μ\mu a rozptylem σ2\sigma^2. Označme Sn=(X1+…+Xn)/nS_n = (X_1 + \dots + X_n)/n. Pak pro každé ε>0\varepsilon > 0 platí limn→∞P(|Sn−μ|≥ε)=0.\lim_{n\rightarrow \infty} P(|S_n - \mu | \geq \varepsilon) = 0. Říkáme, že posloupnost SnS_n konverguje k μ\mu v pravděpodobnosti, píšeme Sn→PμS_n \rightarrow^P \mu.

Věta 0.87 (Centrální limitní věta). Nechť X1,…,XnX_1,\dots,X_n jsou stejně rozdělené n.n.v se střední hodnotou μ\mu a rozptylem σ2\sigma^2. Označme Yn=((X1+…+Xn)−nμ)/(n⋅σ).Y_n = ((X_1 + \dots + X_n) - n\mu)/(\sqrt{n}\cdot\sigma). Pak Yn→dN(0,1)Y_n \rightarrow^d N(0,1). Neboli, pokud FnF_n je distribuční funkce YnY_n, tak limn→∞Fn(x)=Φ(x)∀x∈ℝ.\lim_{n \rightarrow \infty}F_n(x) = \Phi(x)\ \forall x\in \mathbb{R}. Říkáme, že posloupnost YnY_n konverguje k N(0,1)N(0,1) v distribuci.

Bodové odhady.

Chceme určit hodnotu nějakého parametru – často střední hodnoty neznámého rozdělení.

Definice 0.188 (Bodový odhad). Pro náhodný výběr X1,…,Xn∼FθX_1, \ldots, X_n \sim F_{\theta} a libovolnou funkci gg nazveme bodový odhad θ̂n=g(X1,…,Xn)\widehat{\theta}_n =g(X_1,\dots,X_n):

Věta 0.88 (Parametry výběrového momentu a rozptylu). Máme:

Metoda momentů.

Volíme takové θ\theta, které řeší soustavu rovnic mr(θ)=mr(θ)̂r=1,…,km_r(\theta) = \widehat{m_r(\theta)} \qquad \quad r=1, \ldots, k Nechť rr-tý moment náhodné veličiny XX je 𝔼(Xr){\mathbb{E}}(X^r) a označme:

Věta 0.89. mr(θ)̂\widehat{m_r(\theta)} je nestranný konzistentní odhad pro mr(θ)m_r(\theta).

Příklad.

Nechť X1,…,Xn∼Bern(p)X_1,\dots,X_n \sim Bern(p), kde Xi=X_i = “ii-tý člověk je levák”. Potom θ=p∈[0,1]\theta = p \in \left[0,1\right] a m1(θ)=𝔼(X1)=θm_1(\theta) = \mathbb{E}(X_1) = \theta. Celkem mr(θ)̂=1n(X1+…+Xn)=X¯n.\widehat{m_r(\theta)} = \frac{1}{n}(X_1+\dots+X_n) = \overline{X}_n.

Intervalové odhady.

Místo jednoho čísla s nejistým významem vypočítáme z dat interval [θ̂−,θ̂+]\left[\widehat{\theta}^-, \widehat{\theta}^+\right].

Definice 0.189 (Interval spolehlivosti). Nechť X‾n=1n∑i=1nXi\bar{X}_n = \frac{1}{n}\sum_{i=1}^n X_i, α\alpha hladina významnost, zα/2z_{\alpha/2} kritická hodnota (chceme pokrýt 1−α21-\frac \alpha2 plochy pod křivkou normálního rozdělení), σ\sigma směrodatná odchylka, nn rozsah výběru a σn\frac{\sigma}{\sqrt{n}} standardní chyba, pak interval spolehlivosti je [X‾n−zα/2⋅σn,X‾n+zα/2⋅σn]\left[ \bar{X}_n - z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}}, \bar{X}_n + z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}} \right] Interval spolehlivosti říká, že s 1−α1-\alpha jistotou se skutečný průměr celé populace nachází v tomto rozmezí.

Metoda založená na normální aproximaci.

Tato metoda využívá centrální limitní větu (CLV) a je vhodná pro velké výběry (n≥30n \geq 30).

  1. Bodový odhad: Pro střední hodnotu θ=μ\theta = \mu použijeme θ̂=X‾n=1n∑i=1nXi.\hat{\theta} = \bar{X}_n = \frac{1}{n} \sum_{i=1}^n X_i.

  2. Standardní chyba (SE):

  3. Kvantily rozdělení:

  4. Interval spolehlivosti: θ̂±zα/2⋅SE(pro známý rozptyl),\hat{\theta} \pm z_{\alpha/2} \cdot \text{SE} \quad \text{(pro známý rozptyl)}, θ̂±tα/2⋅SÊ(pro neznámý rozptyl).\hat{\theta} \pm t_{\alpha/2} \cdot \widehat{\text{SE}} \quad \text{(pro neznámý rozptyl)}.

Aplikace.

Používá se například pro odhady průměrné výšky, hmotnosti, doby života.

Testování hypotéz.

Jedná se o metodu pro rozhodování o platnosti určitých hypotéz na základě pozorovaných dat.

Základní přístup.

Postupujeme následovně:

  1. Formulujeme nulovou hypotézu (H0H_0) - konzervativní tvrzení, které testujeme (např. "mince je spravedlivá", "lék nemá účinek").

  2. Stanovíme alternativní hypotézu (H1H_1) - tvrzení, které platí, pokud H0H_0 neplatí (např. "mince je falešná", "lék má účinek").

  3. Zvolíme testovou statistiku T=h(X1,…,Xn)T = h(X_1, \ldots, X_n), která měří odchylku dat od H0H_0.

  4. Určíme kritický obor WW - množinu hodnot statistiky, pro které zamítneme H0H_0.

  5. Vypočteme pozorovanou hodnotu statistiky t=h(x1,…,xn)t = h(x_1, \ldots, x_n).

  6. Rozhodneme: pokud t∈Wt \in W, zamítneme H0H_0 ve prospěch H1H_1; jinak H0H_0 nezamítáme.

Chyby v testování.

Při rozhodování můžeme udělat dva typy chyb:

Hladina významnosti.

Hladina významnosti α\alpha je pravděpodobnost chyby 1. druhu, kterou jsme ochotni akceptovat. Typické volby jsou α=0.05\alpha = 0.05 nebo α=0.01\alpha = 0.01. Kritický obor WW pak volíme, aby: P(T∈W|H0)=αP(T \in W | H_0) = \alpha

Základní princip: Zamítneme H0, pokud p-hodnota=P(T≥t|H0)<α.\begin{equation*} \text{Základní princip: Zamítneme } H_0 \text{, pokud } p\text{-hodnota} = P(T \geq t | H_0) < \alpha. \end{equation*}

Logika

Syntaxe

Definice 0.190 (Jazyk VL). Jazyk výrokové logiky je určený neprázdnou množinou výrokových pro­měn­ných ℙ\mathbb P. Patří do něj také symboly pro logické spojky ¬,∧,∨,→,↔\neg, \land, \lor, \to, \leftrightarrow a závorky ((, )).

Definice 0.191 (Výroková formule). Výrok v jazyce ℙ\mathbb P je prvek množiny VF⁡ℙ\operatorname{VF}_\mathbb P definované následovně: VF⁡ℙ\operatorname{VF}_{\mathbb P} je nejmenší množina splňující

Definice 0.192 (Signatura). Signatura je dvojice ⟨ℛ,ℱ⟩\langle\mathcal R,\mathcal F\rangle, kde ℛ,ℱ\mathcal R,\mathcal F jsou disjunktní množiny symbolů (re­lač­ní a funkční, ty zahrnují konstantní) spolu s danými aritami (tj. danými funkcí ar:ℛ∪ℱ→ℕ\mathrm{ar}\colon \mathcal R\cup\mathcal F\to\mathbb N) a neobsahující symbol ‘==’ (ten je rezervovaný pro rovnost).

Definice 0.193 (Jazyk PL). Jazyk predikátové logiky je dán signaturou ⟨ℛ,ℱ⟩\langle\mathcal R,\mathcal F\rangle a uvedením, zda jde o jazyk s rovností, či bez. Patří do něj spočetně mnoho proměnných, re­lač­ní, funkční a konstantní symboly ze signatury (případně “==”), univerzální a existenční kvantifikátory ∀,∃\forall, \exists, symboly pro logické spojky ¬,∧,∨,→,↔\neg, \land, \lor, \to, \leftrightarrow a závorky (,)(, ).

Definice 0.194 (Termy). Termy jazyka LL jsou konečné nápisy definované induktivně:

Množinu všech termů jazyka LL označíme TermL\mathrm{Term}_L.

Definice 0.195 (Formule). Formule jazyka LL jsou konečné nápisy definované induktivně. Platí stejné tři body jako u výroku, plus: Je-li φ\varphi formule a xx proměnná, potom ((∀x)φ)((\forall x)\varphi) a ((∃x)φ)((\exists x)\varphi) jsou také formule.

Definice 0.196 (Otevřená formule). Formule je otevřená, pokud neobsahuje žádný kvantifikátor.

Definice 0.197 (Sentence). Formule je uzavřená (sentence), pokud nemá žádnou volnou proměnnou.

Definice 0.198 (Literál). Literál ℓ\ell je buď prvovýrok pp nebo negace prvovýroku ¬p\neg p.

Definice 0.199 (Klauzule). Klauzule je disjunkce literálů C=ℓ1∨ℓ2∨…∨ℓnC=\ell_1\lor\ell_2\lor\dots\lor\ell_n. Jednotková klauzule je samotný literál (n=1n=1) a prázdnou klauzulí (n=0n=0) myslíme ⊥\bot.

Definice 0.200 (CNF). Výrok je v konjunktivní normální formě (v CNF) pokud je konjunkcí klauzulí. Prázdný výrok v CNF je ⊤\top.

Definice 0.201 (Elementární konjunkce). Elementární konjunkce je konjunkce literálů E=ℓ1∧ℓ2∧…∧ℓnE=\ell_1\land\ell_2\land\dots\land\ell_n. Jednotková elementární konjunkce je samotný literál (n=1n=1). Prázdná (n=0n=0) je ⊤\top.

Definice 0.202 (DNF). Výrok je v disjunktivní normální formě (v DNF) pokud je disjunkcí elementárních konjunkcí. Prázdný výrok v DNF je ⊥\bot.

Věta 0.90 (Převod CNF DNF). Mějme konečný jazyk ℙ\mathbb P a libovolnou množinu modelů M⊆M⁡ℙM\subseteq\operatorname{M}_\mathbb P. Potom existuje výrok φDNF\varphi_{\mathrm{DNF}} v DNF a výrok φCNF\varphi_{\mathrm{CNF}} v CNF takový, že M=M⁡ℙ(φDNF)=M⁡ℙ(φCNF)M=\operatorname{M}_\mathbb P(\varphi_{\mathrm{DNF}})=\operatorname{M}_\mathbb P(\varphi_{\mathrm{CNF}}). Konkrétně: φDNF=⋁v∈M⋀p∈ℙpv(p)φCNF=⋀v∈M¯⋁p∈ℙpv(p)¯=⋀v∉M⋁p∈ℙp1−v(p)\begin{align*} \varphi_{\mathrm{\mathrm{DNF}}} &= \bigvee_{v\in M}\bigwedge_{p\in\mathbb P}p^{v(p)}\\ \varphi_{\mathrm{CNF}} &= \bigwedge_{v\in \overline{M}}\bigvee_{p\in\mathbb P}\overline{p^{v(p)}}=\bigwedge_{v\notin M}\bigvee_{p\in\mathbb P}p^{1-v(p)} \end{align*}

2

Definice 0.203 (SAT). Výrok φ\varphi je v kk-CNF, pokud je v CNF a každá klauzule má nejvýše kk literálů. Problém kk-SAT se ptá, zda je daný kk-CNF výrok splnitelný. Pro k≥3k\geq 3 je kk-SAT nadále NP-úplný, každou CNF formuli lze zakódovat do 3-CNF výroku.

Definice 0.204 (PNF). Formule φ\varphi je v prenexní normální formě (PNF), je-li tvaru (Q1x1)…(Qnxn)φ′(Q_1x_1)\dots(Q_nx_n)\varphi' kde QiQ_i je kvantifikátor (∀\forall nebo ∃\exists) a formule φ′\varphi' je otevřená. Formuli φ′\varphi' potom říkáme otevřené jádro φ\varphi a (Q1x1)…(Qnxn)(Q_1x_1)\dots(Q_nx_n) je kvantifikátorový prefix.

Věta 0.91 (Existence PNF). Ke každé formuli φ\varphi existuje ekvivalentní formule v prenexní normální formě.

Věta 0.92 (Převod do PNF). Označme jako Q¯\overline{Q} kvantifikátor opačný ke QQ. Nechť φ\varphi a ψ\psi jsou formule, a proměnná xx nechť není volná ve formuli ψ\psi. Potom platí: ¬(Qx)φ∼(Q¯x)¬φ(Qx)φ∧ψ∼(Qx)(φ∧ψ)(Qx)φ∨ψ∼(Qx)(φ∨ψ)(Qx)φ→ψ∼(Q¯x)(φ→ψ)ψ→(Qx)φ∼(Qx)(ψ→φ)\begin{align*} \neg (Qx)\varphi\ &\sim\ (\overline{Q}x)\neg\varphi\\ (Qx)\varphi \land \psi\ &\sim\ (Qx)(\varphi \land \psi)\\ (Qx)\varphi \lor \psi\ &\sim\ (Qx)(\varphi \lor \psi)\\ (Qx)\varphi \to \psi\ &\sim\ (\overline{Q}x)(\varphi \to \psi)\\ \psi \to (Qx)\varphi\ &\sim\ (Qx)(\psi \to \varphi) \end{align*}

Definice 0.205 (Rezoluční pravidlo). Mějme klauzule C1C_1 a C2C_2 a literál ℓ\ell takový, že ℓ∈C1\ell\in C_1 a ℓ‾∈C2\bar\ell\in C_2. Potom rezolventa klauzulí C1C_1 a C2C_2 přes literál ℓ\ell je klauzule C=(C1\{ℓ})∪(C2\{ℓ‾}).C=(C_1\setminus\{\ell\})\cup (C_2\setminus\{\bar\ell\}).

Definice 0.206 (Rezoluční důkaz). Rezoluční důkaz (odvození) klauzule CC z CNF formule SS je konečná posloupnost klauzulí C0,C1,…,Cn=CC_0,C_1,\dots,C_n=C taková, že pro každé ii buď Ci∈SC_i\in S nebo CiC_i je rezolventou nějakých Cj,CkC_j,C_k kde j<ij<i a k<ik<i.

Pokud rezoluční důkaz existuje, říkáme, že CC je rezolucí dokazatelná z SS, a píšeme S⊢RCS\vdash_R C. (Rezoluční) zamítnutí CNF formule SS je rezoluční důkaz ▫\square z SS, v tom případě je SS (rezolucí) zamítnutelná.

Definice 0.207 (Rezoluční strom). Rezoluční strom klauzule CC z CNF formule SS je konečný binární strom s vrcholy označenými klauzulemi, kde

Definice 0.208 (Rezoluční uzávěr). Rezoluční uzávěr ℛ(S)\mathcal R(S) formule SS je definován induktivně jako nej­men­ší množina klauzulí splňující:

Sémantika

Definice 0.209 (Teorie). Teorie v jazyce ℙ\mathbb P je libovolná množina výroků v ℙ\mathbb P. Jednotlivým výrokům φ∈T\varphi\in T říkáme také axiomy.

Definice 0.210 (Model teorie PL). Struktura ℳ\mathcal M v jazyce LL je modelem teorie TT, ℳ⊨T\mathcal M \models T, pokud každá sentence φ∈T\varphi \in T je v ℳ\mathcal{M} pravdivá.

Definice 0.211 (Pravdivostní funkce). Pravdivostní funkce výroku φ\varphi v konečném jazyce ℙ\mathbb P je funkce
fφ,ℙ:{0,1}|ℙ|→{0,1}f_{\varphi,\mathbb P}\colon\{0,1\}^{|\mathbb P|}\to\{0,1\} definovaná induktivně:

Definice 0.212 (Model jazyka VL). Model jazyka ℙ\mathbb P je libovolné pravdivostní ohodnocení v:ℙ→{0,1}v\colon \mathbb P\to \{0,1\}. Množinu (všech) modelů jazyka ℙ\mathbb P označíme M⁡ℙ\operatorname{M}_\mathbb P: M⁡ℙ={v∣v:ℙ→{0,1}}={0,1}ℙ\operatorname{M}_\mathbb P=\left\{v\mid v\colon \mathbb P\to \{0,1\}\right\}=\{0,1\}^\mathbb P

Definice 0.213 (Model jazyka PL). Model jazyka LL, nebo také LL-struktura, je libovolná struktura v signatuře jazyka LL. Třídu všech modelů jazyka označíme M⁡L\operatorname{M}_L.

Definice 0.214 (Struktura). Struktura v signatuře ⟨ℛ,ℱ⟩\langle\mathcal R,\mathcal F\rangle je trojice 𝒜=⟨A,ℛ𝒜,ℱ𝒜⟩{\mathcal{A}}=\langle A, \mathcal R^{\mathcal{A}},\mathcal F^{\mathcal{A}}\rangle, kde

Definice 0.215 (Platnost výroku v modelu, model výroku). Mějme výrok φ\varphi v jazyce ℙ\mathbb P a model v∈M⁡ℙv\in\operatorname{M}_\mathbb P. Pokud platí fφ,ℙ(v)=1f_{\varphi,\mathbb P}(v)=1, potom říkáme, že výrok φ\varphi platí v modelu vv, vv je modelem φ\varphi, a píšeme v⊨φv\models\varphi. Množinu všech modelů výroku φ\varphi označujeme M⁡ℙ(φ)\operatorname{M}_\mathbb P(\varphi).

Definice 0.216 (Platnost teorie, model teorie). Je-li TT teorie v jazyce ℙ\mathbb P, potom TT platí v modelu vv, pokud každý axiom φ∈T\varphi\in T platí ve vv. V tom případě říkáme také, že vv je modelem TT, a píšeme v⊨Tv\models T. Množinu všech modelů teorie TT v jazyce ℙ\mathbb P označíme M⁡ℙ(T)\operatorname{M}_\mathbb P(T).

Definice 0.217 (Sémantické pojmy). Říkáme, že výrok φ\varphi (v jazyce ℙ\mathbb P) je

Dále říkáme, že výroky φ,ψ\varphi,\psi (ve stejném jazyce ℙ\mathbb P) jsou (logicky) ekvivalentní, píšeme φ∼ψ\varphi\sim\psi pokud mají stejné modely, tj. φ∼ψ právě když M⁡ℙ(φ)=M⁡ℙ(ψ).\varphi\sim\psi\text{ právě když }\operatorname{M}_\mathbb P(\varphi)=\operatorname{M}_\mathbb P(\psi).

Definice 0.218 (Sémantické pojmy vzhledem k teorii). Mějme teorii TT v jazyce ℙ\mathbb P. Říkáme, že výrok φ\varphi v jazyce ℙ\mathbb P je

A říkáme, že výroky φ,ψ\varphi,\psi (ve stejném jazyce ℙ\mathbb P) jsou ekvivalentní v TT, TT-ekvivalentní, píšeme φ∼Tψ\varphi\sim_T\psi pokud platí v týchž modelech TT, tj. φ∼Tψ právě když M⁡ℙ(T,φ)=M⁡ℙ(T,ψ).\varphi\sim_T\psi\text{ právě když }\operatorname{M}_\mathbb P(T,\varphi)=\operatorname{M}_\mathbb P(T,\psi).

Definice 0.219. Řekneme, že teorie TT v jazyce ℙ\mathbb P je

Extenze teorií

Definice 0.220 (Extenze teorie). Mějme teorii TT v jazyce ℙ\mathbb P.

Skolemizace.

Redukujeme otázku splnitelnosti dané teorie TT na otázku splnitelnosti otevřené teorie T′T'. Celá konstrukce sestává z následujících kroků:

  1. Převod do prenexní normální formy (vytýkání kvantifikátorů).

  2. Nahrazení formulí jejich generálními uzávěry (abychom získali sentence – přidáme “∀\forall”).

  3. Odstranění existenčních kvantifikátorů (nahrazení sentencí Skolemovými variantami – odstraníme “∃yi\exists y_i” a substituujeme “fi(x1,…,xni)f_i(x_1, \ldots, x_{n_i})”).

  4. Odstranění zbývajících univerzálních kvantifikátorů (výsledkem jsou otevřené formule).

Dokazatelnost

Pokud důkaz existuje, lze ho nalézt ‘algoritmicky’. Navíc musíme být schopni algoritmicky ověřit, že je daný objekt opravdu korektní důkaz. Existuje-li důkaz, říkáme, že φ\varphi je dokazatelný z TT, a píšeme T⊢φT\vdash\varphi. Po dokazovacím systému požadujeme dvě vlastnosti:

Definice 0.221 (Tablo). Konečné tablo z teorie TT je uspořádaný, položkami označkovaný strom zkonstruovaný aplikací konečně mnoha následujících pravidel:

Tablo z teorie TT je buď konečné, nebo i nekonečné: v tom případě vzniklo ve spočetně mnoha krocích. Můžeme ho formálně vyjádřit jako sjednocení τ=⋃i≥0τi\tau=\bigcup_{i\geq 0}\tau_i, kde τi\tau_i jsou konečná tabla z TT, τ0\tau_0 je jednoprvkové tablo, a τi+1\tau_{i+1} vzniklo z τi\tau_i v jednom kroku.

Tablo pro položku PP je tablo, které má položku PP v kořeni.

Definice 0.222 (Tablo důkaz). Tablo důkaz výroku φ\varphi z teorie TT je sporné tablo z teorie TT s položkou Fφ\mathrm{F}\varphi v kořeni. Pokud existuje, je φ\varphi (tablo) dokazatelný z TT, píšeme T⊢φT\vdash\varphi. (Definujme také tablo zamítnutí jako sporné tablo s Tφ\mathrm{T}\varphi v kořeni. Pokud existuje, je φ\varphi (tablo) zamítnutelný z TT, tj. platí T⊢¬φT\vdash\neg\varphi.)

Věta 0.93 (Konečnost sporu). Je-li τ=⋃i≥0τi\tau=\bigcup_{i\geq 0}\tau_i sporné tablo, potom existuje n∈ℕn\in\mathbb N takové, že τn\tau_n je sporné konečné tablo.

Důsledek 0.4 (Konečnost důkazu). Pokud T⊢φT\vdash\varphi, potom existuje i konečný tablo důkaz φ\varphi z TT.

Atomická tabla
¬\neg ∧\land ∨\lor →\to ↔\leftrightarrow
True

]

]]

]

]

] [Fφ\mathrm{F}\varphi [Fψ\mathrm{F}\psi]]]

False

]

]

]]

]]

] [Fφ\mathrm{F}\varphi [Tψ\mathrm{T}\psi]]]

Věty o kompaktnosti a úplnosti výrokové a predikátové logiky

Věta 0.94 (O kompaktnosti). Teorie má model, právě když každá její konečná část má model.

Důsledek 0.5. Spočetně nekonečný graf je bipartitní, právě když je každý jeho konečný podgraf bipartitní.

Věta 0.95 (O úplnosti VL). Je-li výrok φ\varphi pravdivý v teorii TT, potom je tablo dokazatelný z TT, tj. T⊨φ⟹T⊢φ.T\models\varphi\ \implies\ T\vdash\varphi.

Věta 0.96 (O úplnosti PL). Je-li sentence φ\varphi pravdivá v teorii TT, potom je tablo dokazatelná z TT, tj. T⊨φ⟹T⊢φ.T\models\varphi\ \implies\ T\vdash\varphi.

Rozhodnutelnost

Definice 0.223 (Kompletní teorie ve VL). Teorie je kompletní, je-li bezesporná a každý výrok je buď pravdivý, nebo lživý. Ekvivalentně, právě když má jeden model.

Definice 0.224 (Kompletní teorie v PL). Teorie je kompletní, je-li bezesporná a každá sentence je v ní buď pravdivá, nebo lživá. Ekvivalentně, právě když má právě jeden model až na elementární ekvivalenci.

Definice 0.225 (Elementární ekvivalence). Struktury 𝒜,ℬ\mathcal A,\mathcal B (v témž jazyce) jsou elementárně ekvivalentní, pokud v nich platí tytéž sentence. Značíme 𝒜≡ℬ\mathcal A\equiv\mathcal B.

Definice 0.226 (Teorie struktury). Mějme LL-strukturu 𝒜{\mathcal{A}}. Teorie struktury 𝒜{\mathcal{A}}, značíme Th⁡(𝒜)\operatorname{Th}({\mathcal{A}}) je množina všech LL-sentencí platných v 𝒜{\mathcal{A}}: Th⁡(𝒜)={φ∣φ je L-sentence a 𝒜⊨φ}\operatorname{Th}({\mathcal{A}})=\{\varphi\mid\varphi\text{ je $L$-sentence a }{\mathcal{A}}\models\varphi\}

Definice 0.227 (Rekurzivní axiomatizace). Teorie TT je rekurzivně axiomatizovaná, pokud existuje algoritmus, který pro každou vstupní formuli φ\varphi doběhne a odpoví, zda φ∈T\varphi\in T.

Definice 0.228 (Rozhodnutelnost). O teorii TT říkáme, že je

Věta 0.97. Nechť TT je rekurzivně axiomatizovaná. Potom:

  1. TT je částečně rozhodnutelná,

  2. je-li TT navíc kompletní, potom je rozhodnutelná.

Definice 0.229 (Rekurzivní axiomatizovatelnost). Třída LL-struktur K⊆M⁡LK\subseteq\operatorname{M}_L je rekurzivně axiomatizovatelná, pokud existuje rekurzivně axiomatizovaná LL-teorie TT taková, že K=ML(T)K=M_L(T). Teorie T′T' je rekurzivně axiomatizovatelná, pokud je rekurzivně axiomatizovatelná třída jejích modelů, neboli pokud je T′T' ekvivalentní nějaké rekurzivně axiomatizované teorii.

Příklady rozhodnutelných teorií.

Pro následující struktury je Th⁡(𝒜)\operatorname{Th}({\mathcal{A}}) rekurzivně axiomatizovatelná, a tedy i rozhodnutelná:

Společná informatika

Z následujících 44 témat budou vybrána 22.

Automaty a jazyky

Regulární Jazyky.

Definice 0.230 (Jazyk). Jazyk LL nad abecedou Σ\Sigma je libovolná podmnožina L⊆Σ*L\subseteq \Sigma^*.

Definice 0.231 (Regulární gramatika (Typ 3)). Gramatika GG je regulární, pokud obsahuje pouze pravidla: A→wBneboA→w,A,B∈V,w∈T*.A \to wB \quad \text{nebo} \quad A \to w, \quad A, B \in V, w \in T^*.

Definice 0.232 (DFA). Deterministický konečný automat (DFA) je pětice (Q,Σ,δ,q0,F)(Q, \Sigma, \delta, q_0, F), kde:

Definice 0.233 (ϵ\epsilon-NFA). Nedeterministický konečný automat s ϵ\epsilon přechody (ϵ\epsilon-NFA) je pětice (Q,Σ,δ,q0,F)(Q, \Sigma, \delta, q_0, F), kde přechodová funkce je zobrazení δ:Q×(Σ∪{ϵ})→P(Q)\delta : Q \times (\Sigma \cup \{\epsilon\}) \to P(Q) vracející podmnožinu QQ, a zbytek je jako v DFA.

Definice 0.234 (Rozšířená přechodová funkce). Mějme přechodovou funkci δ:Q×Σ→Q\delta : Q \times \Sigma \to Q. Rozšířenou přechodovou funkci δ*:Q×Σ*→Q\delta^*: Q \times \Sigma^* \to Q definujeme induktivně:

Definice 0.235 (DFA přijímá slovo ww). DFA přijímá slovo ww, pokud po přečtení celého slova končí v přijímajíím stavu. Tedy pro rozšířenou přechodovou funkci δ*:Q×Σ*→Q\delta^*:Q\times \Sigma^*\to Q je slovo ww přijato, pokud δ*(q0,w)∈F\delta^*(q_0, w) \in F.

Definice 0.236 (Regulární výrazy (RegE), hodnota RegE L(α)L(\alpha))). Regulární výrazy α,β∈RegE(Σ)\alpha, \beta \in RegE(\Sigma) nad konečnou neprázdnou abecedou Σ={a1,a2,…,an}\Sigma = \{a_1, a_2, \ldots, a_n\} a jejich hodnota L(α)L(\alpha) jsou definovány induktivně:

výraz α\alpha pro hodnota L(α)≡[α]L(\alpha) \equiv [\alpha]
ϵ\epsilon prázdný řetězec L(ϵ)={ϵ}L(\epsilon) = \{\epsilon\}
∅\emptyset prázdný výraz L(∅)={}≡∅L(\emptyset) = \{\} \equiv \emptyset
aa a∈Σa \in \Sigma L(a)={a}L(a) = \{a\}
výraz hodnota
α+β\alpha + \beta L(α+β)=L(α)∪L(β)L(\alpha + \beta) = L(\alpha) \cup L(\beta)
αβ\alpha\beta L(αβ)=L(α)L(β)L(\alpha\beta) = L(\alpha)L(\beta)
α*\alpha^* L(α*)=L(α)*L(\alpha^*) = L(\alpha)^*
(α)(\alpha) L((α))=L(α)L((\alpha)) = L(\alpha)

Každý regulární výraz dostaneme indukcí výše, tj. třída RegE(Σ)RegE(\Sigma) je nejmenší třída uzavřená na uvedené operace.

Bezkontextové jazyky a Zásobníkový automat.

Definice 0.237 (Formální (generativní) gramatika). Formální gramatika je G=(V,T,P,S)G = (V, T, P, S) složena z:

Definice 0.238 (Bezkontextová gramatika (CFG)). CFG je G=(V,T,P,S)G = (V, T, P, S) gramatika, obsahující pouze pravidla tvaru: A→ω,A∈V,ω∈(V∪T)*.A \to \omega, ~~\, A \in V, ~~\, \omega \in (V \cup T)^*.

Definice 0.239 (Derivace ⇒*\Rightarrow^*). Mějme gramatiku G=(V,T,P,S)G = (V, T, P, S).

Definice 0.240 (Jazyk generovaný gramatikou GG). Jazyk L(G)L(G) generovaný gramatikou G=(V,T,P,S)G = (V, T, P, S) je množina terminálních řetězců, pro které existuje derivace ze startovního symbolu: L(G)={w∈T*∣S⇒G*w}.L(G) = \{w \in T^* \mid S \Rightarrow_G^* w\}. Jazyk neterminálu A∈VA \in V definujeme: L(A)={w∈T*∣A⇒G*w}.L(A) = \{w \in T^* \mid A \Rightarrow_G^* w\}.

Definice 0.241 (Zásobníkový automat (PDA)). PDA je P=(Q,Σ,Γ,δ,q0,Z0,F)P = (Q, \Sigma, \Gamma, \delta, q_0, Z_0, F), kde:

Rekurzivně spočetné jazyky.

Definice 0.242 (Turingův stroj (TM)). Turingův stroj (TM) je sedmice M=(Q,Σ,Γ,δ,q0,B,F)M = (Q, \Sigma, \Gamma, \delta, q_0, B, F), kde:

Definice 0.243 (Problémem). Problémem PP myslíme množinu otázek kódovatelnou řetězci nad abecedou Σ\Sigma s odpověďmi ∈{𝙰𝙽𝙾,𝙽𝙴}\in \{\texttt{ANO}, \texttt{NE}\}. Pokud problém definujeme jakožto množinu, jde o otázku, zda vstup kóduje prvek dané množiny (např. polynom s celočíselným kořenem).

Definice 0.244 (Rozhodnutelný problém). Problém je (algoritmicky) rozhodnutelný, pokud existuje Turingův stroj takový, že pro každý vstup w∈Pw \in P zastaví a navíc přijme právě když P(w)=𝙰𝙽𝙾(tj. pro P(w)=𝙽𝙴, zastaví v ne-přijímacím stavu).P(w) = \texttt{ANO} ~~ (\text{tj. pro } P(w) = \texttt{NE} \, \text{, zastaví v ne-přijímacím stavu}). Problém, který není algoritmicky rozhodnutelný je nerozhodnutelný.

Definice 0.245 (Problém zastavení). Instancí problému zastavení je dvojice řetězců M,w∈{0,1}*M, w \in \{0,1\}^*. Problém zastavení je najít algoritmus Halt(M,w)(M, w), který vydá 11 právě když stroj MM zastaví na vstupu ww, jinak vydá 00.

Věta 0.98 (Problém zastavení). Problém zastavení není rozhodnutelný.

Chomského Hierarchie.

Definice 0.246 (Chomského hierarchie). Gramatiky rozdělujeme do čtyř typů:

Turingovy stroje↔ℒ0Gramatiky Typu 0Lineárně omezené automaty↔ℒ1Kontextové a Monotónní gramatikyZásobníkové automaty↔ℒ2Bezkontextové gramatiky CFGKonečné automaty↔ℒ3Regulární gramatiky\begin{aligned} \boxed{\text{Turingovy stroje}} &\stackrel{\mathcal{L}_0}{\longleftrightarrow} \boxed{\text{Gramatiky Typu 0}}\\ \boxed{\text{Lineárně omezené automaty}} &\stackrel{\mathcal{L}_1}{\longleftrightarrow} \boxed{\text{Kontextové a Monotónní gramatiky}}\\ \boxed{\text{Zásobníkové automaty}} &\stackrel{\mathcal{L}_2}{\longleftrightarrow} \boxed{\text{Bezkontextové gramatiky CFG}}\\ \boxed{\text{Konečné automaty}} &\stackrel{\mathcal{L}_3}{\longleftrightarrow} \boxed{\text{Regulární gramatiky}} \end{aligned}

Převody.

ε\varepsilon-NFA na DFA (konstrukce podmnožin).

  1. Počáteční stav je zachován (včetně jeho ε\varepsilon-uzávěru).

  2. Přijímající stavy jsou všechny množiny obsahující nějaký přijímající stav.

  3. Každý nový stav odpovídá množině stavů NFA. (Pro každý symbol z Σ\Sigma spočítáme množinu stavů, do kterých se NFA může dostat, a ta tvoří nový stav v DFA.)

Příklad 1:

Mějme NFA se stavy {A,B,C}\{A, B, C\}, počátečním stavem AA, koncovým stavem CC a přechody: A→0,1AA \xrightarrow{0,1} A, A→1BA \xrightarrow{1} B, B→1CB \xrightarrow{1} C.

δDFA\delta_{DFA} 00 11
→{A}\to \{A\} {A}\{A\} {A,B}\{A, B\}
{A,B}\{A, B\} {A}\{A\} {A,B,C}\{A, B, C\}
*{A,B,C}*\{A, B, C\} {A}\{A\} {A,B,C}\{A, B, C\}

Regulární gramatika na DFA.

  1. Každý neterminál odpovídá stavu automatu + vytvoříme koncový stav KK.

  2. Počáteční stav SS gramatiky je počátční stav automatu.

  3. Tvar A→aBA \to a B zapíšeme v automatu jako A→aBA \stackrel a \to B.

  4. Tvar A→aA \to a zapíšeme v automatu jako A→aKA \stackrel a \to K.

  5. Tvar A→εA \to \varepsilon zapíšeme v automatu jako koncový stav.

S→ε∣0A∣1BA→0A∣1AB→1B∣1\begin{align*} S &\to \varepsilon \mid 0A \mid 1B \\ A &\to 0A \mid 1A \\ B &\to 1B \mid 1 \end{align*}

DFA na Regulární gramatika.

  1. Každému stavu automatu A,B,C,…A,B,C, \ldots přiřadíme neterminál A,B,C,…A,B,C, \ldots.

  2. Počátečnímu stavu přiřadíme počáteční neterminál.

  3. Přechod A→aBA \stackrel{a}\to B zapíšeme v gramatice jako pravidlo A→aBA \to aB.

  4. Pokud je stav koncový, přidáme pravidlo A→εA \to \varepsilon.

A→1B∣0A∣0∣εB→0C∣1BC→0B∣ε\begin{align*} A &\to 1B \mid 0A \mid 0 \mid \varepsilon \\ B &\to 0C \mid 1B \\ C &\to 0B \mid \varepsilon \end{align*}

DFA na RegEx.

  1. Převedeme automat na regulární gramatiku (soustavu rovnic pro jednotlivé stavy).

  2. Součet koncových stavů DFA bude tvořit výslednou rovnici.

  3. Následně dosazujeme do stavů a převádíme je na RegEx.

  4. Převod na RegEx: výraz ve tvaru A=Aα+βA = A\alpha + \beta (příp. A=αA+βA = \alpha A + \beta) přepíšeme pomocí Ardenova pravidla na A=βα*A = \beta\alpha^* (resp. A=α*βA = \alpha^*\beta).

Součet koncových stavů V=A+CV = A + C je výsledný jazyk.

Sestavíme rovnice pro jednotlivé stavy (podle vstupujících/vystupujících cest): A=0A+ε=0*B=1A+1B+0CC=0B\begin{align*} A &= 0A + \varepsilon = 0^* \\ B &= 1A + 1B + 0C \\ C &= 0B \end{align*}

Dosadíme CC a AA do rovnice pro BB: B=1(0*)+1B+0(0B)=10*+(1+00)BB=(1+00)*10*(nebo v pravé formě: B=0*1(1+00)*)\begin{align*} B &= 1(0^*) + 1B + 0(0B) = 10^* + (1 + 00)B \\ B &= (1 + 00)^* 1 0^* \quad \text{(nebo v pravé formě: } B = 0^* 1 (1 + 00)^* \text{)} \end{align*}

Dosadíme zpět do C=0B=0*1(1+00)*0C = 0B = 0^* 1 (1 + 00)^*0. Výsledný regulární výraz: V=A+C=0*+0*1(1+00)*0V = A + C = 0^* + 0^* 1 (1 + 00)^*0

RegEx na NFA.

  1. Pro každý RegEx symbol vytvoříme NFA s jedním přechodem. (symbol 00 bude →○→0\to \bigcirc \stackrel{0}\to ⊚\circledcirc.)

  2. Pokud je RegEx ve tvaru 0101, pak automaty řadíme za sebe (skládáme).

  3. Pokud je RegEx ve tvaru 0+10+1, pak přidáme ε\varepsilon počáteční stav, který se větví do automatů pro 00 a 11, a ty jsou následně sloučeny do jednoho koncového stavu přes ε\varepsilon.

  4. Pokud je RegEx ve tvaru 1*1^*, pak vytváříme zpětnou smyčku / cyklus.

Příklad schémat:

CFG na Chomského normální tvar (CNF).

  1. Odstraníme ε\varepsilon-pravidla, jednotková pravidla (A→BA \to B) a zbytečné symboly (negenerující a nedosažitelné).

  2. Pro každý terminál aa vytvoříme nový neterminál NaN_a a přidáme pravidlo Na→aN_a \to a.

  3. Převedeme pravidla na délku nejvýše 2 neterminálů (tvar A→BCA \to BC nebo A→aA \to a).

Příklad:

Mějme výchozí gramatiku: S→AB∣CA→aA∣εB→b∣CC→cD→d\begin{align*} S &\to AB \mid C \\ A &\to aA \mid \varepsilon \\ B &\to b \mid C \\ C &\to c \\ D &\to d \end{align*}

  1. Odstranění ε\varepsilon-pravidel (A→εA \to \varepsilon): Kdekoliv je na pravé straně AA, přidáme i variantu bez něj: S→AB∣B∣CA→aA∣aB→b∣CC→cD→d\begin{align*} S &\to AB \mid B \mid C \\ A &\to aA \mid a \\ B &\to b \mid C \\ C &\to c \\ D &\to d \end{align*}

  2. Odstranění jednotkových pravidel:

  3. Odstranění nedosažitelných symbolů: Neterminál DD není dosažitelný z počátečního stavu SS, proto pravidlo D→dD \to d odstraníme. Zbývá: S→AB∣b∣cA→aA∣aB→b∣c\begin{align*} S &\to AB \mid b \mid c \\ A &\to aA \mid a \\ B &\to b \mid c \end{align*}

  4. Převod do finálního CNF tvaru: Pravidlo A→aAA \to aA obsahuje terminál i neterminál. Zavedeme nový neterminál Na→aN_a \to a a pravidlo přepíšeme na A→NaAA \to N_a A.

CFG na PDA.

Mějme CFG gramatiku G=(V,T,P,S)G = (V, T, P, S), a konstruujeme PDA P=({q},T,V∪T,δ,q,S)P = (\{q\}, T, V \cup T, \delta, q, S).

  1. Počáteční symbol gramatiky vložíme na zásobník.

  2. Pro neterminály A∈V:δ(q,ε,A)={(q,β)∣A→β je pravidlo G}A \in V: \delta(q, \varepsilon, A) = \{(q, \beta) \mid A \to \beta\text{ je pravidlo }G\}.

  3. Pro každý terminál a∈T:δ(q,a,a)={(q,ε)}a \in T: \delta(q, a, a) = \{(q, \varepsilon)\}. (pop)

  4. Přijímání probíhá prázdným zásobníkem.

Příklad:

Mějme gramatiku S→aSb∣εS \to aSb \mid \varepsilon. Sestrojíme PDA P=({q},{a,b},{S,a,b},δ,q,S)P = (\{q\}, \{a, b\}, \{S, a, b\}, \delta, q, S):

Algoritmy a datové struktury

Časová složitost algoritmu.

Definice 0.247 (Časová složitost). Nechť t(x)t(x) je doba běhu pro vstup xx. Potom časová složitost výpočtu: T(n):=max⁡{t(x)∣x vstup velikosti n}.T(n):=\max\{t(x)\mid x \text{ vstup velikosti } n\}.

Definice 0.248 (Prostorová složitost). Nechť s(x):=s(x):=“max adresa −- min adresa +1+ 1” je prostor běhu pro vstup xx. Potom prostorová složitost výpočtu je S(n):=max⁡{s(x)∣x vstup velikosti n}.S(n):=\max\{s(x)\mid x \text{ vstup velikosti } n\}.

Asymptotická notace.

Mějme funkce f,g:ℕ→ℝf,g: {\mathbb{N}}\to {\mathbb{R}}.

Definice 0.249 (Horní odhad). f(n)∈𝒪(g(n))⇔(∃c>0)(∃n0∀n>n0):0≤f(n)≤c⋅g(n).f(n) \in \mathcal O(g(n)) \iff (\exists c > 0)(\exists n_0\forall n > n_0): ~0 \leq f (n) \leq c \cdot g(n).

Definice 0.250 (Dolní odhad). f(n)∈Ω(g(n))⇔(∃c>0)(∃n0∀n>n0):0≤c⋅g(n)≤f(n).f(n) \in \Omega(g(n))\iff (\exists c > 0) (\exists n_0 \forall n > n_0) : ~0 \leq c \cdot g(n) \leq f (n).

Definice 0.251 (Těsný odhad). f(n)∈Θ(g(n))⇔f(n)∈𝒪(g(n))∧f(n)∈Ω(g(n)).f (n) \in \Theta(g(n)) \iff f(n) \in \mathcal{O}(g(n)) \quad \land \quad f(n) \in \Omega(g(n)).

Třídy složitosti.

Definice 0.252 (Třída PP). Problém L∈P⇔L \in P \iff existuje algoritus AA a polynom ff, že pro každý vstup xx, algoritmus AA doběhne v čase nejvýše f(|x|)f(|x|) a vrátí výsledek A(x)=L(x)A(x) = L(x).

Definice 0.253 (Třída NPNP). Problém L∈NP⇔∃K∈PL \in NP \iff \exists K \in P problém a polynom gg, že ∀x:L(x)=1\forall x: L(x) = 1 právě tehdy, když pro nějaký řetězec yy délky nejvýše g(|x|)g(|x|) platí K(x,y)=1K(x,y)=1.
(“KK řeší LL, ale krom vstupu xx má nápovědu yy. Pokud L(x)=1L(x)=1, pak musí existovat nápověda yy, kterou KK schválí.”)

Definice 0.254 (NPNP-těžkost). Problém je NP-těžký, pokud na něj lze převést libovolný problém v NP.

Definice 0.255 (NPNP-úplnost). Problém je NP-úplný, pokud je NP-těžký a je v NP.

Definice 0.256 (Převod). Platí, že A→B⇔∃f:{0,1}*→{0,1}*A \to B \iff \exists f: \{0,1\}^* \to \{0,1\}^*, že ∀x:A(x)=B(f(x))\forall x: A(x) = B(f(x)) a ff běží v polytime.

Příklady převodů:

Jak dokázat, že AA je NPÚ?

Dokážeme, že A∈A \in NP (sestrojíme poly verifikátor KK). NP-těžkost sestrojíme poly převodem z již známého NPÚ problému BB (B→AB\to A).

Metoda rozděl a panuj.

Rekurzivně dělíme na podproblémy – problém velikosti nn na dva n2\frac n2 apod. Zde aa značí počet podproblémů, bb faktor, kterým zmenšujeme podproblém a cc určuje Θ(nc)\Theta(n^c) sloučení.

Věta 0.99 (Master). Rekurentní rovnice T(n)=a⋅T(nb)+Θ(nc),T(1)=1T(n) = a\cdot T(\frac nb) + \Theta(n^c), ~T(1)=1 má pro konstatny a≥1,b>1,c≥0a\geq 1, b> 1, c\geq 0 řešení:

  1. pokud abc=1\frac{a}{b^c}=1, pak T(n)=Θ(nclog⁡n)T(n) = \Theta(n^c \log n),

  2. pokud abc<1\frac{a}{b^c}<1, pak T(n)=Θ(nc)T(n) = \Theta(n^c),

  3. pokud abc>1\frac{a}{b^c}>1, pak T(n)=Θ(nlog⁡ba)T(n) = \Theta(n^{\log_b a}).

Neboli, problém rozložíme na aa podproblémů velikosti nb\frac nb. Výsledky složíme v Θ(nc)\Theta(n^c).

Merge sort.

Na vstupu nn prvků, rozdělíme na dvě části ⌊n2⌋\lfloor \frac n2 \rfloor, ⌈n2⌉\lceil \frac n2 \rceil, na konci slijeme. Použijeme Master theorem:
Pro T(1)=1T(1) = 1, triviálně. Pro T(n)T(n) problém dělíme na a=2a=2 podproblémy velikosti n2=b\frac{n}{2=b}. Slijeme nakonec dohromady v Θ(n),c=1\Theta(n), c=1. Celkem tedy T(n)=2T(n2)+nT(n) = 2 T(\frac n2) + n, a prostor Θ(n)\Theta(n), což vyhovuje případu (1) a máme: T(n) = Θ(nlog⁡n).\Theta(n \log n).

if n=1n=1 then return a1=b1a_1 = b_1

x1,…,x⌊n/2⌋←MergeSort(a1,…,a⌊n/2⌋)x_1, \ldots, x_{\lfloor n/2 \rfloor} \gets \mathrm{MergeSort}(a_1, \ldots, a_{\lfloor n/2 \rfloor})

y1,…,y⌈n/2⌉←MergeSort(a⌊n/2⌋+1,…,an)y_1, \ldots, y_{\lceil n/2 \rceil} \gets \mathrm{MergeSort}(a_{\lfloor n/2 \rfloor + 1}, \ldots, a_n)

b1,…,bn←Merge(x1,…,x⌊n/2⌋,y1,…,y⌈n/2⌉)b_1, \ldots, b_n \gets \mathrm{Merge}(x_1, \ldots, x_{\lfloor n/2 \rfloor}, y_1, \ldots, y_{\lceil n/2 \rceil})

i←1,j←1,k←1i \gets 1, j \gets 1, k \gets 1

if i≤mi \leq m, zkopírujeme zbylá xx: zk,…,zm+n←xi,…,xmz_k, \ldots, z_{m+n} \gets x_i, \ldots, x_m

if j≤nj \leq n, zkopírujeme zbylá yy: zk,…,zm+n←yj,…,ynz_k, \ldots, z_{m+n} \gets y_j, \ldots, y_n

z1,…,zm+nz_1, \ldots, z_{m+n}

Karacubovo násobení.

Máme dvě čísla X,YX,Y a chceme jejich součin X⋅YX\cdot Y. Rozděláme horních n2\frac n2 a dolních n2\frac n2 cifer.
Platí {X=A⋅10n/2+BY=C⋅10n/2+D\begin{cases} X = A\cdot 10^{n/2} + B\\ Y = C\cdot 10^{n/2} + D \end{cases}, pro čísla A,B,C,DA,B,C,D. Součin pak můžeme spočítat jako: XY=AC⋅10n+(AD+BC)⋅10n/2+BD.XY = AC \cdot 10^n + (AD + BC) \cdot 10^{n/2} + BD. Což je ovšem stále asymptoticky n2n^2. Můžeme to ale ještě vylepšit – o jeden součin méně – na: XY=AC⋅10n+((A+B)(C+D)−AC−BD)⋅10n/2+BD.XY = AC \cdot 10^n + ((A+B)(C+D) - AC - BD) \cdot 10^{n/2} + BD. Máme tak T(n)=3T(n2)+Θ(n)T(n) = 3T(\frac n2) + \Theta(n), což vyhovuje případu (3) a dostáváme tak Θ(nlog⁡23)≈n1.53\Theta(n^{\log_23}) \approx n^{1.53}.

Binarní vyhledávací stromy.

Definice 0.257 (Vyhledávácí strom). Pro vyhledávací strom platí, že klíč v každém vrcholu je větší než všechny klíče v levém podstromu a je menší než všechny klíče v pravém podstromu.

Definice 0.258 (AVL). Rozdíl v hloubkách stromů je maximálně jedna. (vyvážený strom)
Hloubka je Θ(log⁡n)\Theta(\log n) (⤳\leadsto Find, Insert).

Definice 0.259 (Binární strom). Strom mající nejvýše dva syny.

Základní operace.

Notace: v≡v \equiv kořen/vrchol, l(v)≡l(v)\equiv levý syn vv, r(v)≡r(v)\equiv pravý syn vv, k(v)≡k(v)\equiv klíč vv.

Show – vypíše všechny prvky
  1. if v=∅v = \emptyset then return

  2. Show(l(v)l(v))

  3. Vypiš k(v)k(v)

  4. Show(r(v)r(v))

Find – porovná k(v)k(v) s předem hledaným klíčem xx
  1. if v=∅v = \emptyset then return ∅\emptyset

  2. if x=k(v)x = k(v) then return vv

  3. if x<k(v)x < k(v) then return Find(l(v),xl(v),x)

  4. if x>k(v)x > k(v) then return Find(r(v),xr(v), x)

Min – minimum z prvků
  1. if l(v)=∅l(v) = \emptyset then return vv

  2. return Min(l(v)l(v))

Insert – vkládáme prvek do stromu
  1. if v=∅v = \emptyset then vytvoříme nový vv s klíčem xx

  2. if x=k(v)x = k(v) then pass ⊳x\triangleright~ x je již ve stromu

  3. if x<k(v)x < k(v) then l(v)←𝙸𝚗𝚜𝚎𝚛𝚝(l(v),x)l(v) \gets \texttt{Insert}(l(v), x)

  4. if x>k(v)x > k(v) then r(v)←𝙸𝚗𝚜𝚎𝚛𝚝(r(v),x)r(v) \gets \texttt{Insert}(r(v), x)

Delete – odstraníme prvek ze stromu
  1. if l(v)=r(v)=∅l(v) = r(v) = \emptyset then return ∅\emptyset ⊳\triangleright~ list

  2. if l(v)=∅l(v) = \emptyset then return r(v)r(v) ⊳\triangleright~ existuje pravý syn

  3. if r(v)=∅r(v) = \emptyset then return l(v)l(v) ⊳\triangleright~ existuje levý syn

  4. s←𝙼𝚒𝚗(r(v))s \gets \texttt{Min}(r(v)) ⊳\triangleright~ nahradíme následníka

  5. k(v)←sk(v) \gets s

  6. r(v)←𝙳𝚎𝚕𝚎𝚝𝚎(r(v),s)r(v) \gets \texttt{Delete}(r(v), s)

Třídění

BubbleSort.

Primitivní třídící algoritmus. Časová složitost je 𝒪(n2)\mathcal O(n^2) v nejhorším i průměrném případě.

InsertionSort.

Je efektivní pro malá pole a téměř seřazená data. Časová složitost je ale stále 𝒪(n2)\mathcal O(n^2).

Poznámka 0.6. Insertionsort je vhodný pro malá pole (typicky n<20n < 20) a dosahuje lineární časové složitosti pro téměř seřazená data.

QuickSort.

Typický příklad algoritmu rozděl a panuj. Průměrná časová složitost: O(nlog⁡n)O(n \log n), v případě špatného výběru pivota ale můžeme dosáhnout 𝒪(n2)\mathcal O(n^2). Paměťová složitost je 𝒪(log⁡n)\mathcal O(\log n) (rekurzivní zásobník).

if n≤1n \leq 1 then return Y=XY=X
p←vyber pivota z Xp \gets \text{vyber pivota z } X
L←L \gets prvky XX, které <p< p
P←P \gets prvky XX, které >p> p
S←S \gets prvky XX, které =p= p
Rekurzivně třídíme části
L←Quicksort(L)L \gets \text{Quicksort}(L)
P←Quicksort(P)P \gets \text{Quicksort}(P)

Věta 0.100. Quicksort je randomizovaný algoritmus, jehož očekávaná časová složitost je 𝒪(nlog⁡n)\mathcal O(n \log n) při volbě pivota náhodným výběrem.

Věta 0.101 (O složitosti třídění). Každý deterministický algoritmus v porovnávacím modelu, který třídí nn-prvkovou posloupnost, použije v nejhorším případě Ω(nlog⁡n)\Omega(n \log n) porovnání.

Grafové algoritmy

Prohledávání do hloubky (BFS) a do šířky (DFS).

Na vstupu máme graf G=(V,E)G = (V, E) s počátečním vrcholem v0∈Vv_0 \in V. Během průchodu grafem rozlišujeme tři možné stavy vrcholů; nenalezené – ještě jsme je nepotkali, otevřené – potkali, ale neprozkoumali hrany, které z nich vedou, a uzavřené – už jsme prozkoumali i hrany, nadále se nezabýváme.

stav(v0)←(v_0)\gets otevřený
Q←v0Q \gets v_0

Pro DFS ještě definujeme pomocná pole in(v)(v), out(v)(v), do kterých zaznamenáme, v jakém pořadí jsme vrcholy otevírali a zavírali.

S←∅S \gets \emptyset prázdný zásobník,T←0T \gets 0
for každý v∈Vv \in V do
stav(v)←(v)\gets nenalezený
in(v)(v), out(v)←(v) \gets nedefinováno
for každý v∈Vv \in V do
if stav(v)=(v)= nenalezený then DFS2(v,S)(v, S)
return SS

stav(v)←(v)\gets otevřený
T←T+1T \gets T + 1,  in(v)←T(v)\gets T
stav(v)←(v)\gets uzavřený
T←T+1T \gets T + 1,   out(v)←T(v) \gets T, SS.push(v)(v).

Poznámka 0.7 (Složitost BFS a DFS). Oba algoritmy pracují v čase 𝒪(n+m)\mathcal{O}(n +m) a prostoru Θ(n+m)\Theta(n+m).

Poznámka 0.8. Algoritmus DFS detekuje cykly a klasifikuje hrany

Topologické třídění.

Acyklické orientované grafy (DAG) lze uspořádat, aby vedly hrany po směru uspořádání.

Definice 0.260 (Topologické uspořádání). Lineární uspořádání ≺\prec na vrcholech grafu je topologické, pokud ∀{x,y}∈E:x≺y\forall \{x,y\}\in E: x\prec y.

Věta 0.102. Orientovaný graf má topologické uspořádání ⇔\iff je DAG.

Věta 0.103. DFS opouští vrcholy v pořadí opařné topologickému.

Nejkratší cesty v ohodnocených grafech.

Pro hledání nejkratší cesty v neohodnoceném grafu můžeme použít BFS/DFS, ale pro ohodnocené grafy otřebujeme větší kanón – Dijsktrův/Bellman-Fordův algoritmus. Dijkstrův algoritmus funguje pouze pro nezáporné hrany, Bellman-Ford i pro záporné.

stav(v0)←(v_0)\gets otevřený
h(v0)←0h(v_0) \gets 0

Poznámka 0.9 (Složitost Dijkstrova algoritmu). Časová složitost je 𝒪(n2)\mathcal O(n^2) nebo 𝒪(m+nlog⁡n)\mathcal O(m + n \log n) s prioritní frontou.

Vždy vybereme vrchol s nejmenší cenou, který ještě nebyl vybraný.
Algoritmus

(Bellman-Ford). Čas 𝒪(mn)\mathcal{O}(mn).

Poznámka 0.10. Dijkstra pracuje pouze s nezáporným ohodnocením, Bellman-Ford i se záporným.

Minimální kostry grafu.

Definice 0.261 (Váha). Váha je funkce w:E→ℝw: E\to {\mathbb{R}}. Váha w(H)w(H) podgrafu H⊆GH\subseteq G je součet vah jeho hran.

Definice 0.262 (Minimální kostra). Kostra grafu je minimální, pokud má mezi kostrami nejmenší váhu.

v0←v_0 \gets libovolný vrchol grafu
T←T \gets strom obsahující v0v_0 a žádné hrany

Poznámka 0.11 (Složitost Jarníkova algoritmu). V každém kroku Jarníkův algoritmus přidá nejlevnější hranu spojující strom s novým vrcholem. Časová složitost je 𝒪(|V|2)\mathcal O(|V|^2) nebo 𝒪(|E|+|V|log⁡|V|)\mathcal O(|E| + |V| \log |V|) s prioritní frontou

T←(V,∅T \gets (V, \emptyset)

Poznámka 0.12 (Složitost Borůvkova algoritmu). Borůvkův algoritmus v každé iteraci přidá nejlevnější hranu z každé komponenty. Zároveň pracuje i s nesouvislými grafy. Časová složitost je 𝒪(|E|log⁡|V|)\mathcal O(|E| \log |V|). Vhodný pro řídké grafy.

Poznámka 0.13 (Jarník VS Borůvka). Jarník přidává v každém kroku jeden vrchol a pracuje s jedním stromem (souvislý graf). Borůvka naproti tomu přidává více hran najednou a pracuje s více komponentami (nesouvislý graf)

Toky v sítích.

Definice jednotlivých pojmů viz kapitola Teorie grafů (0.4.9).

f←f \gets nulový tok
tok ff.

Zlepšující cesta: neorientovaná cesta z→sz\to s, kde dopředná hrana má f(e)<c(e)f(e)<c(e) a zpětná f(e)>0f(e)>0.ckem

Programovací jazyky (Java)

Základy

Interface

specifikuje kontrakty třídy – vícenásobná dědičnost.

Abstrakce

oddělení interface od implementace.

Polymorfismus

schopnost jedné reference odkazovat na objekty různých typů.

Dědičnost

opětovné použití existující třídy – “extends”.

implements

implementuje interface – třída bude mít definované metody.

static

člen třídy není vázán na instanci/ objekt, ale na celou třídu.

protected

přístu v rámci třídy a všech podtříd, ale mimo třídu neviditelná.

super()

volání konstruktora předka (rodiče) – když dědí třída.

public interface Animal {
    void makeSound();           // verejna abstraktni metoda
    ...
}

public class Pet {
    protected String name;      // pristupna v ramci tridy a v podtridach
    public void greet() {
        System.out.println("Hello " + name);
    }
}

public class Dog extends Pet implements Animal {    // dedeni a implementace rozhrani
    public Dog(String name) {
        super(name);      // volani predka, pristup k chranenemu atributu z nadtridy
    }

    @Override
    public void makeSound() {   // implementace metody z interface
        System.out.println("Woof");
    }

    @Override
    public void greet() {       // prepsani metody z predka/nadtridy (polymorfismus)
        System.out.println("Dog " + name + " says: Woof!");
    }    
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog("Bob");  // polymorfismus: pouziti rozhrani jako typu
        myDog.makeSound();              // volani metody z interface

        Pet myPet = (Pet) myDog;        // pretypovani na nadtridu
        myPet.greet();                  // volani prepsane metody z predka
    }
}

Vlákna

Používají se primárně dva způsoby – Thread a Runnable.

Thread.

Thread t = new MyThread();  // vytvorime instanci tridy MyThread
t.start();

public class MyThread extends Thread {  // trida MyThread dedi od tridy Thread
    @Override
    public void run() {                 // prepisujeme metodu run
        System.out.println("Thread is running");
    }
}

Runnable.

Runnable r = () -> System.out.println("Runnable is running"); 
Thread t = new Thread(r); // vytvorime instanci Thread a predame ji instanci Runnable
t.start();                // spustime vlakno

Synchronizace.

Snaha zajistit, aby “něco” probíhalo pouze v jednom vlákně najednou.

public void increment() {
    synchronized(this) {    // k teto casti kodu se dostane jen jeden thread najednou
        this.count++;
    }
}

// nebo

public synchronized void increment() { // synchronizace cele metody
    this.count++;
}
Terminologie vláken:
private volatile boolean running = true;
public void stop() {
    running = false; // bez synchronized, ale s volatile
}

private AtomicInteger count = new AtomicInteger(0);
public void increment() {
    count.incrementAndGet(); // atomicka operace
}

Lambda funkce

// bez lambda funkce:
isEven(x) {
    return x % 2 == 0;
}

// lambda funkce:
isEven = x % 2 == 0;


// bez lambda funkce:
for (String name : names) {
    System.out.println(name);
}

// lambda funkce:
names.forEach(name -> System.out.println(name));

Race condition a Deadlock

Race condition ≡\equiv dvě nebo více vláken přistupuje k datům současně a výsledek závisí na načasování (přepíše se v běhu).

Například: increment(){\{count++;}\} – více vláken najednou upravuje count.

Řešení: použít synchronized nebo AtomicInteger.
Deadlock ≡\equiv dvě a více vláken čekaní na zámky, které se vzájemně drží.

Architektura počítačů a operačních systémů

BigEndian (MSB)

0x1A2B ⤳\leadsto

LittleEndian (LSB)

0x1A2B ⤳\leadsto

Operace:
OR

…\ldots “∣\mid” …\ldots alespoň 1

AND

…\ldots “&\&” …\ldots oboje

XOR

…\ldots “^” …\ldots právě 1

SHL/SHR

…\ldots “<<<<” …\ldots posun k MSB doleva (resp. >>>> doprava)

NOT

…\ldots “∼\sim” …\ldots opak

Reprezentace záporných čísel.

Reprezentace desetinných čísel.

Za pomoci znaménka, exponentu a mantisy.

Příklad: Reprezentace čísla −234.75-234.75

Sdílení procesoru.

Virtuální paměť.

Race condition

více vláken najednou přistupuje ke stejným datům.
Pomůže protected nebo scheduling.

Synchronizace.

Deadlock

Vzájemné čekání, které vede k zacyklení.
Nutné podmínky k zacyklení:

  1. Mutex – alespoň jeden je exclusive.

  2. Hold & wait – jeden drží žádost pro ten druhý.

  3. No preemption – resources nemůžou být znovu přijaty bez újmy.

  4. Circular wait.

mutex m1, m2;

// Thread1      // Thread2
m1.lock();      m2.lock();
m2.lock();      m1.lock();
m2.unlock();    m1.unlock();
m1.unlock();    m2.unlock();

Obecná informatika

Z následujících 44 témat budou vybrána 44.

Kombinatorika

Vytvořující funkce

Definice 0.263 (Vytvořující funkce). Vytvořující funkce posloupnosti a0,a1,…=(an)n=0∞∈ℝa_0, a_1, \ldots = (a_n)_{n=0}^{\infty} \in {\mathbb{R}} je funkce proměnné xx definována jako součet f(x)=∑n=0∞anxnf(x) = \displaystyle \sum_{n=0}^{\infty}a_nx^n.

Typické vytvořující funkce a jejich vlastnosti.
Gen. funkce Posloupnost Vzorec
∑n=0∞xn\displaystyle\sum_{n=0}^{\infty} x^n (1,1,1,1,…)(1, 1, 1, 1, \ldots) 11−x\dfrac{1}{1-x}
∑n=0∞anxn\displaystyle\sum_{n=0}^{\infty} a^n x^n (1,a,a2,a3,…)(1, a, a^2, a^3, \ldots) 11−ax\dfrac{1}{1-ax}
∑n=0∞(x2)n\displaystyle\sum_{n=0}^{\infty} (x^2)^n (1,0,1,0,…)(1, 0, 1, 0, \ldots) 11−x2\dfrac{1}{1-x^2}
∑n=0∞(−1)nxn\displaystyle\sum_{n=0}^{\infty} (-1)^nx^n (1,−1,1,−1,…)(1, -1, 1, -1, \ldots) 11+x\dfrac{1}{1+x}
∑n=0∞nxn\displaystyle\sum_{n=0}^{\infty} n x^n (0,1,2,3,4,…)(0, 1, 2, 3, 4, \ldots) x(1−x)2\dfrac{x}{(1-x)^2}

Příklad 0.1 (Použití vytvořujících funkcí k řešení lineárních rekurencí). V několika krocích:

Věta 0.104 (Zobecněná binomická věta). Pro d∈ℝd\in {\mathbb{R}} platí (1+x)d=∑n=0∞(dn)xn\displaystyle (1+x)^d = \sum_{n=0}^{\infty} \binom dn x^n, pro |x|<1|x|<1.

Definice 0.264 (Catalanova čísla). Catalanova čísla (Cn)n=0∞(C_n)_{n=0}^{\infty} udávájí počet binárních stromů s nn vnitřními vrcholy. Platí 1n+1(2nn)\displaystyle \frac{1}{n+1}\binom{2n}{n}, neboli počet korektního uzávorkovaní.

Příklad 0.2 (Odvození Catalanova čísla). Mějme funkci: C(x):=∑n=0∞Cnxn,C0=1,aCn=C0Cn−1+C1Cn−2+...+Cn−1C0=∑i=0n−1CiCn−i−1C(x):= \sum_{n=0}^{\infty}C_nx^n, \quad C_0 = 1, \quad \mathrm{ a } \quad \displaystyle C_n = C_0C_{n-1} + C_1C_{n-2} + ... + C_{n-1}C_{0} = \sum_{i=0}^{n-1}C_iC_{n-i-1}

image

∑n=1∞Cnxn=∑n=1∞(∑i=0n−1CiCn−i−1)xn⟹C(x)−1=x∑n=0∞(∑i=0nCiCn−i)xn=x⋅C2(x)\begin{flalign*} \sum_{n=1}^{\infty}C_nx^n &= \sum_{n=1}^{\infty}\left(\sum_{i=0}^{n-1}C_iC_{n-i-1}\right)x^n \implies\\ C(x) - 1 &= x \sum_{n=0}^{\infty}\left(\sum_{i=0}^{n}C_iC_{n-i}\right)x^n = x\cdot C^2(x) \end{flalign*}

Dostáváme tak: C(x)=1+xC2(x)C(x) = 1 + xC^2(x), což si můžeme zapsat jako kvadratickou rovnici: xC2(x)−C(x)+1⟹{1+1−4x2x=C+(x)není řešením - diverguje1−1−4x2x=C−(x)konverguje k 1 při x→0\begin{flalign*} xC^2(x) - C(x) + 1 \implies \begin{cases}\frac{1 +\sqrt{1-4x}}{2x} = C^+(x) & \text{není řešením - diverguje}\\\frac{1 -\sqrt{1-4x}}{2x} = C^-(x) & \text{konverguje k $1$ při $x \to 0$}\end{cases} \end{flalign*} Počítáme tak dál a vyjádříme vzorec pro nn-tý člen:

Cn:=[xn]1−1−4x2x=[xn+1]1−1−4x2=−12[xn+1]1−4x==−12(−4)n+1[xn+1](1−x)12=ZBV−12(−4)n+1[xn+1](12n+1)==(−1)n22n+1⋅12(12−1)(12−2)⋅...⋅(12−n)(n+1)!=(−1)n22n+1⋅12(−12)(−32)⋅...⋅(−2n−12)(n+1)!==2n⋅1⋅3⋅...⋅(2n−1)(n+1)!=1⋅3⋅...⋅(2n−1)(n+1)n!⋅2⋅4⋅...⋅2nn!=1n+1(2n)!(n!)2=1n+1(2nn).\begin{flalign*} C_n &:= [x^n]\frac{1 -\sqrt{1-4x}}{2x} = [x^{n+1}]\frac{1 -\sqrt{1-4x}}{2} = -\frac 12[x^{n+1}]\sqrt{1-4x} =\\ &=-\frac 12 (-4)^{n+1}[x^{n+1}](1-x)^{\frac 12} \stackrel{ZBV}{=} -\frac 12 (-4)^{n+1}[x^{n+1}]\binom{\frac 12}{n+1} = \\ &= (-1)^n2^{2n+1} \cdot \frac{\frac 12(\frac 12 - 1)(\frac 12 - 2)\cdot ... \cdot (\frac 12 - n)}{(n+1)!} = (-1)^n2^{2n+1} \cdot \frac{\frac 12(-\frac 12)(-\frac 32)\cdot ... \cdot (-\frac {2n-1}2)}{(n+1)!} =\\ &= 2^n \cdot \frac{1\cdot 3 \cdot ... \cdot (2n-1)}{(n+1)!} = \frac{1\cdot 3 \cdot ... \cdot (2n-1)}{(n+1)n!} \cdot \frac{2\cdot 4 \cdot ... \cdot 2n}{n!} = \frac{1}{n+1}\frac{(2n)!}{(n!)^2} = \frac{1}{n+1}\binom{2n}{n}. \end{flalign*}

Odhady faktoriálu a kombinačních čísel

Věta 0.105 (Odhad faktoriálu). Platí odhad: e(ne)n≤n!≤en(ne)n\displaystyle e\left(\frac ne\right)^n \leq n! \leq en \left(\frac ne\right)^n.

Proof. Rozepíšeme n!n! za pomoci vlastností logaritmů jako součet: ln⁡(n!)=∑i=1nln⁡(i)=∑i=2nln⁡(i)\displaystyle \ln(n!) = \sum_{i=1}^{n}\ln(i) = \sum_{i=2}^{n}\ln(i).

 ◻

Věta 0.106 (Odhad kombinačního čísla). Pro 1≤k≤n1\leq k \leq n platí:  (nk)k≤(nk)≤(enk)k\displaystyle \left(\frac nk\right)^k \leq \binom nk \leq \left(\frac{en}{k}\right)^k.

Proof. Budeme využívat vztahu (nk)=n!k!(n−k)!\displaystyle \binom nk = \frac{n!}{k!(n-k)!}

 ◻

Věta 0.107 (Odhad binomického čísla (2mm)\binom {2m} m). Platí odhad:   ∀m∈ℕ0:4m2m≤(2mm)≤4m2m\displaystyle \forall m\in {\mathbb{N}}_0: \frac{4^{m}}{2\sqrt m} \leq \binom {2m}m \leq \frac{4^{m}}{\sqrt {2m}}.

Proof. Definujme P:=(2mm)22m\displaystyle P := \frac{\binom{2m}{m}}{2^{2m}} a dokažme, že 12m≤P≤12m\displaystyle \frac 1{2\sqrt m} \leq P \leq \frac 1{\sqrt {2m}}.

P:=(2mm)22m=(2m)!m!⋅m!2⋅2⋅...⋅2⏟2m=1⋅2⋅3⋅...⋅2m(2⋅4⋅...⋅2m)(2⋅4⋅...⋅2m)=1⋅3⋅5⋅...⋅(2m−1)2⋅4⋅6⋅...⋅2mP:= \frac{\binom{2m}{m}}{2^{2m}} = \frac{\frac{(2m)!}{m! \cdot m!}}{\underbrace{2 \cdot 2 \cdot ... \cdot 2}_{2m}} = \frac{1\cdot 2 \cdot 3 \cdot ... \cdot 2m}{(2\cdot 4 \cdot ... \cdot 2m) (2\cdot 4 \cdot ... \cdot 2m)} = \frac{1\cdot 3 \cdot 5 \cdot ... \cdot (2m-1)}{2\cdot 4 \cdot 6 \cdot ... \cdot 2m}

 ◻

Ramseyovy věty

Definice 0.265 (Klika). Klika v grafu G=(V,E)G=(V,E) je množina vrcholů, t.ž. každé dva jsou spojené hranou. Největší kliku GG značíme ω(G)\omega(G).

Definice 0.266 (Nezávislá množina). Nezávislá množina v grafu G=(V,E)G=(V,E) je množina vrcholů, t.ž. žádné dva nejsou spojené hranou. Největší nezávislou množinu GG značíme α(G)\alpha(G).

Definice 0.267 (Ramseyovo číslo). R(k,l)=min⁡{N∈ℕ∣každý graf G na alespoň N vrcholech obsahuje ω(G)≥k nebo α(G)≥l}.R(k,l) = \min\{N \in {\mathbb{N}}\mid \text{každý graf $G$ na alespoň $N$ vrcholech obsahuje }\omega(G) \geq k \text{ nebo } \alpha(G)\geq l\}.

Věta 0.108 (Ramseyova grafová dvoubarevná). Nechť k,l∈ℕk, l \in {\mathbb{N}}, potom existuje N∈ℕN \in {\mathbb{N}} takové, že ve všech grafech s alespoň NN vrcholy, platí ω(G)≥k\omega(G) \geq k nebo α(G)≥l\alpha (G) \geq l.

Věta 0.109 (Ramseyova – nekonečná pro dvojice). Pro každé t∈ℕt \in \mathbb{N} (počet barev) a obarvení c:(ℕ2)→{1,2,…,t}c \colon \binom{\mathbb{N}}{2} \to \{1, 2, \ldots, t\} existuje nekonečná množina A⊆ℕA \subseteq \mathbb{N} taková, že pro všechny dvojice {a1,a2}∈(A2)\{a_1,a_2\} \in \binom{A}{2} má c({a1,a2})c(\{a_1,a_2\}) stejnou hodnotu.

Důkaz (nekonečnou indukcí). Postupným rozebíráním množiny ℕ\mathbb{N} dojdeme až k hledané množině AA. Indukci začneme tím, že označíme A1=ℕA_1 = \mathbb{N} a nastavíme i=1i = 1.

V množině AiA_i zafixujeme libovolný vrchol viv_i, zbylé vrcholy v∈Ai\{vi}v \in A_i \setminus \{v_i\} rozdělíme do množin Bi1,Bi2,…,BitB_i^1, B_i^2, \ldots, B_i^t podle barvy c({vi,v})c(\{v_i, v\}) hrany, která je spojuje s viv_i. Víme, že množina AiA_i je nekonečná, proto alespoň jedna z uvedených stejnobarevných podmnožin BijB_i^j musí být také nekonečná. Tuto množinu označíme za Ai+1A_{i+1} a pokračujeme v indukci.

Nemáme zaručeno, že pokaždé vybereme podmnožinu stejné barvy, podle které jsme vybrali předchozí množinu. Protože je ale indukce nekonečná, alespoň jednu barvu musíme zvolit ne­ko­neč­ně­krát. Vrcholy viv_i, které odpovídají této barvě, tvoří hledanou množinu AA. ◻

Věta 0.110 (Ramseyova – nekonečná pro pp-tice). Pro každé t∈ℕt \in \mathbb{N} (počet barev), p∈ℕp \in \mathbb{N} a obarvení c:(ℕp)→{1,2,…,t}c: \binom{\mathbb{N}}{p} \to \{1,2,\ldots,t\} existuje nekonečná množina A⊆ℕA \subseteq \mathbb{N}, taková že pro všechny pp-tice {a1,…,ap}∈(Ap)\{a_1,\ldots,a_p\} \in \binom{A}{p} má c({a1,…,ap})c(\{a_1,\ldots,a_p\}) stejnou hodnotu.

Věta 0.111 (Ramseyova – konečná pro pp-tice). Pro každé t∈ℕt \in \mathbb{N} (počet barev), p∈ℕp \in \mathbb{N}, existuje N∈ℕN\in {\mathbb{N}} t.ž. ∀n≥N\forall n \geq N a obarvení c:({1,…,n}p)→{1,2,…,t}c: \binom{\{1, \ldots, n\}}{p} \to \{1,2,\ldots,t\} existuje konečná množina A⊆{1,…,n}A \subseteq \{1, \ldots, n\} velikosti kk, taková, že pro všechny pp-tice {a1,…,ap}∈(Ap)\{a_1,\ldots,a_p\} \in \binom{A}{p} má c({a1,…,ap})c(\{a_1,\ldots,a_p\}) stejnou hodnotu.

Odhady Ramseyova čísla.

R(1,1)R(1,1) R(2,2)R(2,2) R(3,3)R(3,3) R(4,4)R(4,4) R(2,l)R(2,l) R(k,2)R(k,2)
1 2 6 18 ll kk

Věta 0.112. Nechť R(k,1)=R(1,l)=1R(k,1)=R(1,l)=1. Pak platí R(k,l)≤R(k−1,l)+R(k,l−1)R(k,l) \leq R(k-1, l) + R(k,l-1) a z toho4:R(k,l)≤(k+l−2k−1)=(k+l−2l−1).R(k,l) \leq \binom{k+l-2}{k-1} = \binom{k+l-2}{l-1}.

Věta 0.113. Nechť (nk)⋅(2)1−(k2)<1\binom{n}{k}\cdot (2)^{1-\binom k2}<1. Potom R(k,k)>nR(k,k)>n.

Důsledek 0.6. Pro ∀k≥3:R(k,k)>2k/2.\forall k\geq 3: R(k,k) > 2^{k/2}.

Extremální kombinatorika

Extrémální kombinatorika studuje maximální nebo minimální velikosti množin (nebo struktur), které splňují určité vlastnosti, často za podmínek vylučujících jiné konfigurace. Například kolik hran může mít graf bez trojúhelníku.

Definice 0.268. Pro n∈ℕn\in {\mathbb{N}} a graf HH definujeme ex(n,H)\mathrm{ex}(n, H) jako největší |E||E| na nn vrcholech v grafu G=(V,E)G=(V,E), neobsahující HH jako podgraf. ex(n,H)=max⁡{|E|;G=(V,E):|V|=n,H⊆G}.\mathrm{ex}(n, H ) = \max\{|E|; G = (V, E) : |V | = n, H \subseteq G\}.

Příklad 0.3. Například ex(n,K3)=|E(K⌊n2⌋,⌈n2⌉)|=⌊n2⌋⋅⌈n2⌉=n24\mathrm{ex}(n, K_3) = \left|E\left(K_{\left\lfloor \frac{n}{2} \right\rfloor, \left\lceil \frac{n}{2} \right\rceil}\right)\right| = \left\lfloor \frac{n}{2} \right\rfloor \cdot \left\lceil \frac{n}{2} \right\rceil = \frac{n^2}{4}

Definice 0.269 (Turánův graf). Turánův graf na nn vrcholech s rr partitami, značený Tn,rT_{n,r}, je úplný rr-partitiní graf na nn vrcholech, jehož partity mají velikosti ⌊nr⌋\lfloor \frac nr\rfloor a ⌈nr⌉\lceil \frac nr \rceil. Potom tn,r=počet hran Tn,rt_{n,r} = \text{počet hran } T_{n,r}.

Věta 0.114 (Turán). ∀r≥2:ex(n,Kr+1)=tn,r≤(1−1r)n22\displaystyle \forall r \ge 2:~ \mathrm{ex}(n, K_{r+1}) = t_{n,r} \leq \left(1-\frac 1r\right)\frac{n^2}{2}.
(Neboli, jak by měl vypadat graf s co nejvíce hranami, aby neobsahoval KrK_r jako podgraf).

Definice 0.270 (kk-uniformní hypergraf). kk-uniformní hypergraf je dvojice (V,E)(V, E), kde EE je množina kk-prvkových podmnožin VV, tedy E=(Vk)E=\binom{V}{k}.

Definice 0.271. f(n,k):=f(n, k) := Největší počet hyperhran v kk-uniformním hypergrafu na nn vrcholech, v němž žádné dvě hyperhrany nejsou disjunktní.

Poznámka 0.14. Pro n<k:f(n,k)=0n < k : f (n, k) = 0, protože neexistují hyperhrany.

Poznámka 0.15. Pro k≤n<2k:f(n,k)=(nk)k \leq n < 2k : f (n, k) = \binom nk, protože každé dvě množiny z (Vk)\binom Vk se protínají.

Definice 0.272 (Slunečnice). Slunečnice se středem SS a ll lístky je ll-tice množin L1,…,LlL_1, \ldots, L_l taková, že ∀i≠j:Li∩Lj=S\forall i \neq j: L_i \cap L_j = S. Tedy E={{1}∪e′∣e′∈({2,…,n}k−1)}E = \left\{\{1\} \cup e' \mid e' \in \binom{\{2, \ldots, n\}}{k-1}\right\}.

Věta 0.115 (Erdös-Ko-Rado). Pro libovolné kk a n≥2kn \geq 2k platí f(n,k)=(n−1k−1)f(n,k) = \binom{n - 1}{k - 1}.

Příklad slunečnice pro l=6l=6, s množinami L1,…,L6L_1, \ldots, L_6 a středem S=L1∩L2∩L3∩L4∩L5∩L6S = L_1 \cap L_2 \cap L_3 \cap L_4 \cap L_5 \cap L_6.

Samoopravné kódy

Definice 0.273 (Abeceda a slovo). Abeceda Σ\Sigma je konečná množina symbolů. Slovo délky nn je posloupnost nn symbolů. Všechna slova délky nn je Σn\Sigma n. Velikost kódu značíme kk.

Definice 0.274 (Hammingova vzdálenost). Pro x,y∈ℤ2nx,y\in {\mathbb{Z}}_2^n je Hammingova vzdálenost d(x,y):=|i∈[n]:xi≠yi|.d(x,y):= |i\in [n] : x_i \neq y_i|.

Definice 0.275 (Hammingova váha). Hammingova váha ||x||:=|i∈[n]:xi≠0|||x||:=|i\in [n] : x_i \neq 0|. Tedy počet nenulových složek v binárním kódu. Platí, že vzdálenost v bin kódu je rovna nejmenší váze nenulového slova.

Definice 0.276 (Minimální vzdálenost). Minimální vzdálenost pro kód C∈ℤ2nC \in {\mathbb{Z}}_2^n je minimum z Hamingových vzdáleností: Δ(C):=minx≠yx,y∈Cd(x,y).\Delta(C):=\displaystyle \min_{\stackrel{x,y\in C}{x\neq y}} d(x,y).

Definice 0.277 ((n,k,d)(n,k,d)-kód). (n,k,d)(n,k,d)-kód je množina C∈ℤ2nC \in {\mathbb{Z}}_2^n taková, že |C|=2k|C|=2^k a Δ(C)=d\Delta(C) = d.

Definice 0.278 (Lineární kód). Lineární kód je kód C∈ℤ2nC \in {\mathbb{Z}}_2^n, který je vektorový podprostor ℤ2n{\mathbb{Z}}_2^n. Aby byl kód lineární, musí obsahovat nulové slovo a musí být uzavřený na sčítání.

Definice 0.279 (Generující matice kódu CC). Generující matice kódu CC pro lineární (n,k,d)(n,k,d)-kód je matice G∈ℤ2k×nG\in {\mathbb{Z}}_2^{k\times n}, jejíž řádky tvoří bázi CC.

Definice 0.280 (Duální kód k CC “orotgonální doplněk”). Duální kód k CC je C⊥:={⟨x,y⟩=0∣y∈ℤ2n,∀x∈C}.C^{\bot} := \{\langle x,y\rangle = 0 \mid y\in {\mathbb{Z}}_2^n, \forall x \in C\}.

Definice 0.281 (Kontrolní matice). Nechť CC je lineární (n,k,d)(n,k,d)-kód. Kontrolní matice kódu CC je matice, jejíž řádky tvoří bázi C⊥C^{\bot}. (“paritní kontroly, které splňují každé slovo").

Definice 0.282 (Hammingovy kódy). Délka 2r−1,r∈ℕ2^r-1, r\in {\mathbb{N}}, vzdálenost 33.

Definice 0.283 (Koule). Koule B(x,t):={d(x,y)≤t∣y∈ℤ2n}B(x,t):=\{d(x,y) \leq t \mid y\in {\mathbb{Z}}_2^n\} je okolí poloměru tt kolem xx v ℤ2n{\mathbb{Z}}_2^n.

Věta 0.116 (Hammingův odhad). Pokud existuje (n,k,d)(n,k,d)-kód CC, tak pro t=⌊d−12⌋t=\lfloor \frac{d-1}{2}\rfloor a V(n,t)=∑i=0t(ni)V(n,t) = \displaystyle\sum_{i=0}^t\binom ni: 2k≤2nV(n,t).2^k \leq \frac{2^n}{V(n,t)}.

Proof. Kolem každého slova x∈Cx \in C sestrojíme kouli B(x,t)={y∈{0,1}n∣d(x,y)≤t}B(x, t) = \{y \in \{0,1\}^n \mid d(x, y) \leq t\}. Jelikož t=⌊d−12⌋t = \lfloor \frac{d-1}{2}\rfloor, tak jsou libovolné dvě koule pro x≠yx\neq y disjunktní B(x,t)∩B(y,t)=∅B(x, t) \cap B(y, t) = \emptyset.
Kdyby se překrývaly, existovalo by z trojúhelníkové nerovnosti slovo z∈B(x,t)∩B(y,t)z \in B(x, t) \cap B(y, t), že: d(x,y)≤d(x,z)+d(z,y)≤t+t=2t=2⌊d−12⌋≤d−1<d,d(x, y) \leq d(x, z) + d(z, y) \leq t + t = 2t = 2\left\lfloor \frac{d-1}{2}\right\rfloor \leq d - 1 < d, což je ale ve sporu s minimální vzdáleností kódu d(C)=dd(C) = d.
Počet slov je určen mohutností koule, která je dána |B(c,t)|=V(n,t)=∑i=0t(ni)|B(c, t)| = V(n, t) = \sum_{i=0}^t \binom{n}{i}. Jelikož je v kódu 2k2^k takových disjunktních koulí, tak součet objemů nemůže být větší než celková počet bin slov délky nn, kterých je 2n2^n. Dostaneme tak výsledný vzorec |⋃c∈CB(c,t)|=∑c∈C|B(c,t)|=|C|⋅V(n,t)=2k⋅V(n,t)≤2n⟹2k≤2nV(n,t).\left|\bigcup_{c \in C} B(c, t)\right| = \sum_{c \in C} |B(c, t)| = |C| \cdot V(n, t) = 2^k \cdot V(n, t) \leq 2^n \implies 2^k \leq \frac{2^n}{V(n, t)}. ◻

Definice 0.284 (Perfektní kód). Kód CC je perfektní, pokud pro něj platí Hammingův odhad s rovností.

Příklad 0.4 (Příklady perfektních kódů). Perfektní kódy jsou například Hammingovy kódy nebo “opakovací kód s lichou délkou”. Triviální kód (pouze nuloví slova).

Diferenciální a integrální počet ve více rozměrech

Riemannův integrál.

Jednorozměrný.

Definice 0.285 (Dělení). Dělení intervalu [a,b][a,b] je posloupnost P=(t0,…,tn)P = (t_0, \ldots, t_n), kde a=t0<t1<⋅⋅⋅<tn−1<tn=b.a = t_0 < t_1 < \cdot \cdot \cdot < t_{n-1} < t_n = b.

Definice 0.286 (Horní/dolní Riemannovy součty). Pro omezenou funkci f:J=[a,b]→ℝf:J=[a,b] \to {\mathbb{R}} a dělení PP definujeme dolní a horní součty: s(f,P)=∑j=1nmj(tj−tj−1), resp.S(f,P)=∑j=1nMj(tj−tj−1),s(f,P) = \sum^n_{j=1} m_j(t_j-t_{j-1}), \qquad\text{ resp.}\qquad S(f,P) = \sum^n_{j=1} M_j(t_j-t_{j-1}), kde mj=inf⁡{f(x):tj−1≤x≤tj}, a Mj=sup⁡{f(x):tj−1≤x≤tj}.m_j = \inf\{f(x) : t_{j-1} \leq x \leq t_j\}, ~~\text{ a } ~~ M_j = \sup\{f(x) : t_{j-1} \leq x \leq t_j\}.

Definice 0.287 (Horní/dolní Riemannův integrál). Horní a dolní Riemannův integrál ff přes [a,b][a,b] je: ∫_abf(x)dx=sup⁡{s(f,P):P dělení}a∫¯abf(x)dx=inf⁡{S(f,P):P dělení}.\underline{\int}^b_{ a} f(x)~\mathrm dx = \sup\{s(f,P) : P \text{ dělení}\} \qquad \text{a}\qquad \overline{\int}^b_{ a} f(x)~\mathrm dx = \inf\{S(f,P) : P \text{ dělení}\}.

Definice 0.288 (Riemannův integrál funkce). Riemannův integrál funkce ff přes [a,b][a,b] je: (R)∫abf(x)dx, pokud ∫_abf(x)dx=∫¯abf(x)dx.(R) \int_a^b f(x)\,\mathrm dx, \text{ pokud } \underline{\int}^b_{ a} f(x)~\mathrm dx = \overline{\int}^b_{ a} f(x)~\mathrm dx.

Vícerozměrný.

Definice 0.289 (nn-rozměrný kompaktní interval). nn-rozměrný kompaktní interval (v 𝔼n\mathbb{E}_n) je J=[a1,b1]×⋅⋅⋅×[an,bn].J = [a_1,b_1] \times \cdot \cdot \cdot \times [a_n,b_n].

Definice 0.290 (Dělení intervalu). Dělení intervalu JJ je posloupnost dělení P=(P1,...,Pn)P = (P^1,...,P^n): Pj:aj=tj,0<tj,1<⋅⋅⋅<tj,nj−1<tj,nj=bj.P^j : a_j = t_{j,0} < t_{j,1} < \cdot \cdot \cdot < t_{j,n_j-1} < t_{j,n_j} = b_j.

Definice 0.291 (Cihly intervalu). Intervalům [t1,i1,t1,i1+1]×⋅⋅⋅×[tn,in,tn,in+1][t_{1,i_1},t_{1,i_1+1}] \times \cdot \cdot \cdot \times [t_{n,i_n},t_{n,i_n+1}] říkáme cihly dělení PP. Množinu všech cihel značíme ℬ(P)\mathcal{B}(P).
Je to skoro disjunktní dělení intervalu JJ. Různé cihly z ℬ(P)\mathcal{B}(P) se totiž setkávají jen v podmnožinách okrajů, tedy v množinách objemu 0, díky čemuž platí: 𝐯𝐨𝐥(J)=∑{𝐯𝐨𝐥(B):B∈ℬ(J)}.\textbf{vol}(J) = \sum \{\textbf{vol}(B) : B \in \mathcal{B}(J)\}.

Definice 0.292 (“Supremum/infimum” na kompaktním intervalu). Je dána omezená f:J→ℝf: J \rightarrow \mathbb{R} na nn-rozměrném kompaktním intervalu JJ a B⊆JB \subseteq J je nn-rozměrný kompaktní podinterval intervalu JJ. Položme m(f,B)=inf⁡{f(𝐱):𝐱∈B}aM(f,B)=sup⁡{f(𝐱):𝐱∈B}.m(f,B) = \inf\{f(\textbf{x}) : \textbf{x} \in B\} \qquad \text{a} \qquad M(f,B) = \sup\{f(\textbf{x}) : \textbf{x} \in B\}.

Definice 0.293 (Horní/dolní součty). Pro dělení PP intervalu JJ a omezenou funkci f:J→ℝf : J \rightarrow \mathbb{R} definujeme sJ(f,P)=∑{m(f,B)⋅𝐯𝐨𝐥(B):B∈ℬ(P)},s_J(f,P) = \sum \{m(f,B) \cdot \textbf{vol}(B) : B \in \mathcal{B}(P)\}, SJ(f,P)=∑{M(f,B)⋅𝐯𝐨𝐥(B):B∈ℬ(P)}.S_J(f,P) = \sum \{M(f,B) \cdot \textbf{vol}(B) : B \in \mathcal{B}(P)\}.

Definice 0.294 ((Horní/dolní) Riemannův integrál). Množiny {s(f,P)∣P dělení}\{s(f,P) \mid P \text{ dělení}\} a {S(f,P)∣P dělení}\{S(f,P) \mid P \text{ dělení}\} jsou shora/zdola omezené a můžeme definovat dolní/horní Riemannův integrál funkce ff přes JJ jako ∫_Jf(𝐱)d𝐱=sup⁡{s(f,P)∣P dělení}a∫¯Jf(𝐱)d𝐱=inf⁡{S(f,P)∣P dělení}.\underline{\int}_J f(\textbf{x}) \,\mathrm d\textbf{x} = \sup\{s(f,P) \mid P \text{ dělení}\} \qquad \text{a} \qquad \overline{\int}_J f(\textbf{x})\, \mathrm d\textbf{x} = \inf\{S(f,P) \mid P \text{ dělení}\}. Jsou-li si rovny, máme Riemannův integrál funkce ff přes JJ, značíme: ∫Jf(𝐱)d𝐱nebo prostě∫Jf\int_J f(\textbf{x})\,\mathrm d\textbf{x} \quad \text{nebo prostě} \quad \int_J f

Věta 0.117 (Kritérium existence Riemannova integrálu). Riemannův integrál ∫Jf(𝒙)d𝒙\int_{J} f(\mathbf{x}) \,d\mathbf{x} existuje právě když ∀ε>0\forall \varepsilon > 0 existuje dělení PP takové, že SJ(f,P)−sJ(f,P)<εS_J(f,P) - s_J(f,P) < \varepsilon

Věta 0.118 (Riemannův integrál pro spojité funkce). Každá spojitá funkce f:J→ℝf: J \to \mathbb{R} na nn-rozměrném kompaktním intervalu má Riemannův integrál ∫Jf\int_{J}f.

Věta 0.119 (Fubiniova věta). Vezměme součin J=J′×J″⊆𝔼m+nJ = J' \times J'' \subseteq \mathbb{E}_{m+n} intervalů J′⊆𝔼mJ' \subseteq \mathbb{E}_m, J″⊆𝔼nJ'' \subseteq \mathbb{E}_n. Nechť existuje ∫Jf(𝒙,𝒚)d𝒙𝒚\int_{J} f(\mathbf{x}, \mathbf{y}) \,d\mathbf{xy} a nechť pro každé 𝒙∈J′\mathbf{x} \in J', resp. 𝒚∈J″\mathbf{y} \in J'', existuje ∫J′f(𝒙,𝒚)d𝒙a∫J″f(𝒙,𝒚)d𝒚\int_{J'} f(\mathbf{x}, \mathbf{y}) \,d\mathbf{x} \qquad \text{a} \qquad \int_{J''} f(\mathbf{x}, \mathbf{y}) \,d\mathbf{y} Potom je ∫Jf(𝒙,𝒚)d𝒙𝒚=∫J′(∫J″f(𝒙,𝒚)d𝒚)d𝒙=∫J″(∫J′f(𝒙,𝒚)d𝒙)d𝒚\int_J f(\mathbf{x}, \mathbf{y}) \,d\mathbf{xy} = \int_{J'} \left( \int_{J''} f(\mathbf{x}, \mathbf{y}) \,d\mathbf{y} \right) \,d\mathbf{x} = \int_{J''} \left( \int_{J'} f(\mathbf{x}, \mathbf{y}) \,d\mathbf{x} \right) \,d\mathbf{y}

Funkce více proměnných.

Definice 0.295 (Parciální derivace). Pro funkci f(x1,...,xn)f(x_1,...,x_n) a bod 𝐚\textbf{a} definujme funkci ϕk(t)=f(a1,...,ak−1,t,ak+1,...an)\phi_k(t) = f(a_1,...,a_{k-1},~t~,a_{k+1},...a_n) Parciální derivace5 funkce ff podle proměnné xkx_k v bodě 𝐚\textbf{a} je (obvyklá) derivace funkce ϕk\phi_k v bodě aka_k limh→0ϕk(ak+h)−ϕk(ak)h=limh→0f(a1,...,ak−1,ak+h,ak+1,...an)−f(𝐚)h.\lim_{h \rightarrow 0} \frac{\phi_k(a_k + h) - \phi_k(a_k)}{h} = \lim_{h\rightarrow 0}\frac{f(a_1,...,a_{k-1},a_k+h,a_{k+1},...a_n) - f(\textbf{a})}{h}. Značíme ji:  ∂f(𝐚)∂xknebo:∂f∂xk(𝐚).\dfrac{\partial f(\textbf{a})}{\partial x_k} ~~\textrm{nebo:}~~ \dfrac{\partial f}{\partial x_k} (\textbf{a}).

Definice 0.296 (Totální diferenciál). Funkce ff má totální diferenciál v bodě a, existuje-li funkce μ\mu spojitá v okolí UU bodu 𝐨∈ℝn\textbf{o} \in \mathbb{R}^n taková, že μ(𝐨)=0\mu(\textbf{o}) = 0 a čísla A1,...,AnA_1,...,A_n pro která f(𝐚+𝐡)−f(𝐚)=∑k=1nAkhk+||𝐡||μ(𝐡).f(\textbf{a}+\textbf{h}) - f(\textbf{a}) = \sum^n_{k=1}A_kh_k+||\textbf{h}||\mu(\textbf{h}). S použitím skalárního součinu jde též zapsat jako f(𝐚+𝐡)−f(𝐚)=𝐀𝐡+||𝐡||μ(𝐡)f(\textbf{a} + \textbf{h}) - f(\textbf{a}) = \textbf{Ah} + ||\textbf{h}|| \mu (\textbf{h})

Lemma 0.1 (Spojitost, parciální derivace a totální diferenciál). Nechť má funkce ff totální diferenciál v bodě a. Potom je ff spojitá v a, a má všechny parciální derivace v a s hodnotami ∂f(𝐚)∂xk=Ak.\displaystyle \frac{\partial f(\textbf{a})}{\partial x_k} = A_k.

Věta 0.120 (Spojité parciální derivace a totální diferenciál). Nechť má ff spojité parciální derivace v okolí bodu a. Potom má v a totální diferenciál.

Pravidla pro parciální derivace
Pravidlo Vzorec pro parciální derivaci Příklad
Součet ∂∂x(f(x)+g(x))=∂f∂x+∂g∂x\dfrac{\partial}{\partial x} \big( f(x) + g(x) \big) = \dfrac{\partial f}{\partial x} + \dfrac{\partial g}{\partial x} ∂∂x(x2+y)=2x+0\dfrac{\partial}{\partial x}(x^2 + y) = 2x + 0
Násobení ∂∂x(f(x)g(x))=∂f∂xg(x)+f(x)∂g∂x\dfrac{\partial}{\partial x} \big( f(x)\, g(x) \big) = \dfrac{\partial f}{\partial x}\, g(x) + f(x)\, \dfrac{\partial g}{\partial x} ∂∂x(x⋅y)=1⋅y+x⋅0\dfrac{\partial}{\partial x}(x \cdot y) = 1 \cdot y + x \cdot 0
Dělení ∂∂x(f(x)g(x))=∂f∂xg(x)−f(x)∂g∂x(g(x))2\dfrac{\partial}{\partial x} \left( \dfrac{f(x)}{g(x)} \right) = \dfrac{ \frac{\partial f}{\partial x}\, g(x) - f(x)\, \frac{\partial g}{\partial x} }{ \big( g(x) \big)^2 } ∂∂x(xy)=1⋅y−x⋅0y2\dfrac{\partial}{\partial x}\left(\dfrac{x}{y}\right) = \dfrac{1 \cdot y - x \cdot 0}{y^2}
Chain rule ∂z∂x=∑k=1n∂f∂uk⋅∂uk∂x\dfrac{\partial z}{\partial x} = \sum\limits_{k=1}^n \dfrac{\partial f}{\partial u_k} \cdot \dfrac{\partial u_k}{\partial x} z=u2,u=x+y⤳∂z∂x=2u⋅∂u∂x=2(x+y)⋅1\begin{matrix} z = u^2,\\ u=x+y \end{matrix} \leadsto \frac{\partial z}{\partial x} = 2u \cdot \frac{\partial u}{\partial x} = 2(x+y)\cdot 1

Věta 0.121 (O záměnnosti). Mějme funkci f(x,y)f(x,y) takovou, že existují parciální derivace ∂2f∂x∂y\frac{\partial ^2 f}{\partial x \partial y} a ∂2f∂y∂x\frac{\partial ^2 f}{\partial y \partial x}, které jsou spojité v nějakém okolí bodu (x,y)(x,y). Potom: ∂2f(x,y)∂x∂y=∂2f(x,y)∂y∂x\frac{\partial ^2 f(x,y)}{\partial x \partial y} = \frac{\partial ^2 f(x,y)}{\partial y \partial x}

Věta 0.122 (Lagrangeova věta ve více proměnných). Nechť má ff spojité parciální derivace v konvexní otevřené množině U⊆𝔼nU \subseteq \mathbb{E}_{n}. Potom pro libovolné dva body x,y∈Ux,y \in U ∃0≤θ≤1\exists 0 \leq \theta \leq 1 takové, že: f(𝒚)−f(𝒙)=∑j=1n∂f(𝒙+θ(𝒚−𝒙))∂xj(yj−xj),resp.f(𝒚)−f(𝒙)=∇f(𝐜)(𝐲−𝐱),f(\mathbf{y}) - f(\mathbf{x}) = \sum^{n}_{j=1} \frac{\partial f(\mathbf{x} + \theta (\mathbf{y}-\mathbf{x}))}{\partial x_j}(y_j - x_j) , \quad \text{resp.} \quad f(\mathbf{y}) - f(\mathbf{x}) = \nabla f(\textbf{c}) (\textbf{y} - \textbf{x}), kde 𝐜=𝒙+θ(𝒚−𝒙)\textbf{c} = \mathbf{x} + \theta (\mathbf{y}-\mathbf{x}) (konvexní kombinace 𝒙,𝒚\mathbf{x},\mathbf{y}) a ∇f(p)=(∂f∂x1,…,∂f∂xn)T\nabla f(p) = (\frac{\partial f}{\partial x_1}, \ldots, \frac{\partial f}{\partial x_n})^T je gradient funkce ff.

Výpočet extrémů pomocí parciálních derivací.

Mějme funkci f:ℝn→ℝ,f(x1,…,xn)f : \mathbb{R}^n \to \mathbb{R}, \quad f(x_1, \dots, x_n).

  1. Najdeme stacionární body tak, že položíme první parciální derivace rovny nule: ∂f∂x1(x1,…,xn)=0,∂f∂x2(x1,…,xn)=0,…,∂f∂xn(x1,…,xn)=0.\frac{\partial f}{\partial x_1}(x_1, \dots, x_n) = 0, \quad \frac{\partial f}{\partial x_2}(x_1, \dots, x_n) = 0, \quad \dots, \quad \frac{\partial f}{\partial x_n}(x_1, \dots, x_n) = 0.

  2. V těchto bodech vyšetříme druhé derivace pomocí Hessiánu: Hf(x)=[∂2f∂x12∂2f∂x1∂x2⋯∂2f∂x1∂xn∂2f∂x2∂x1∂2f∂x22⋯∂2f∂x2∂xn⋮⋮⋱⋮∂2f∂xn∂x1∂2f∂xn∂x2⋯∂2f∂xn2], pro f(x,y) jen jednoduše: Hf=[fxxfxyfyxfyy].H_f(x) = \begin{bmatrix} \dfrac{\partial^2 f}{\partial x_1^2} & \dfrac{\partial^2 f}{\partial x_1 \partial x_2} & \cdots & \dfrac{\partial^2 f}{\partial x_1 \partial x_n} \\ \dfrac{\partial^2 f}{\partial x_2 \partial x_1} & \dfrac{\partial^2 f}{\partial x_2^2} & \cdots & \dfrac{\partial^2 f}{\partial x_2 \partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \dfrac{\partial^2 f}{\partial x_n \partial x_1} & \dfrac{\partial^2 f}{\partial x_n \partial x_2} & \cdots & \dfrac{\partial^2 f}{\partial x_n^2} \end{bmatrix}, \text{ pro $f(x,y)$ jen jednoduše: } H_f=\begin{bmatrix} f_{xx} & f_{xy}\\ f_{yx} & f_{yy} \end{bmatrix}.

  3. Typ extrému určíme pomocí kritéria pozitivní/negativní definitnosti Hessiánu:

Existence extrémů pro funkce více proměnných.

Věta 0.123. Pokud je ff spojitá na kompaktní množině K⊂ℝnK \subset \mathbb{R}^n , pak dle Weierstrassovy věty nabývá ff na KK svého maxima i minima.

Věta 0.124 (Nutná podmínka pro lokální extrém). Mějme funkci f:D⊆ℝm→ℝf \colon D \subseteq \mathbb{R}^m \to \mathbb{R}. Pokud má ff v bodě a∈Da \in D lokální extrém, potom platí jedna z podmínek:

  1. ∀i=1,…,m:∂f(a)∂xi=0\forall i=1,\ldots,m :~~ \frac{\partial f(a)}{\partial x_i} = 0, nebo derivace neexistuje.

  2. Bod aa je na hranici DD.

Věta 0.125 (Postačující podmínka pro extrém). Mějme funkci f:D⊆ℝm→ℝf \colon D \subseteq \mathbb{R}^m \to \mathbb{R}, bod aa uvnitř DD a dále platí, že ∂2f∂xi∂xj\frac{\partial^2 f}{\partial x_i \partial x_j} jsou spojité v aa, a ∂f(a)∂xi=0\frac{\partial f(a)}{\partial x_i} = 0 (podezřelý z extrému). Pak:

  1. Pokud D2f(a)D^2 f(a) je pozitivně definitní, pak ff nabývá v aa lokálního minima.

  2. Pokud D2f(a)D^2 f(a) je negativně definitní, pak ff nabývá v aa lokálního maxima.

  3. Pokud D2f(a)D^2 f(a) je indefinitní, pak ff v aa nenabývá lokálního extrému.

Tato matice D2f(a)D^2 f(a) se nazývá Hessova matice a značí se H(a)H(a).

Vázané extrémy.

Cílem je hledat extrémy nějakého zobrazení f(x)f (x) na nějaké omezené množině {x:g(x)=0}\{x : g(x) = 0\}.

Věta 0.126 (O hledání extrému funkcí s vazbami). Buďte f,g1,...,gkf,g_1, ... , g_k reálné funkce definované na otevřené množině D⊆𝔼nD \subseteq \mathbb{E}_n. Nechť mají spojité parciální derivace. Nechť je hodnost matice M=(∂g1∂x1…∂g1∂xn⋮⋱⋮∂gk∂x1…∂gk∂xn)M = \begin{pmatrix} \frac{\partial g_1}{\partial x_1} & \dots & \frac{\partial g_1}{\partial x_n}\\ \vdots & \ddots & \vdots\\ \frac{\partial g_k}{\partial x_1} & \dots & \frac{\partial g_k}{\partial x_n}\\ \end{pmatrix} maximální, tedy k≤nk \leq n, v každém bodě oboru DD.
Jestliže funkce ff nabývá v bodě 𝒂=(a1,...,an)\mathbf{a} = (a_1, ... , a_n) lokálního extrému podmíněného vazbami ∀i∈{1,...,k}gi(x1,...,xn)=0\forall i \in \{ 1, ... , k \} \quad g_i(x_1, ... , x_n) = 0 Pak existují čísla λ1,...,λk\lambda _1, ... , \lambda _k, Lagrangeovy multiplikátory, taková, že ∀i∈1,...,n\forall i \in {1, ... , n} platí ∂f(𝒂)∂xi+∑j=1kλj⋅∂gj(𝒂)∂xi=0\frac{\partial f(\mathbf{a})}{\partial x_i} + \sum_{j=1}^{k}\lambda_j \cdot \frac{\partial g_j(\mathbf{a})}{\partial x_i} = 0 nebo ekvivalentně přes gradienty jako ∇f(𝐚)+𝛌⋅∇g(𝐚)=0\nabla f(\mathbf{a}) + \boldsymbol{\lambda} \cdot \nabla g(\mathbf{a}) = 0

Ilustrační příklad:

Nechť f(x,y)=xyf(x,y)=xy a g(x,y)=x2+y2−1g(x,y)=x^2+y^2-1. Podle věty hledáme∇f(x,y)+λ∇g(x,y)=𝟎,g(x,y)=0.[∂f∂x∂f∂y]+λ[∂g∂x∂g∂y]=𝟎[yx]+λ[2x2y]=𝟎⤳y=−2λx,x=−2λy.\begin{flalign*} \nabla f(x,y) + \lambda\,\nabla g(x,y) &= \mathbf 0, ~~~\qquad g(x,y)=0.\\ \begin{bmatrix} \frac{\partial f}{\partial x} \\ \frac{\partial f}{\partial y} \end{bmatrix} + \lambda \begin{bmatrix} \frac{\partial g}{\partial x} \\ \frac{\partial g}{\partial y} \end{bmatrix} &= \textbf{0}\\ \begin{bmatrix} y \\ x \end{bmatrix} + \lambda \begin{bmatrix} 2x \\ 2y \end{bmatrix} &= \textbf{0} \quad \leadsto \quad \begin{matrix} y = -2\lambda x,\\ x = -2\lambda y. \end{matrix} \end{flalign*} Máme tři rovnice o třech neznámých. Určíme x=4λ2xx = 4\lambda^2 x, a máme x=0x=0, nebo 4λ2=14\lambda^2=1 (pro λ=±12\lambda=\pm\tfrac{1}{2}). Dosadíme do g(x,y)=x2+y2−1g(x,y)=x^2+y^2-1 a dopočítáme yy. Následně dosadíme body do f(x,y)f(x,y) a zjistíme, že v bodech (±12,±12)\Big(\pm\frac 1{\sqrt{2}},\pm\frac 1{\sqrt{2}}\Big) nabývá f=12f=\frac 12 maxima, v bodech (±12,∓12)\Big(\pm\frac 1{\sqrt{2}},\mp\frac 1{\sqrt{2}}\Big) nabývá f=−12f=-\frac 12 minima a body (0,±1)(0,\pm 1) dávají f=0f=0 a nejsou tudíž extrémy.

Metrický prostor.

Definice 0.297 (Metrický prostor). Nechť XX je množina, d:X×X→ℝd: X \times X \rightarrow \mathbb{R} funkce taková, že platí:

pak (X,d)(X,d) je metrický prostor.

Příklad 0.5. Metrické prostory jsou například: (ℝ,|x−y|)(\mathbb{R}, |x-y|), (ℂ,|x−y|)(\mathbb{C},|x-y|).

Definice 0.298 (Euklidovský prostor 𝔼n\mathbb{E}_n). Definujeme jako metrický prostor (ℝn,d)(\mathbb{R}^n,d), kde dd: d((x1,...,xn),(y1,...,yn))=∑i(xi−yi)2d((x_1,...,x_n),(y_1,...,y_n)) = \sqrt{\sum_i(x_i-y_i)^2} Pro nás zvlášť důležitý, známý v podobě vektorového prostoru ℝn\mathbb{R}^n se skalárním součinem ⟨𝐮|𝐯⟩\langle \textbf{u} | \textbf{v} \rangle a normou ∥𝐮∥=𝐮𝐮\|\textbf{u}\| = \sqrt{\textbf{uu}} a vzdáleností d(𝐮,𝐯)=||𝐮−𝐯||d(\textbf{u},\textbf{v}) = ||\textbf{u}-\textbf{v} ||

Definice 0.299 (Diskrétní prostor). Definujeme jako (X,d)(X,d), kde d(x,y)=1d(x,y) = 1 pro x≠yx \neq y

Definice 0.300 (Podprostor). Buď (X,d)(X, d) metrický prostor. Pak (Y,d′)(Y, d') je podprostor, kde Y⊆XY \subseteq X a ∀x,y∈Y:d′(x,y)=d(x,y)\forall x,y \in Y : d'(x,y) = d(x,y).

Uzavřené a otevřené množiny.

Definice 0.301 (Okolí). Nechť (X,d)(X,d) je metrický prostor, pak ∀x∈X,∃ε>0\forall x\in X, \exists\varepsilon>0: Ω(x,ε)={y∈X|d(x,y)<ε}.\Omega (x,\varepsilon) = \{ y\in X\ |\ d(x,y) < \varepsilon \}. Formulaci Ω(x,ε)\Omega (x,\varepsilon) se říká otevřená koule s poloměrem ε\varepsilon okolo xx.

Definice 0.302 (Otevřená množina). U⊆(X,d)U \subseteq (X,d) je otevřená, pokud je okolím každého svého bodu, neboli ∀x∈U∃δ>0:Ω(x,δ)⊆U=(x−δ,x+δ)∩𝑼.\forall x \in U~\exists\delta>0: \Omega(x,\delta) \subseteq U ~=~ (x-\delta, x+\delta)\boldsymbol{\cap ~U} .

Definice 0.303 (Uzavřená množina). Nechť V⊆(X,d)V \subseteq (X,d). Pokud každá posloupnost (an)⊆V(a_n) \subseteq V má lim⁡an=a∈X\lim a_n = a \in X, pak a∈Va \in V a VV nazveme uzavřenou množinou. (Alternativě, pokud je X\VX\setminus V otevřená.)

Příklad 0.6. Uvážíme-li interval (0,∞)\left(0, \infty\right) s Euklidovskou metrikou, pak

Spojitost funkce na metrickém prostoru.

Definice 0.304 (Spojité zobrazení). f:(X,d)→(Y,d′)f \colon (X,d) \to (Y, d') je spojité zobrazení, pokud (∀x∈X)(∀ε>0)(∃δ>0)(∀y∈X):d(x,y)<δ⟹d′(f(x),f(y))<ε.(\forall x \in X) (\forall \varepsilon > 0) (\exists \delta > 0)(\forall y \in X):~ d(x,y) < \delta \implies d'(f(x), f(y)) < \varepsilon.

Definice 0.305 (Konvergence). Posloupnost (xn)n(x_n)_n v metrickém prostoru (X,d)(X, d) konverguje k x∈Xx \in X, pokud ∀ε>0∃n0:∀n≥n0:d(xn,x)<ε.\forall \varepsilon > 0\ \exists n_0: \forall n \ge n_0: d(x_n, x) < \varepsilon.

Věta 0.127 (Složení spojitých zobrazení je spojité). Pokud jsou f:(X1,d1)→(X2,d2)f: (X_1,d_1) \to (X_2, d_2) a g:(X2,d2)→(X3,d3)g: (X_2,d_2) \to (X_3, d_3) spojité, pak je spojité i g∘f:(X1,d1)→(X3,d3)~g \circ f: (X_1,d_1) \to (X_3,d_3).

Věta 0.128 (Věta o konvergenci). Zobrazení f:(X1,d1)→(X2,d2)f: (X_1,d_1) \to (X_2,d_2) je spojité ⇔\iff pro každou (xn)n(x_n)_n konvergentní v (X1,d1)(X_1,d_1), posloupnost (f(xn))n(f(x_n))_n konverguje v (X2,d2)(X_2,d_2) a platí lim⁡nf(xn)=f(lim⁡nxn)\displaystyle \lim_n f(x_n) = f(\lim_n x_n).

Kompaktnost.

Definice 0.306 (Kompaktní množina). Množina je kompaktní, pokud je uzavřená a omezená.

Definice 0.307 (Kompaktní metrický prostor). Metrický prostor (X,d)(X,d) je kompaktní, pokud každá posloupnost v něm obsahuje konvergentní podposloupnost.

Věta 0.129 (Extrémy spojité funkce na kompaktním prostoru). Buď (X,d)(X,d) kompaktní. Potom každá spojitá funkce f:(X,d)→ℝf:(X,d)\to \mathbb{R} nabývá minima i maxima (t.j. nejsou nekonečné).

Stejnoměrná spojitost.

Definice 0.308 (Stejnoměrná spojitost). Řekneme, že f:(X,d)→(Y,d′)f : (X,d) \to (Y,d') je stejnoměrně spojitá, pokud (∀ε>0)(∃δ>0)(∀x∈X)(∀y∈X):d(x,y)<δ⟹d′(f(x),f(y))<ε.(\forall \varepsilon > 0) (\exists \delta > 0) (\forall x \in X) (\forall y\in X) : ~d(x,y) < \delta \implies d'(f(x),f(y)) < \varepsilon.

V porovnání s definicí normální spojitosti je rozdíl v pozici kvantifikátorů ∀x,y\forall x, y (v definici spojitosti jsou na úplném začátku). To odpovídá tomu, že pro spojitost požadujeme okénko pouze pro jeden bod a ne pro celou funkci, jak je tomu u stejnoměrné spojitosti.

Intuice.

Geometrický význam je ten, že pro libovolnou vzdálenost ε\varepsilon v yy existuje δ\delta t. ž. okénko o velikosti (δ,ε)(\delta, \varepsilon) umístěné do libovolného místa v grafu není grafem protnuto nahoře ani dole. Na obrázku 0.1 je vidět, že funkce x\sqrt{x} stejnosměrnou spojitost splňuje, kdežto funkce 1x\frac{1}{x} nikoliv.

Geometrický význam stejnosměrné spojitosti pro f(x)=1/xf(x) = 1/x a g(x)=xg(x) = \sqrt{x} na intervalu ℝ+\mathbb{R}^+.

Věta 0.130 (Spojitost zobrazení na kompaktním prostoru). Pokud je (X,d)(X,d) kompaktní, pak je každé spojité zobrazení f:(X,d)→(Y,d′)f: (X,d) \to (Y, d') stejnoměrně spojité.

Pokročilé algoritmy a datové struktury

Dynamické programování

Princip.

Začneme s rekurzivním algoritmem, který je exponenciálně pomalý. Odhalíme opakované výpočty stejných podproblémů. Uděláme si tabulku (cache), do které zapisujeme, které podproblémy jsme už vyřešili. Cache lze vyplňovat bez rekurze, zvolíme vhodné pořadí podproblémů. Získáme tak stejně rychlý, ale jednodušší algoritmus. (Topologicky uspořádáme DAG).

Nejdelší rostoucí podposloupnost.

Chceme najít podposloupnost která je ostře rostoucí. Problém si nejprve rozdělíme na hledání počtu prvků (největší možný).
Nechť NRP(i)\text{NRP}(i) je délka Nejdelší Rostoucí Podposloupnosti začínající prvkem xix_i.

d←1d \gets 1
dd

Rekurze se můžeme zbavit a tabulku vyplňovat postupně od největšího ii k nejmenšímu. Budeme tedy počítat T[i]T [i], což bude délka nejdelší ze všech rostoucích podposloupností začínajících xix_i.

x0←−∞x_0 \gets -\infty
délka T[0]T[0]

Editační vzdálenost – Levenstein 𝒪(n⋅m)\mathcal{O}(n \cdot m).

Máme následující edatační operace: změna/ vložení/ smazání jednoho znaku.
Definujme L(x1…xn,y1…ym)L(x_1 \dots x_n, y_1 \dots y_m) jako délku nejkratší posloupnosti editačních operací, která převede x1…xnx_1 \dots x_n na y1…ymy_1 \dots y_m.

Platí následující podmínky:

  1. Pokud x1=y1x_1 = y_1: L(x2…xn,y2…ym)L(x_2 \dots x_n, y_2 \dots y_m)

  2. Změna x1x_1 na y1y_1: 1+L(x2…xn,y2…ym)1 + L(x_2 \dots x_n, y_2 \dots y_m)

  3. Vložení y1y_1: 1+L(x1…xn,y2…ym)1 + L(x_1 \dots x_n, y_2 \dots y_m)

  4. Smazání x1x_1: 1+L(x2…xn,y1…ym)1 + L(x_2 \dots x_n, y_1 \dots y_m)

Celkem tak máme L(ϵ,ϵ)=0L(\epsilon, \epsilon) = 0, a :
L(x1…xn,y1…ym)=min⁡((1)(2)(3)(4)).L(x_1 \dots x_n, y_1 \dots y_m) = \min((1)(2)(3)(4)).

Otočíme směr výpočtu a tabulku TT s výsledky podproblémů budeme vyplňovat bez použití rekurze. Představíme-li si ji jako matici, každý prvek závisí pouze na těch, které leží napravo a dolů od něj. Tabulku proto můžeme vyplňovat po řádcích zdola nahoru, zprava doleva. Tím získáme jednodušší algoritmus, který běží v čase Θ(nm)\Theta(nm).

for i=1,…,n+1i = 1, \ldots , n + 1 do T[i,m+1]←n−i+1T [i, m + 1] \gets n - i + 1.
for j=1,…,m+1j = 1, \ldots , m + 1 do T[n+1,j]←m−j+1T [n+1, j] \gets m - j + 1.
L(x1…xn,y1…ym)=T[1,1]L(x_1\ldots x_n , y_1 \ldots y_m ) = T [1, 1].

Grafové algoritmy

Komponenty silné souvislosti orientovaných grafů.

Nechť G(V)G(V) je orientovaný graf a →,↔\rightarrow, \leftrightarrow jsou relace na VV vyznačující:

Definice 0.309 (Silná souvislost). Říkáme, že graf je silně souvislý ⇔\iff relace ↔\leftrightarrow má 11 komponentu.

Definice 0.310 (Komponenty silné souvislosti). Podgrafy indukované třídami ↔\leftrightarrow.

Definice 0.311 (Graf komponent). Pro graf GG definujeme graf komponent C(G)C(G) jako:

Sestrojíme GTG^T
Z←Z \gets prázdný zásobník
Opakované DFS na GTG^T, při opouštění vrcholu přidáme do ZZ
Pole ∀v:komp(v)←∅\forall v: \text{komp}(v) \gets \emptyset

Toky v sítích.

Definice 0.312 (Průtok). Průtok f*:E→ℝf^*: E \to {\mathbb{R}} definujeme pro tok ff jako: f*(uv)=f(uv)−f(vu)f^*(uv) = f(uv) - f(vu).

Definice 0.313 (Síť rezerv). Síť rezerv k toku ff v síti S=(V,E,z,s,c)S=(V,E,z,s,c) je síť R(S,f):=(V,E,z,s,r)R(S,f):=(V,E,z,s,r), kde r(e)r(e) je rezerva hrany ee při toku ff. Rezerva je r(u,v)=c(u,v)−f*(u,v)r(u,v) = c(u,v)-f^*(u,v).

Definice 0.314 (Blokující tok). Pokud na každé orientované zszs-cestě PP, ∃e∈P:f(e)=c(e)\exists e\in P: f(e) = c(e).

Definice 0.315 (Vrstevnatá síť). Síť je vrstevnatá (pročištěná), pokud všechny její vrcholy a hrany leží na nejkratších cestách ze zz do ss.

Dinitzův algoritmus.

Začne s nulovým tokem a bude ho vylepšovat pomocí nějakých pomocných toků v síti rezerv, až se dostane k maximálnímu toku. Počet potřebných iterací přitom bude záviset na tom, jak vydatné pomocné toky seženeme – na jednu stranu bychom chtěli, aby byly podobné maximálnímu toku, na druhou stranu jejich výpočtem nechceme trávit příliš mnoho času. Vhodným kompromisem jsou blokující toky.

f←𝑛𝑢𝑙𝑜𝑣ý 𝑡𝑜𝑘f \gets \textit{nulový tok}

tok ff.

g←g \gets nulový tok

tok gg.

Lemma 0.2 (O korektnosti). Pokud se algoritmus zastaví, vydá maximální tok.

Lemma 0.3. V každém průchodu Dinicova algoritmu vzroste ll alespoň o 1.

Goldbergův algoritmus.

Hledá maximální toku v síti. Je jednodušší než Dinicův algoritmus a má po pár snadných úpravách stejnou, nebo dokonce lepší časovou složitost.

Goldbergův algoritmus začne s ohodnocením hran, které ani nemusí být tokem, a postupně ho upravuje a zmenšuje, až se z něj stane tok, a to dokonce tok maximální.

Definice 0.316 (Vlna). Funkce f:E→ℝ0+f : E \to {\mathbb{R}}^+_0 je vlna v síti (V,E,z,s,c)(V, E, z, s, c), splňuje-li obě následující podmínky:

Každý tok je tedy vlnou, ale opačně tomu tak být nemusí. V průběhu výpočtu se tedy potřebujeme postupně zbavit nenulových přebytků ve všech vrcholech kromě zdroje a spotřebiče. K tomu bude sloužit následující operace:

Definice 0.317 (Převedení přebytku). Převedení přebytku po hraně uvuv můžeme provést, pokud fΔ(u)>0f^\Delta (u) > 0 a r(uv)>0r(uv) > 0. Proběhne tak, že po hraně uvuv pošleme δ=min⁡(fΔ(u),r(uv))\delta = \min(f^\Delta (u), r(uv)) jednotek toku, podobně jako v předchozích algoritmech buď přičtením po směru nebo odečtením proti směru.

Rádi bychom postupným převáděním všechny přebytky přepravili do spotřebiče, nebo je naopak přelili zpět do zdroje. Chceme se ovšem vyhnout přelévání přebytků tam a zase zpět, takže vrcholům přiřadíme výšky –- to budou nějaká přirozená čísla h(v)h(v).

Přebytek pak budeme ochotni převádět pouze z vyššího vrcholu do nižšího. Pokud se stane, že nalezneme vrchol s přebytkem, ze kterého nevede žádná nenasycená hrana směrem dolů, budeme tento vrchol zvedat –- tedy zvyšovat mu výšku po jedné, než se dostane dostatečně vysoko, aby z něj přebytek mohl odtéci.

Nastavíme počáteční výšky:

h(z)←n\qquad h(z) \gets n

h(v)←0\qquad h(v) \gets 0 pro všechny v≠zv \neq z

Vytvoříme počáteční vlnu:

f←\qquad f \gets všude nulová funkce

f(zv)←c(zv)\qquad f (zv) \gets c(zv), kdykoliv zv∈Ezv \in E

Maximální tok ff.

Toky v celočíselně ohodnocených grafech.

Mějme nějaký bipartitní graf (V,E)(V,E). Přetvoříme ho na síť (V′,E′,z,s,c)(V',E',z,s,c) následovně:

Najdeme maximální celočíselný tok a jelikož ∀e:c(e)=1\forall e: c(e) = 1, musí po každé hraně téci buď 00 nebo 11. Do výsledného párování vložíme právě ty hrany původního grafu, po kterých teče 11.

Algoritmy vyhledávání v textu.

Definice.

Nechť JJ je délka jehly, SS délka sena. Dále budeme pracovat s následujícími pojmy:

Knuth-Morris-Prat. Θ(J+S)\Theta(J + S)

Aalgoritmus pro hledání jednoho vzoru v textu. Stavy očíslujeme 0,…,J0, \ldots, J.

image

while ι[s]≠x∧s≠0\iota[s] \neq x \land s \neq 0 do s←Z[s]s \gets Z[s].
if ι[s]=x\iota[s] = x then s←s+1s\gets s+1.

s←0s \gets 0

Z[0]←∅Z[0] \gets \emptyset Z[1]←0Z[1] \gets 0
s←0s \gets 0

Aho-Corasick. Θ(J+S+V)\Theta(J+S+V)

Hledání více řetězců najednou v textu. VV je počet výskytů v seně SS.
Máme ι1,…,ιN\iota_1, \ldots, \iota_N s délkami JiJ_i a seno σ\sigma délky SS.

Definice 0.318 (Zkratková hrana). Řekne, jaký je nejdelší vlastní suffix slova α\alpha, který je jehlou.

Algoritmus probíhá následovně:

  1. Nejprve vytvoříme trie (prefixový strom) všech vzorů.

  2. Pak přidáme tzv. fail odkazy mezi uzly pro přechod při neúspěchu.

  3. Nakonec procházíme text znak po znaku a sledujeme přechody v automatu, přičemž při každém kroku víme, zda právě skončil některý z hledaných vzorů.

image

if Dopredu(s,x)≠0(s,x) \neq 0 then s←s \gets Dopredu(s,x)(s,x)

s←s \gets koren

zalozime strom s korenem rr

vkladame do stromu slovo ι1…ιn\iota_1\dots \iota_n ⤳\leadsto Dopredu(−,−)(-, -), ⤳\leadsto Slovo(−)(-)

Zpet(r)←0(r)\gets 0

F←F \gets fronta, vlozime do ni syny korene

synum korene nastavime zpetnou hranu na koren, neboli Zpet(−)←r(-) \gets r

Algebraické algoritmy.

Poznámka 0.16. Pro připomenutí. Pracujeme s různými tvary komplexních čísel:

Definice 0.319 (Primitivní nn-tá odmocnina z 11). Číslo ω∈ℂ\omega\in {\mathbb{C}} je primitivní nn-tá odmocnina z 11, pokud ωn=1\omega^n = 1 a žádné z čísel ω1,ω2,…,ωn−1\omega^1, \omega^2, \ldots , \omega^{n-1} není rovno 11.

Poznámka 0.17. Pro sudé nn je ωn/2=−1\omega^{n/2} = -1.
Platí totiž (ωn/2)2=ωn=1(\omega^{n/2} )^2 = \omega^n = 1, takže ωn/2\omega^{n/2} je druhá odmocnina z 11. Takové odmocniny jsou jenom dvě: 11 a −1-1, ovšem 11 to být nemůže, protože ω\omega je primitivní.

Definice 0.320 (Diskrétní Fourierova transformace (DFT)). Diskrétní Fourierova transformace je zobrazení ℱ:ℂn→ℂn\mathcal{F}:\mathbb{C}^{n}\to\mathbb{C}^{n}, které vektoru 𝒙=(x0,…,xn−1)\mathbf{x} = (x_0, \dots, x_{n-1}) přiřadí vektor 𝒚=(y0,…,yn−1)=ℱ(x)∈ℂn\mathbf{y} = (y_0, \dots, y_{n-1})=\mathcal F(x)\in {\mathbb{C}}^n daný předpisem ℱ(x)j=yj=∑k=0n−1xk⋅ωjk,\mathcal F(x)_j = y_{j} = \sum_{k=0}^{n-1} x_{k} \cdot \omega^{jk}, kde ω\omega je pevně zvolená primitivní nn-tá odmocnina z jedné. Vektor 𝒚\mathbf{y} se nazývá Fourierův obraz vektoru 𝒙\mathbf{x}.

Definice 0.321 (Fourierova Transformace). Fourierova transformace vektoru v→∈ℂn\vec{v} \in \mathbb{C}^n je dána maticovým násobením: ℱ(v→)k=(Ω⋅v→)k=∑j=0n−1v→j⋅ωjk\mathcal{F}(\vec{v})_k = (\Omega \cdot \vec{v})_k = \sum_{j=0}^{n-1} \vec{v}_j \cdot \omega^{jk} kde Ω=(111⋯11ω1ω2⋯ωn−11ω2ω4⋯ω2(n−1)⋮⋮⋮⋱⋮1ωn−1ω2(n−1)⋯ω(n−1)2)\Omega = \begin{pmatrix} 1 & 1 & 1 & \cdots & 1 \\ 1 & \omega^1 & \omega^2 & \cdots & \omega^{n-1} \\ 1 & \omega^2 & \omega^4 & \cdots & \omega^{2(n-1)} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & \omega^{n-1} & \omega^{2(n-1)} & \cdots & \omega^{(n-1)^2} \end{pmatrix} je Fourierova matice.

Definice 0.322 (Inverzní Fourierova Transformace IFFT). Inverzní Fourierova transformace je: ℱ−1(v→)k=1n∑j=0n−1v→j⋅ω−jk=(Ω‾⋅v→)k,\mathcal{F}^{-1}(\vec{v})_k = \frac{1}{n} \sum_{j=0}^{n-1} \vec{v}_j \cdot \omega^{-jk} = (\bar \Omega \cdot \vec v)_k, což odpovídá maticovému násobení s komplexně sdruženou maticí Ω‾\bar{\Omega}: Ω‾=(111⋯11ω−1ω−2⋯ω−(n−1)1ω−2ω−4⋯ω−2(n−1)⋮⋮⋮⋱⋮1ω−(n−1)ω−2(n−1)⋯ω−(n−1)2)\bar{\Omega} = \begin{pmatrix} 1 & 1 & 1 & \cdots & 1 \\ 1 & \omega^{-1} & \omega^{-2} & \cdots & \omega^{-(n-1)} \\ 1 & \omega^{-2} & \omega^{-4} & \cdots & \omega^{-2(n-1)} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & \omega^{-(n-1)} & \omega^{-2(n-1)} & \cdots & \omega^{-(n-1)^2} \end{pmatrix}

Věta 0.131 (Vlastnosti Fourierovy matice). Fourierova matice splňuje Ω⋅Ω‾=n⋅In\Omega \cdot \bar{\Omega} = n \cdot I_n, kde InI_n je jednotková matice řádu nn.

Poznámka 0.18 (Výpočet IFFT). Pro praktický výpočet IFFT použijeme stejný algoritmus FFT, ale:

RSA

Notace:

Zadefinujeme si:

p,q∈ℕp, q \in {\mathbb{N}} velká prvočísla, t.ž.: p≠qp\neq q
(N,e)(N,e) dvojice, veřejný klíč, kde N=p⋅qN = p\cdot q
φ(N)=(p−1)(q−1)\varphi(N) = (p-1)(q-1) Eulerova funkce
e∈ℕ,0<e<φ(N)e \in {\mathbb{N}}, ~~ 0<e<\varphi(N) šifrovací exponent
d∈ℕd \in {\mathbb{N}} dešifrovací exponent


Zároveň musí plati platit gcd⁡(e,φ(N))=1\gcd(e, \varphi(N))=1 a dále se hodí k výpočtům následující vztahy:

y=xe(mod⁡N)y = x^e \pmod N zašifrování plaintextu, výsledkem je ciphertext
x=yd(mod⁡N)x = y^d \pmod N dešifrování ciphertextu, výsledkem je plaintext
d⋅e≡1(mod⁡φ(N))d\cdot e \equiv 1 \pmod{\varphi(N)} .. získání dd (Euklidovým algoritmem)

Dešifrování se dá lehce odvodit: yd≡xe⋅d≡x1≡x(mod⁡N)y^d \equiv x^{e\cdot d} \equiv x^1 \equiv x \pmod N.

Popis algoritmu:

Bob si vygeneruje nahodná p,qp,q a vypočítá z nich N=p⋅qN=p\cdot q. Dále vypočítá Eulerovu funkci φ(N)\varphi(N) a následně vygeneruje číslo e∈ℕe\in {\mathbb{N}}, pro které platí gcd⁡(e,φ(N))=1\gcd(e, \varphi(N))=1. Tímto číslem zašifruje plaintext xx vztahem y=xe(mod⁡N)y = x^e \pmod N. Pak už jen nalezne číslo d∈ℕd \in {\mathbb{N}} euklidovým algoritmem d⋅e≡1(mod⁡φ(N))d\cdot e \equiv 1 \pmod{\varphi(N)}. Veřejný klíč, dvojici (N,e)(N, e), pošle Alici spolu s ciphertextem yy.

Alice přijme veřejný klíč (N,e)(N, e) a ciphertext yy. Pouze Alici je znám soukromý klíč (N,d)(N, d), využije ho k dešifrování yy. To udělá vztahem x=yd(mod⁡N)x = y^d \pmod N.

Eva nemá možnost si zprávu přečíst, protože nezná dešifrovací exponent dd. Musela by ho u­hád­nout, což není pravděpodobné, nebo by musela znát prvočísla p,qp,q. Kdyby znala p,qp,q mohla by si jednoduše dopočítat φ(N)\varphi(N) a následně dd tak, jak jsme to udělali my. Bezpečnost RSA tedy stojí na tom, že útočník není schopen rozložit N=p⋅qN=p\cdot q na p,qp,q, proto je potřeba je volit dostatečně velká.

Aproximační algoritmy.

Máme nějakou množinu přípustných řešení a každé z nich ohodnoceno cenou c(x)c(x). Mezi nimi hledáme optimální řešení s minimální cenou c*c^*. Vystačíme si s α\alpha-aproximací – přípustné řešení má cenu c′≤αc*c'\leq \alpha c^* pro α>1\alpha >1.

Definice 0.323 (Poměrová chyba). Poměrová chyba je poměr mezi výstupem a optimem je nejvýše α\alpha.

Definice 0.324 (Relativní chyba). Relativní chyba nepřekročí (c′−c*)/c*(c'-c^*)/c^*.

Aproximační schémata.

Definice 0.325 (PTAS - Polynomial-Time Approximation Scheme). Algoritmus je PTAS, pokud ∀ϵ>0\forall \epsilon > 0 najde v čase polynomiálním v nn (velikost vstupu), řešení s relativní chybou nejvýše ϵ\epsilon. Formálně: |ALG−OPT|OPT≤ϵ,\frac{|\mathrm{ALG} - \mathrm{OPT}|}{\mathrm{OPT}} \leq \epsilon, kde OPT\mathrm{OPT} je optimální řešení a ALG\mathrm{ALG} je řešení algoritmu.

Definice 0.326 (FPTAS - Fully Polynomial-Time Approximation Scheme). Algoritmus je FPTAS, pokud je PTAS a navíc jeho časová složitost je polynomiální jak v nn, tak v 1ϵ\frac{1}{\epsilon}. Formálně: Časová složitost=𝒪(p(n,1ϵ))\text{Časová složitost} = \mathcal O\left(p\left(n, \frac{1}{\epsilon}\right)\right) kde pp je nějaký polynom.

Příklad 0.7. Problém batohu má FPTAS. Problém TSP v obecných grafech má PTAS, ale ne FPTAS.

Poznámka 0.19. FPTAS je silnější požadavek než PTAS, protože vyžaduje polynomiální závislost na 1/ϵ1/\epsilon, ne jen na nn.

Problém obchodního cestujícího (TSP).

Definice 0.327 (Problém TSP). Mějme neorientovaný graf GG s nezáporně ohodnocenými hranami d(e)≥0d(e) \geq 0. Cílem je najít nejkratší hamiltonovskou kružnici v GG. Předpokládáme, že graf je úplný a splňuje trojúhelníkovou nerovnost: ∀x,y,z∈V:d(x,y)+d(y,z)≥d(x,z)\forall x, y, z \in V : d(x, y) + d(y, z) \geq d(x, z)

Najdi minimální kostru TT grafu GG.
Projdi kostru Eulerovským sledem (délka 2T2T).
Odstraň duplicity ve vrcholech pomocí “zkratek” (využitím trojúhelníkové nerovnosti).

Poznámka 0.20. Výsledná délka kružnice je ≤2T≤2OPT\leq 2T \leq 2\mathrm{OPT}, kde OPT\mathrm{OPT} je délka optimálního řešení.

Věta 0.132. Bez trojúhelníkové nerovnosti nelze TSP aproximovat (pokud P≠NPP \neq NP).

Problém batohu.

Definice 0.328 (Problém batohu). Mějme batoh s kapacitou HH a množinu předmětů 1,…,n1,\ldots,n s:

Cílem je najít podmnožinu P⊆{1,…,n}P \subseteq \{1,\ldots,n\} takovou, že: h(P)=∑i∈Phi≤Hac(P)=max⁡∑i∈Pci.h(P) = \sum_{i\in P} h_i \leq H \quad \text{a} \quad c(P) = \max \sum_{i\in P} c_i.

Odstraň všechny předměty s hi>Hh_i > H.
Spočítej cmax=max⁡icic_{\text{max}} = \max_i c_i a zvol M=⌈nε⌉M = \lceil \frac n\varepsilon \rceil pro libovolné ε>0\varepsilon > 0.
Kvantujeme ceny: pro i=1,…,ni=1,\ldots,n nechť ĉi=⌊ci⋅Mcmax⌋\hat{c}_i = \lfloor c_i \cdot \frac M{c_{\text{max}}} \rfloor.
Vyřešíme upravený problém batohu s ĉ1,…,ĉn\hat c_1, \ldots, \hat c_n dynamickým programováním.
Vrátíme předměty z optimálního řešení kvantovaného problému.

Poznámka 0.21. Zaokrouhlování hmotností by mohlo vést k nepřípustným řešením, ale zaokrouhlování cen je bezpečné.

Věta 0.133. Algoritmus poskytuje (1−ε)(1-\varepsilon)-aproximaci v čase O(n3/ε)O(n^3/\varepsilon).

Paralelní třídění komparátorových sítí.

Definice 0.329 (Komparátorová síť). Komparátorová síť je hradlová síť složená z komparátorů. Na vstupu má 22 čísla a výstopem je vlevo menší číslo, vpravo větší číslo.

Příklad 0.8 (Bubble sort 𝒪(n)\mathcal{O}(n)). Příkladem je Bubble sort, který jsme schopni udělat lineární:

image

Bitonické třídění.

Definice 0.330 (Čistá bitonická posloupnost). Posloupnost x0,…,xn−1x_0, \ldots, x_{n-1} je čistě bitonická, pokud existuje index kk takový, že:

Definice 0.331 (Bitonická posloupnost). Posloupnost je bitonická, pokud je cyklickou rotací nějaké čistě bitonické posloupnosti.

Definice 0.332 (Separátor). Separátor je obvod, který:

image

Vlastnosti.

Platí následující vlastnosti:

Poznámka 0.22. Za pomoci bitonických “třídiček” a “slévaček” jsme takto schopni vytvořit jednoduše Merge stort. (viz. Obr.)

image

Optimalizace

Základy lineárního a celočíselného programování

Dualita lineárního programování, Farkasovo lemma.

Definice 0.333 (Lineární program). Lineární program (LP) v kanonickém tvaru je následující optimalizační úloha daná maticí A∈ℝm×nA \in {\mathbb{R}}^{m\times n} a vektory 𝒃∈ℝm\boldsymbol{b} \in {\mathbb{R}}^m, 𝒄∈ℝn\boldsymbol{c} \in {\mathbb{R}}^n: max𝐜T𝐱pro𝐱∈ℝnza podmínekA𝐱≤𝐛\begin{aligned} \max &\quad \boldsymbol{c}^T \boldsymbol{x}\\ \text{pro} &\quad \boldsymbol{x} \in {\mathbb{R}}^n\\ \text{za podmínek} &\quad A\boldsymbol{x} \leq \boldsymbol{b} \end{aligned}

Celočíselný LP je program, kde x∈ℤnx \in {\mathbb{Z}}^n a standardní (rovnicový) tvar je Ax=b,x≥0Ax = b, x \ge 0.

Věta 0.134. Každou úlohu LP lze převést na standardní tvar.

Proof.

  1. Rovnice na nerovnice: A𝒙=𝒃⤳A𝒙≤𝒃∧A𝒙≥𝒃A\boldsymbol{x} = \boldsymbol{b} ~~\leadsto ~~ A\boldsymbol{x}\leq \boldsymbol{b} ~\land~ A\boldsymbol{x} \geq \boldsymbol{b}

  2. Nerovnice na rovnice: A𝒙≤𝒃⤳A𝒙+𝒛=𝒃;𝒛≥0A\boldsymbol{x} \leq \boldsymbol{b} ~~\leadsto~~ A\boldsymbol{x} + \boldsymbol{z} = \boldsymbol{b}; ~~ \boldsymbol{z} \geq 0

  3. Nezáporné na neomezené proměnné: 𝒙≥0⤳\boldsymbol{x} \geq 0 ~\leadsto přidáme podmínky nezápornosti jako nerovnice

  4. Neomezené na nezáporné proměnné: 𝒙i∈ℝn⤳𝒙i+−𝒙i−;𝒙i+≥0,𝒙i−≥0\boldsymbol{x}_i \in {\mathbb{R}}^n ~~\leadsto~~ \boldsymbol{x}_i^+ - \boldsymbol{x}_i^-; ~~ \boldsymbol{x}_i^+ \geq 0, \boldsymbol{x}_i^- \geq 0

 ◻

Definice 0.334 (Báze matice). Nechť A∈ℝm×nA \in {\mathbb{R}}^{m \times n} je matice s hodností mm. Báze matice AA je množina indexů sloupců B⊆{1,…,n}B \subseteq \{1, \ldots, n\} taková, že |B|=m|B| = m a podmatice ABA_B je regulární, tedy det⁡(AB)≠0\det(A_B) \neq 0.

Definice 0.335 (Množina přípustných řešení). Množina přípustných řešení je množina P={𝒙∣A𝒙=𝒃,𝒙≥0}.P = \{\boldsymbol{x} \mid A\boldsymbol{x} = \boldsymbol{b}, \boldsymbol{x}\geq 0\}.

Definice 0.336 (Bázické řešení). Bázické řešení je 𝒙∈P\boldsymbol{x}\in P, pokud existuje báze BB matice AA taková, že 𝒙i=0\boldsymbol{x}_i = 0 pro každé i∉Bi\notin B.

Poznámka 0.23. Každé bázi přísluší nejvýše jedno bázické řešení.

Poznámka 0.24. Řešení 𝒙∈P\boldsymbol{x}\in P je bázické ⇔\iff sloupce matice AKA_K, kde K={i∣𝒙i>0}K=\{i \mid \boldsymbol{x}_i > 0\}, jsou lineárně nezávislé.

Věta 0.135. Je-li účelová funkce (max⁡𝒄T𝒙,A𝒙=𝒃,𝒙≥0)(\max \boldsymbol{c}^T\boldsymbol{x}, A\boldsymbol{x} = \boldsymbol{b}, \boldsymbol{x}\geq 0) s alespoň jedním přípustným řešením shora omezená na množině PP přípustných řešení, potom ∀𝒙0∈P\forall \boldsymbol{x}_0 \in P existuje bázické řešení 𝒙‾\boldsymbol{\bar{x}} splňující 𝒄T𝒙0≤𝒄T𝒙‾\boldsymbol{c}^T\boldsymbol{x}_0 \leq \boldsymbol{c}^T\boldsymbol{\bar x}.

Definice 0.337 (Konvexní mnohostěn a vrchol). Konvexní mnohostěn PP je průnikem konečně mnoha poloprostorů: P={x∈ℝn,Ax≤b}P=\{x\in\mathbb{R}^{n},Ax\le b\}.

Bod v∈Pv\in P je vrchol, pokud existuje c∈ℝn∖{0}c\in\mathbb{R}^{n}\backslash\{0\} takové, že cTv>cTyc^{T}v > c^{T}y pro každé y∈P\{v}y\in P\setminus\{v\}.

Věta 0.136. Nechť P={x∈ℝn∣Ax=b,x≥0}P=\{x\in\mathbb{R}^{n} \mid Ax = b, x \ge 0\} a v∈Pv\in P. Potom vv je vrchol ⇔v\iff v je přípustné bázické řešení.

Definice 0.338 (Dualita). Nechť A∈ℝm×nA \in {\mathbb{R}}^{m\times n}. Pro LP (P) definujeme duální úlohu (D) následovně:

Věta 0.137 (Slabá věta o dualitě). Nechť 𝒙\boldsymbol{x} a 𝒚\boldsymbol{y} jsou přípustná řešení (P) a (D), pak 𝒄T𝒙≤𝒃T𝒚\boldsymbol{c}^T \boldsymbol{x} \leq \boldsymbol{b}^T\boldsymbol{y}.

Věta 0.138 (Silná věta o dualitě). Pro (P) a (D) platí právě jedno z následujících:

  1. (P) ani (D) nemají přípustné řešení,

  2. (P) je neomezená, (D) nemá přípustné řešení,

  3. (D) je neomezená, (P) nemá přípustné řešení,

  4. (P) i (D) mají přípustné, tedy i optimální řešení 𝒙*\boldsymbol{x}^* pro (P) a 𝒚*\boldsymbol{y}^* pro (D) a platí 𝒄T𝒙*=𝒃T𝒚*\boldsymbol{c}^T\boldsymbol{x}^* = \boldsymbol{b}^T\boldsymbol{y}^*.

Důsledek 0.7 (Podmínky komplementarity). Nechť 𝒙\boldsymbol{x} je přípustné řešení (P) a 𝒚\boldsymbol{y} je přípustné řešení (D). Potom 𝒙,𝒚\boldsymbol{x}, \boldsymbol{y} jsou optimální ⇔\iff

  1. 𝒙i=0\boldsymbol{x}_i = 0, nebo AiT𝒚=𝒄iA^T_i\boldsymbol{y} = \boldsymbol{c}_i, kde i=1,…,ni = 1,\ldots, n

  2. 𝒚j=0\boldsymbol{y}_j = 0, nebo Aj𝒙=𝒃jA_j\boldsymbol{x} = \boldsymbol{b}_j, kde j=1,…,mj = 1, \ldots, m

Poznámka 0.25. Podmínky komplementarity lze zapsat také jako 𝒚T(𝒃−A𝒙)=0\boldsymbol{y}^T(\boldsymbol{b} - A\boldsymbol{x}) = 0 a 𝒙T(AT𝒚−𝒄)=0\boldsymbol{x}^T(A^T\boldsymbol{y} - \boldsymbol{c}) = 0. To znamená, že pokud je v jedné úloze omezení splněno s ostrou nerovností, musí být v druhé úloze odpovídající proměnná rovna nule.

Lemma 0.4 (Farkasovo). Nechť A∈ℝm×nA\in {\mathbb{R}}^{m\times n} a nechť b∈ℝmb \in {\mathbb{R}}^m. Pak nastane právě jedna z následujících:

  1. Soustava A𝒙=𝒃A\boldsymbol{x} = \boldsymbol{b} má nezáporné řešení pro nějaké 𝒙≥0\boldsymbol{x} \geq 0,

  2. ∃𝒚\exists \boldsymbol{y} takové, že 𝒚TA≥0∧𝒚T𝒃<0\boldsymbol{y}^TA \geq 0 ~\land~ \boldsymbol{y}^T\boldsymbol{b} <0.

Definice 0.339 (Konvexní kužel). Konvexní kužel generovaný a1,…,ana_1, \ldots, a_n se definujecone(a1,…,an)={t1a1+…+tnan;t1,…,tm≥0}.cone(a_1, \ldots, a_n) = \{t_1a_1 + \ldots + t_na_n; ~t_1, \ldots, t_m \geq 0\}.

Lemma 0.5 (Farkasovo geometricky). Mějme libovolné vektory 𝒂1,𝒂2,…,𝒂n,𝒃∈ℝm\boldsymbol a_1, \boldsymbol a_2, \ldots, \boldsymbol a_n, \boldsymbol b \in {\mathbb{R}}^m, pak nastane právě jedna za následujících možností:

  1. Bod 𝒃∈cone(𝒂1,…,𝒂n)=C\boldsymbol{b} \in cone(\boldsymbol a_1, \ldots, \boldsymbol a_n) = C

  2. Existuje nadrovina hh procházející bodem 𝟎∈ℝm\boldsymbol 0 \in {\mathbb{R}}^m, t.j. h={𝒙∈ℝm;𝒚T𝒙=0}h = \{\boldsymbol{x} \in {\mathbb{R}}^m; ~\boldsymbol{y}^T\boldsymbol{x} = 0\} pro nějaké 𝒚∈ℝm\boldsymbol y \in {\mathbb{R}}^m, taková že všechny vektory 𝒂1,𝒂2,…,𝒂n\boldsymbol a_1, \boldsymbol a_2, \ldots, \boldsymbol a_n (tedy i celý CC) leží na jedné její straně, tj. 𝒚T𝒂i≥0\boldsymbol y^T \boldsymbol a_i \geq 0 pro všechna i=1,2,…,ni = 1, 2, \ldots, n, a 𝒃\boldsymbol b leží na straně druhé (ostře), tj. 𝒚T𝒃<0\boldsymbol y^T \boldsymbol b < 0.

image

Geometricky to znamená, že buď bb leží v konvexním kuželu generovaném sloupci AA, nebo existuje oddělující nadrovina.

Simplexová metoda, pivotovací pravidla.

Simplexová metoda iterativně přechází mezi bázickými přípustnými řešeními, která odpovídají vrcholům mnohostěnu.

Definice 0.340 (Simplexová tabulka). Simplexová tabulka TBT_B určená přípustnou bází BB je soustava m+1m+1 lineárních rovnic pro proměnné x1,x2,…,xnx_1, x_2, \ldots, x_n a zz, která má stejnou množinu řešení jako soustava Ax=bAx = b, z=cTxz = c^T x a v maticovém zápisu vypadá takto: xB=p+QxNz=z0+rTxN\begin{array}{c} x_B = p + Q x_N \\ \hline z = z_0 + r^T x_N \end{array} kde xBx_B je vektor bázických proměnných, N={1,2,…,n}\BN = \{1, 2, \ldots, n\} \setminus B, xNx_N je vektor nebázických proměnných, p∈ℝmp \in \mathbb{R}^m, r∈ℝn−mr \in \mathbb{R}^{n-m}, QQ je matice typu m×(n−m)m \times (n - m) a z0∈ℝz_0 \in \mathbb{R}.

Poznámka 0.26. Řešení 𝒙TB\boldsymbol{x}T_B je přípustné ⇔p≥0\iff p\geq 0. Řešení 𝒙TB\boldsymbol{x}T_B je optimální ⇔p≥0,r≤0\iff p\geq 0, ~r\leq 0.

V každém kroku vstupuje do báze proměnná s kladnou redukovaným cenou rv>0r_v > 0 a vystupuje proměnná, která jako první dosáhne nuly.

Definice 0.341 (Pivotovací krok). Máme BB bázi, kterou upravíme na B∪{v}\{u}B \cup \{v\} \setminus \{u\}.

  1. Vstupující proměnná: 𝒙v\boldsymbol{x}_v, že rv>0r_v > 0.

  2. Vystupující proměnná: 𝒙u\boldsymbol{x}_u, že Quv<0Q_{uv} < 0 a −puQuv=min⁡{−piQiv∣i∈B,Qiv<0}-\frac{p_u}{Q_{uv}} = \min\{-\frac{p_i}{Q_{iv}} \mid i \in B, Q_{iv} < 0\}.

  3. Úprava tabulky: Převedeme 𝒙v\boldsymbol{x}_v na levou stranu a dosadíme.

  4. Pokud neexistuje vstupující proměnná v⟹Bv \implies B je optimální.
    Pokud neexistuje vystupující proměnná u⟹u \implies úloha je neomezená (viz. Pozorování).

  5. Pokud (u,v)(u,v) existují, tak B′B' je bazí matice AA, protože elementárními řádkovými úpravami dostaneme TB′T_{B'} z TBT_B. Platí tedy, že (AB′)−1(A_{B'})^{-1} existuje a det⁡AB′≠0\det A_{B'} \neq 0.

Poznámka 0.27. Pokud je sloupec matice QQ indexovaný v∈ℕ:Qv≥0v \in {\mathbb{N}}: Q^v \geq 0, pak je úloha neomezená.

Definice 0.342 (Dantzigovo pravidlo). Pro vstupující proměnnou 𝒙β\boldsymbol{x}_{\beta} a vystupující 𝒙α\boldsymbol{x}_{\alpha} vybereme β∈N\beta \in N s maximální rβr_{\beta} a zvolíme 𝒙α\boldsymbol{x}_{\alpha} libovolně z množiny proměnných.

Tedy vybíráme do báze proměnnou s nejzápornějším (při maximalizaci) nebo nejkladnějším (při minimalizaci) redukovaným koeficientem v řádku účelové funkce.

Definice 0.343 (Degenerované řešení). Bázické přípustné řešení 𝒙\boldsymbol{x} se nazývá degenerované, pokud více než n−mn-m složek vektoru 𝒙\boldsymbol{x} je rovno nule.
Ekvivalentně, alespoň jedna bázická proměnná xi,i∈Bx_i, i \in B je rovna nule, tedy v tabulce pi=0p_i = 0.

Simplexová metoda může cyklit pouze v případě degenerace, proto se hodí Blandovo pravidlo, které je sice pomalé, ale necyklí.

Definice 0.344 (Blandovo pravidlo). Pro vstupující proměnnou 𝒙t\boldsymbol{x}_t a vystupující 𝒙s\boldsymbol{x}_s vybereme nejmenší možné t∈ℕt \in {\mathbb{N}} a pro něj vybereme nejmenší možný index s∈Bs\in B.

Tedy vybíráme vstupující i vystupující proměnnou s nejmenším indexem.

Kombinatorická geometrie

Definice 0.345 (Konvexní obal). Konvexní obal množiny X⊆ℝnX \subseteq {\mathbb{R}}^n, značíme conv(X)\operatorname{conv}(X), je průnik všech konvexních množin obsahujících XX, tedy conv(X)=⋂{C⊆ℝn∣C je konvexní a X⊆C}.\operatorname{conv}(X) = \bigcap \{C \subseteq {\mathbb{R}}^n \mid C \text{ je konvexní a } X \subseteq C\}. Alternativně je to množina všech konvexních kombinací bodů z XX: conv(X)={∑i=1kαixi∣k∈ℕ,xi∈X,αi≥0,∑αi=1}.\operatorname{conv}(X) = \left\{ \sum_{i=1}^k \alpha_i x_i \mid k \in {\mathbb{N}}, x_i \in X, \alpha_i \geq 0, \sum \alpha_i = 1 \right\}.

Definice 0.346 (Afinní obal). Afinní obal množiny XX je průnik všech afinních prostorů obsahujících XX.

Definice 0.347 (Afinní kombinace). Afinní kombinace je bod ∑αixi\sum \alpha_i x_i, kde ∑αi=1\sum \alpha_i = 1 (koeficienty αi\alpha_i mohou být záporné).

Věta 0.139 (Minkowski-Weyl). Množina X⊆ℝnX \subseteq {\mathbb{R}}^n je omezený konvexní mnohostěn ⇔\iff existuje konečná množina bodů V⊆ℝnV \subseteq {\mathbb{R}}^n taková, že X=conv(V)X = \operatorname{conv}(V)

Věta nám říká, že i když máme obrovské množství bodů (třeba všechna přípustná párování v grafu), jejich konvexní obal je pořád jen nějaký objekt popsaný konečným počtem nerovnic. Problém je obvykle v tom, že těch nerovnic může být exponenciálně mnoho vzhledem k počtu bodů, proto se využívají metody řezů nebo separace.

Základy matematického programování

Unimodularita a toky v sítích.

Definice 0.348 (Unimodulární matice). Matice AA s lineárně nezávislými řádky je unimodulární, pokud je celočíselná a pro každou bázi BB platí det⁡(AB)∈{−1,1}\det(A_B) \in \{-1, 1\}.

Definice 0.349 (Totálně unimodulární matice). Matice AA je totálně unimodulární (TU), pokud každá její čtvercová podmatice má determinant roven 0,10, 1 nebo −1-1.

Věta 0.140. Nechť A∈ℤn×nA \in {\mathbb{Z}}^{n\times n} je celočíselná s det⁡A≠0\det A \neq 0, pak ∀𝒃∈ℤn\forall \boldsymbol b\in {\mathbb{Z}}^n platí, že A−1𝒃 je celočíselné ⇔det⁡A∈{−1,1}.A^{-1}\boldsymbol b \text{ je celočíselné } \iff \det A \in \{-1,1\}.

Věta 0.141. Nechť AA je celočíselná a má lineárně nezávislé řádky, potom {𝒙∣A𝒙=b,𝒙>0}\{\boldsymbol{x} \mid A\boldsymbol{x} = b, ~\boldsymbol{x} > 0 \} je celočíselné pro každé b∈ℤ⇔Ab \in {\mathbb{Z}}\iff A je unimodulární.

Věta 0.142 (Hoffman-Kruskal). Nechť A∈ℤm×nA \in {\mathbb{Z}}^{m\times n} je celočíselná. Mnohostěn P={𝒙∣A𝒙≤b,𝒙≥0}P = \{\boldsymbol{x} \mid A\boldsymbol{x} \leq b, ~\boldsymbol{x} \geq 0 \} je celočíselný pro každé b∈ℤ⇔Ab \in {\mathbb{Z}}\iff A je totálně unimodulární.

Věta 0.143. Matice incidence MM orientovaného grafu je totálně unimodulární. Matice incidence neorientovaného grafu je TU ⇔\iff je graf bipartitní.

Toky v sítích.

Věta 0.144 (Königovo lemma). V libovolném bipartitním grafu je velikost maximálního párování rovna velikosti minimálního vrcholového pokrytí.

Nyní uvedeme reprezentaci toků v sítích za pomoci LP, následně vytvoříme duál a ukážeme si souvislost s unimodularitou.

Vstup: G=(V,E)G = (V, E) orientovaný graf, ce≥0c_e \geq 0 kapacity hran, s,t∈Vs, t \in V zdroj a stok.

Cíl: Maximální tok z ss do tt.

Definujme si xex_e tok hranou e∈Ee \in E a přebytek ve vrcholu jako: fx(v)=∑w∈V(w,v)∈Exwv−∑w∈V(v,w)∈Exvwf_x(v) = \sum_{\substack{w \in V \\ (w,v) \in E}} x_{wv} - \sum_{\substack{w \in V \\ (v,w) \in E}} x_{vw}

Lineární program 1:

max⁡fx(t)pro0≤xe≤c(e)za podmínekfx(v)=0(∀v≠s,t)\begin{flalign*} \max \quad & ~ f_x(t) \\ \text{pro} \quad & ~ 0 \leq x_e \leq c(e)\\ \text{za podmínek} \quad & ~ f_x(v) = 0 \quad (\forall v \neq s, t) \end{flalign*} To je ale moc složité – zjednodušíme přidáním hrany (t,s)(t,s) nekonečné kapacity.

max⁡xtsproxe≥0za podmínekfx(v)=0∀v∈Vxe≤ce∀e∈E\begin{flalign*} \max \quad & x_{ts} \\ \text{pro} \quad & x_e \geq 0 \\ \text{za podmínek} \quad & f_x(v) = 0 \quad \forall v \in V \\ & x_e \leq c_e \quad \forall e \in E \end{flalign*} Tok cirkuluje – měříme kolik teče na umělé hraně (t,s)(t,s).

Duál lineárního programu 2: min⁡∑e∈Ece⋅zeproyv∈ℝ∀v∈Vze≥0∀e∈Eza podmínek−yu+yv+zuv≥0∀uv∈E−yt+ys≥1\begin{flalign*} \min \quad & \sum_{e \in E} c_e \cdot z_e \\ \text{pro} \quad & y_v \in \mathbb{R} \quad \forall v \in V \\ & z_e \geq 0 \quad \forall e \in E \\ \text{za podmínek} \quad & -y_u + y_v + z_{uv} \geq 0 \quad \forall uv \in E \\ & -y_t + y_s \geq 1 \end{flalign*}

Poznámka 0.28. Incidenční matice tohoto LP je totálně unimodulární.

Poznámka 0.29. Optimální duální řešení pro toky má kombinatorický význam: pokud definujeme S={v∈V∣yv=ys}S = \{v \in V \mid y_v = y_s\}, pak hrany uvuv s zuv=1z_{uv} = 1 tvoří minimální řez. Podmínka −yt+ys≥1-y_t + y_s \geq 1 zajišťuje, že ss a tt jsou v různých komponentách.

Věta 0.145. Pokud c(e)c(e) jsou celočíselné, tak existuje celočíselný maximální tok.

Věta 0.146 (Max-Flow Min-Cut). V každé tokové síti je velikost maximálního toku rovna kapacitě minimálního řezu.

Tato věta je přímým důsledkem duality LP aplikované na TU matici incidence grafu.

Vážené párování v bipartitních grafech a primárně-duální algoritmus.

Primárně-duální algoritmus využívá podmínek komplementarity: hrana e={u,v}e=\{u,v\} může být v optimálním párování pouze pokud yu+yv=cuvy_u + y_v = c_{uv}.

Algoritmus

(Primárně-duální algoritmus). Pokud 𝒙\boldsymbol{x} je přípustné řešení (P) a 𝒚\boldsymbol{y} pro (D), pak 𝒙,𝒚 𝑗𝑠𝑜𝑢 𝑜𝑝𝑡𝑖𝑚á𝑙𝑛í ⇔(∀u,v∈E)(𝒙u,v>0⟹𝒚u+𝒚v=cu,v).\boldsymbol{x},\boldsymbol{y} \textit{ jsou optimální } \iff (\forall u,v \in E)(\boldsymbol{x}_{u,v} > 0 \implies \boldsymbol{y}_u + \boldsymbol{y}_v = c_{u,v}).

Definice 0.350 (Graf rovnosti). Pro duální řešení 𝒚\boldsymbol{y} definujeme graf rovnosti G𝒚=(V,E𝒚)G_{\boldsymbol{y}} = (V, E_{\boldsymbol{y}}), kde E𝒚={uv∈E∣𝒚u+𝒚v=cuv}E_{\boldsymbol{y}} = \{uv \in E \mid \boldsymbol{y}_u + \boldsymbol{y}_v = c_{uv}\}.

Poznámka 0.30. Primárně-duální algoritmus pak hledá maximální párování v G𝒚G_{\boldsymbol{y}}. Pokud není perfektní, upraví se duální ceny 𝒚\boldsymbol{y} tak, aby do E𝒚E_{\boldsymbol{y}} přibyla nová hrana.

Algoritmus

(Vážené maximální perfektní párování). Lze řešit pomocí LP a jeho duálu:

(P) Primární úloha min⁡∑ce𝒙eza podmínek∑v∈e𝒙e=1(∀v∈V)𝒙e≥0\begin{flalign*} \min \quad & ~ \sum c_e \boldsymbol{x}_e\\ \text{za podmínek} \quad & ~ \sum_{v \in e} \boldsymbol{x}_e = 1\quad (\forall v \in V)\\ &~ \boldsymbol{x}_e \geq 0 \end{flalign*}

(D) Duální úloha max⁡∑v∈V𝒚vza podmínek𝒚u+𝒚v≤cu,v(∀u,v∈E)\begin{flalign*} \max \quad & ~ \sum_{v\in V}\boldsymbol{y}_v\\ \text{za podmínek} \quad & ~ \boldsymbol{y}_u + \boldsymbol{y}_v \leq c_{u,v} \quad (\forall u,v \in E) \end{flalign*}

Postupně upravujeme (M,𝒚)(M, \boldsymbol{y}), kde MM je párování v GG a 𝒚\boldsymbol{y} je přípustné řešení (D).

Začátek: M≠∅,𝒚=0M \neq \emptyset, \quad \boldsymbol{y} = 0
Konec: MM je perfektní ⟹(M,𝒚)\implies (M,\boldsymbol{y}) je optimum (P). To vychází z podmínek komplementarity.

Celočíselné programování

Definice 0.351 (Celočíselný mnohostěn). Mnohostěn PP je celočíselný ⇔\iff má všechny vrcholy celočíselné.

Definice 0.352 (Racionální mnohostěn). Mnohostěn PP je racionální ⇔P={𝒙;A𝒙≤b}⊆ℝn\iff P = \{\boldsymbol{x};~ A\boldsymbol{x} \leq b\}\subseteq {\mathbb{R}}^n a všechny složky AA i bb jsou racionální.

Věta 0.147. Nechť PP je racionální, potom všechny vrcholy PP jsou racionální ∀𝒘∈ℚn\forall \boldsymbol w\in {\mathbb{Q}}^n.

Věta 0.148. Mnohostěn PP je celočíselný ⇔∀𝒘∈Zn\iff \forall \boldsymbol w\in Z^n platí, že max⁡{wT𝒙∣𝒙∈P}\max \{w^T\boldsymbol{x}\mid \boldsymbol{x} \in P\} je celé číslo.

Definice 0.353 (Celočíselný obal). Pro mnohostěn PP definujeme jeho celočíselný obal jako: PI=conv(P∩ℤn).P_I = \operatorname{conv}(P \cap {\mathbb{Z}}^n). Obecně platí PI⊆P′⊆PP_I \subseteq P' \subseteq P. Cílem je často najít popis PIP_I pomocí lineárních nerovnic.

Definice 0.354 (Chvátalův řez). Nechť A∈ℚm×nA\in {\mathbb{Q}}^{m\times n}. Pro mnohostěn P={𝒙∣A𝒙≤b}P = \{\boldsymbol x \mid A\boldsymbol{x} \leq b\} a vektor 𝒚≥0\boldsymbol y \geq 0 takový, že c=𝒚TAc = \boldsymbol y^T A je celočíselný, se podmínka cTx≤⌊𝒚Tb⌋c^T x \leq \lfloor \boldsymbol{y}^Tb \rfloor nazývá Chvátalův řez.

Každý celočíselný bod z PP tento řez splňuje, ale některé neceločíselné vrcholy jím mohou být odříznuty.

Definice 0.355 (Chvátalův uzávěr). P′={𝒙∈P∣𝒙 splňuje každý řez }P' = \{\boldsymbol{x} \in P \mid \boldsymbol{x} \text{ splňuje každý řez }\}. Tedy je průnik PP se všemi možnými řezy.

Věta 0.149. Chvátalův uzávěr je racionální mnohostěn.

Opakováním tohoto procesu lze pro každý racionální mnohostěn získat jeho celočíselný obal PIP_I.

Věta 0.150. Nechť P={𝒙∣A𝒙≤b}P = \{\boldsymbol{x} \mid A\boldsymbol{x} \leq b\} je racionální mnohostěn, wT𝒙≤tw^T\boldsymbol{x} \leq t, w∈ℤnw \in {\mathbb{Z}}^n je splněno ∀𝒙∈P∩ℤn\forall \boldsymbol{x} \in P \cap {\mathbb{Z}}^n. Potom existuje důkaz podmínky wT𝒙≤t′w^T\boldsymbol{x} \leq t', pro t′≤tt' \leq t.

Věta 0.151. P∩ℤn=∅⟹P\cap {\mathbb{Z}}^n = \emptyset \implies existuje důkaz podmínky “ 0T𝒙≤−10^T\boldsymbol{x} \leq -1”.

Algoritmus

(Metoda větvení a mezí). Rozdělujeme prostor hledání na podproblémy (větve). Využíváme LP relaxaci k určení horní meze (pro maximalizaci) kvality řešení v dané větvi.

Celočíselné programování se využívá tam, kde rozhodnutí mají diskrétní charakter. Tedy například v kombinatorických úlohách (TSP, Knapsack, Scheduling), v modelování podmínek typu “pokud vybereme A, musíme vybrat i B” pomocí binárních proměnných, nebo v modelování situací, kdy samotné zahájení aktivity stojí fixní částku.

Matroidy

Definice 0.356 (Matroid). Matroid je dvojice (X,𝒮)(X, \mathcal{S}), kde XX je konečná množina a 𝒮⊆2X\mathcal{S} \subseteq 2^X (nezávislé množiny) splňující:

  1. ∅∈𝒮\emptyset \in \mathcal{S}.

  2. ∀B⊆A:A∈𝒮⟹B∈𝒮\forall B \subseteq A: A \in \mathcal{S} \implies B \in \mathcal{S}. (Dědičnost)

  3. (A,B∈𝒮):|A|<|B|⟹(∃x∈B\A):A∪{x}∈𝒮(A, B \in \mathcal{S}): |A| < |B| \implies (\exists x \in B \setminus A): A \cup \{x\} \in \mathcal{S}. (Výměnný axiom)

Poznámka 0.31. Axiomy (3) je ekvivalentní s axiomem: Nechť Z⊆XZ \subseteq X a A,B⊆ZA,B \subseteq Z jsou maximálně nezávislé (vzhledem k inkluzi). Potom |A|=|B||A|=|B|.

Definice 0.357 (Báze). Báze matroidu M=(X,𝒮)M=(X, \mathcal{S}) je libovolná maximální nezávislá množina B∈𝒮B \in \mathcal{S} vzhledem k inkluzi.

Poznámka 0.32 (Průnik matroidů). Mějme dva matroidy M1=(X,𝒮1)M_1 = (X, \mathcal{S}_1) a M2=(X,𝒮2)M_2 = (X, \mathcal{S}_2) na stejné nosné množině. Jejich průnik (X,𝒮1∩𝒮2)(X, \mathcal{S}_1 \cap \mathcal{S}_2) obecně není matroid (např. Hamiltonovská cesta v grafu).

Pro dva matroidy existuje polynomiální algoritmus (Edmons) pro nalezení největší společné nezávislé množiny. Pro tři a více je problém nalezení maximální společné nezávislé množiny NP-těžký.

Matroidy zobecňují pojem nezávislosti z lineární algebry a teorie grafů. Zde jsou základní příklady:

  1. Vektorový (lineární) matroid: Nechť XX je konečná množina vektorů z nějakého vektorového prostoru VV a 𝒮\mathcal{S} je systém lineárně nezávislých podmnožin XX. Tato dvojice tvoří matroid, kde nezávislost odpovídá lineární nezávislosti.

  2. Grafový matroid (cyklický): Mějme graf G=(V,E)G=(V, E). Definujeme X=EX = E a A⊆EA \subseteq E patří do 𝒮⇔\mathcal{S}\iff podgraf G[A]G[A] neobsahuje žádnou kružnici (tedy G[A]G[A] je les). Báze v souvislém grafovém matroidu odpovídají kostrám grafu.

  3. Fanova rovina: Jedná se o nejmenší projektivní rovinu (7 bodů, 7 přímek). Prvky XX jsou body Fanovy roviny. Nezávislé množiny jsou ty trojice bodů, které neleží na společné přímce.

Řádová funkce a submodularita.

Definice 0.358 (Řádová funkce). Pro matroid M=(X,𝒮)M = (X, \mathcal{S}) definujeme řádovou funkci r:2X→ℕr: 2^X \to \mathbb{N} jako velikost největší nezávislé podmnožiny dané množiny: r(A)=max⁡{|B|:B⊆A∧B∈𝒮}.r(A) = \max \{ |B| : B \subseteq A \land B \in \mathcal{S} \}.

Věta 0.152 (Ekvivalentní definice matroidu pomocí rr). Funkce r:2X→ℕr: 2^X \to \mathbb{N} je řádovou funkcí nějakého matroidu ⇔\iff pro každé Y⊆XY \subseteq X a y,z∈Xy, z \in X splňuje:

  1. r(∅)=0r(\emptyset) = 0,

  2. r(Y)≤r(Y∪{y})≤r(Y)+1r(Y) ~\leq~ r(Y \cup \{y\}) ~\leq~ r(Y) + 1, (jednotkový nárůst)

  3. r(Y∪{y})=r(Y∪{z})=r(Y)⟹r(Y∪{y,z})=r(Y)r(Y \cup \{y\}) = r(Y \cup \{z\}) = r(Y) \implies r(Y \cup \{y, z\}) = r(Y). (vlastnost lokální submodularity)

Věta 0.153 (Submodularita řádové funkce). Řádová funkce r:2X→ℕr: 2^X \to \mathbb{N} libovolného matroidu splňuje:

  1. ∀Y⊆X:0≤r(Y)≤|Y|\forall Y \subseteq X: 0 \leq r(Y) \leq |Y|,

  2. Z⊆Y⟹r(Z)≤r(Y)Z \subseteq Y \implies r(Z) \leq r(Y), (monotonicita)

  3. r(Y∪Z)+r(Y∩Z)≤r(Y)+r(Z)r(Y \cup Z) + r(Y \cap Z) \leq r(Y) + r(Z). (submodularita)

Tedy matroidy jsou přesně ty systémy, kde je řádová funkce monotónní a submodulární.

Dualita matroidů.

Definice 0.359 (Duální matroid). Nechť M=(X,𝒮)M = (X, \mathcal{S}) je matroid. Jeho duální matroid M*=(X,𝒮*)M^* = (X, \mathcal{S}^*) je definován tak, že množina nezávislá v M*M^* je ta, jejíž doplněk v XX obsahuje bázi původního MM: 𝒮*={A⊆X∣∃B báze M:A∩B=∅}.\mathcal{S}^* = \{ A \subseteq X \mid \exists B \text{ báze } M: A \cap B = \emptyset \}. Ekvivalentně lze říci, že množina FF je báze M*⇔X\FM^* \iff X \setminus F je báze MM.

Věta 0.154 (O duálu duálu). Pro každý matroid MM platí, že duál jeho duálu je původní matroid: M**=MM^{**} = M.

Věta 0.155 (Řádová funkce duálního matroidu). ∀A⊆X\forall A \subseteq X platí, že řádová funkce r*r^* duálního matroidu M*M^* je dána vztahem: r*(A)=|A|−r(X)+r(X\A).r^*(A) = |A| - r(X) + r(X \setminus A).

Definice 0.360 (Cyklus). Cyklus je minimální závislá množina C∉𝒮C \notin \mathcal{S} vzhledem k inkluzi.

Definice 0.361 (Uzavřená množina). Množina A⊆XA \subseteq X se nazývá uzavřená, pokud ∀y∈X\A\forall y \in X \setminus A platí, že přidáním yy k AA vzroste hodnost: r(A∪{y})>r(A)r(A \cup \{y\}) > r(A).

Definice 0.362 (Kocyklus a kobáze). Kocyklus je cyklus M*M^*. Kobáze je báze M*M^* (tedy doplněk báze MM).

Existuje silná souvislost mezi operacemi v grafech a vlastnostmi jejich grafových matroidů.

Věta 0.156 (Cykly a řezy). Nechť G=(V,E)G = (V, E) je graf a M(G)M(G) jeho grafový matroid. Pro množinu hran Y⊆EY \subseteq E platí, že YY je kocyklem ⇔Y\iff Y je minimální řez v grafu GG.

Důsledek 0.8. Pokud je GG rovinný graf a G*G^* je jeho rovinný duál, pak M(G*)=M*(G)M(G^*) = M^*(G).

Hladový algoritmus pro hledání optimální nezávislé množiny.

Problém.

Je dán systém (X,𝒮)(X, \mathcal{S}) s nezápornou váhovou funkcí w:X→ℚw: X \to \mathbb{Q}. Cílem je najít nezávislou množinu A∈𝒮A \in \mathcal{S}, která maximalizuje celkovou váhu w(A)=∑x∈Aw(x)w(A) = \sum_{x \in A} w(x). Předpokládejme, že prvky X={1,…,m}X = \{1, \dots, m\} jsou seřazeny sestupně podle vah: w1≥w2≥…≥wmw_1 \geq w_2 \geq \dots \geq w_m.

I←∅I \gets \emptyset

for i=1i = 1 to mm do

if I∪{i}∈𝒮I \cup \{i\} \in \mathcal{S} then

I←I∪{i}I \gets I \cup \{i\} 

return II

Věta 0.157. Nechť M=(X,𝒮)M = (X, \mathcal{S}) je dědičný systém. Hladový algoritmus řeší úlohu maximalizace váhy pro každou nezápornou váhovou funkci w⇔Mw \iff M je matroid.

Důsledek 0.9 (Edmonds). Nechť CC je množina charakteristických vektorů nezávislých množin matroidu MM. Potom conv(C)=P\operatorname{conv}(C) = P, kde PP je matroidový polytop definovaný jako: P={x∈ℝn∣xi≥0,∑i∈Axi≤r(A) pro ∀A⊆X}.P = \left\{ x \in \mathbb{R}^n \mid x_i \geq 0, \sum_{i \in A} x_i \leq r(A) \text{ pro } \forall A \subseteq X \right\}.

Aproximační algoritmy

Definice 0.363 (Optimalizační problém). Optimalizační problém definujeme jako (ℐ,ℱ,f,g)(\mathcal{I}, \mathcal{F}, f, g), kde:

Definice 0.364 (NP-Optimalizační problém). NP-Optimalizační problém definujeme jako (ℐ,ℱ,f,g)(\mathcal{I}, \mathcal{F}, f, g), pro které platí stejné vlastnosti jako pro normální optimalizační problémy, ale navíc:

Definice 0.365 (R-aproximace (poměr)). Algoritmus AA je RR-aproximační, pokud:

Definice 0.366 (Aproximační schéma). PTAS je rodina algoritmů, kde pro každé ϵ>0\epsilon > 0 existuje (1+ϵ)(1+\epsilon)-aproximační algoritmus v čase 𝒪(nf(1/ϵ))\mathcal{O}(n^{f(1/\epsilon)}).

Hladové algoritmy – Obchodní cestující.

Problém

(Obchodní cestující - TSP). Dostaneme úplný ohodnocený graf. Cílem je najít nejmenší Hamiltonovský cyklus.

Poznámka 0.33. Pro obecný TSP neexistuje RR-aproximační algoritmus pro žádné R>1R > 1 (pokud P≠NPP \neq NP). Pokud však platí trojúhelníková nerovnost, mluvíme o metrickém TSP, který aproximovat lze.

Definice 0.367 (Zkracování). Zkracování je metoda, díky které vracíme vždy jen první výskyt vrcholu v eulerovském tahu. (Například ET=(1,3,4,3,2,1,6)⤳HT=(1,3,4,2,6)ET=(1,3,4,\cancel 3,2,\cancel 1,6) \leadsto HT=(1,3,4,2,6).)

Najdi minimální kostru TT.

Zdvojnásob každou hranu a najdi Eulerovský tah 𝒯\mathcal T.

Vypiš Hamiltonovský cyklus 𝒞\mathcal C po zkracování.

Věta 0.158. Algoritmus Metric TSP je 22-aproximační.

Proof. Víme, že cost(T)≤OPT\mathrm{cost}(T) \leq OPT (jinak vynecháním hrany z OPTOPT dostaneme kostru menší než naše nejmenší kostra TT). Výsledný cyklus je díky zkracování cost(𝒞)≤cost(𝒯)\mathrm{cost} (\mathcal C) \leq \mathrm{cost} (\mathcal T). Jelikož 𝒯\mathcal T obsahuje každou hranu TT dvakrát, tak cost(𝒯)=2⋅cost(T)\mathrm{cost}( \mathcal T) = 2\cdot \mathrm{cost}(T). Tedy cost(𝒞)≤cost(𝒯)=2⋅cost(T)≤2⋅OPT\mathrm{cost} (\mathcal C) \leq \mathrm{cost} (\mathcal T) = 2\cdot \mathrm{cost}(T) \leq 2\cdot OPT. ◻

Najdeme minimální kostru TT a označme WW vrcholy lichého stupně TT.

Najdeme minimální perfektní párování MM na WW

Najdeme Eulerovský tah T∪MT\cup M a proveď zkracování.

Vypíšeme vzniklý cyklus 𝒞=T∪M\mathcal C = T \cup M.

Věta 0.159. Christofidesův algoritmus je 3/23/2-aproximační.

Proof. Víme, že cost(T)≤OPT\mathrm{cost}(T)\leq OPT. Zároveň víme, že cost(M)≤OPT2\mathrm{cost} (M)\leq \frac {OPT}2 (viz. Obr.), proto: cost(T∪M)≤cost(T)+cost(M)≤OPT+12OPT=32OPT.\mathrm{cost}(T\cup M) \leq \mathrm{cost}(T) + \mathrm{cost}(M) \leq OPT + \frac 12 OPT = \frac 32 OPT.

image

 ◻

Hladové algoritmy – Rozvrhování.

Problém

(Rozvrhování (Scheduling)). Každá úloha může být zpracována jen na jednom ze strojů a každý stroj může zpracovávat nejvýše jednu úlohu najednou.

Pro I1,…,ImI_1, \ldots, I_m a úlohu j∈Iij\in I_i definujme:

Začni s nějakým rozvrhem.

if ∃j:Cj=Cmax&Sj>Cmin\exists j : C_j = C_{\max} ~~\&~~ S_j > C_{\min}

Přeřaď úlohu jj na stroj s minimální dobou dokončení.

else return aktuální rozvrh.

Opakuj krok 2.

image

Věta 0.160. Algoritmus Lokální prohledávání rozvrhu je (2−1m)(2-\frac1m)-aproximační.

Libovolně uspořádej úlohy

Zpracovávej úlohy jednu po druhé a přiřaď úlohu na nejméně načtený stroj

Věta 0.161. Algoritmus List scheduling – Hladový je (2−1m)(2-\frac1m)-aproximační.

Úlohy uspořádáme tak, že p1≥p2≥…≥pnp_1 \geq p_2 \geq \ldots \geq p_n.

Použijeme hladový List Scheduling algoritmus.

Věta 0.162. Algoritmus LPT je 43\frac 43-aproximační.

Hladové algoritmy – Množinové pokrytí.

Problém

(Množinové pokrytí). Hledáme minimální pokrytí množiny.

Vybereme na začátku množinu pokrývající nejvíc prvků. A pak vybíráme takovou, která pokrývá nejvíce nových prvků. Tedy abychom si za stejnou cenu koupili co nejvíc.

I←∅,E←∅,qe=0I \gets \emptyset, \quad E \gets \emptyset, \quad q_e = 0

while E≠{1,…,n}E \neq \{1, \ldots, n\}

Pro j∈{1,…,m}&Sj⊈Ej \in \{1, \ldots, m\} ~\&~ S_j\nsubseteq E polož pj:=c(j)|Sj\E|p_j := \frac{c(j)}{|S_j \setminus E|}.

Buď j0j_0, že pj0p_{j_0} je minimální.

Buď qe=pj0(∀e∈Sj0\E)q_e = p_{j_0} ~~(\forall e \in S_{j_0}\setminus E).

I←I∪{j0},E←E∪Sj0I \gets I \cup \{j_0\}, \quad E\gets E \cup S_{j_0}.

return II

Věta 0.163. Algoritmus je ln⁡(n)\ln (n)-aproximační.

Použití lineárního programování – algoritmy pro splnitelnost (MAX-SAT).

Problém

(MAX-SAT).

Předpokládáme, že se žádný literál v klauzuli neopakuje a že nejvýše jeden z xi,x‾ix_i, \bar x_i se vyskytuje v CiC_i

for ∀i∈[n]\forall i \in [n] nezávisle náhodně nastav xi={TruePr⁡=12,FalsePr⁡=12.x_i = \begin{cases} \text{True} & \Pr = \frac 12,\\ \text{False} & \Pr = \frac 12. \end{cases}

Věta 0.164. Algoritmus RAND-SAT je 22-aproximační.

Nechť ∀i:∑j:Cj=xiwj⏟∑+≥∑j:Cj=x‾iwj⏟∑−\forall i:\displaystyle \underbrace{\sum_{j:C_j = x_i} w_j}_{\sum_+} \geq \underbrace{\sum_{j:C_j = \bar x_i} w_j}_{\sum_{-}} a nechť UU je množina klauzulí bez záporných jednotkových klauzulí.

for ∀i∈[n]\forall i \in [n] nezávisle náhodně nastav xi={Trues pravděpodobností p>12,False1−p.x_i = \begin{cases} \text{True} & \text{s pravděpodobností } p > \frac 12,\\ \text{False} & 1-p. \end{cases}

Věta 0.165. Algoritmus BIASED-SAT je φ\varphi-aproximační, kde φ=5−12\varphi = \frac{\sqrt 5 - 1}2.

Nyní si uvedeme algoritmus LP-SAT, který relaxuje úlohu na LP, vyřeší ji a nastaví proměnné na True s pravděpodobností rovnou jejich hodnotě v LP optimu. Sestavíme LP: max∑j=1mzjproyi∈{0,1},zj∈{0,1},(negaci zapisujeme jako 1−yi)za podmínekzj≤∑+yi+∑−(1−yi)(∀j=1,…,m)\begin{aligned} \max \quad & ~ \sum_{j=1}^m z_j\\ \text{pro} \quad & ~ y_i \in \{0,1\}, z_j\in \{0,1\}, ~~\text{(negaci zapisujeme jako } 1-y_i \text{)} \\ \text{za podmínek} \quad & ~ z_j \leq \sum_{+} y_i+\sum_{-}(1-y_i) \quad (\forall j=1, \dots, m) \end{aligned}

Pro každou proměnnou xix_i si pořídíme binární proměnnou yi∈{0,1}y_i \in \{0,1\} a pro každou klauzuli CjC_j binární proměnnou zj∈{0,1}z_j\in \{0,1\}.

Vytvoř lineární program (viz. LP níže)

Relaxuj program a vyřeš ho (dostaneme optimum y*,z*y^*, z^*)

Nastav proměnné xix_i na True s pravděpodobností yi*y_i^* a False s (1−yi*)(1-y_i^*).

Věta 0.166. Algoritmus LP-SAT je (1−1e)(1-\frac 1e)-aproximační

S pravděpodobností 12\frac 12 spusť RAND-SAT, s pravděpodobností 12\frac 12 spusť LP-SAT.

Věta 0.167. Algoritmus BEST-SAT je 34\frac 34-aproximační.

Použití lineárního programování – Vrcholové a množinové pokrytí.

Problém

(Vrcholové pokrytí).







Lineární program min⁡∑v∈Vc(v)xvproxv∈{0,1}(∀v∈V)za podmínekxu+xv≥1(∀uv∈E)\begin{flalign*} \min \quad & ~ \sum\limits_{v\in V} c(v)\,x_v\\ \text{pro} \quad & ~ x_v \in \{0,1\} ~~ (\forall v \in V) \\ \text{za podmínek} \quad & ~ x_u + x_v \geq 1 ~ (\forall uv \in E) \end{flalign*}

Poznámka 0.34. WW je vrcholové pokrytí ⇔V\W\iff V\setminus W je nezávislá množina.

Poznámka 0.35. Vrcholové pokrytí je speciálním případem množinového pokrytí, kde f=2f = 2 a g≤ng \leq n je maximální stupeň grafu. (f,gf,g si uvedeme později).

Vytvoř celočíselný lineární program (viz. LP níže).

Zrelaxuj program a vyřeš ho: I={i∣xi*≥12}I = \{i \mid x_i^* \geq \frac 12\}, tedy xv=1x_v=1, když xv≥12x_v \geq \frac 12.

Věta 0.168. Algoritmus Vertex-Cover je 22-aproximační.

Proof. Proměnné jsme během relaxace zaokrouhlili z xv*≥12x_v^* \geq \frac 12 na 11. Tím jsme řešení max zdvojnásobili. ALG=∑v∈Vc(v)≤2∑v∈Vc(v)xv*≤2OPT.ALG =\sum_{v\in V} c(v) \leq 2 \sum_{v\in V} c(v)x_v^* \leq 2 OPT. ◻

Problém

(Množinové pokrytí).

Můžeme si to představit jako bipartitní graf, kde levá partita obsahuje {1,…,n}\{1, \ldots, n\} a pravá {S1,…,Sm}\{S_1, \ldots, S_m\}. Potom máme parametry:

Vytvoř celočíselný lineární program (viz. LP níže).

Zrelaxuj program a vyřeš ho: I={i∣xi*≥1f}I = \{i \mid x_i^* \geq \frac 1f\}, tedy zvol vv, když xv≥1fx_v \geq \frac 1f.

Lineární program min⁡∑i=1mc(i)xiprox1,…,xm≥0za podmínek∑j:e∈Sjxj≥1(e=1,…,m)\begin{flalign*} \min \quad & ~ \sum\limits_{i=1}^m c(i)\,x_i\\ \text{pro} \quad & ~ x_1, \ldots, x_m \geq 0\\ \text{za podmínek} \quad & ~ \sum\limits_{j:e\in S_j}x_j \geq 1 ~~(e = 1, \ldots, m) \end{flalign*}

Duální program max⁡∑e=1myeproy1,…,yn≥0za podmínek∑e∈Sjye≤c(j)(j=1,…,m)\begin{flalign*} \max \quad & ~ \sum\limits_{e=1}^m y_e\\ \text{pro} \quad & ~ y_1, \ldots, y_n \geq 0\\ \text{za podmínek} \quad & ~ \sum\limits_{e \in S_j} y_e \leq c(j) ~~(j = 1, \ldots, m) \end{flalign*}

Věta 0.169. Algoritmus LP-Set Cover je ff-aproximační.

Proof. Proměnné jsme během relaxace zaokrouhlili z xv*≥1fx_v^* \geq \frac 1f na 11. Řešení jsme násobili max ff-krát: ALG=∑i∈Ic(i)≤f∑i∈Ic(i)xi*≤f∑i=1mc(i)xi*=f⋅OPT.ALG =\sum_{i\in I} c(i) \leq f\sum_{i\in I} c(i)x_i^* \leq f\sum_{i=1}^mc(i)x_i^* = f\cdot OPT. ◻

Pokud jsou x*x^* a y*y^* optima, pak z podmínek komplementarity: {∀j:xj*=0∨∑ye=c(j), a ∀e:ye*=0∨∑j:e∈Sjxj=1\begin{cases} \forall j : x_j^*=0 \lor \sum y_e=c(j), \text{ a }\\ \forall e: y_e^* = 0 \lor \sum_{j: e\in S_j}x_j = 1 \end{cases}

I←∅,E←∅,y1,…,yn=0I \gets \emptyset, \quad E \gets \emptyset, \quad y_1, \ldots, y_n = 0

while ∃e∉E\exists e \notin E δ=min⁡j:e∈Sj(c(j)−∑e∈Sjye)\delta = \min_{j:e\in S_j} \left(c(j) - \sum_{e \in S_j} y_e\right)

ye←ye+δy_e \gets y_e + \delta

for all j:e∈Sjj:e\in S_j a ∑e∈Sjye=c(j)\sum_{e \in S_j}y_e = c(j)

I←I∪{j},E←E∪SjI \gets I \cup \{j\}, \quad E \gets E\cup S_j

return II

Věta 0.170. Algoritmus PDA je ff-aproximační.

Proof. ALG=def.∑j∈Ic(j)=PDA 5.∑j∈I∑e∈Sjye≤def f∑e=1nf⋅ye≤DPf⋅OPT\begin{flalign*} \mathrm{ALG} &\stackrel{\text{def.}}{=} \sum_{j \in I} c(j) \stackrel{\text{PDA } 5.}{=} \sum_{j \in I} \sum_{e \in S_j} y_e \stackrel{\text{def } f}{\leq} \sum_{e = 1}^{n} f \cdot y_e \stackrel{DP}{\leq} f \cdot \mathrm{OPT} \end{flalign*} ◻

Využití pravděpodobnosti při návrhu algoritmů

Minimální a globální řez v grafu.

Problém

(Globální minimální řez). Na vstupu dostaneme neorientovaný graf G=(V,E)G = (V,E) a na výstupu bude řez ∅≠S⊆E\emptyset \neq S\subseteq E. Cílem je minimalizovat velikost řezu |S||S|.

Převedeme graf na ohodnocený s jednotkovými kapacitami.

Zafixujeme vrchol s∈Vs\in V.

Pro všechny ostatní vrcholy t∈Vt\in V najdeme minimální stst-řez.

return minimum z nich.

Algoritmus na (n2)≈n2\binom n2\approx n^2 párech počítá minimální stst-řez (v 𝒪(n)\mathcal O(n)). Proto celkem 𝒪(n⋅n2)=𝒪(n3)\mathcal{O}(n\cdot n^2) = \mathcal{O}(n^3).

Vyber uniformě náhodně hranu a její vrcholy zkontrahujeme do jednoho.

Opakujeme, dokud nemáme pouze dva vrcholy.

Zbylé hrany na konci jsou náš řez.

image

Zůstaly 2 vrcholy, mezi nimi 2 hrany, to je velikost globálního minimálního řezu ({a,b,c},{d})(\{a,b,c\}, \{d\}).

Poznámka 0.36. Během kontrakce hran odstraňujeme vzniklé smyčky, ale ponecháváme násobné hrany. Počet násobných hran mezi zbylými dvěma vrcholy na konci algoritmu určuje velikost řezu.

Poznámka 0.37. Každý řez v G\{e}G\setminus \{e\} odpovídá řezu v GG.

Poznámka 0.38. Pokud CC je řez v GG a e∉Ce \notin C, pak CC je řez v G\{e}G \setminus \{e\}.

Lemma 0.6. Multigraf s nn vrcholy a minimálním řezem velikosti kk má alespoň 12nk\frac 12 nk hran.

Věta 0.171. Pravděpodobnost, že najdeme daný minimální řez CC je alespoň (n2)−1=2n⋅(n−1)\binom n2 ^{-1} = \frac{2}{n\cdot (n-1)}

Důsledek 0.10. Každý graf GG má nejvýše (n2)\binom n2 globálních minimálních řezů.

Věta 0.172. Pro (n2)log⁡n\binom n2 \log n opakování algoritmu dostaneme nejmenší řez s pravděpodobností ≥1−1n\geq 1 - \frac 1n.

Proof. (1−(n2)−1)(n2)log⁡n=(1−1(n2))(n2)log⁡n≤(1e)log⁡n=1n.\left(1 - \binom n2 ^{-1}\right)^{\binom n2\log n} = \left(1 - \frac{1}{\binom n2}\right)^{\binom n2\log n} \leq \left(\frac 1e \right)^{\log n} = \frac 1n. ◻

Důsledek 0.11. Celkový počet globálních minimálních řezů je ≤12n(n−1)=n(n−1)2=(n2)\leq \frac{1}{\frac{2}{n(n-1)}} = \frac{n(n-1)}{2} = \binom n2.

Hashování a jeho využití pro slovník s konstantním časem vyhledávání.

Definice 0.368 (2-univerzálnost). Nechť M,|M|=m,N,|N|=n,H⊆{f∣f:M↦N}M, |M| = m, N, |N| = n, H \subseteq \left\{f \mid f : M \mapsto N\right\}. Systém HH je

Poznámka 0.39. Silná 22-univerzalita ⟹\implies slabá 22-univerzalita.

Poznámka 0.40. Silná 22-univerzalita ⟹{h(x)∣x∈N}\implies \{h(x) \mid x \in N\} po 22 nezávislé náhodné proměnné.

Dynamický slovník.

Máme univerzum MM velikosti m=2dm=2^d, slovník S⊆MS\subseteq M velikosti ss a cílem je reprezentovat SS tabulkou NN velikosti n=𝒪(s)n= \mathcal{O}(s). HH je silně 2-univerzální, h∈Hh\in H volíme uniformě náhodně.

Kolize řešíme za pomoci spojového seznamu řetězením za sebe.

Operace:

(trvá průměrně 𝒪(1)\mathcal{O}(1)):

image

Lemma 0.7. Pokud n=𝒪(s)n = \mathcal{O}(s), tak průměrná doba operace je 𝒪(1)\mathcal{O}(1)

Lemma 0.8. 𝔼[|C|]=(s2)1n{\mathbb{E}}[|C|] = \binom s2 \frac 1n, pokud je HH silně 2-univerzální, kde CC je množina kolizí pro h,Sh,S.

Oproti dynamickému slovníku, statický využívá dvouúrovňové hashování. První úroveň rozdistribuuje ss prvků do nn slotů tak, aby suma ∑ni2=𝒪(s)\sum n_i^2 = \mathcal{O}(s). Druhá pro každý slot s nin_i prvky vytvoří tabulku o velikosti Mi=ni2M_i = n_i^2. Pravděpodobnost kolize v takto velké tabulce je (ni2)1ni2<12\binom{n_i}{2} \frac{1}{n_i^2} < \frac{1}{2}, což umožňuje v průměru na druhý pokus najít perfektní hashování pro daný slot.

Statický slovník.

SS je dáno předem. Vytvoříme datastrukturu v polynomiálním čase. Chceme, aby prostor byl velikosti 𝒪(|S|)\mathcal O(|S|) a aby operace vyhledání běžela nejhůř v čase 𝒪(1)\mathcal{O}\left(1\right).

(to jsme předtím neměli – seznam mohl být dlouhý a maximální počet operací velký)

  1. Vybereme h∈Hh\in H tak, že |C|≤n|C| \leq n, kde C={{x,y}∣x,y∈M,x≠y,h(x)=h(y)}C = \{\{x,y\} \mid x,y \in M, x\neq y, h(x)=h(y)\} je kolize.

  2. Vytvoříme dvě tabulky a hashujeme dvakrát – jednou pro index do první tabulky (|C|≤n|C|\leq n) a ta určí funkci pro druhé hashování (|C|=0|C|=0).

image

Lemma 0.9. Existuje h∈Hh\in H s |C|≤n|C| \leq n.

Proof. 𝔼[|C|]≤2-univ(s2)1n≤s≤n(n2)1n≤n2{\mathbb{E}}[|C|] \stackrel{\text{2-univ}}{\leq} \binom s2 \frac 1n \stackrel{s\leq n}{\leq} \binom n2 \frac 1n \leq \frac n2. ◻

Lemma 0.10. Existuje h∈Hh\in H s |C|=0|C| =0.

Proof. 𝔼[|Cni|]≤(ni2)1ni2≤12{\mathbb{E}}[|C_{n_i}|] \leq \binom {n_i}2 \frac 1{n_i^2} \leq \frac 12. ◻

Lemma 0.11. ∑ni2∈𝒪(|C|+s)\sum n_i^2 \in \mathcal{O}(|C| + s)

Proof. |C|=∑i=1n(ni2)=∑(ni22−ni2)=∑ni22−n2|C| = \sum_{i=1}^{n} \binom{n_i}{2} = \sum \left(\frac{n_i^2}{2} - \frac{n_i}{2}\right) = \sum\frac{n_i^2}{2} - \frac{n}{2}. ◻

Pravděpodobnostní testování maticových a polynomiálních identit.

Problém

(Maticové testování). Testujeme rovnost pomocí náh. vektoru xx: A(Bx)=?CxA(Bx) \stackrel{?}{=} Cx v čase 𝒪(n2)\mathcal{O}(n^2)

Vezmi náhodný vektor x→∈{0,1}n\vec{x} \in \left\{0, 1\right\}^n

if A⋅B⋅x→=C⋅x→A \cdot B \cdot \vec{x} = C \cdot \vec{x} return ANO

else return NE

Věta 0.173. Pokud A⋅B≠CA\cdot B \neq C, pak Pr⁡[’𝑁𝐸’]≥12\Pr[\textit{'NE'}\ ] \geq \frac 12.

Poznámka 0.41. Algoritmus trvá 𝒪(n2)\mathcal O(n^2) kroků a řekne ANO ⇔(AB−C)x→=Dx→=0→\iff (AB - C) \vec x = D \vec x = \vec 0.

Problém

(Nulovost polynomů (PIT)). Identita P(x1,…,xn)≡0P(x_1, \ldots, x_n) \equiv 0 se testuje vyhodnocením v náhodném bodě. Pravděpodobnost chyby je ≤d/|S|\leq d/|S|, kde dd je stupeň polynomu.

Nezajímá nás, jestli je identicky nulový, ale zda je nulový v tělese, ve kterém pracujeme. Budeme pracovat s polynomy více proměnných a dd bude označovat celkový stupeň.

Převeditelné na to, zda je výrok tautologie (jdou na sebe převést) ⟹\implies NP těžké.

Lemma 0.12. Nechť P(x1,…,xn)P(x_1, \ldots, x_n) je nenulový polynom nad tělesem KK stupně ≤di\leq d_i a S⊆KS \subseteq K konečná množina. Nechť x1,…,xn∈Sx_1, \ldots, x_n \in S uniformě náhodně. Pak Prx→[P(x→)=0]≤d|S|.\mathrm{Pr}_{\vec{x}} \left[P(\vec{x}) = 0\right] \leq \frac{d}{|S|}. Pro n=1n = 1 má polynom nejvýše dd kořenů, ať zvolíme SS jakkoliv.

Poznámka 0.42. Podle |S||S| si volíme přesnost algoritmu (pro |S|≥2d|S| \ge 2d máme ≥12\ge \frac{1}{2}).

Paralelní algoritmus pro hledání maximální nezávislé množiny.

Algoritmus pro hledání maximální nezávislé množiny (Lubyho) využívá náhodné priority k eliminaci sousedů. V průměru skončí v 𝒪(log⁡n)\mathcal{O}(\log n) fázích.

Problém

(PARA-MIS).

Vybereme velkou nezávislou množinu SS. Z grafu odebereme S∪N(S)S\cup N(S) spolu se všemi incidentními hranami. Zde N(S)={u∣∃v∈S:uv∈E}N(S)=\{u \mid \exists v\in S: uv\in E\} značí množinu sousedů.

I←∅I\gets \emptyset

while V≠0V\neq 0

for all v∈Vv \in V: pokud je dv=0d_v=0 pak I:=I∪{v}I:= I\cup \{v\}, V:=V\{v}V := V\setminus \{v\}.

for all v∈Vv \in V: označ vv s pravděpodobností 12dv\frac 1{2d_v} (nezávisle).

for all uv∈Euv \in E: pokud uu i vv jsou označeny, smaž označení nižšího stupně.

S←{v∈V∣v označený}S \gets \{v \in V \mid v \text{ označený}\}

I←I∪S,V←V\(S∪N(S)),E←I \gets I \cup S, ~ V \gets V\setminus (S\cup N(S)), ~ E \gets odeber hrany incidentní s vrcholem v S∪N(S)S \cup N(S).

return II, pokud V≠0V\neq 0.

Definice 0.369 (Dobrý vrchol). Vrchol v∈Vv \in V je dobrý, pokud má ≥dv3\geq \frac{d_v}3 sousedů stupně ≤dv\leq d_v. Jinak špatný.

Definice 0.370 (Špatná hrana). Hrana uv∈Euv \in E je špatná, pokud jsou oba její vrcholy špatné.

Lemma 0.13. Existuje konstanta α>0\alpha>0, že ∀v\forall v dobrý platí v jedné iteraci Pr⁡[v∈S∪N(S)]≥α\Pr[v \in S\cup N(S)] \geq \alpha. 6

Lemma 0.14. Špatných hran je nejvýše |E|2\frac {|E|}2. (Respektive, alespoň polovina hran je dobrá.)

Věta 0.174. Průměrný počet fází algoritmu je ≤𝒪(log⁡n)\leq \mathcal{O} (\log n).

Paralelní algoritmy pro hledání párování (bipartitní grafy).

Definice 0.371 (Edmondsova matice). Nechť (U,V,E)(U, V, E) je bipartitní graf, n=|U|=|V|n = |U| = |V|. Pak Edmondsova matice grafu je matice Bn×nB^{ n \times n } definována předpisem Bu,v={xu,vuv∈E,0jinak.B_{u, v} = \begin{cases} x_{u, v} & uv \in E, \\ 0 & \text{jinak.} \end{cases}

(Za každou hranu bude v matici jedna proměnná.)

Poznámka 0.43. det⁡(B)\det(B) je polynom, jehož monomy bijektivně odpovídají perfektním párovaním.

(sčítáme součin permutace matice a když se zrovna trefíme do párovaní, tak máme monom)

Zvol uniformně náhodně nezávisle xu,v∈{1,…,2n}x_{u, v} \in \left\{1, \ldots, 2n\right\},

Spočítej determinant.

if determinant ≠0\neq 0 then párování určitě existuje.

else párování neexistuje s pravděpodobností ≥12\ge \frac{1}{2}

Nyní si uvedeme Izolující lemma. To zaručuje, že při náhodném vážení hran existuje právě jedno PP s minimální vahou. To umožňuje paralelní výpočet determinantů Edmondsovy matice v čase polylogaritmickém.

Věta 0.175 (Izolující lemma). Nechť máme systém množin S1,…,Sn⊆{a1,…,am}S_1, \ldots, S_n \subseteq \left\{a_1, \ldots, a_m\right\} s náhodně zvolenými vahami w(a1),…,w(am)∈R,|R|=rw(a_1), \ldots, w(a_m) \in R, |R| = r. Pak7 Pr[∃právě jedináSjs minimálníw(Sj)]≥1−mr.\mathrm{Pr}\left[\exists\ \text{právě jediná}\ S_j\ \text{s minimální}\ w(S_j)\right] \ge 1 - \frac{m}{r}. Zde mm je počet hran a rr rozsah vah. Pro naše použití budeme chtít r=2mr = 2m

Zvol rovnoměrně náhodně váhy w(uv)∈{1,…,2m}w(uv) \in \left\{1, \ldots, 2m\right\} pro každou hranu.

Zasubstituuj do Edmondsovy matice xuv=2w(uv)x_{uv} = 2^{w(uv)}.

Najdi WW tak, že 2W2^W je maximální číslo tvaru 2α2^{\alpha}, že 2α∣det⁡(C)2^{\alpha} \mid \det(C).

for uv∈Euv \in E

Spočítej d=det⁡(Cuv)d = \det(C^{uv}), kde CuvC^{uv} vzniklo odstraněním řádku uu a sloupce vv z CC.

if 2W−w(uv)2^{W - w(uv)} je max. číslo tvaru 2α∣d2^{\alpha} \mid d then přidej uvuv do MM

Zkontroluj, že MM je PP

(*)  V algoritmu příspěvek PP je ±2w(M)=±∏uv∈M2w(uv)\pm 2^{w(M)} = \pm \prod_{uv \in M} 2^{w(uv)}

(**) Zajímá nás poslední index, kde det⁡=1\det = 1, jelikož to odpovídá unikátnímu perfektnímu párování. (všechny PP jsou ve tvaru 0b100000b10000, kde w(uv)w(uv) jsou nuly za 11)

Pokročilá diskrétní matematika

Barvení grafů.

Definice 0.372 (Vrcholová barevnost). Vrcholová barevnost χ(G)\chi(G) grafu GG je nejmenší počet barev, kterými lze obarvit vrcholy GG. (Tedy žádné dva sousední vrcholy nemají stejnou barvu).

Poznámka 0.44. Pro graf GG značíme:

Věta 0.176. Pro graf GG platí vztah: χ(G)≥|V(G)|α(G)\chi(G) \geq \dfrac{|V(G)|}{\alpha(G)}.

Definice 0.373 (Degenerovanost). Graf GG je dd-degenerovaný ≡\equiv každý podgraf HH grafu GG má δ(H)≤d\delta(H) \le d.

Poznámka 0.45. Pokud GG je Δ(G)\Delta(G)-degenerovaný, pak χ(G)≤Δ(G)+1\chi(G) \le \Delta(G) + 1.

Definice 0.374 (Hranové barvení). Hranové barvení je funkce b:E(G)→Bb: E(G) \to B (barvy) taková, že pokud e≠f∈Ee \neq f \in E a e,fe, f mají společný vrchol, pak b(e)≠b(f)b(e) \neq b(f).

Definice 0.375 (Hranová berevnost). Hranová barevnost GG (“chromatický index”) χ′(G)\chi'(G) je minimální počet barev pro hranové barvení GG.

Poznámka 0.46. dd-regulární graf hranově obarvitelný dd-barvami ⟹\implies každá barva tvoří perfektní párování.

Věta 0.177 (Brooks). Nechť GG je souvislý graf který není úplný a není lichá kružnice. Pak χ(G)≤Δ(G).\chi(G) \le \Delta(G).

Proof. Indukcí na počtu vrcholů: pokud má graf vrchol stupně <Δ< \Delta, odebereme ho a zpětně snadno dobarvíme. Pokud je Δ\Delta-regulární, najdeme “třešničku”:

Odebereme zz, dobarvíme G−zG-z Δ\Delta barvami. Pokud xx a yy mají různé barvy, tak lze zz dobarvit rovnou. Pokud mají stejnou barvu, barvy přeházíme tak, aby se uvolnila barva pro zz. Výjimkou, kdy to selže, je jen úplný graf nebo lichá kružnice. ◻

Věta 0.178 (Vizing). Pro každý graf GG platí, že Δ(G)≤χ′(G)≤Δ(G)+1.\Delta(G) \le \chi'(G) \le \Delta(G) + 1.

Proof. První nerovnost zjevně. Druhá, postupujeme hladově – každou hranu barvíme postupně jednou z 1,…,Δ+11, \ldots, \Delta+1 barev. Dále rozdělíme na případy; hledáme volné a použitelné vrcholy. Pokud u koncových vrcholů není volná barva, tak pomocí přehazování barev na alternativních řetězcích vždy uvolníme vhodnou barvu. ◻

Poznámka 0.47. Platí, že ω(G)≤χ(G)\omega(G) \leq \chi(G). A také ω(G‾)=α(G)\omega(\bar G) = \alpha(G).

Definice 0.376 (Perfektní graf). Graf GG je perfektní, pokud ∀H≤G:χ(H)=ω(H)\forall H \leq G : \chi(H) = \omega(H).

Věta 0.179 (Slabá o perfektních grafech). Graf GG je perfektní ⇔\iff G‾\bar{G} je perfektní.

Věta 0.180 (Silná o perfektních grafech). Graf GG je perfektní ⇔G\iff G ani G‾\bar G neobsahuje jako indukovaný podgraf lichý cyklus délky ≥5\geq 5.

Poznámka 0.48. Perfektní grafy jsou například KnK_n, bipartitní grafy nebo chordální grafy.

Definice 0.377 (Chordální graf). Graf je chordální, pokud neobsahuje Ck,k≥4C_k, k \ge 4 jako indukovaný podgraf.
(každá kružnice má chordu (tětivu))

Párování v grafech.

Definice 0.378 (Párování). Párování je množina hran MM taková, že každý vrchol je incidentní s nejvýše jednou hranou v MM. Tedy ∀e≠e′∈M:e∩e′=∅\forall e \neq e' \in M: e \cap e' = \emptyset.

Definice 0.379 (Největší párování). Největší párování je párování největší velikosti. Velikost je nejvýše n2\frac n2.

Definice 0.380 (Perfektní párování). Perfektní párování je párování, kde každý vrchol je incidentní s právě jednou hranou. (Neboli pokud v párování neexistuje žádný volný vrchol. |M|=|V|2|M| = \frac{|V|}{2}.)

Poznámka 0.49. Grafy s lichým početem vrcholů nemají perfektní párování.

Poznámka 0.50. kk-regulární bipartitní graf lze rozložit na kk-perfektních párování.

Tutteho a Petersenova věta.

Definice 0.381 (Tutteho podmínka). Platí ∀S⊆V:odd⁡(G−S)≤|S|\forall S \subseteq V : \operatorname{odd}(G - S) \leq |S|, kde odd\operatorname{odd} značí počet lichých komponent grafu.

Věta 0.181 (Tutte). Graf GG má perfektní párování ⇔\iff platí Tutteova podmínka.

Proof. Obměnou „⇒\Rightarrow“:. Říkáme, že pokud neplatí Tutteho podmínka, pak nemá perfektní párování.

Nechť ∃S⊆V\exists S\subseteq V t. ž. odd⁡(G−S)>|S|\operatorname{odd}(G - S) > |S|. V perfektním párování se alespoň 11 vrchol z každé liché komponenty musí spárovat s nějakým z SS, ale těch není dostatek. ◻

Věta 0.182 (Petersen). Každý 33-regulární 22-souvislý8 graf má perfektní párování.

Proof. Vezměme si libovolnou S⊆VS \subseteq V. Ukážeme, že splňuje Tutteho podmínku.
Pokud odd⁡(G−S)=0\operatorname{odd}(G - S) = 0, jsme hotovi.
Předpokládejme, tedy že v G−SG - S existuje lichá komponenta KK. Potom platí: ∑v∈V(K)deg⁡G(v)=3|V(K)|=2|E(K)|+ počet hran vycházející mimo K, což je liché číslo.\sum_{v\in V (K)} \deg_G(v) = 3|V (K)| = 2|E(K)| + \text{ počet hran vycházející mimo $K$, což je liché číslo.} Počet hran mezi KK a SS musí být alespoň 22, jinak máme most, je to tedy alespoň 33.
Maximální počet hran z SS je 3|S|3|S|, tudíž lichých komponent může být nejvýše 3|S|3\frac{3|S|}3, tedy |S||S|. ◻

Edmondsův kytičkový algoritmus.

Definice 0.382 (Volný vrchol). Volný vrchol je vrchol, který nevidí žádnou hranu párování.

Definice 0.383 (Střídavá cesta). Střídavá cesta je cesta, kde jsou všechny vnitřní vrcholy incidentní s párovací hranou a navíc tato hrana leží na cestě.

Definice 0.384 (Volná střídavá cesta). Volná střídavá cesta je taková střídavá cesta, jejíž koncové vrcholy jsou volné.

Definice 0.385 (Kytka). Kytka je tvořena stonkem a květem:

Algoritmus.

(Edmondsův). Na vstupu párování MM a zlepší jej nebo jej prohlásí za největší.

Kreslení grafů na plochách.

Definice 0.386 (Homeomorfismus). Nechť X⊆ℝn,Y⊆ℝmX \subseteq \mathbb{R}^n, Y \subseteq \mathbb{R}^m. Potom homeomorfismus z XX na YY je funkce f:X↦Yf: X \mapsto Y, která je spojitá, bijekce a f−1f^{-1} je spojitá.
Říkáme, že X,YX, Y jsou homeomorfní, X≅YX \cong Y, pokud mezi nimi existuje homeomorfismus.

Definice 0.387 (Plocha). Plocha Γ\Gamma je kompaktní (uzavřená, omezená), souvislá, 22-rozměrná varieta bez hranice (dostatečně malé okolí každého bodu je homeomorfní otevřenému okolí v ℝ2\mathbb{R}^2).

Definice 0.388 (Křivka). Křivka v prostoru XX je spojité zobrazení f:[0,1]→Xf:[0,1]\to X. Prostá křivka se sama neprotíná.

Konstrukce ploch.

Přidání ucha.

“Teleport, do kterého když vejdeme, tak na druhé straně vyjdeme opačně (otočeně).”
Vyřízneme dva kruhy, vezmeme plášť válce bez dna a vrchu, ohneme a přilepíme na díry po kruzích.

Přidání křižítka.

“Teleport, do kterého když vejdeme, tak nás to přesune naproti.”

Definice 0.389 (Orientovaná plocha). Pro g∈{0,1,…}g \in \left\{0, 1, \ldots\right\} nechť ∑g\sum_g značí plochu zvniklou ze sféry přidáním gg uší, tak říkáme, že ∑g\sum g je orientovatelná plocha rodu gg. (Σ0\Sigma_0 sféra, Σ1\Sigma_1 torus, Σ2\Sigma_2 dvojitý torus)

Definice 0.390 (Neorientovaná plocha). Pro g∈{1,2,…}g \in \left\{1, 2, \ldots\right\} nechť ∏g\prod_g značí plochu vzniklou ze sféry přidáním gg křížítek, tak říkáme, že ∏g\prod g je neorientovatelná plocha rodu gg. (Π1\Pi_1 projektivní rovina)

Eulerova charakteristika.

Definice 0.391 (Nakreslení grafu). Nakreslení grafu G=(V,E)G = (V, E) na plochu Γ\Gamma je zobrazení φ\varphi t. ž.:

Definice 0.392 (Stěna nakreslení). Souvislá komponenta Γ\((⋃e∈Eφ(e))∪(⋃x∈Vφ(x)))\displaystyle\Gamma \setminus \left(\left(\bigcup_{e \in E}\varphi(e)\right) \cup \left(\bigcup_{x \in V}\varphi(x)\right)\right).

Definice 0.393 (Buňkové nakreslení). Každá stěna je homeomorfní otevřenému kruhu v ℝ2\mathbb{R}^2.

Definice 0.394 (Eulerova charakteristika). Eulerova charakteristika plochy Γ\Gamma je χ(Γ)={2−gΓ≅∏(g≥1)2−2gΓ≅∑(g≥0)=2−#křížítek−2⋅#uší.\begin{aligned} \chi(\Gamma) &= \begin{cases} 2 - g & \Gamma \cong \prod (g \ge 1) \\ 2 - 2g & \Gamma \cong \sum (g \ge 0) \end{cases} \\ \ &= 2 - \text{\# křížítek} - 2 \cdot \text{\# uší}. \end{aligned}

Věta 0.183 (Zobecněná Eulerova formule). Nechť máme nakreslení grafu G=(V,E)G = (V, E) na ploše Γ\Gamma, které má SS stěn. Pak |V|−|E|+|S|≥χ(Γ)|V| - |E| + |S| \ge \chi(\Gamma). Pokud je buňkové, tak dokonce |V|−|E|+|S|=χ(Γ)|V| - |E| + |S| = \chi(\Gamma).

Důsledek 0.12. Každý graf GG nakreslitelný na plochu Γ\Gamma splní |E|≤3|V|−3χ(Γ)|E| \le 3|V| - 3\chi (\Gamma), pokud |V|≥4|V| \ge 4.

Věta 0.184. Nechť Γ\Gamma je plocha, Γ≠Σ0\Gamma \neq \Sigma_0 a nechť GG je graf nakreslený na Γ\Gamma.
Potom GG obsahuje vrchol stupně δ(G)≤⌊5+49−24χ(Γ)2⌋\delta(G)\le \left\lfloor \frac{5 + \sqrt{49 - 24 \chi (\Gamma)}}{2} \right\rfloor.

Poznámka 0.51. Platí vztah ∑f∈Sdelka(f)=2|E|=∑v∈Vdeg⁡(v)\displaystyle \sum_{f\in S} \mathrm{delka}(f) = 2|E| = \sum_{v\in V}\deg (v).

Grafové minory.

Definice 0.395 (Minor). Nechť H,GH, G jsou grafy. Pak HH je minor GG (resp. GG obsahuje HH jako minor), značíme H≼GH \preceq G, pokud HH lze získat z GG posloupností mazání vrcholů, mazání hran nebo kontrakcí hran.

Vlastnosti.

Pro grafové minory platí následující vlastnosti:

Věta 0.185 (Kuratowski). GG rovinný ⇔\iff neobsahuje dělení K5K_5 ani K3,3K_{3, 3} jako podgraf.

Věta 0.186 (Kuratowski-Warner). GG rovinný ⇔\iff neobsahuje K5K_5 ani K3,3K_{3, 3} jako minor.

Množiny a zobrazení.

Definice 0.396 (Třída). Pokud je φ(x)\varphi(x) formule, tak výraz {x∣φ(x)}\{x\mid \varphi(x)\} nazýváme třídový term. Definuje “soubor” všech množin xx, pro které platí φ(x)\varphi(x). Tomuto souboru říkáme třída určená formulí φ(x)\varphi(x).

Poznámka 0.52. Každá množina je zároveň i třídou, protože x={z∣z∈x}x=\{z\mid z\in x\}.

Definice 0.397 (Vlastní třída). Třídu, která není množinou, nazýváme vlastní třída.
Vlastní třídou jsou například: {G∣G je grupa},třída ordinálních čísel On\{G\mid G \text{ je grupa}\}, \text{třída ordinálních čísel } O_n, třída všech bijekcí mezi V→VV \to V, {(X,<)∣(X,<) je dobré uspořádání}\{(X, <) \mid (X, <) \text{ je dobré uspořádání}\}.

Definice 0.398 (Třídové operace). Pro třídy AA a BB definujeme

Definice 0.399 (Kartézský součin). Kartézský součin tříd AA a BB je třída A×B={(a,b)∣a∈A∧b∈B}⊆𝒫(𝒫(A∪B)).A\times B = \{(a,\,b) \mid a\in A \wedge b\in B\} \subseteq \mathcal P(\mathcal P(A \cup B)). Kartézský součin tříd A1,A2,…AnA_1,\,A_2,\dots A_n definujeme induktivně jako A1×⋯×An=(A1×⋯×An−1)×An={(a1,…an)}⋀i=1nai∈Ai.A_1\times \cdots \times A_n = (A_1\times \cdots \times A_{n-1})\times A_n = \{(a_1,\dots a_n)\}{\textstyle\bigwedge_{i=1}^n a_i\in A_i}.

Lemma 0.15. Jsou-li xx a yy množiny, potom je x×yx\times y také množina.

Definice 0.400 (Binární relace). Binární relace je libovolná třída R⊆V×VR\subseteq V\times V. Namísto (x,y)∈R(x,y)\in R píšeme xRyx\mathbin{R}y. Podobně lze definovat nn-ární relaci jako R⊆VnR\subseteq V^n.

Definice 0.401. Pro (binární) relaci RR a třídu XX definujeme třídy

Definice 0.402. Relace odpovídající relačním symbolům jazyka teorie množin jsou

Definice 0.403 (Skládání relací). Pro relace RR a SS definujeme relaci R∘S={(u,w)∣(∃v)(uRv∧vSw)}R\circ S = \{(u,w)\mid (\exists v)(u\mathbin Rv \wedge v\mathbin Sw)\}

Definice 0.404 (Zobrazení). Relace FF je zobrazení (funkce) ≡\equiv (∀u)(∀v)(∀w)(((u,v)∈F∧(u,w)∈F)→v=w).(\forall u)(\forall v)(\forall w)\bigl(((u,v)\in F \wedge (u,w)\in F)\rightarrow v=w\bigr). Namísto uFvu \mathbin F v píšeme F(u)=vF(u) = v, při definování píšeme F:u↦vF:u\mapsto v.

Poznámka 0.53. FF je zobrazení ⇔(∀x∈Dom⁡(F))(∃!y∈Rng⁡(F))(F(x)=y)\iff (\forall x\in\operatorname{Dom}(F))(\exists! y\in\operatorname{Rng}(F))(F(x) = y).

Definice 0.405 (Prosté zobrazení, bijekce). Řekneme, že zobrazení FF je

Definice 0.406 (Suma). Pro každou množinu xx existuje množina ss, která je sjednocením všech množin uvnitř xx. Této množině říkáme suma množiny xx a značíme ji ⋃x\bigcup x. (∀x)(∃s):(∀z)(z∈s⇔(∃y)(y∈x∧z∈y)).(\forall x)(\exists s):(\forall z)\bigl(z\in s \iff (\exists y)(y\in x\wedge z\in y)\bigr).

Definice 0.407 (Potenční množina). Pro každou množinu xx existuje množina všech jejích podmnožin. Této množině říkáme potenční množina množiny xx a značíme ji 𝒫(x)\mathcal{P}(x). (∀x)(∃p):(∀z)(z∈p⇔z⊆x).(\forall x)(\exists p):(\forall z)(z\in p\iff z\subseteq x).

Subvalence a ekvivalence množin.

Definice 0.408 (Ekvivalence). Relace RR je na třídě XX ekvivalence ≡\equiv je reflexivní, symetrická a tranzitivní.

Definice 0.409 (Třídy ekvivalence). Nechť RR je ekvivalence na třídě XX. Pro x∈Xx\in X definujeme třídu [x]R={y∣y∈X∧xRy}=R[{x}]∩X,[x]_R = \{y\mid y\in X\wedge x\mathbin Ry\} = R[\{x\}]\cap X, kterou nazýváme ekvivalenční třída prvku xx.

Definice 0.410. Pro množiny xx a yy definujeme relace

  1. x≈y≡x \approx y \equiv existuje bijekce f:x→yf: x\to y, …\ldots stejná mohutnost

  2. x≼y≡x \preceq y \equiv existuje prosté zobrazení f:x→yf: x\to y, …\ldots subvalence

  3. x≺y≡x≼y∧x≉yx \prec y \equiv x\preceq y \wedge x \not\approx y.

Věta 0.187 (Cantor, Schröder, Bernstein). x≈y⇔(x≼y∧y≼x)x\approx y \iff (x\preceq y \wedge y\preceq x).

Konečné a spočetné množiny.

Definice 0.411 (Tarski – konečnost). Množina xx je konečná ≡\equiv každá neprázdná a⊆𝒫(x)a\subseteq \mathcal{P}(x) má maximální prvek vůči inkluzi. Pokud je xx konečná, tak píšeme Fin⁡(x)\operatorname{Fin}(x).

Poznámka 0.54. Množina xx je konečná ⇔\iff každá ∅≠a⊆𝒫(x)\emptyset\neq a\subseteq\mathcal{P}(x) má minimální prvek vůči inkluzi.

Lemma 0.16. Je-li xx konečná a yy nekonečná, potom x≺yx\prec y.

Definice 0.412 (Spočetnost). Množina xx je

Věta 0.188. Platí

  1. každá shora omezená podmnožina A⊆ωA\subseteq\omega je konečná,

  2. každá shora neomezená podmnožina A⊆ωA\subseteq\omega je spočetná.

Věta 0.189. Jsou-li A,BA,\,B spočetné množiny, pak A∪BA\cup B a A×BA\times B jsou také spočetné.

Mohutnosti množin různých čísel.

Věta 0.190. Množiny ℚ,ℤ{\mathbb{Q}}, {\mathbb{Z}} jsou spočetné.

Věta 0.191 (Cantor). Pro každou množinu xx platí x≺𝒫(x)x\prec \mathcal{P}(x).

Důsledek 0.13. Množina 𝒫(ω)\mathcal{P}(\omega) je nespočetná.

Věta 0.192. ω2≈𝒫(ω)≈ℝ≈[0,1]≈(0,1){^\omega} 2 \approx\mathcal{P}(\omega) \approx {\mathbb{R}}\approx [0,1] \approx (0,\,1).

Věta 0.193. Množiny ℚ{\mathbb{Q}} a ℝ{\mathbb{R}} nejsou ekvivalentní.

Důkaz. (Spočetnost ℚ{\mathbb{Q}}).
Nechť ℚ⊆ω×ω×2{\mathbb{Q}}\subseteq \omega \times \omega \times 2 (čitat., jmenov., sign). f:ω→ℚ,g:ℚ→ωn↦(n,1,0),(a,b,c)↦2a⋅3b⋅5c\begin{array}{cc} f:\omega \to {\mathbb{Q}}, & g:{\mathbb{Q}}\to \omega \\[2mm] n \mapsto (n,1,0), & (a,b,c) \mapsto 2^a\cdot 3^b\cdot 5^c \end{array} ff je injektivní: f(n1)=f(n2)⇒n1=n2f(n_1)=f(n_2)\Rightarrow n_1=n_2.
gg je injektivní z jednoznačnosti prvočíselného rozkladu. Podle Cantor-Schröder–Bernstein věty existuje bijekce ℚ≈ω{\mathbb{Q}}\approx \omega. ▫\square

Proof. (Cantorovou diagonální metodou).
Víme, že ℚ≈ℕ{\mathbb{Q}}\approx {\mathbb{N}} a ℝ≈(0,1){\mathbb{R}}\approx (0,1). Pro spor předpokládejme, že existuje bijekce ℕ≈(0,1)\mathbb{N} \approx (0,1). Tedy všechna reálná čísla v tomto intervalu lze zapsat jako nekonečně dlouhý očíslovaný seznam prvků aij∈{0,1,…,9}a_{ij} \in \{0,1,\dots,9\}. r1=0.𝒂𝟏𝟏a12a13a14…r2=0.a21𝒂𝟐𝟐a23a24…r3=0.a31a32𝒂𝟑𝟑a34……\begin{align*} r_1 &= 0.\boldsymbol{a_{11}} a_{12} a_{13} a_{14} \dots \\ r_2 &= 0.a_{21} \boldsymbol{a_{22}} a_{23} a_{24} \dots \\ r_3 &= 0.a_{31} a_{32} \boldsymbol{a_{33}} a_{34} \dots \\ &\ldots \end{align*} Nyní sestrojíme nové reálné číslo r=0.b1b2b3b4…r = 0.b_1 b_2 b_3 b_4 \dots takto: bi={1,je-li aii≠12,je-li aii=1b_i = \begin{cases} 1, & \text{je-li } a_{ii} \neq 1 \\ 2, & \text{je-li } a_{ii} = 1 \end{cases}.
Tímto jsme zajistili, že rr se liší od každého rir_i alespoň v ii-té cifře. Tedy r≠rir \neq r_i pro všechna ii. Přitom ale r∈(0,1)r\in (0,1), takže mělo být v seznamu, což je spor. ◻

Dobré uspořádání.

Definice 0.413 (Uspořádání). Relace R⊆V×VR\subseteq V\times V je na třídě XX

Pokud je RR uspořádání, tak místo xRyx\mathbin Ry píšeme x≤Ryx\le_R y. Pro ostré uspořádání píšeme x<Ryx<_R y.

Definice 0.414. Nechť RR je uspořádání na třídě AA a X⊆AX\subseteq A. Prvek a∈Aa\in A je

Největší prvek, resp. supremum značíme max⁡R(X)\max_R(X), resp. sup⁡R(X)\sup_R(X); pokud existují. Obdobně definujeme minorantu, minimální prvek, nejmenší prvek a infimum.

Definice 0.415. Řekneme, že uspořádání RR je na množině AA

Věta 0.194 (O dobrém uspořádání). Každou množinu lze dobře uspořádat.

Poznámka 0.55. V teorii ZF je věta o dobrém uspořádání ekvivalentní s axiomem výběru (AC).

Ordinální a kardinální čísla

Ordinální čísla jsou zobecnění přirozených čísel a udávají typy dobře uspořádaných množin. Pomocí ordinálních čísel pak lze nadefinovat kardinální čísla, což jsou speciální ordinální čísla, která měří mohutnosti množin. Ordinální čísla definujeme tak, aby byla dobře uspořádána relací ∈\in, takže na nich budeme moci provádět takzvanou transfinitní indukci.

Definice 0.416. Třída XX je tranzitivní ≡y∈x∈X→y∈X\equiv y\in x\in X\rightarrow y\in X.

Definice 0.417 (Ordinální číslo). Množina xx je ordinální číslo ≡\equiv

  1. xx je tranzitivní,

  2. relace ∈\in je dobré ostré uspořádání na xx. …\ldots z y∈xy\in x plyne y⊆xy\subseteq x

Třídu všech ordinální čísel značíme OnO_n. (Jedná se o vlastní třídu).

Definice 0.418 (Kardinální čísla). Ordinální číslo α\alpha nazveme kardinálním číslem, pokud není bijektivně ekvivalentní s žádným menším ordinálním číslem β<α\beta < \alpha.

Třídu všech kardinálních čísel označíme CnC_n. Tuto definici můžeme zapsat ve tvaru α∈Cn⇔(∀β<α)(β≉α).\alpha \in C_n \iff (\forall \beta < \alpha)\,(\beta \not\approx \alpha). Kardinál je tedy nejmenší ordinál dané mohutnosti.

Definice 0.419 (Zobecnění ℕ{\mathbb{N}} von Neumannovou konstrukcí). 0=∅,1={0}={∅},2={0,1}={∅,{∅}},…0 = \emptyset, \quad 1 = \{0\} = \{\emptyset\}, \quad 2 = \{0, 1\} = \{\emptyset, \{\emptyset\}\}, \dots Tedy každé n∈ℕn \in \mathbb{N} je ordinálem.

Definice 0.420 (Následovník a limitní ordinál). Z transfinitní indukce máme dva typy ordinálů:

Poznámka 0.56 (Operace na ordinálech). Na ordinálech lze uplatnit následující operace:


  1. Primitivní funkce lze spočítat Riemannovským integrálem.↩︎

  2. rovnost právě když jsou u,vu,v lineárně závislé↩︎

  3. Věta je existenčního charakteru. Prakticky se jedná se o metodu na testování PD matic, slouží k tomu algoritmus.↩︎

  4. Pokud R(k,l−1R(k, l-1 i R(k−1,l)R(k-1, l) jsou sudá, pak platí R(k,l)≤R(k−1,l)+R(k,l−1)−1R(k,l) \leq R(k-1, l) + R(k,l-1)-1.↩︎

  5. Geometricky odpovídá tečně funkce v daném bodě a příslušné ose.↩︎

  6. Pravděpodobnost, že daný vrchol odstraníme je >α> \alpha↩︎

  7. Prvky aia_i budou hrany v grafu a množiny SjS_j budou perfektní párování. Chceme nějak zvolit váhy a ukázat, že nám nějak jednoznačně identifikují nějakou z množin (tedy perfektních párování).↩︎

  8. Vrcholově i hranově, pro 33-regulární grafy je to to samé; alternativně můžeme říct graf bez mostů a artikulací.↩︎