Draft slides for tomorrow

pull/2/head
Oliver Kennedy 2022-09-27 20:38:12 -04:00
parent 81a44f8cde
commit 1f4882ee0e
Signed by: okennedy
GPG Key ID: 3E5F9B3ABD3FDB60
4 changed files with 1290 additions and 1 deletions

View File

@ -1,7 +1,7 @@
---
template: templates/cse250_2022_slides.erb
title: Inductive Proofs, Divide and Conquer
date: Sept 21, 2022
date: Sept 26, 2022
textbook: Ch. 15
---

View File

@ -0,0 +1,359 @@
---
template: templates/cse250_2022_slides.erb
title: Inductive Proofs, Divide and Conquer
date: Sept 26, 2022
textbook: Ch. 15
---
<section>
<h4 class="slide_title">Merge Sort</h4>
<dl>
<dt>Divide: Split the sequence in half</dt>
<dd>$D(n) = \Theta(n)$ (can do in $\Theta(1)$)</dd>
<dt>Conquer: Sort left and right halves</dt>
<dd>$a = 2$, $b = 2$, $c = 1$</dd>
<dt>Combine: Merge halves together</dt>
<dd>$C(n) = \Theta(n)$</dd>
</dl>
</section>
<section>
<h4 class="slide_title">Merge Sort: Proof By Induction</h4>
<p><b>Base Case:</b> $T(1) \leq c \cdot 1$</p>
<p class="fragment">$$c_0 \leq c$$</p>
<p class="fragment">True for any $c > c_0$</p>
</section>
<section>
<h4 class="slide_title">Merge Sort: Proof By Induction</h4>
<p><b>Assume:</b> $T(\frac{n}{2}) \leq c \frac{n}{2} \log\left(\frac{n}{2}\right)$</p>
<p><b>Show:</b> $T(n) \leq c n \log\left(n\right)$</p>
<div style="font-size: 50%">
<p class="fragment">$$2\cdot T(\frac{n}{2}) + c_1 + c_2 n \leq c n \log(n)$$</p>
<p class="fragment">By the assumption and transitivity, showing the following inequality suffices:<br>
$$2 c \frac{n}{2} \log\left(\frac{n}{2}\right) + c_1 + c_2 n \leq c n \log(n)$$</p>
<p class="fragment">$$c n \log(n) - c n \log(2) + c_1 + c_2 n \leq c n \log(n)$$</p>
<p class="fragment">$$c_1 + c_2 n \leq c n \log(2)$$</p>
<p class="fragment">$$\frac{c_1}{n \log(2)} + \frac{c_2}{\log(2)} \leq c$$</p>
<p class="fragment">True for any $n_0 \geq \frac{c_1}{\log(2)}$ and $c > \frac{c_2}{\log(2)}+1$</p>
</div>
</section>
<section>
<p>All of the "work" is in the combine step.</p>
<p class="fragment">Can we put the work in the divide step?</p>
</section>
<section>
<p><b>Idea 1</b>: Partition the data on the median value.</p>
<p class="fragment"><b>Idea 2</b>: Partition the data in-place.</p>
</section>
<section>
<svg data-src="graphics/12b/quicksort-ideal.svg" />
</section>
<section>
<h4 class="slide_title">QuickSort (Idealized) <span class="fragment" data-fragment-index="2">(Wrong)</span></h4>
To sort an array of size $n$:
<ol>
<li class="fragment highlight-red" data-fragment-index="1">Pick a $pivot$ value.</li>
<li>Swap values until...<ul>
<li>array elements at $[1, \frac{n}{2})$ are $\leq pivot$</li>
<li>array elements at $[\frac{n}{2}, n)$ are $> pivot$</li>
</ul></li>
<li>Recursively sort $low$</li>
<li>Recursively sort $high$</li>
</ol>
</section>
<section>
<h4 class="slide_title">QuickSort (Wrong)</h4>
<pre><code class="scala">
def idealizedQuickSort(arr: Array[Int], from: Int, until: Int): Unit =
{
if(until - from < 1){ return }
val pivot = ???
var low = from, high = until -1
while(low < high){
while(arr(low) <= pivot && low < high){ low ++ }
if(low < high){
while(arr(high) > pivot && low < high){ high ++ }
swap(arr, low, high)
}
}
idealizedQuickSort(arr, from = 0, until = low)
idealizedQuickSort(arr, from = low, until = until)
}
</code></pre>
</section>
<section>
<h4 class="slide_title">Partition (Ideal)</h4>
<svg data-src="graphics/12b/pivot-ideal.svg"/>
</section>
<section>
<h4 class="slide_title">QuickSort (Wrong)</h4>
<p>If we can obtain a pivot in $O(1)$, what's the complexity?</p>
<p class="fragment">
$$T_{quicksort}(n) = \begin{cases}
\Theta(1) & \textbf{if } n = 1\\
2 \cdog \T(\frac{n}{2}) + \Theta(n) + 0 & \textbf{otherwise}
\end{cases}$$
</p>
<p class="fragment">
Contrast with <tt>MergeSort</tt>:
$$T_{mergesort}(n) = \begin{cases}
\Theta(1) & \textbf{if } n = 1\\
2 \cdog \T(\frac{n}{2}) + \Theta(1) + \Theta(n) & \textbf{otherwise}
\end{cases}$$
</p>
</section>
<section>
<h4 class="slide_title">QuickSort</h4>
<p><b>Problem: </b> Finding the median value of an unsorted collection is $O(n\log(n))$</p>
<p class="fragment">(We'll talk about heaps later)</p>
</section>
<section>
<h4 class="slide_title">QuickSort</h4>
<p><b>Idea: </b> If we pick a value at random, on average half the values will be lower.</p>
</section>
<section>
Let's say we pick the $i$th largest element, the recursive runtime for $T(n)$ is:
$$\begin{cases}
T(0) + T(n-1) + \Theta(n) & \textbf{if } i = 1\\
T(1) + T(n-2) + \Theta(n) & \textbf{if } i = 2\\
T(2) + T(n-3) + \Theta(n) & \textbf{if } i = 3\\
..\\
T(n-2) + T(1) + \Theta(n) & \textbf{if } i = n-1\\
T(n-1) + T(0) + \Theta(n) & \textbf{if } i = n\\
\end{cases}$$
</section>
<section>
<p>How likely are we to pick $i = k$ for any specific $k$?</p>
<p class="fragment">$P[i = k] = \frac{1}{n}</p>
</section>
<section>
<p>... a brief aside...</p>
</section>
<section>
<h4 class="slide_title">Probabilities and Expectations</h4>
<p>If I roll d6 (a 6-sided die 🎲) $k$ times, what is the average over all possible outcomes?</p>
</section>
<section>
<h4 class="slide_title">k = 1</h4>
<p>If I roll d6 (a 6-sided die 🎲) $1$ time, what is the average over all possible outcomes?</p>
<table>
<tr>
<th>Roll</th>
<th>Probability</th>
<th>Contribution</th>
</tr>
<tr>
<td>⚀</td>
<td>$\frac{1}{6}</td>
<td>1</td>
</tr>
<tr>
<td>⚁</td>
<td>$\frac{1}{6}</td>
<td>2</td>
</tr>
<tr>
<td>⚂</td>
<td>$\frac{1}{6}</td>
<td>3</td>
</tr>
<tr>
<td>⚃</td>
<td>$\frac{1}{6}</td>
<td>4</td>
</tr>
<tr>
<td>⚄</td>
<td>$\frac{1}{6}</td>
<td>5</td>
</tr>
<tr>
<td>⚅</td>
<td>$\frac{1}{6}</td>
<td>6</td>
</tr>
$$\frac{1 + 2 + 3 + 4 + 5 + 6}{6} = \frac{1}{6}\cdot 1 + \frac{1}{6}\cdot 2 + \frac{1}{6}\cdot 3 + \frac{1}{6}\cdot 4 + \frac{1}{6}\cdot 5 + \frac{1}{6}\cdot 6 = \sum_{i} \texttt{Probability}_i \cdot \texttt{Contribution}_i = 3.5$$
</table>
</section>
<section>
<p>If $X$ is a random variable representing the outcome of the roll, we call this the <i>expectation</i> of $X$, or $E[X]$</p>
</section>
<section>
<h4 class="slide_title">k = 2</h4>
<p>If I roll d6 (a 6-sided die 🎲) $2$ times, what is the average over all possible outcomes?</p>
<p>Does the outcome of one roll affect the other?</p>
<p class="fragment"><b>No:</b> Each roll is an <i>independent event</i>.</p>
<p class="fragment">If $X$ and $Y$ are random variables representing the outcome of each roll (i.e., independent random variables), $E[X + Y] = E[X] + E[Y] = 3.5 + 3.5 = 7$</p>
</section>
<section>
<h4 class="slide_title">Expectations</h4>
$$E_i[X] = \sum_{i} P_i \cdot X_i$$
</section>
<section>
$$T(n) = \begin{cases}
\Theta(1) & \textbf{if } n \leq 1
T(0) + T(n-1) + \Theta(n) & \textbf{if } i = 1\\
T(1) + T(n-2) + \Theta(n) & \textbf{if } i = 2\\
T(2) + T(n-3) + \Theta(n) & \textbf{if } i = 3\\
..\\
T(n-2) + T(1) + \Theta(n) & \textbf{if } i = n-1\\
T(n-1) + T(0) + \Theta(n) & \textbf{if } i = n\\
\end{cases}$$
</section>
<section>
<p>$i$ is the random variable</p>
$$E[T(n)] = \begin{cases}
\Theta(1) & \textbf{if } n \leq 1\\
E[T(i-1) + T(n-i)] + \Theta(n) & \textbf{otherwise}
\end{cases}$$
</section>
<section>
$$\begin{cases}
T(0) + T(n-1) + \Theta(n) & \textbf{if } i = 1\\
T(1) + T(n-2) + \Theta(n) & \textbf{if } i = 2\\
T(2) + T(n-3) + \Theta(n) & \textbf{if } i = 3\\
..\\
T(n-2) + T(1) + \Theta(n) & \textbf{if } i = n-1\\
T(n-1) + T(0) + \Theta(n) & \textbf{if } i = n\\
\end{cases}$$
<p>There's a symmetry: The left varies from $T(0)$ to $T(n-1)$, and visa versa right.</p>
</section>
<section>
$$E[T(n)] = \begin{cases}
\Theta(1) & \textbf{if } n \leq 1\\
\sum_{i=0}^{n-1}\left( \frac{1}{n} 2\cdot E[T(i)] \right) + \Theta(n) & \textbf{otherwise}
\end{cases}$$
</section>
<section>
$$E[T(n)] = \begin{cases}
\Theta(1) & \textbf{if } n \leq 1\\
\frac{2}{n}\left(\sum_{i=0}^{n-1} E[T(i)] \right) + \Theta(n) & \textbf{otherwise}
\end{cases}$$
</section>
<section>
<p>Back to induction...</p>
<p><b>Hypothesis: </b> $E[T(n)] \in O(n \log(n))$</p>
</section>
<section>
<p><b>Base Case: </b> $E[T(1)] \in O(1 \log(1))$</p>
$$E[T(1)] \leq c \cdot (1 \log(1))$$
$$E[T(1)] \leq c \cdot (1 \cdot 0)$$
$$E[T(1)] \not \leq 0$$
</section>
<section>
<p><b>Base Case (take Two): </b> $E[T(2)] \in O(2 \log(2))$</p>
$$E[T(2)] \leq c \cdot (2 \log(2))$$
$$2\cdot E_i[T(i-1)] + 2c_1 \leq 2c$$
$$2\cdot \left(\frac{1}{2}T(0) + \frac{1}{2}T(1)\right) + 2c_1 \leq 2c$$
$$T(0) + T(1) + 2c_1 \leq 2c$$
$$2c_0 + 2c_1 \leq 2c$$
<p>True for any $c \geq c_0 + c_1$</p>
</section>
<section>
<p><b>Assume: </b> $E[T(n')] \leq c(n' \log(n'))$ for <b>all</b> $n' < n$</p>
<p><b>Show: </b> $E[T(n)] \leq c(n \log(n))$</p>
$$E[T(n)] \leq c \cdot (n \log(n))$$
$$c\frac{2}{n}\left(\sum_{i=0}^{n-1} E[T(i)] \right) + c_1 \leq c n \log(n)$$
$$c\frac{2}{n}\left(\sum_{i=0}^{n-1} i \log(i) \right) + c_1 \leq c n \log(n)$$
$$c\frac{2}{n}\left(\sum_{i=0}^{n-1} i \log(n) \right) + c_1 \leq c n \log(n)$$
$$c\frac{2 \log(n)}{n}\left(\sum_{i=0}^{n-1} i \right) + c_1 \leq c n \log(n)$$
$$c\frac{2 \log(n)}{n}\left( \frac{(n-1)(n-1+1)}{2}\right) + c_1 \leq c n \log(n)$$
$$c\frac{\log(n)}{n}\left(n^2 - n\right) + c_1 \leq c n \log(n)$$
$$cn\log(n) - c\log(n) + c_1 \leq c n \log(n)$$
$$c_1 \leq c\log(n)$$
</section>
<section>
<p>$E[T_{quicksort}(n)] = O(n\log(n))$</p>
<p>So is Quicksort $O(n\log(n))$? <span class="fragment"><b>No!</b></span></p>
</section>
<section>
<p>What if we always pick the worst pivot?</p>
<p>[8, 7, 6, 5, 4, 3, 2, 1]</p>
<p>[7, 6, 5, 4, 3, 2, 1], 8, []</p>
<p>[6, 5, 4, 3, 2, 1], 7, [], 8</p>
<p>[5, 4, 3, 2, 1], 6, [], 7, 8</p>
<p>...</p>
<p>$$T_{quicksort}(n) \in O(n^2)$$</p>
</section>
<section>
<h4 class="slide_title">What guarantees do you get?</h4>
<dl>
<dt>$f(n)$ is a Tight Bound</dt>
<dd>The algorithm <b>always</b> runs in $cf(n)$ steps</dd>
<dt>$f(n)$ is a Worst-Case Bound</dt>
<dd>The algorithm <b>always</b> runs at-most $cf(n)$ steps</dd>
<dt>$f(n)$ is an Amortized Worst-Case Bound</dt>
<dd>$n$ invocations of the algorithm <b>always</b> run in $cnf(n)$ steps</dd>
<dt>$f(n)$ is an Average Bound</dt>
<dd>🤷</dd>
</dl>
</section>
<section>
<h4 class="slide_title">Next time...</h4>
<p>Special <tt>Seq</tt>uences: <tt>Stack</tt>, <tt>Queue</tt></p>
</section>

View File

@ -0,0 +1,249 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="128.83632mm"
height="29.751509mm"
viewBox="0 0 128.83632 29.751509"
version="1.1"
id="svg4188"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
sodipodi:docname="pivot-ideal.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview4190"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.4923927"
inkscape:cx="175.22198"
inkscape:cy="82.417987"
inkscape:window-width="901"
inkscape:window-height="1133"
inkscape:window-x="26"
inkscape:window-y="23"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" />
<defs
id="defs4185">
<marker
style="overflow:visible"
id="TriangleStart"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="TriangleStart"
markerWidth="5.3244081"
markerHeight="6.155385"
viewBox="0 0 5.3244081 6.1553851"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
transform="scale(0.5)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 5.77,0 -2.88,5 V -5 Z"
id="path135" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-24.200683,-32.966519)">
<rect
style="fill:#ffffff;stroke:#000000;stroke-width:0.3;stroke-dasharray:none"
id="rect4244"
width="120.27868"
height="6.2306151"
x="27.920832"
y="44.980877" />
<g
id="g4441"
transform="translate(-10.583334,25.929167)"
class="fragment fade-out"
data-fragment-index="2">
<path
style="fill:#ffffff;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;marker-end:url(#TriangleStart)"
d="M 38.673883,32.75972 V 26.619177"
id="path4352"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#ffffff;stroke:#000000;stroke-width:0;stroke-dasharray:none"
x="38.535217"
y="36.718925"
id="text4434"><tspan
sodipodi:role="line"
id="tspan4432"
style="text-align:center;text-anchor:middle;fill:#000000;stroke-width:0;stroke-dasharray:none"
x="38.535217"
y="36.718925">low</tspan></text>
</g>
<g
id="g4579"
transform="translate(109.53756)"
class="fragment fade-out"
data-fragment-index="3">
<path
style="fill:#ffffff;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;marker-end:url(#TriangleStart)"
d="m 38.673883,37.724696 v 6.140543"
id="path4573"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#ffffff;stroke:#000000;stroke-width:0;stroke-dasharray:none"
x="38.535217"
y="36.718925"
id="text4577"><tspan
sodipodi:role="line"
id="tspan4575"
style="text-align:center;text-anchor:middle;fill:#000000;stroke-width:0;stroke-dasharray:none"
x="38.535217"
y="36.718925">high</tspan></text>
</g>
<g
id="g4877"
class="fragment fade-out"
data-fragment-index="4">
<g
id="g4795"
class="fragment"
data-fragment-index="1">
<path
style="fill:#000000;stroke:#000000;stroke-width:0;stroke-dasharray:none"
d="m 118.08552,46.284897 -2.03549,3.525573 h 3.86068 z"
id="path4635" />
<path
style="fill:#000000;stroke:#000000;stroke-width:0;stroke-dasharray:none"
d="m 49.29384,49.810469 -2.03549,-3.525573 h 3.86068 z"
id="path4637" />
</g>
</g>
<g
id="g4887"
class="fragment fade-out"
data-fragment-index="5">
<g
id="g4645"
transform="translate(79.430683)"
class="fragment"
data-fragment-index="3">
<path
style="fill:#ffffff;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;marker-end:url(#TriangleStart)"
d="m 38.673883,37.724696 v 6.140543"
id="path4639"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#ffffff;stroke:#000000;stroke-width:0;stroke-dasharray:none"
x="38.535217"
y="36.718925"
id="text4643"><tspan
sodipodi:role="line"
id="tspan4641"
style="text-align:center;text-anchor:middle;fill:#000000;stroke-width:0;stroke-dasharray:none"
x="38.535217"
y="36.718925">high</tspan></text>
</g>
<g
id="g4758"
transform="translate(10.524454,25.929167)"
class="fragment"
data-fragment-index="2">
<path
style="fill:#ffffff;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;marker-end:url(#TriangleStart)"
d="M 38.673883,32.75972 V 26.619177"
id="path4752"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#ffffff;stroke:#000000;stroke-width:0;stroke-dasharray:none"
x="38.535217"
y="36.718925"
id="text4756"><tspan
sodipodi:role="line"
id="tspan4754"
style="text-align:center;text-anchor:middle;fill:#000000;stroke-width:0;stroke-dasharray:none"
x="38.535217"
y="36.718925">low</tspan></text>
</g>
</g>
<path
style="fill:#000000;stroke:#000000;stroke-width:0;stroke-dasharray:none"
d="m 101.73564,54.968827 -0.0402,6.234472"
id="path4760-9" />
<path
style="fill:#000000;stroke:#000000;stroke-width:1.2;stroke-dasharray:none"
d="m 88.110677,45.150432 -0.0402,6.234472"
id="path4791" />
<g
id="g4801"
transform="matrix(-1,0,0,1,167.16906,0)"
class="fragment"
data-fragment-index="4">
<path
style="fill:#000000;stroke:#000000;stroke-width:0;stroke-dasharray:none"
d="m 118.08552,46.284897 -2.03549,3.525573 h 3.86068 z"
id="path4797" />
<path
style="fill:#000000;stroke:#000000;stroke-width:0;stroke-dasharray:none"
d="m 49.29384,49.810469 -2.03549,-3.525573 h 3.86068 z"
id="path4799" />
</g>
<g
id="g4897"
class="fragment"
data-fragment-index="5">
<g
id="g4809"
transform="translate(49.426341,25.929167)">
<path
style="fill:#ffffff;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;marker-end:url(#TriangleStart)"
d="M 38.673883,32.75972 V 26.619177"
id="path4803"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#ffffff;stroke:#000000;stroke-width:0;stroke-dasharray:none"
x="38.535217"
y="36.718925"
id="text4807"><tspan
sodipodi:role="line"
id="tspan4805"
style="text-align:center;text-anchor:middle;fill:#000000;stroke-width:0;stroke-dasharray:none"
x="38.535217"
y="36.718925">low</tspan></text>
</g>
<g
id="g4817"
transform="translate(49.54089)">
<path
style="fill:#ffffff;stroke:#000000;stroke-width:0.3;stroke-dasharray:none;marker-end:url(#TriangleStart)"
d="m 38.673883,37.724696 v 6.140543"
id="path4811"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#ffffff;stroke:#000000;stroke-width:0;stroke-dasharray:none"
x="38.535217"
y="36.718925"
id="text4815"><tspan
sodipodi:role="line"
id="tspan4813"
style="text-align:center;text-anchor:middle;fill:#000000;stroke-width:0;stroke-dasharray:none"
x="38.535217"
y="36.718925">high</tspan></text>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -0,0 +1,681 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="66.155151mm"
height="75.67411mm"
viewBox="0 0 66.155151 75.674112"
version="1.1"
id="svg5"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
sodipodi:docname="quicksort-ideal.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.1304557"
inkscape:cx="105.8459"
inkscape:cy="150.67199"
inkscape:window-width="901"
inkscape:window-height="1133"
inkscape:window-x="26"
inkscape:window-y="23"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" />
<defs
id="defs2">
<marker
style="overflow:visible"
id="TriangleStart"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="TriangleStart"
markerWidth="5.3244081"
markerHeight="6.155385"
viewBox="0 0 5.3244081 6.1553851"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
transform="scale(0.5)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 5.77,0 -2.88,5 V -5 Z"
id="path135" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-22.262749,-7.6120634)">
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="30.768148"
y="15.499356"
id="text1311"><tspan
sodipodi:role="line"
id="tspan1309"
style="fill:#000000;stroke-width:0;stroke-dasharray:none"
x="30.768148"
y="15.499356">1</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="67.348427"
y="15.531913"
id="text1315"><tspan
sodipodi:role="line"
id="tspan1313"
style="fill:#000000;stroke-width:0;stroke-dasharray:none"
x="67.348427"
y="15.531913">2</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="49.168015"
y="15.496945"
id="text2981"><tspan
sodipodi:role="line"
id="tspan2979"
style="stroke-width:0"
x="49.168015"
y="15.496945">3</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="39.946377"
y="15.499356"
id="text2985"><tspan
sodipodi:role="line"
id="tspan2983"
style="stroke-width:0"
x="39.946377"
y="15.499356">4</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="58.266659"
y="15.464389"
id="text3039"><tspan
sodipodi:role="line"
id="tspan3037"
style="stroke-width:0"
x="58.266659"
y="15.464389">5</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="76.384369"
y="15.496945"
id="text3043"><tspan
sodipodi:role="line"
id="tspan3041"
style="stroke-width:0"
x="76.384369"
y="15.496945">6</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="21.857605"
y="15.499356"
id="text3047"><tspan
sodipodi:role="line"
id="tspan3045"
style="stroke-width:0"
x="21.857605"
y="15.499356">7</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="85.613243"
y="15.496945"
id="text3051"><tspan
sodipodi:role="line"
id="tspan3049"
style="stroke-width:0"
x="85.613243"
y="15.496945">8</tspan></text>
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="M 55.281241,7.6120634 V 19.786173"
id="path3115"
class="fragment"
data-fragment-index="1" />
<g
id="g3952"
class="fragment"
data-fragment-index="2">
<g
id="g3424">
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:0.3;stroke-dasharray:none;marker-end:url(#TriangleStart)"
d="M 67.545812,16.749285 26.075735,27.008137"
id="path3193" />
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:0.3;stroke-dasharray:none;marker-end:url(#TriangleStart)"
d="M 25.077607,16.749285 66.547684,27.008137"
id="path3412" />
</g>
<g
id="g3636">
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="30.768148"
y="31.374357"
id="text3161"><tspan
sodipodi:role="line"
id="tspan3159"
style="fill:#000000;stroke-width:0;stroke-dasharray:none"
x="30.768148"
y="31.374357">1</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="21.915483"
y="31.406912"
id="text3165"><tspan
sodipodi:role="line"
id="tspan3163"
style="fill:#000000;stroke-width:0;stroke-dasharray:none"
x="21.915483"
y="31.406912">2</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="49.168015"
y="31.371946"
id="text3169"><tspan
sodipodi:role="line"
id="tspan3167"
style="stroke-width:0"
x="49.168015"
y="31.371946">3</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="39.946377"
y="31.374357"
id="text3173"><tspan
sodipodi:role="line"
id="tspan3171"
style="stroke-width:0"
x="39.946377"
y="31.374357">4</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="58.266659"
y="31.339388"
id="text3177"><tspan
sodipodi:role="line"
id="tspan3175"
style="stroke-width:0"
x="58.266659"
y="31.339388">5</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="76.384369"
y="31.371946"
id="text3181"><tspan
sodipodi:role="line"
id="tspan3179"
style="stroke-width:0"
x="76.384369"
y="31.371946">6</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="67.29055"
y="31.374357"
id="text3185"><tspan
sodipodi:role="line"
id="tspan3183"
style="stroke-width:0"
x="67.29055"
y="31.374357">7</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="85.613243"
y="31.371946"
id="text3189"><tspan
sodipodi:role="line"
id="tspan3187"
style="stroke-width:0"
x="85.613243"
y="31.371946">8</tspan></text>
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="m 55.281241,23.487064 v 12.17411"
id="path3191" />
</g>
</g>
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="m 27.937071,23.487064 v 12.17411"
id="path3476"
class="fragment"
data-fragment-index="4" />
<g
id="g3977"
class="fragment"
data-fragment-index="5">
<g
id="g3678"
transform="translate(0,-15.875)">
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="21.805758"
y="63.124363"
id="text3480"><tspan
sodipodi:role="line"
id="tspan3478"
style="fill:#000000;stroke-width:0;stroke-dasharray:none"
x="21.805758"
y="63.124363">1</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="30.877874"
y="63.156918"
id="text3484"><tspan
sodipodi:role="line"
id="tspan3482"
style="fill:#000000;stroke-width:0;stroke-dasharray:none"
x="30.877874"
y="63.156918">2</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="49.168015"
y="63.121952"
id="text3488"><tspan
sodipodi:role="line"
id="tspan3486"
style="stroke-width:0"
x="49.168015"
y="63.121952">3</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="39.946377"
y="63.124363"
id="text3492"><tspan
sodipodi:role="line"
id="tspan3490"
style="stroke-width:0"
x="39.946377"
y="63.124363">4</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="58.266659"
y="63.089394"
id="text3496"><tspan
sodipodi:role="line"
id="tspan3494"
style="stroke-width:0"
x="58.266659"
y="63.089394">5</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="76.384369"
y="63.121952"
id="text3500"><tspan
sodipodi:role="line"
id="tspan3498"
style="stroke-width:0"
x="76.384369"
y="63.121952">6</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="67.29055"
y="63.124363"
id="text3504"><tspan
sodipodi:role="line"
id="tspan3502"
style="stroke-width:0"
x="67.29055"
y="63.124363">7</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="85.613243"
y="63.121952"
id="text3508"><tspan
sodipodi:role="line"
id="tspan3506"
style="stroke-width:0"
x="85.613243"
y="63.121952">8</tspan></text>
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="m 55.281241,55.237066 v 12.17411"
id="path3510" />
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="m 36.760405,55.237066 v 12.17411"
id="path3512" />
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="m 27.937071,55.237066 v 12.17411"
id="path3514"
class="fragment fade-out"
data-fragment-index="6" />
</g>
<g
id="g3520"
transform="translate(-1.0583333,15.345833)">
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:0.3;stroke-dasharray:none;marker-end:url(#TriangleStart)"
d="m 33.679145,16.749285 -7.60341,10.258852"
id="path3516"
sodipodi:nodetypes="cc" />
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:0.3;stroke-dasharray:none;marker-end:url(#TriangleStart)"
d="m 25.077607,16.749285 7.60341,10.258852"
id="path3518"
sodipodi:nodetypes="cc" />
</g>
</g>
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="m 36.760405,23.487064 v 12.17411"
id="path3438"
class="fragment"
data-fragment-index="3" />
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="m 45.92874,39.362064 v 12.17411"
id="path3781"
class="fragment"
data-fragment-index="6" />
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="m 73.445409,55.237065 v 12.17411"
id="path3806"
class="fragment"
data-fragment-index="8" />
<g
id="g4002"
class="fragment"
data-fragment-index="7">
<g
id="g3804"
transform="translate(0,-15.875)">
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="21.805758"
y="78.999359"
id="text3682"><tspan
sodipodi:role="line"
id="tspan3680"
style="fill:#000000;stroke-width:0;stroke-dasharray:none"
x="21.805758"
y="78.999359">1</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="30.877874"
y="79.031921"
id="text3686"><tspan
sodipodi:role="line"
id="tspan3684"
style="fill:#000000;stroke-width:0;stroke-dasharray:none"
x="30.877874"
y="79.031921">2</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="39.937935"
y="78.996948"
id="text3690"><tspan
sodipodi:role="line"
id="tspan3688"
style="stroke-width:0"
x="39.937935"
y="78.996948">3</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="49.176456"
y="78.999359"
id="text3694"><tspan
sodipodi:role="line"
id="tspan3692"
style="stroke-width:0"
x="49.176456"
y="78.999359">4</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="58.266659"
y="78.964394"
id="text3698"><tspan
sodipodi:role="line"
id="tspan3696"
style="stroke-width:0"
x="58.266659"
y="78.964394">5</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="76.384369"
y="78.996948"
id="text3702"><tspan
sodipodi:role="line"
id="tspan3700"
style="stroke-width:0"
x="76.384369"
y="78.996948">6</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="67.29055"
y="78.999359"
id="text3706"><tspan
sodipodi:role="line"
id="tspan3704"
style="stroke-width:0"
x="67.29055"
y="78.999359">7</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="85.613243"
y="78.996948"
id="text3710"><tspan
sodipodi:role="line"
id="tspan3708"
style="stroke-width:0"
x="85.613243"
y="78.996948">8</tspan></text>
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="m 55.281241,71.112066 v 12.17411"
id="path3712" />
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="m 36.760405,71.112066 v 12.17411"
id="path3714"
class="fragment fade-out"
data-fragment-index="8" />
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="m 45.92874,71.112066 v 12.17411"
id="path3783"
class="fragment fade-out"
data-fragment-index="8" />
</g>
<g
id="g3894"
transform="translate(16.933335,31.220834)">
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:0.3;stroke-dasharray:none;marker-end:url(#TriangleStart)"
d="m 33.679145,16.749285 -7.60341,10.258852"
id="path3890"
sodipodi:nodetypes="cc" />
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:0.3;stroke-dasharray:none;marker-end:url(#TriangleStart)"
d="m 25.077607,16.749285 7.60341,10.258852"
id="path3892"
sodipodi:nodetypes="cc" />
</g>
</g>
<g
id="g4027"
class="fragment"
data-fragment-index="9">
<g
id="g3888"
transform="translate(0,-15.875)">
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="21.805758"
y="94.874359"
id="text3810"><tspan
sodipodi:role="line"
id="tspan3808"
style="fill:#000000;stroke-width:0;stroke-dasharray:none"
x="21.805758"
y="94.874359">1</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="30.877874"
y="94.906921"
id="text3814"><tspan
sodipodi:role="line"
id="tspan3812"
style="fill:#000000;stroke-width:0;stroke-dasharray:none"
x="30.877874"
y="94.906921">2</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="39.937935"
y="94.871948"
id="text3818"><tspan
sodipodi:role="line"
id="tspan3816"
style="stroke-width:0"
x="39.937935"
y="94.871948">3</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="49.176456"
y="94.874359"
id="text3822"><tspan
sodipodi:role="line"
id="tspan3820"
style="stroke-width:0"
x="49.176456"
y="94.874359">4</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="58.266659"
y="94.839394"
id="text3826"><tspan
sodipodi:role="line"
id="tspan3824"
style="stroke-width:0"
x="58.266659"
y="94.839394">5</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="67.265228"
y="94.871948"
id="text3830"><tspan
sodipodi:role="line"
id="tspan3828"
style="stroke-width:0"
x="67.265228"
y="94.871948">6</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="76.409691"
y="94.874359"
id="text3834"><tspan
sodipodi:role="line"
id="tspan3832"
style="stroke-width:0"
x="76.409691"
y="94.874359">7</tspan></text>
<text
xml:space="preserve"
style="font-size:4.9389px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#000000;stroke:#4d4d4d;stroke-width:0;stroke-dasharray:none"
x="85.613243"
y="94.871948"
id="text3838"><tspan
sodipodi:role="line"
id="tspan3836"
style="stroke-width:0"
x="85.613243"
y="94.871948">8</tspan></text>
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="m 55.281241,86.987066 v 12.17411"
id="path3840" />
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="m 36.760405,86.987066 v 12.17411"
id="path3842" />
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="m 73.445409,86.987067 v 12.17411"
id="path3848" />
</g>
<g
id="g3900"
transform="translate(43.39167,47.095835)">
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:0.3;stroke-dasharray:none;marker-end:url(#TriangleStart)"
d="m 33.679145,16.749285 -7.60341,10.258852"
id="path3896"
sodipodi:nodetypes="cc" />
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:0.3;stroke-dasharray:none;marker-end:url(#TriangleStart)"
d="m 25.077607,16.749285 7.60341,10.258852"
id="path3898"
sodipodi:nodetypes="cc" />
</g>
</g>
<g
id="g4031"
class="fragment"
data-fragment-index="10">
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="M 64.805023,71.112068 V 83.286172"
id="path3848-3" />
<path
style="fill:#000000;stroke:#4d4d4d;stroke-width:1;stroke-dasharray:none"
d="M 82.267525,71.112068 V 83.286172"
id="path3929" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB