%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% I, the copyright holder of this work, release this work into the %% public domain. This applies worldwide. In some countries this may %% not be legally possible; if so: I grant anyone the right to use %% this work for any purpose, without any conditions, unless such %% conditions are required by law. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[ printed, %% The `digital` option enables the default options for the %% digital version of a document. Replace with `printed` %% to enable the default options for the printed version %% of a document. color, %% Uncomment these lines (by removing the %% at the %% beginning) to use color in the digital version of your %% document table, %% The `table` option causes the coloring of tables. %% Replace with `notable` to restore plain LaTeX tables. oneside, %% The `twoside` option enables double-sided typesetting. %% Use at least 120 g/m² paper to prevent show-through. %% Replace with `oneside` to use one-sided typesetting; %% use only if you don’t have access to a double-sided %% printer, or if one-sided typesetting is a formal %% requirement at your faculty. nolof, %% The `lof` option prints the List of Figures. Replace %% with `nolof` to hide the List of Figures. nolot, %% The `lot` option prints the List of Tables. Replace %% with `nolot` to hide the List of Tables. %% More options are listed in the user guide at %% . ]{fithesis3} %% The following section sets up the locales used in the thesis. \usepackage[resetfonts]{cmap} %% We need to load the T2A font encoding \usepackage[T1,T2A]{fontenc} %% to use the Cyrillic fonts with Russian texts. \usepackage[ main=english, %% By using `czech` or `slovak` as the main locale %% instead of `english`, you can typeset the thesis %% in either Czech or Slovak, respectively. english, czech, slovak %% The additional keys allow ]{babel} %% foreign texts to be typeset as follows: %% %% \begin{otherlanguage}{german} ... \end{otherlanguage} %% \begin{otherlanguage}{russian} ... \end{otherlanguage} %% \begin{otherlanguage}{czech} ... \end{otherlanguage} %% \begin{otherlanguage}{slovak} ... \end{otherlanguage} %% %% For non-Latin scripts, it may be necessary to load additional %% fonts: \usepackage{paratype} \def\textrussian#1{{\usefont{T2A}{PTSerif-TLF}{m}{rm}#1}} %% %% The following section sets up the metadata of the thesis. \thesissetup{ date = \the\year/\the\month/\the\day, university = mu, faculty = fi, type = bc, author = Matej Focko, gender = m, advisor = {prof. RNDr. Ivana Černá, CSc.}, title = {Rank-Balanced Trees}, TeXtitle = {Rank-Balanced Trees}, keywords = {algorithms, data structures, rank, trees, balanced trees, study material, visualization, ...}, TeXkeywords = {algorithms, data structures, rank, trees, balanced trees, study material, visualization, \ldots}, abstract = {% In the thesis we demonstrate usage of a rank for implementing balanced binary-search trees and algorithms related to a specific rank-balanced tree, the weak AVL tree. First part of the thesis consists of description of the rank-balanced tree followed by a comparison to other balanced trees that can be implemented using rank, diagrams and pseudo-codes related to the weak AVL tree. We also present an implementation of the weak AVL tree in Python, tested with a property-based testing. The final part of the thesis is a web-page that allows performing operations on the weak AVL tree with animations and step-by-step walk-through of a pseudo-code. }, thanks = {% \textit{TBD} }, bib = bibliography.bib, %% Uncomment the following line (by removing the %% at the %% beginning) and replace `assignment.pdf` with the filename %% of your scanned thesis assignment. %% assignment = assignment.pdf, } \usepackage{makeidx} %% The `makeidx` package contains \makeindex %% helper commands for index typesetting. %% These additional packages are used within the document: \usepackage{paralist} %% Compact list environments \usepackage{amsmath} %% Mathematics \usepackage{amsthm} \usepackage{amsfonts} \usepackage{url} %% Hyperlinks \usepackage{tabularx} %% Tables \usepackage{tabu} \usepackage{booktabs} \usepackage[vlined,longend,linesnumbered]{algorithm2e} \usepackage{listings} %% Source code highlighting \lstset{ basicstyle = \ttfamily, identifierstyle = \color{black}, keywordstyle = \color{blue}, keywordstyle = {[2]\color{cyan}}, keywordstyle = {[3]\color{olive}}, stringstyle = \color{teal}, commentstyle = \itshape\color{magenta}, breaklines = true, } \usepackage{floatrow} %% Putting captions above tables \floatsetup[table]{capposition=top} \usepackage{hyperref} \usepackage[x11names, svgnames, rgb]{xcolor} \usepackage{tikz} \usetikzlibrary{decorations,arrows,shapes} \SetKwProg{Fn}{function}{ is}{end} \SetKwProg{Proc}{procedure}{ is}{end} \newcommand{\avlDeleteRebalance}{\hyperref[algorithm:avl:deleteRebalance]{\texttt{deleteRebalance}}} \newcommand{\avlDeleteFixNode}{\hyperref[algorithm:avl:deleteFixNode]{\texttt{deleteFixNode}}} \newcommand{\avlDeleteRotate}{\hyperref[algorithm:avl:deleteRotate]{\texttt{deleteRotate}}} \newcommand{\findParentNode}{\hyperref[algorithm:findParentNode]{\texttt{findParentNode}}} \newcommand{\wavlInsertRebalance}{\hyperref[algorithm:wavl:insertRebalance]{\texttt{insertRebalance}}} \newcommand{\wavlFixZeroChild}{\hyperref[algorithm:wavl:fix0Child]{\texttt{fix0Child}}} \newcommand{\wavlDeleteRebalance}{\hyperref[algorithm:wavl:deleteRebalance]{\texttt{deleteRebalance}}} \newcommand{\wavlBottomUpDelete}{\hyperref[algorithm:wavl:bottomUpDelete]{\texttt{bottomUpDelete}}} \newcommand{\wavlFixDelete}{\hyperref[algorithm:wavl:fixDelete]{\texttt{fixDelete}}} \begin{document} \include{introduction} \include{self_balancing_search_trees} \include{rank_balanced_trees} \include{wavl_trees} \include{implementation} \include{visualization} \include{summary} \appendix %% Start the appendices. \chapter{An appendix} Here you can insert the appendices of your thesis. \end{document}