]> mj.ucw.cz Git - saga.git/blob - notation.tex
Fully dynamic MSF. Unfortunately not my algorithm as it was found
[saga.git] / notation.tex
1 \ifx\endpart\undefined
2 \input macros.tex
3 \fi
4
5 \chapter{Notation}
6
7 {\obeylines\parskip=0pt
8 \def\n#1#2{\>\hbox to 6em{#1 \dotfill} #2}
9 \def\[#1]{~{\it(\ref{#1})}}
10 \n{$\bb R$}{the set of all real numbers}
11 \n{$\bb N$}{the set of all natural numbers, including 0}
12 \n{${\bb N}^+$}{the set of all positive integers}
13 \n{$\O(g)$}{asymptotic~$O$: $f=\O(g)$ iff $\exists c>0: f(n)\le g(n)$ for all~$n\ge n_0$}
14 \n{$\Omega(g)$}{asymptotic~$\Omega$: $f=\Omega(g)$ iff $\exists c>0: f(n)\ge g(n)$ for all~$n\ge n_0$}
15 \n{$\Theta(g)$}{asymptotic~$\Theta$: $f=\Theta(g)$ iff $f=\O(g)$ and $f=\Omega(g)$}
16 \n{$\widetilde\O(g)$}{$f=\widetilde\O(g)$ iff $f=\O(g\cdot\log^{\O(1)} g)$}
17 \n{$\poly(n)$}{$f=\poly(n)$ iff $f=\O(n^c)$ for some $c$}
18 \n{$T[u,v]$}{the path in a tree~$T$ joining vertices $u$ and $v$ \[heavy]}
19 \n{$T[e]$}{the path in a tree~$T$ joining the endpoints of an~edge~$e$ \[heavy]}
20 \n{$A\symdiff B$}{symetric difference of sets: $(A\setminus B) \cup (B\setminus A)$}
21 \n{$G-e$}{graph $G$ with edge $e$ removed}
22 \n{$G+e$}{graph $G$ with edge $e$ added}
23 \n{$w(e)$}{weight of an edge $e$}
24 \n{$V(G)$}{set of vertices of a graph~$G$}
25 \n{$E(G)$}{set of edges of a graph~$G$}
26 \n{$n(G)$}{number of vertices of a graph~$G$, that is $\vert V(G)\vert$}
27 \n{$m(G)$}{number of edges of a graph~$G$, that is $\vert E(G)\vert$}
28 \n{$V,E,n,m$}{when used without $(G)$, they refer to the input of the current algorithm}
29 \n{$G[U]$}{subgraph induced by a~set $U\subset V(G)$}
30 \n{$\delta_G(U)$}{all edges connecting $U\subset V(G)$ with $V(G)\setminus U$; we usually omit the~$G$}
31 \n{$\delta_G(v)$}{the edges of a one-vertex cut, i.e., $\delta_G(\{v\})$}
32 \n{MST}{minimum spanning tree \[mstdef]}
33 \n{MSF}{minimum spanning forest \[mstdef]}
34 \n{$\mst(G)$}{the unique minimum spanning tree of a graph~$G$ \[mstnota]}
35 \n{$\msf(G)$}{the unique minimum spanning forest of a graph~$G$ \[mstnota]}
36 \n{$X \choose k$}{the set of all $k$-element subsets of a set~$X$}
37 \n{$G/e$}{multigraph contraction \[contract]}
38 \n{$G.e$}{simple graph contraction \[simpcont]}
39 \n{$G/X$, $G.X$}{contraction by a~set $X$ of vertices or edges \[setcont]}
40 \n{$f[X]$}{function applied to a set: $f[X]:=\{ f(x) ; x\in X \}$}
41 \n{$f[e]$}{as edges are two-element sets, $f[e]$ maps both endpoints of an edge~$e$}
42 \n{$\varrho({\cal C})$}{edge density of a graph class~$\cal C$ \[density]}
43 \n{$\deg_G(v)$}{degree of vertex~$v$ in graph~$G$; we omit $G$ if it is clear from context}
44 \n{${\E}X$}{expected value of a~random variable~$X$}
45 \n{${\rm Pr}[\varphi]$}{probability that a predicate~$\varphi$ is true}
46 \n{$\log n$}{a binary logarithm of the number~$n$}
47 \n{$f^{(i)}$}{function~$f$ iterated $i$~times: $f^{(0)}(x):=x$, $f^{(i+1)}(x):=f(f^{(i)}(x))$}
48 \n{$2\tower n$}{the tower function (iterated exponential): $2\tower 0:=1$, $2\tower (n+1):=2^{2\tower n}$}
49 \n{$\log^* n$}{the iterated logarithm: $\log^*n := \min\{i: \log^{(i)}n \le 1\}$; the inverse of~$2\tower n$}
50 \n{$\beta(m,n)$}{$\beta(m,n) := \min\{i: \log^{(i)}n \le m/n \}$ \[itjarthm]}
51 \n{$W$}{word size of the RAM \[wordsize]}
52 \n{$\(x)$}{number~$x\in{\bb N}$ written in binary \[bitnota]}
53 \n{$\(x)_b$}{$\(x)$ zero-padded to exactly $b$ bits \[bitnota]}
54 \n{$x[i]$}{when $x\in{\bb N}$: the value of the $i$-th bit of~$x$ \[bitnota]}
55 \n{$x[B]$}{when $x\in{\bb N}$: the values of the bits at positions in the set~$B$ \[qhnota]}
56 \n{$\pi[i]$}{when $\pi$ is a~sequence: the $i$-th element of~$\pi$, starting with $\pi[1]$ \[brackets]}
57 \n{$\pi[i\ldots j]$}{the subsequence $\pi[i], \pi[i+1], \ldots, \pi[j]$}
58 \n{$\sigma^k$}{the string~$\sigma$ repeated $k$~times \[bitnota]}
59 \n{$\0$, $\1$}{bits in a~bit string \[bitnota]}
60 \n{$\equiv$}{congruence modulo a~given number}
61 \n{$\<LSB>(x)$}{the position of the lowest bit set in~$x$ \[lsbmsb]}
62 \n{$\<MSB>(x)$}{the position of the highest bit set in~$x$ \[lsbmsb]}
63 \n{$\bf x$}{a~vector with elements $x_1,\ldots,x_d$; $x$ is its bitwise encoding \[vecnota]}
64 \n{$\band$}{bitwise conjunction: $(x\band y)[i]=1$ iff $x[i]=1 \land y[i]=1$}
65 \n{$\bor$}{bitwise disjunction: $(x\bor y)[i]=1$ iff $x[i]=1 \lor y[i]=1$}
66 \n{$\bnot$}{bitwise negation: $(\bnot x)[i]=1-x[i]$}
67 \n{$\bxor$}{bitwise non-equivalence: $(x\bxor y)[i]=1$ iff $x[i]\ne y[i]$}
68 \n{$x \shl n$}{bitwise shift of~$x$ by $n$~positions to the left: $x\shl n = x\cdot 2^n$}
69 \n{$x \shr n$}{bitwise shift of~$x$ by $n$~positions to the right: $x\shr n = \lfloor x/2^n \rfloor$}
70 \n{$R_{C,\prec}(x)$}{the rank of~$x$ in a~set~$C$ ordered by~$\prec$ \[rankdef]}
71 \n{$R^{-1}_{C,\prec}(i)$}{the unrank of~$i$: the $i$-th smallest element of a~set~$C$ ordered by~$\prec$ \[rankdef]}
72 \n{$[n]$}{the set $\{1,2,\ldots,n\}$ \[pranksect]}
73 \n{$L(\pi,A)$}{lexicographic ranking function for permutations on a~set~$A\subseteq{\bb N}$ \[brackets]}
74 \n{$L^{-1}(i,A)$}{lexicographic unranking function, the inverse of~$L$ \[brackets]}
75 \n{$n^{\underline k}$}{the $k$-th falling factorial power: $n\cdot(n-1)\cdot\ldots\cdot(n-k+1)$ \[kpranksect]}
76 \n{$H\minorof G$}{$H$ is a~minor of~$G$ \[minordef]}
77 \n{$K_k$}{the complete graph on~$k$ vertices}
78 \n{$C_k$}{the cycle on~$k$ vertices}
79 \n{${\cal P}_A$}{the set of all permutations on a~set~$A$ \[restnota]}
80 \n{${\cal P}_{A,M}$}{the set of all permutations on~$A$ satisfying the restrictions~$M$ \[restnota]}
81 \n{$N_0(M)$}{the number of permutations satisfying the restrictions~$M$ \[restnota]}
82 \n{$M^{i,j}$}{the matrix $M$ with $i$-th row and $j$-th column deleted \[restnota]}
83 \n{$D_n$}{the $n\times n$ matrix with $D[i,i]=0$ for all~$i$ and ones elsewhere else \[hatrank]}
84 \n{$\per M$}{the permanent of a~square matrix~$M$}
85 \n{$G\crpt R$}{graph~$G$ with edges in~$R$ corrupted \[corrnota]}
86 \n{$R^C$}{$R^C = R\cap \delta(C)$ \[corrnota]}
87 \n{${\cal D}(G)$}{The optimal MSF decision tree for a~graph~$G$ \[decdef]}
88 \n{$D(G)$}{The depth of ${\cal D}(G)$ \[decdef]}
89 \n{$D(m,n)$}{Decision tree complexity of MSF \[decdef]}
90 \n{$A(x,y)$}{The Ackermann's function \[ackerdef]}
91 \n{$A(x)$}{The diagonal Ackermann's function \[ackerdef]}
92 \n{$a(x,n)$}{The inverse of the $x$-th row of the Ackermann's function \[ackerinv]}
93 \n{$a(n)$}{The diagonal inverse of the Ackermann's function \[ackerinv]}
94 \n{$\alpha(m,n)$}{$\alpha(m,n) := \min\{ x\ge 1 \mid A(x,4\lceil m/n\rceil) > \log n \}$ \[ackerinv]}
95 \n{$\Eul(T)$}{The Eulerian tour sequence for a~tree~$T$ \[eulseq]}
96 }
97
98 %--------------------------------------------------------------------------------
99
100 \section{Multigraphs and contractions}
101
102 Since the formalism of multigraphs is not fixed in the literature, we will
103 better define it carefully, following \cite{diestel:gt}:
104
105 \defn A~\df{multigraph} is an ordered triple $(V,E,M)$, where $V$~is the
106 set of vertices, $E$~is the set of edges, taken as abstract objects disjoint
107 with the vertices, and $M$ is a mapping $E\rightarrow V \cup {V \choose 2}$
108 which assigns to each edge either a pair of vertices or a single vertex
109 (if the edge is a loop).
110
111 \proclaim{Notation}%
112 When the meaning is clear from the context, we use our notation originally
113 defined for graphs even for multigraphs. For example, $xy\in E(G)$ becomes a
114 shorthand for $\exists e\in E(G)$ such that $M(G)(e) = \{x,y\}$. Also, we
115 consider multigraphs with no multiple edges nor loops and simple graphs to be
116 the same objects, although they formally differ.
117
118 \defn\id{contract}%
119 Let $G=(V,E,M)$ be a multigraph and $e=xy$ its edge. \df{(Multigraph) contraction of~$G$ along~$e$}
120 produces a multigraph $G/e=(V',E',M')$ such that:
121 $$\eqalign{
122 V' &= (V(G) \setminus \{x,y\}) \cup \{v_e\},\quad\hbox{where $v_e$ is a new vertex,}\cr
123 E' &= E(G) - \{e\},\cr
124 M'(f) &= \{ m(v) ; v\in M(f) \} \quad\hbox{for every $f=\in E'$, and}\cr
125 m(x) &= \cases{v_e & \hbox{for $v=x,y,$}\cr v & \hbox{otherwise.}} \cr
126 }$$
127
128 Sometimes we need contraction for simple graphs as well. It corresponds to performing
129 the multigraph contraction, unifying parallel edges and deleting loops.
130
131 \defn\id{simpcont}%
132 Let $G=(V,E)$ a simple graph and $e=xy$ its edge. \df{(Simple graph) contraction of~$G$ along~$e$}
133 produces a graph $G.e=(V',E')$ such that:
134 $$\eqalign{
135 V' &= (V(G) \setminus \{x,y\}) \cup \{v_e\},\quad\hbox{where $v_e$ is a new vertex,}\cr
136 E' &= \{ \{m(x),m(y)\} ; xy\in E \land m(x)\ne m(y) \},\cr
137 m(x) &= \cases{v_e & \hbox{for $v=x,y,$}\cr v & \hbox{otherwise.}} \cr
138 }$$
139
140 \defn\id{setcont}%
141 We can also extend the above definitions to contractions by a~set of vertices or edges.
142 For $F\subseteq E(G)$, the graph $G/F$ is defined as $(G/f_1)/f_2/\ldots/f_k$ where
143 $f_1,\ldots,f_k$ are the elements of~$F$ (you can observe that the result
144 does not depend on the order of edges). For $U\subseteq V(G)$, we define $G/U$
145 as the graph with all vertices of~$U$ merged to a~single vertex, that is $(G\cup U^*)/U^*$,
146 where $U^*$ is the complete graph on~$U$. Similarly for $G.F$ and $G.U$.
147
148 %--------------------------------------------------------------------------------
149
150 \section{Ackermann's function and its inverse}\id{ackersec}%
151
152 The Ackermann's function is an~extremely quickly growing function which has been
153 introduced by Ackermann \cite{ackermann:function} in the context of
154 computability theory. Its original purpose was to demonstrate that not every recursive
155 function is also primitive recursive. At the first sight, it does not
156 seem related to efficient algorithms at all. Its various inverses however occur in
157 analyses of various algorithms and mathematical structures surprisingly often:
158 We meet them in Section \ref{classalg} in the time complexity of the Disjoint Set Union
159 data structure and also in the best known upper bound on the decision tree
160 complexity of minimum spanning trees in Section \ref{optalgsect}. Another
161 important application is in the complexity of Davenport-Schinzel sequences (see
162 Klazar's survey \cite{klazar:gdss}), but as far as we know, these are not otherwise
163 related to the topic of our study.
164
165 Various sources differ in the exact definition of both the Ackermann's
166 function and its inverse, but most of the differences are in factors that
167 are negligible in the light of the giant asymptotic growth of the function.
168 We will use the definition by double recursion given by Tarjan \cite{tarjan:setunion},
169 which is predominant in the literature on graph algorithms:
170
171 \defn\id{ackerdef}%
172 The \df{Ackermann's function} $A(x,y)$ is a~function on non-negative integers defined as follows:
173 $$\eqalign{
174 A(0,y) &:= 2y, \cr
175 A(x,0) &:= 0, \cr
176 A(x,1) &:= 2 \quad \hbox{for $x\ge 1$}, \cr
177 A(x,y) &:= A(x-1, A(x,y-1)) \quad \hbox{for $x\ge 1$, $y\ge 2$}. \cr
178 }$$
179 The functions $A(x,\cdot)$ are called the \df{rows} of $A(x,y)$, similarly $A(\cdot,y)$ are
180 its \df{columns.}
181
182 Sometimes, a~single-parameter version of this function is also used. It is defined
183 as the diagonal of the previous function, i.e., $A(x):=A(x,x)$.
184
185 \example
186 We can try evaluating $A(x,y)$ in some points:
187 $$\eqalign{
188 A(x,2) &= A(x-1, A(x,1)) = A(x-1,2) = A(0,2) = 4, \cr
189 A(1,y) &= A(0, A(1,y-1)) = 2A(1,y-1) = 2^{y-1}A(1,1) = 2^y, \cr
190 A(2,y) &= A(1, A(2,y-1)) = 2^{A(2,y-1)} = 2\tower y \hbox{~~(the tower of exponentials),} \cr
191 A(3,y) &= \hbox{the tower function iterated $y$~times,} \cr
192 A(4,3) &= A(3,A(4,2)) = A(3,4) = A(2,A(3,3)) = A(2,A(2,A(3,2))) = \cr
193        &= A(2,A(2,4)) = 2\tower(2\tower 4) = 2\tower 65536. \cr
194 }$$
195
196 \para
197 Three functions related to the inverse of the function~$A$ are usually considered:
198
199 \defn\id{ackerinv}%
200 The \df{row inverse} $a(x,y)$ of the Ackermann's function is defined by:
201 $$
202 a(x,n) := \min\{ y \mid A(x,y) > \log n \}.
203 $$
204 The \df{diagonal inverse} $a(n)$ is defined by:
205 $$
206 a(n) := \min\{ x \mid A(x) > \log n \}.
207 $$
208 The \df{alpha function} $\alpha(m,n)$ is defined for $m\ge n$ by:
209 $$
210 \alpha(m,n) :=  \min\{ x\ge 1 \mid A(x,4\lceil m/n\rceil) > \log n \}.
211 $$
212
213 \example
214 $a(1,n) = \O(\log\log n)$, $a(2,n) = \O(\log^* n)$, $a(3,n)$ grows even slower
215 and $a(n)$ is asymptotically smaller than $a(x,n)$ for any fixed~$x$.
216
217 \obs
218 It is easy to verify that all the rows are strictly increasing and so are all
219 columns, except the first three columns which are constant. Therefore for a~fixed~$n$,
220 $\alpha(m,n)$ is maximized at $m=n$. So $\alpha(m,n) \le 3$ when $\log n < A(3,4)$,
221 which covers all values of~$m$ that are likely to occur in practice.
222
223 \lemma
224 $\alpha(m,n) \le a(n)+1$.
225
226 \proof
227 $A(x,4\lceil m/n\rceil) \ge A(x,4) = A(x-1,A(x,3)) \ge A(x-1,x-1)$, so $A(x,4\lceil m/n\rceil)$
228 rises above $\log n$ no later than $A(x-1,x-1)$ does.
229 \qed
230
231 \lemma\id{alphaconst}%
232 When $k$~is a~fixed constant and $m\ge n\cdot a(k,n)$, then $\alpha(m,n) \le k$.
233
234 \proof
235 The choice of~$m$ guarantees that $A(x,4\lceil m/n\rceil) \ge A(x,a(k,n))$, which
236 is greater than $\log n$ for all $x \ge k$.
237 \qed
238
239 \endpart