diff --git a/prace/bakalarka/index.md b/prace/bakalarka/index.md
index 6dd626906e443fc60b66a42ccdc272c1bfe805fa..6208bce3ebc4422dfbc2eaf64ca6779eb5bbb3bb 100755
--- a/prace/bakalarka/index.md
+++ b/prace/bakalarka/index.md
@@ -13,12 +13,12 @@ ft:
         Na barvicí linku vjíždí řada aut.
         Od každého typu auta jsou někde v řadě právě dvě auta a
         jedno z nich bychom rádi nabarvili červeně a druhé modře.
-        Měnit barvu, kterou aktuálně barvíme, je složitá operace,
+        Měnit barvu, kterou aktuálně barvíme, je drahá operace,
         proto bychom rádi pro danou posloupnost aut provedli co nejméně změn.
         Vstupem úlohy jsou typy aut v posloupnost a výstupem je jejich obarvení.
         Je známé, že úloha je NP-těžká a za určitých předpokladů dokonce neaproximovatelná,
         proto je na místě zkoumat řešení, co se chovají dobře na náhodném vstupu.
-        V této práci je představen nový algoritmus založený na semidefinitním programování,
+        V této práci je představen algoritmus založený na semidefinitním programování,
         který dle provedených měření pro náhodné vstupy dosahuje výsledků okolo 0.34-násobku počtu typů aut.
         O algoritmu jsme dokázali, že pro každý vstup vrátí ve střední hodnotě řešení nejhůře o 0.212 násobek počtu typů aut horší než optimum.
     keywords: [binární paint shop problém, aproximační algoritmus]
@@ -34,27 +34,20 @@ ft:
             A line of cars enters a paint shop.
             There are exactly two cars of each type somewhere in the line.
             The aim is to color one of these two cars red and the other blue.
-            It is hard to change the current color in the paint shop
+            It is expensive to switch the current color in the paint shop
             so for a given sequence of cars we would like to minimize the number of color changes.
             Input of the task are types of cars in the line and output is the coloring of theses cars.
             This task is known to be NP-hard, and under specific conditions, it defies polynomial time approximations.
-            Therefore, it is a good idea to find some algorithms which behave well on randomly generated input.
-            In this thesis is introduced new algorithm based on semidefinite programming
-            which considered to madden test on random inputs reach solutions near to 0.34 times number of car types.
+            Therefore, it is a good idea to find some algorithms which behave well on a randomly generated input.
+            This thesis introduces an algorithm based on semidefinite programming. Experiments on random inputs show it reaches solutions near to 0.34 times the number of car types.
             We proved that for each input this algorithm returns a solution with expected deviation from optimum of at most 0.212 times the number of car types.
 ---
 ``` {c=cmt}
 Klikaci věci + generování obsahu formátítkem
 Algoritmy velké písmena
-Obsah bez změn velikostí
-barevné schéma grafu
-
-Absolutní číslování ve struktuře
 
 Vizualizace: více pohledů a správné pořadí hran.
-Jednotná TeXlib pro asymptote
-
-Velikost \vec
+TODO SAZBA blockquote
 ```
 
 ::: {only=html}
@@ -110,8 +103,8 @@ Tedy měnit barvu, kterou se barví, je složitá a drahá záležitost.
 Chceme tedy nají obarvení aut tak, aby od každého typu bylo jedno červené a jedno modré, přitom počet změn barev v řadě byl co nejmenší.
 :::
 
-Počet změn barev řešení považujeme za skóre algoritmu.
-Relativní skóre pak je poměr skóre a počtu typů aut.
+Počet změn barev řešení považujeme za _skóre_ algoritmu.
+_Relativní skóre_ pak je poměr skóre a počtu typů aut.
 
 Problém můžeme chápat buď jako optimalizační problém, kde účelová funkce je počet změn v řešení a snažíme se ji minimalizovat,
 nebo jako rozhodovací problém, kde se ptáme, jestli existuje řešení s nejvýše nějakým zadaným počtem změn.
@@ -128,11 +121,11 @@ Struktura práce
 
 Nejprve si zavedeme notaci potřebnou pro pohodlnou práci s BPS
 a definujeme si aproximační algoritmy.
-Dále následují shrnutí doposud známých algoritmů a jiných výsledků ohledně BPS.
-V následující kapitole je představen princip semidefinitního programování,
-které má uplatnění v algoritmu představeném o kapitolu dál.
-Poslední kapitola se věnuje praktické implementaci tohoto algoritmu
-a naměřeným datům o něm.
+Kapitola 2 obsahuje shrnutí doposud známých algoritmů a jiných výsledků ohledně BPS.
+V kapitole 3 je představen princip semidefinitního programování,
+které má uplatnění v algoritmu představeném o kapitole 4.
+Kapitola 5 se věnuje praktické implementacím algoritmů
+a naměřeným datům o nich.
 
 Notace
 ------
@@ -223,9 +216,9 @@ Navíc chceme, aby všechna přípustná řešení měla omezenou délku nějak
 Snadno nahlédneme, že za takovýchto podmínek je rozhodovací verze,
 jestli je optimum alespoň zadané číslo, v $\NP$.
 Pro takovou úlohu většinou hledáme polynomiální aproximační algoritmus.
-Binární paint shop vyhovuje všem těchto podmínkám.
+Binární paint shop vyhovuje všem těmto podmínkám.
 
-Pokud existuje $(1-\varepsilon)$-aproximační algoritmus pro každé $\varepsilon > 0$, říkáme, že máme aproximační schéma.
+Pokud existuje $(1+\varepsilon)$-aproximační algoritmus pro každé $\varepsilon > 0$, říkáme, že máme aproximační schéma.
 
 Doposud známé výsledky
 ======================
@@ -290,7 +283,7 @@ Graf střední hodnoty rel. skóre hladového řešení $\delta_{\algo g}(n)$ v
 :::
 
 U hladového řešení je tedy střední hodnota skóre přes uniformně náhodný vstup přesně vyčíslená.
-Pro nás je zejména důležité, že ji jsme schopni shora odhadnout.
+Pro nás je zejména důležité, že jsme ji schopni shora odhadnout.
 Střední hodnotu totiž můžeme považovat za ukazatel kvality algoritmu (čím menší je, tím se jedná o lepší algoritmus) a tedy horní odhad nám dává záruku kvality algoritmu.
 
 Zajímavé je pro nás zkoumat chování algoritmů na velkých vstupech, tedy dává
@@ -368,7 +361,7 @@ Ze vstupu odebereme auta typu $t_0$ a zarekurzíme se na zbytek.
 Tím získáme nějaké obarvení, které může použít na původní vstup s tím,
 že auta typu $t_0$ zatím nebudou obarvená, ty dobarvíme dle následujících pravidel:
 
-A) Když $o_0 = 2$ a $n>1$ nastavíme $c(1)=c(2)$.
+A) Když $o_0 = 1$ a $n>1$ nastavíme $c(1)=c(2)$.
 B) Když $o_0=2n-1$ nastavíme $c(0) = 1$.
 C) Když $N(o_0) = \{t,t\}$ pro nějaké $t\in\{0,1\}$, nastavíme i $c(o_0) = t$.
 D) Když $N(o_0) = \{0,1\}$, nastavíme $c(0) = c(1)$.
@@ -631,9 +624,9 @@ import graph;
 size(380,180,IgnoreAspect);
 real f(real x) {return 1/2-x/2;}
 real g(real x) {return acos(x)/pi;}
-draw(graph(f, -1, 1),red,"\vbox{\hbox{Pravděpodobnost řezu}\vskip 2pt\hbox{$\frac{1 - \vecoverrightarrow{y_u}^{\rm T}\vecoverrightarrow{y_v}}{2}$}}");
+draw(graph(f, -1, 1),red,"\vbox{\hbox{Účelová funkce}\vskip 2pt\hbox{$\frac{1 - \vecoverrightarrow{y_u}^{\rm T}\vecoverrightarrow{y_v}}{2}$}}");
 real g(real x) {return acos(x)/pi;}
-draw(graph(g, -1, 1),blue,"\vbox{\hbox{Účelová funkce}\vskip 2pt\hbox{$\frac{\arccos \vecoverrightarrow{y_u}^{\rm\,T} \vecoverrightarrow{y_v}}{\pi}$}}");
+draw(graph(g, -1, 1),blue,"\vbox{\hbox{Pravděpodobnost řezu}\vskip 2pt\hbox{$\frac{\arccos \vecoverrightarrow{y_u}^{\rm\,T} \vecoverrightarrow{y_v}}{\pi}$}}");
 xaxis("$\vecoverrightarrow{y_u}^{\rm T}\vecoverrightarrow{y_v}$",BottomTop,LeftTicks);
 yaxis(LeftRight,RightTicks);
 add(legend(linelength=15pt),point(E),10E);
@@ -862,8 +855,8 @@ Praktické řešení semidef. programů
 -----------------------------------------
 U triviálních algoritmů byla implementace poměrně přímočará.
 Ovšem u řešení semidefinitního programování je většina složitosti algoritmu schovaná právě v řešení semidefinitních programů,
-což už svojí složitostí nepatří mezi algoritmy, které bych chtěl (re)implementovat.
-Proto je nutné se spolehnout na funkčnost již existujících implementací.
+což už svojí složitostí nepatří mezi algoritmy, které bychom chtěli (re)implementovat.
+Proto je žádoucí se spolehnout na funkčnost již existujících implementací.
 Bohužel kvalita dostupných řešičů semidefinitních programů je poměrně nízká.
 
 
@@ -916,10 +909,6 @@ Naštěstí oprava tohoto problému je přímočará -- stačí do takovýchto f
 Toto bohužel není jediný problém s SDPA-C.
 Na některých vstupech knihovna dojde do stavu, kdy nemá semidefinitní matici a výpočet spadne s následující chybou:
 
-``` {c=cmt}
-TODO SAZBA blockquote
-```
-
 ```
 CHOLMOD warning: matrix not positive definite.
 file: ../Supernodal/t_cholmod_super_numeric.c line: 911
@@ -1119,7 +1108,7 @@ Proto je na místě změřit, jak rychlé řešení jsou.
 Testování probíhalo na stroji s procesorem AMD Ryzen 5 7600.
 Programům bylo poskytnuto $16\,{\rm GB}$ operační paměti
 a běh byl omezen na jedno jádro procesoru.
-Během výpočtu na stoji neběželo nic kromě výpočtu a základních funkcí operačního systému.
+Během výpočtu na stroji neběželo nic kromě výpočtu a základních funkcí operačního systému.
 
 ::: {#tmp2 c=figure}
 ```python {c=plotly}
@@ -1160,7 +1149,7 @@ fig.update_layout(
 Závislost času řešení na velikosti vstupu.
 :::
 
-Dle výše uvedeného grafu můžeme usuzovat, že časová složitost obou algoritmů je v $\O(n^4) \cap \Omega(n^3)$.
+Dle výše uvedeného grafu můžeme regresí v logaritmickém grafu usuzovat, že časová složitost obou algoritmů je v $\O(n^4) \cap \Omega(n^3)$.
 Implementace pomocí SDPA-C má menší multiplikativní konstantu a navíc mnohem rychlejší čas startu, který se zejména projevuje na malých instancích.
 
 \vfil\supereject
@@ -1189,6 +1178,7 @@ fig = go.Figure(data=[go.Box(
     ) for d,name in [
         [data.pipelines["semidef_prog(10)"], "sdp – SDPA-C"],
         [data.pipelines["semidef_prog_sage.sage(10, CVXOPT)"], "sdp – Sage"],
+        [data.pipelines["greedy"], "g"],
         [data.pipelines["rg"], "rg"],
         [data.pipelines["rsg"], "rsg"],
     ]])
@@ -1207,11 +1197,8 @@ fig.update_layout(
 Naměřená závislost relativního skóre řešení na velikosti vstupu.
 :::
 
-Na výše uvedeném grafu si můžeme všimnout, že s rostoucím $n$
-se u všech měřených algoritmů zmenšuje rozptyl relativního skóre
-navíc i naměřená střední hodnota má spíše klesající či stagnující
-tendenci. Tedy pokud tento trend pokračuje i dále, algoritmy
-se na větších než měřených vstupech chovají alespoň tak dobře jako na měřených.
+Na výše uvedeném grafu a tabulek na následujících stranách si můžeme všimnout, že s rostoucím $n$
+se u všech měřených algoritmů zmenšuje rozptyl relativního skóre.
 
 Z grafu vidíme, že pro dostatečně velká $n$ je naměřené relativní skóre algoritmu $\algo{sdp}$ menší než $0.34$.
 Z toho můžeme tedy usuzovat, že $\delta_{\algo{sdp}}(n) \le 0.34$ pro $n\in\{100, 200, 400, 566, 800, 1131, 1600, 2263\}$.